Je prévois de mesurer le niveau d'eau dans un puits, qui est d'environ 10 m de profondeur avec un niveau d'eau maximum jusqu'à 5 m. Mon plan est d'utiliser le capteur à ultrasons HC SR04 pour mesurer la profondeur, le transmettre via ZigBee à un Raspberry Pi à l'intérieur de ma maison.
Comme indiqué dans ma question précédente, je dois sélectionner un microcontrôleur pour connecter le capteur à ultrasons et le module ZigBee ensemble.
Les paramètres de sélection sont:
Faible puissance: je prévois de faire fonctionner cela sur batterie, donc une faible consommation d'énergie est une priorité. Pour l'instant, je n'ai pas d'objectif de consommation d'énergie ou de jours entre les changements de batterie ou même la batterie à utiliser. Comme il s'agit davantage d'un projet d'apprentissage et que c'est chez moi, je suis flexible, mais une consommation d'énergie inférieure est meilleure.
Faible coût: c'est un projet d'apprentissage pour moi, et je ne veux pas dépenser une somme scandaleuse pour cela, donc un moindre coût est mieux.
Travailler à l'intérieur d'un puits: L'ensemble du projet fonctionnera de l'intérieur d'un puits et sera exposé à la lumière du soleil et à la pluie. Je fournirai cependant un bon étui et une bonne protection.
Facile à programmer.
J'ai choisi ZigBee car c'est simple, répond à mon cas d'utilisation et faible consommation. Mais mon exigence est de transporter les données du capteur et je suis ouvert à d'autres transports. La distance de mon puits au Raspberry Pi est d'environ 6 mètres avec un mur entre les deux. Je prévois de mesurer la profondeur de l'eau toutes les 10 minutes et deux fois par minute lorsque la pompe à eau fonctionne (environ 20 minutes par jour).
Réponses:
Un processus général de sélection des microcontrôleurs.
Résumez vos besoins envers le microcontrôleur. Par exemple dans ce cas:
Vous pouvez vous entendre avec un contrôleur à 8 broches pour cela, ce qui pourrait nécessiter l'utilisation des broches du programmeur à des fins générales également.
Décidez des performances CPU requises et des besoins en mémoire . Est-ce suffisant d'utiliser un MCU 8 bits ou vous avez besoin d'un MCU 32 bits à la place? Quelles sont les vitesses d'horloge du processeur acceptables des dizaines de MHz ou 1 MHz suffit-il? Combien de mémoire programme, RAM et ROM sont nécessaires?
Compte tenu de l'application décrite, vous n'avez pas besoin de performances informatiques élevées. Un contrôleur 8 bits suffira probablement (bien qu'il ne soit pas beaucoup moins cher qu'un contrôleur 32 bits, vous pouvez donc décider ici par le prix peut-être).
Faible puissance . Quand ce n'est pas crucial, vous pouvez probablement vous entendre avec presque n'importe quel type de contrôleur en utilisant son mode basse consommation avec la tension d'alimentation et la fréquence d'horloge du système les plus faibles. S'il est plus important, vous pouvez commencer à restreindre votre liste de recherche en commençant par des cœurs MCU dédiés de faible puissance comme (cœurs de processeur ARM® Cortex®-M0 ou M0 +). Habituellement, les fiches techniques contiennent des tableaux pour la plupart des modes basse consommation / fréquence VCC / SysClk , les meilleurs répertorieront également la consommation de chaque périphérique.
Outils de développement . Je le considère comme un aspect très important. Les outils de programmation matérielle dédiés peuvent coûter des fortunes, donc généralement je m'en tiens aux MCU pour lesquels j'ai déjà eu des programmeurs. Lorsque vous passez à une autre famille ou marque, il est bon d'investir dans une carte de développement dotée d'un programmateur intégré qui pourrait être utilisé plus tard pour programmer vos cartes personnalisées. En général, vérifiez toujours d'abord combien cela coûtera de pouvoir télécharger des programmes sur un microcontrôleur.
Comme @Sean l'a souligné dans les commentaires, une solution possible et rentable serait de rechercher de tels modules RF fournis avec une application MCU intégrée et programmable, qui peut exécuter votre micrologiciel tout en gérant la partie communication RF. De tels modules existent pour BLE, WiFi et ZigBee et peut-être pour de nombreuses autres technologies.
En plus de savoir comment un MCU survivra dans le puits. Tout se résoudra sur le boîtier que vous fournirez pour l'appareil. Par exemple, peu importe le MCU que vous choisissez si le boîtier n'est pas 100% résistant à l'eau.
TL; DR; Voici la partie spécifique au produit.
Vous pouvez choisir le ATtiny25 qui coûte 0,87 $ / 1 pièce sur Farnell. 8 bits, 8 broches ne prendront donc pas beaucoup de place. En mode hors tension, il consomme 0,2 μA avec le chien de garde désactivé, à 3 V. 2-4 μA si le chien de garde est activé. Il est compatible Arduino, donc la programmation ne vous coûtera pas cher (le programmeur USBasp ou AVRdude coûte environ 2 $ sur eBay). ( Notez que : vous devez utiliser la bibliothèque Arduino Software Serial pour interfacer un module de communication RF, car ce MCU n'a que SPI par matériel.) Dans l'ensemble, il est petit, bon marché, avec une consommation d'énergie relativement faible, mais l' UART bangbang pourrait le complique cependant. Il a une mémoire de programme de 2 Ko, ce qui devrait vous suffire.
Ou optez pour un ARM Cortex M0, qui consomme 2 μA en mode veille et 5 μA en mode arrêt. Un tel MCU est par exemple STM32F030F4 qui coûte 1,09 $ / 1 pièce . Il s'agit d'un contrôleur 32 bits plus puissant avec une fréquence d'horloge système maximale de 48 MHz, mais comme vous ne pouvez le voir que pour + 0,2 $. Il est livré avec une mémoire de programme de 16 Ko, largement suffisante pour cette tâche simple. Il a SPI, UART, I2C et beaucoup d'autres périphériques. La programmation coûtera plus cher, un programmeur dédié coûte 20 $ chez Farnell. À mon avis, cela n'en vaut pas la peine. Au lieu de cela, vous pouvez investir dans une carte de développement pour la famille F0 qui dispose d'un programmateur intégré (ST-LINK) . Carte de découverte STM32F0 coûte environ 10 $. Vous pouvez commencer le prototypage avec cette carte et l'utiliser plus tard comme programmeur.
la source
En regardant la facilité de programmation et le faible coût, je commencerais probablement par une sorte de module Arduino (ou clone à faible coût). Le code de votre capteur à ultrasons existe déjà, tout comme l'exemple de code pour ZigBee, par exemple en utilisant les modules Digi XBee. Sur ce dernier, vous connectez le XBee à un port série, et après avoir établi la connexion avec l'ancienne vénérable interface de commande "AT", vous disposez alors d'un canal point à point que vous pouvez envoyer n'importe quel texte (vers votre Raspberry Pi ). ZigBee n'est pas le type de communication à courte portée le moins cher, mais les modules XBee ont baissé de prix en termes réels au cours des 5 dernières années.
Je sais que certaines personnes ont un problème avec le langage basé sur C / C ++ utilisé sur Arduino, mais dans ce cas, vous fusionneriez en grande partie des scripts déjà existants d'autres utilisateurs.
Si vous recherchez le «mode de veille Arduino» sur Google, vous trouverez des exemples de la façon dont vous pouvez mettre l'Arduino en mode basse consommation et vous réveiller sporadiquement pour prendre une lecture, la communiquer, puis revenir en mode veille.
la source