« Ordinateur de bord » : différence entre les versions
→Régulation efficace de la tension : intensité max du polulu 5V |
→Gestion de l'énergie à bord : ukhas timer rtty |
||
| (10 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 5 : | Ligne 5 : | ||
L'Arduino est basé sur un micro-contrôleur, sa capacité de traitement est donc assez faible. Elle est cependant suffisante pour traiter les données de plusieurs capteurs et les envoyer sur un lien RF ou les sauvegarder sur une mémoire interne pour les exploiter après récupération (utile si la liaison RF est perdue pendant une partie du vol). | L'Arduino est basé sur un micro-contrôleur, sa capacité de traitement est donc assez faible. Elle est cependant suffisante pour traiter les données de plusieurs capteurs et les envoyer sur un lien RF ou les sauvegarder sur une mémoire interne pour les exploiter après récupération (utile si la liaison RF est perdue pendant une partie du vol). | ||
Plusieurs [http://store.arduino.cc/index.php?main_page=index&cPath=11 modèles] existent, l'[http://store.arduino.cc/index.php?main_page=product_info&cPath=11&products_id=195 Uno] est celui de base. Il en existe des modèles avec des contrôleurs différents, des modèles plus petits, avec des tensions différentes, etc. Voir l'[https://www.sparkfun.com/arduino_guide arduino buying guide]. Probablement que la meilleure option pour nous sera d'avoir un modèle basse tension, 3.3V au lieu de 5V, fournie par les modèles [http://arduino.cc/en/Main/ArduinoBoardPro Pro], | Plusieurs [http://store.arduino.cc/index.php?main_page=index&cPath=11 modèles] existent, l'[http://store.arduino.cc/index.php?main_page=product_info&cPath=11&products_id=195 Uno] est celui de base. Il en existe des modèles avec des contrôleurs différents, des modèles plus petits, avec des tensions différentes, etc. Voir l'[https://www.sparkfun.com/arduino_guide arduino buying guide]. Probablement que la meilleure option pour nous sera d'avoir un modèle basse tension, 3.3V au lieu de 5V, fournie par les modèles [http://arduino.cc/en/Main/ArduinoBoardPro Pro], faits par SparkFun. Cela nécessite de ne pas avoir de capteur en 5V. Le dernier modèle Pro sorti est le [https://www.sparkfun.com/products/12587 Pro Micro]. Le [https://www.sparkfun.com/products/11114 Pro Mini] utilise l'ancien contrôleur et n'a pas de connecteur USB ni de quartz directement sur la carte. | ||
Un ''shield'', nom donné aux cartes d'extension, sera probablement nécessaire pour connecter nos différents capteurs, par exemple le [http://snootlab.com/shields-snootlab/541-memoire-20-ds1307-fr.html Mémoire 2.0] de Snootlab (18,60 EUR, 3.3V). Il fournit un connecteur pour carte SD et embarque en plus une horloge RTC. Elle n'est pas forcément nécessaire vu que le GPS fournit aussi l'heure précise, mais ça peut permettre de programmer des opérations périodiques facilement et ça fournit un backup. Pour le stockage des données sur carte SD, un module dédié existe, l'[https://www.sparkfun.com/products/9530 OpenLog] (3.3V - 12V). Il lit le port série et sauvegarde tout sur la carte. | Un ''shield'', nom donné aux cartes d'extension, sera probablement nécessaire pour connecter nos différents capteurs, par exemple le [http://snootlab.com/shields-snootlab/541-memoire-20-ds1307-fr.html Mémoire 2.0] de Snootlab (18,60 EUR, 3.3V). Il fournit un connecteur pour carte SD et embarque en plus une horloge RTC. Elle n'est pas forcément nécessaire vu que le GPS fournit aussi l'heure précise, mais ça peut permettre de programmer des opérations périodiques facilement et ça fournit un backup. Pour le stockage des données sur carte SD, un module dédié existe, l'[https://www.sparkfun.com/products/9530 OpenLog] (3.3V - 12V). Il lit le port série et sauvegarde tout sur la carte. OpenLog est disponible en France à [http://www.lextronic.fr/P29593-module-openlog.html 19.20] ou [http://www.robotshop.com/eu/en/openlog-data-logger.html 23.03] EUR. [http://www.conrad.fr/ce/fr/product/095477/Module-Micro-SD-SparkFun-SPK09802?ref=list Conrad revend] aussi le module micro SD SparkFun à 18 EUR. Les cartes SD fonctionnent en 3.3V ou en 1.8V une fois initialisées avec du 3.3V, ce qui va nécessiter un régulateur de tension dans tous les cas [https://en.wikipedia.org/wiki/Sd_card#Electrical_interface]. L'alternative la moins chère et qui contient la zone de prototypage et la RTC, c'est le shield de DX, [http://www.dx.com/p/xd-05-arduino-arduino-data-logging-shield-module-244273 XD-05], qui a été acheté. | ||
Liste de projets utilisant l'Arduino pour des ballons haute altitude, original avec shield spécial ou carte sur mesure : | Liste de projets utilisant l'Arduino pour des ballons haute altitude, original avec shield spécial ou carte sur mesure : | ||
| Ligne 21 : | Ligne 21 : | ||
==Batteries et tensions== | ==Batteries et tensions== | ||
Les anglais utilisent généralement une ou plusieurs piles [http://www.energizer.com/batteries/performance-lithium/ultimate-lithium/Pages/aaa.aspx Energizer Ultimate Lithium AAA]. Elles existent aussi en AA. Dans les applications les moins gourmandes, certains utilisent une pile bouton CR2032. | Les anglais utilisent généralement une ou plusieurs piles [http://www.energizer.com/batteries/performance-lithium/ultimate-lithium/Pages/aaa.aspx Energizer Ultimate Lithium AAA]. Elles existent aussi en AA. La datasheet est disponible [http://data.energizer.com/PDFs/l91.pdf ici], les AA pèsent 14.5g pour 3000mAh. Dans les applications les moins gourmandes, certains utilisent une pile bouton CR2032. | ||
Les micro-contrôleurs des Arduinos peuvent être alimentés entre 2.7 et 5.5V pour les modèles ATmega32U4 et entre 1.8 et 5.5V pour les modèles ATmega328. Le problème avec une tension aussi libre, est de pouvoir alimenter les capteurs, qui pour certains ont besoin de 3.3V ou de 5V. | Les micro-contrôleurs des Arduinos peuvent être alimentés entre 2.7 et 5.5V pour les modèles ATmega32U4 et entre 1.8 et 5.5V pour les modèles ATmega328. Le problème avec une tension aussi libre, est de pouvoir alimenter les capteurs, qui pour certains ont besoin de 3.3V ou de 5V. | ||
Les Arduino classiques ont un régulateur en 5V, et les Pro en ont un en 3.3V. Ils [https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro peuvent] être alimentés par 2 piles (3.0V) ou par une batterie LiPo (3.7V), sans passer par la régulation de tension, mais dans ce cas les capteurs n'ont pas accès à un Vcc régulé. Si on veut une tension régulée, il faut passer par l'entrée du régulateur, et fournir '''au moins''' 1V de plus que la tension Vcc qu'il va réguler, donc 6V et plus pour les Arduino classiques, et 4.3V pour les Pro. Ces régulateurs augmentent de beaucoup la consommation électrique du système (parfois de 100% ou plus si la tension d'entrée est élevée). Si la tension chute en dessous de la valeur minimale acceptée par le régulateur, le système s'éteindra alors que le micro-contrôleur pourrait encore fonctionner avec une tension plus basse, c'est dommage. Au final la question est : quelle est la tension nécessaire aux [[Capteurs]] et par conséquence, a-t-on besoin d'un régulateur de tension ? Réponse sur la page en question, et bien sûr l'idéal serait de ne pas en avoir et d'alimenter tout le système avec 2 piles pour une durée de vie de plusieurs jours (selon la puissance radio choisie). | Les Arduino classiques ont un régulateur en 5V, et les Pro en ont un en 3.3V. Ils [https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro peuvent] être alimentés par 2 piles (3.0V) ou par une batterie LiPo (3.7V), sans passer par la régulation de tension, mais dans ce cas les capteurs n'ont pas accès à un Vcc régulé. Si on veut une tension régulée, il faut passer par l'entrée du régulateur, et fournir '''au moins''' 1V de plus que la tension Vcc qu'il va réguler, donc 6V et plus pour les Arduino classiques, et 4.3V pour les Pro. Ces régulateurs augmentent de beaucoup la consommation électrique du système (parfois de 100% ou plus si la tension d'entrée est élevée). Si la tension chute en dessous de la valeur minimale acceptée par le régulateur, le système s'éteindra alors que le micro-contrôleur pourrait encore fonctionner avec une tension plus basse, c'est dommage. Au final la question est : quelle est la tension nécessaire aux [[Capteurs]] et par conséquence, a-t-on besoin d'un régulateur de tension ? Réponse sur la page en question, et bien sûr l'idéal serait de ne pas en avoir et d'alimenter tout le système avec 2 piles pour une durée de vie de plusieurs jours (selon la puissance radio choisie). | ||
Voir [http://roboticcore.com/?p=41 cet exemple] qui intègre une LiPo et un chargeur sur une carte Pro. [https://www.sparkfun.com/products/10718 Une batterie] LiPo de 400mAh coute $8 et est utilisable sans problème jusqu'à -25°C. Son poids : 9g ! | Voir [http://roboticcore.com/?p=41 cet exemple] qui intègre une LiPo et un chargeur sur une carte Pro. [https://www.sparkfun.com/products/10718 Une batterie] LiPo de 400mAh coute $8 et est utilisable sans problème jusqu'à -25°C. Son poids : 9g ! De même, [https://www.sparkfun.com/products/8483 on trouve 2000mAh] pour $13 et 36g. | ||
===Régulation efficace de la tension=== | ===Régulation efficace de la tension=== | ||
Si on a des composants en 5V, nous n'aurons pas le choix et devront avoir un régulateur de tension, et tant qu'à y être un '''régulateur-réhausseur''', ce qui permettra de n'avoir que deux ou trois piles, ou une batterie LiPo. | |||
[http://ava.upuaut.net/?p=551 pAVA utilise] le [http://www.ti.com/product/tps61200 TPS61200] comme régulateur et booster de tension. Il fournit une configurable entre 1.8V et 5.5V à partir d'une à 3 batteries. Ce circuit intégré existe aussi en version tension fixe de sortie à 3.3 ou 5V. Sparkfun a créé [https://www.sparkfun.com/products/10255 cette petite carte] d'alimentation basée sur le TPS61200 pour les batteries LiPo, qui peut être [https://www.circuitsathome.com/tag/tps61200 modifiée] pour d'autres types de batteries. | [http://ava.upuaut.net/?p=551 pAVA utilise] le [http://www.ti.com/product/tps61200 TPS61200] comme régulateur et booster de tension. Il fournit une configurable entre 1.8V et 5.5V à partir d'une à 3 batteries. Ce circuit intégré existe aussi en version tension fixe de sortie à 3.3 ou 5V. Sparkfun a créé [https://www.sparkfun.com/products/10255 cette petite carte] d'alimentation basée sur le TPS61200 pour les batteries LiPo, qui peut être [https://www.circuitsathome.com/tag/tps61200 modifiée] pour d'autres types de batteries. '''600mA max''' | ||
Une alternative est le [http://www.linear.com/product/LTC3525 LTC3525], recommandé [http://cybergibbons.com/uncategorized/arduino-misconceptions-6-a-9v-battery-is-a-good-power-source/ ici]. | Une alternative est le [http://www.linear.com/product/LTC3525 LTC3525], recommandé [http://cybergibbons.com/uncategorized/arduino-misconceptions-6-a-9v-battery-is-a-good-power-source/ ici]. ''Existe-t-il une breakout board pour ce régulateur ?'' 175mA max (peak 500mA avec baisse de tension importante) à Vi = 3V et Vo = 5V. | ||
Plus facile à souder (mais nécessite aussi d'autres composants) : [http://www.electroschematics.com/6232/portable-5v-power-box/ le MAX576]. ''Existe-t-il une breakout board pour ce régulateur ?'' 400mA max à Vi = 3V et Vo = 5V. | |||
La solution la plus simple pour avoir du [http://www.pololu.com/product/2114 3.3V] ou [http://www.pololu.com/product/798 5V] à partir de 2 batteries est probablement le [http://www.pololu.com/product/798 régulateur de | La solution la plus simple pour avoir du [http://www.pololu.com/product/2114 3.3V] ou [http://www.pololu.com/product/798 5V] à partir de 2 batteries est probablement le [http://www.pololu.com/product/798 régulateur de pololu], basé sur un [http://www.onsemi.com/PowerSolutions/product.do?id=NCP1402 NCP1402]. Cependant, sa limite d'intensité est 200mA, pour une tension d'entrée proche de 5V, donc il ne permettra pas d'alimenter un module RF 500mW. | ||
Ces régulateurs réhausseurs de tension nous permettront de plus de surveiller la tension de la pile tout au long du vol. | Ces régulateurs réhausseurs de tension nous permettront de plus de surveiller la tension de la pile tout au long du vol. | ||
===Niveau des signaux des différents composants=== | |||
Alimenter les composants est un problème, communiquer avec eux en est un autre. Le choix de la tension du micro-contrôleur est basé sur la tension la plus élevée qu'on trouve parmi les capteurs, dans notre cas le capteur P1, qui a une sortie analogique entre 0.5 et 4.5V. Le module RF, s'il est choisi en 869MHz à forte puissance sera probablement lui aussi alimenté et commandé par du 5V. | |||
Les autres capteurs, généralement conçus pour fonctionner aux alentours de 3.3V ou moins, devront être connectés au micro-contrôleur. La différence de tension entre les signaux des deux cotés peut poser des problèmes de destruction des capteurs, ou de non-détection de composants sur le bus I²C, comme expliqué dans la [http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter documentation de l'Arduino], pour un Arduino 5V et des capteurs 3.3V. | |||
Un adaptateur de niveau est une solution de sécurité dans ces cas en dehors des limites de fonctionnement normales. Le module GPS [http://ava.upuaut.net/store/index.php?route=product/product&path=59_60&product_id=68 MAX-7] intègre par exemple un régulateur de tension 3.3V et l'adaptateur de niveau qui convient. Mais on pourrait plus simplement fournir un adaptateur de niveau pour tous les capteurs, et avoir ainsi deux réseaux de composants I²C, un en 5V et un alimenté directement par les piles par exemple. Quatre montages d'adaptateurs de niveau sont décrits sur la page de la [http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter#bidirectional documentation Arduino]: utilisation de deux MOSFETs, d'un module, de circuits intégrés ou de 4 transistors. | |||
Voir la page du [http://www.adafruit.com/products/1875 breakout AdaFruit] pour plus d'informations sur les résistances de pull-up et la détection de direction du signal. | |||
==Gestion de l'énergie à bord== | |||
Un challenge du fonctionnement sur piles est de pouvoir avoir un fonctionnement assez long pour permettre de retrouver la nacelle si elle est perdue. Normalement, pour un vol jusqu'à éclatement, le temps est assez court et sans optimisation on peut faire tourner l'arduino sans problème avec des piles. Mais dans le cas où le ballon tombe dans une vallée dans laquelle il n'y a pas de récepteur, il est possible d'avoir du mal à le retrouver. Pour cette raison, nous envisageons de mettre un tracker à animaux, mais on peut aussi tenter de faire durer l'arduino au moins un jour, même s'il est peu probable que son antenne soit dans une position favorable. | |||
Un arduino de base n'est pas vraiment fait pour ne pas consommer beaucoup, mais déjà en utilisant un régulateur de tension un peu meilleur comme décrit ci-dessus, on peut gagner une partie non-négligeable de la consommation. Dans notre cas, ce qui consomme le plus c'est le GPS, puis le transmetteur RF, puis l'Arduino lui même, comme [http://www.daveakerman.com/ Dave] me l'a dit. Pour le GPS uBlox, on peut y faire quelque chose, tel que décrit [http://ava.upuaut.net/?p=437 ici par Upu], pour le transmetteur non à moins de ne pas émettre. | |||
On peut aussi chercher à mettre en veille tous les composants de l'Arduino qui ne servent pas, et de les sortir de veille quand on fait une lecture de capteur par exemple, y compris le micro-contrôleur lui-même, mais ça sera négligeable par rapport à la consommation du GPS et du NTX2. Depuis le code de l'Arduino, on peut désactiver toutes les entrées-sorties, et le mettre en veille jusqu'à ce qu'une interruption arrive par exemple. Pour les états les plus profonds en sauvegarde d'énergie, les interruptions peuvent être un changement d'état d'un port d'entrée sortie ou un tick particulier de timer. Et pour l'envoi des données, nous avons justement besoin d'un timer, tel que http://ukhas.org.uk/guides:interrupt_driven_rtty?s[]=interrupt <- décrit ici, ce qui est bien mieux que d'utiliser une boucle comme dans le code proposé [http://ukhas.org.uk/guides:linkingarduinotontx2 pour les débutants]. | |||
Dernière version du 20 juillet 2014 à 22:37
L'Arduino et le Raspberry PI sont des cibles de choix, principalement à cause de leur bas prix. D'autres sont un peu moins répandus, comme le BeagleBoard.
Arduino
L'Arduino est basé sur un micro-contrôleur, sa capacité de traitement est donc assez faible. Elle est cependant suffisante pour traiter les données de plusieurs capteurs et les envoyer sur un lien RF ou les sauvegarder sur une mémoire interne pour les exploiter après récupération (utile si la liaison RF est perdue pendant une partie du vol).
Plusieurs modèles existent, l'Uno est celui de base. Il en existe des modèles avec des contrôleurs différents, des modèles plus petits, avec des tensions différentes, etc. Voir l'arduino buying guide. Probablement que la meilleure option pour nous sera d'avoir un modèle basse tension, 3.3V au lieu de 5V, fournie par les modèles Pro, faits par SparkFun. Cela nécessite de ne pas avoir de capteur en 5V. Le dernier modèle Pro sorti est le Pro Micro. Le Pro Mini utilise l'ancien contrôleur et n'a pas de connecteur USB ni de quartz directement sur la carte.
Un shield, nom donné aux cartes d'extension, sera probablement nécessaire pour connecter nos différents capteurs, par exemple le Mémoire 2.0 de Snootlab (18,60 EUR, 3.3V). Il fournit un connecteur pour carte SD et embarque en plus une horloge RTC. Elle n'est pas forcément nécessaire vu que le GPS fournit aussi l'heure précise, mais ça peut permettre de programmer des opérations périodiques facilement et ça fournit un backup. Pour le stockage des données sur carte SD, un module dédié existe, l'OpenLog (3.3V - 12V). Il lit le port série et sauvegarde tout sur la carte. OpenLog est disponible en France à 19.20 ou 23.03 EUR. Conrad revend aussi le module micro SD SparkFun à 18 EUR. Les cartes SD fonctionnent en 3.3V ou en 1.8V une fois initialisées avec du 3.3V, ce qui va nécessiter un régulateur de tension dans tous les cas [1]. L'alternative la moins chère et qui contient la zone de prototypage et la RTC, c'est le shield de DX, XD-05, qui a été acheté.
Liste de projets utilisant l'Arduino pour des ballons haute altitude, original avec shield spécial ou carte sur mesure :
- Habduino propose un shield pour les ballons contenant : Ublox MAX7Q GPS, Radiometrix LMT2 433MHz 10mW (RTTY), et en option un lien APRS 300mW (nécessitant une license radio amateur).
- Le pAVA est un ordinateur de bord sur mesure, basé sur le même micro-contrôleur que l'Arduino Uno, avec un GPS uBlox et un émetteur RFM22 (433 ou 915MHz, 100mW, mais qui a de gros problèmes de stabilité avec la température).
Raspberry PI
Le Raspberry PI utilise un micro-processeur ARM, bien plus puissant, mais qui consomme plus. Il existe une caméra officielle.
Dave Akerman est le principal utilisateur du Raspberry PI pour les ballons, et il a bien documenté son approche. Le problème principal du Raspberry PI est sa consommation élevée, et donc il faut plus de batteries. La raison de son passage au Raspberry PI est l'intégration assez récente de la caméra, ce qui évite d'avoir un système dédié qu'il faut aussi alimenter, du genre APN ou GoPro, et ce qui permet de récupérer facilement les images sur le CPU et ainsi les envoyer par le lien RF.
Batteries et tensions
Les anglais utilisent généralement une ou plusieurs piles Energizer Ultimate Lithium AAA. Elles existent aussi en AA. La datasheet est disponible ici, les AA pèsent 14.5g pour 3000mAh. Dans les applications les moins gourmandes, certains utilisent une pile bouton CR2032.
Les micro-contrôleurs des Arduinos peuvent être alimentés entre 2.7 et 5.5V pour les modèles ATmega32U4 et entre 1.8 et 5.5V pour les modèles ATmega328. Le problème avec une tension aussi libre, est de pouvoir alimenter les capteurs, qui pour certains ont besoin de 3.3V ou de 5V. Les Arduino classiques ont un régulateur en 5V, et les Pro en ont un en 3.3V. Ils peuvent être alimentés par 2 piles (3.0V) ou par une batterie LiPo (3.7V), sans passer par la régulation de tension, mais dans ce cas les capteurs n'ont pas accès à un Vcc régulé. Si on veut une tension régulée, il faut passer par l'entrée du régulateur, et fournir au moins 1V de plus que la tension Vcc qu'il va réguler, donc 6V et plus pour les Arduino classiques, et 4.3V pour les Pro. Ces régulateurs augmentent de beaucoup la consommation électrique du système (parfois de 100% ou plus si la tension d'entrée est élevée). Si la tension chute en dessous de la valeur minimale acceptée par le régulateur, le système s'éteindra alors que le micro-contrôleur pourrait encore fonctionner avec une tension plus basse, c'est dommage. Au final la question est : quelle est la tension nécessaire aux Capteurs et par conséquence, a-t-on besoin d'un régulateur de tension ? Réponse sur la page en question, et bien sûr l'idéal serait de ne pas en avoir et d'alimenter tout le système avec 2 piles pour une durée de vie de plusieurs jours (selon la puissance radio choisie).
Voir cet exemple qui intègre une LiPo et un chargeur sur une carte Pro. Une batterie LiPo de 400mAh coute $8 et est utilisable sans problème jusqu'à -25°C. Son poids : 9g ! De même, on trouve 2000mAh pour $13 et 36g.
Régulation efficace de la tension
Si on a des composants en 5V, nous n'aurons pas le choix et devront avoir un régulateur de tension, et tant qu'à y être un régulateur-réhausseur, ce qui permettra de n'avoir que deux ou trois piles, ou une batterie LiPo.
pAVA utilise le TPS61200 comme régulateur et booster de tension. Il fournit une configurable entre 1.8V et 5.5V à partir d'une à 3 batteries. Ce circuit intégré existe aussi en version tension fixe de sortie à 3.3 ou 5V. Sparkfun a créé cette petite carte d'alimentation basée sur le TPS61200 pour les batteries LiPo, qui peut être modifiée pour d'autres types de batteries. 600mA max
Une alternative est le LTC3525, recommandé ici. Existe-t-il une breakout board pour ce régulateur ? 175mA max (peak 500mA avec baisse de tension importante) à Vi = 3V et Vo = 5V.
Plus facile à souder (mais nécessite aussi d'autres composants) : le MAX576. Existe-t-il une breakout board pour ce régulateur ? 400mA max à Vi = 3V et Vo = 5V.
La solution la plus simple pour avoir du 3.3V ou 5V à partir de 2 batteries est probablement le régulateur de pololu, basé sur un NCP1402. Cependant, sa limite d'intensité est 200mA, pour une tension d'entrée proche de 5V, donc il ne permettra pas d'alimenter un module RF 500mW.
Ces régulateurs réhausseurs de tension nous permettront de plus de surveiller la tension de la pile tout au long du vol.
Niveau des signaux des différents composants
Alimenter les composants est un problème, communiquer avec eux en est un autre. Le choix de la tension du micro-contrôleur est basé sur la tension la plus élevée qu'on trouve parmi les capteurs, dans notre cas le capteur P1, qui a une sortie analogique entre 0.5 et 4.5V. Le module RF, s'il est choisi en 869MHz à forte puissance sera probablement lui aussi alimenté et commandé par du 5V.
Les autres capteurs, généralement conçus pour fonctionner aux alentours de 3.3V ou moins, devront être connectés au micro-contrôleur. La différence de tension entre les signaux des deux cotés peut poser des problèmes de destruction des capteurs, ou de non-détection de composants sur le bus I²C, comme expliqué dans la documentation de l'Arduino, pour un Arduino 5V et des capteurs 3.3V.
Un adaptateur de niveau est une solution de sécurité dans ces cas en dehors des limites de fonctionnement normales. Le module GPS MAX-7 intègre par exemple un régulateur de tension 3.3V et l'adaptateur de niveau qui convient. Mais on pourrait plus simplement fournir un adaptateur de niveau pour tous les capteurs, et avoir ainsi deux réseaux de composants I²C, un en 5V et un alimenté directement par les piles par exemple. Quatre montages d'adaptateurs de niveau sont décrits sur la page de la documentation Arduino: utilisation de deux MOSFETs, d'un module, de circuits intégrés ou de 4 transistors.
Voir la page du breakout AdaFruit pour plus d'informations sur les résistances de pull-up et la détection de direction du signal.
Gestion de l'énergie à bord
Un challenge du fonctionnement sur piles est de pouvoir avoir un fonctionnement assez long pour permettre de retrouver la nacelle si elle est perdue. Normalement, pour un vol jusqu'à éclatement, le temps est assez court et sans optimisation on peut faire tourner l'arduino sans problème avec des piles. Mais dans le cas où le ballon tombe dans une vallée dans laquelle il n'y a pas de récepteur, il est possible d'avoir du mal à le retrouver. Pour cette raison, nous envisageons de mettre un tracker à animaux, mais on peut aussi tenter de faire durer l'arduino au moins un jour, même s'il est peu probable que son antenne soit dans une position favorable.
Un arduino de base n'est pas vraiment fait pour ne pas consommer beaucoup, mais déjà en utilisant un régulateur de tension un peu meilleur comme décrit ci-dessus, on peut gagner une partie non-négligeable de la consommation. Dans notre cas, ce qui consomme le plus c'est le GPS, puis le transmetteur RF, puis l'Arduino lui même, comme Dave me l'a dit. Pour le GPS uBlox, on peut y faire quelque chose, tel que décrit ici par Upu, pour le transmetteur non à moins de ne pas émettre.
On peut aussi chercher à mettre en veille tous les composants de l'Arduino qui ne servent pas, et de les sortir de veille quand on fait une lecture de capteur par exemple, y compris le micro-contrôleur lui-même, mais ça sera négligeable par rapport à la consommation du GPS et du NTX2. Depuis le code de l'Arduino, on peut désactiver toutes les entrées-sorties, et le mettre en veille jusqu'à ce qu'une interruption arrive par exemple. Pour les états les plus profonds en sauvegarde d'énergie, les interruptions peuvent être un changement d'état d'un port d'entrée sortie ou un tick particulier de timer. Et pour l'envoi des données, nous avons justement besoin d'un timer, tel que http://ukhas.org.uk/guides:interrupt_driven_rtty?s[]=interrupt <- décrit ici, ce qui est bien mieux que d'utiliser une boucle comme dans le code proposé pour les débutants.