Sélection d'un microcontrôleur pour un projet de collecte de données sur batterie


18

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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).


2
Cela semble assez large, ou peut-être hors sujet. Tout petit MCU sur une carte conviendrait. Si vous ne vous êtes pas décidé sur Zigbee, je vous suggère de regarder le micro: bit BBC, qui a BLE à bord, et un connecteur de batterie.
Sean Houlihane

2
Si vous voulez une radio zigbee, vous devez au moins évaluer les pièces qui la combinent avec un processeur MCU (généralement ARM Cortex-M). Cela ne signifie pas que vous devez emprunter cette voie, mais si vous décidez de ne pas le faire, cela devrait être pour une bonne raison.
Chris Stratton

2
Qu'entendez-vous par «à l'intérieur d'un puits»? L'affaire sera-t-elle sous l'eau? Ne vous attendez pas à une transmission ou une réception des modules Xbee sous l'eau. Beaucoup fonctionnent sur la bande 2,4 GHz, qui est bien absorbée par l'eau; d'autres fonctionnent autour de 900 MHz, qui ne peuvent probablement pas non plus pénétrer très bien l'eau. Si le boîtier n'est pas sous l'eau, le mur de 6m + devrait convenir aux xbees.
Jonas Schäfer

«à l'intérieur d'un puits» signifie que l'appareil sera placé à l'intérieur du puits, mais au-dessus de l'eau.
Raj

Réponses:


20

Un processus général de sélection des microcontrôleurs.

  1. Résumez vos besoins envers le microcontrôleur. Par exemple dans ce cas:

    • 1 temporisateur matériel , pour mesurer le temps entre les impulsions de déclenchement et d'écho.
    • 2 broches GPIO pour interfacer les broches d'écho et de déclenchement du capteur.
    • Peut-être UART pour interfacer le module de communication RF.
    • 1 entrée ADC pour surveiller la tension de la batterie.


    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.

  2. 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).

  3. 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.

  4. 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.

  1. 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.

  2. 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.


3
Notez que les cartes ST-LINK de découverte et nucléo peuvent souvent être utilisées pour d'autres MCU que celles de la carte elle-même. Je ne suis pas sûr de cette carte spécifique, mais d'après son apparence, elle utilise SWD et peut être déconnectée à l'aide des cavaliers à droite. La bonne chose à ce sujet est que les ST-LINK ne sont pas seulement des programmeurs, mais des débogueurs en circuit , ce qui facilite beaucoup le développement .
Jonas Schäfer

3
De plus, si vous ne vous souciez pas des réponses du XBEE, vous pouvez utiliser l'interface série universelle de ATtiny pour obtenir un UART qui est plus rapide que l'implémentation logicielle bit-banged.
Jonas Schäfer

3
Il convient de noter que les modules radio sont souvent fournis avec des ressources MCU non dédiées (et des modules existent pour simplifier le type approprié). Le CPU est généralement partagé avec la pile RF, vous devez donc accepter des interruptions périodiques, etc.
Sean Houlihane

3
ULPBENCH est une bonne ressource lorsque le fonctionnement à faible puissance (batterie) est important.
neonzeon

5

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.


1
Bien qu'une bonne gestion de l'alimentation soit possible avec une puce ATmega, une carte Arduino typique dispose de drains de puissance parasites qui limiteront considérablement la durée de vie de la batterie.
Chris Stratton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.