jeudi 15 juin 2017

Station météo avec un Arduino

Le projet est orienté vers une plateforme de développement et de prototypage Open Source nommée Arduino. Grossièrement, l’Arduino peut être comparé à un ordinateur très limité en termes de performances : processeur 16 Mhz, 32Ko de mémoire flash pour les programmes (dont 0,5Ko réservé pour le système d’exploitation), 1Ko de RAM, 1Ko d’ « espace disque » (EEPROM), pas de sortie écran. Par contre son énorme avantage est qu’il possède 14 broches numériques pouvant recevoir ou emmètre un signal (0 ou 1), plus 6 broches analogiques. Ces 6 broches analogiques permettent d’envoyer ou de mesurer un courant de 0 à 5 volts (le mappage s’effectuant de 0 à 1023 – 0 = 0 volt, 1023 = 5 volts). Au niveau logiciel, l’Arduino se programme via un langage dédié très proche du C. Pour ce faire il suffit de télécharger l’IDE dédié (disponible sur tous les systèmes d’exploitation), d’écrire le programme et de le téléviser sur l’Arduino (qui dispose d’un port USB dédié à cet usage).
C’est donc un Arduino qui se charge de collecter la température intérieure et de l’afficher. Pour la température extérieure, j’ai utilisé un microcontrôleur ATTINY85 – car l’Arduino est capable de programmer ce type de composant ! En effet, il est possible de brancher l’Attiny sur l’Arduino et de dire à l’Arduino « envoie le programme sur le microcontrôleur ». Le langage étant le même que pour l’Arduino.
En extérieur, sous abris, l’Attiny va interroger la sonde température/humidité toutes les trente secondes. Les informations températures et humidités sont encapsulées dans une trame et envoyé à l’émetteur 433Mhz. La led est activée le temps d’un clignotement. En intérieur, le récepteur reçoit les informations via le récepteur 433Mhz il les affiche sur l’écran LCD. La led est activée le temps d’un clignotement. Toutes les trente secondes l’Arduino interroge également sa propre sonde de température et affiche l’information. Le programme prévoit deux tableaux (un pour la température extérieur et un autre pour la température intérieur) permettant de stocker 96 valeurs de températures. Tous les 15 minutes l’Arduino supprime la valeur la plus ancienne (celle avec l’indice zéro) et ajoute la nouvelle valeur connue. A partir de ces deux tableaux, le programme recherche les valeurs maximales et minimales. Ces valeurs sont affichées. L’affichage nous renseigne donc des températures intérieure/extérieur et du taux d’humidité extérieur en temps réel. Ainsi que les températures minimale/maximale intérieure/extérieur sur vingt-quatre heures glissantes.
Les sources sont disponibles ici :
Source de la sonde extérieure
Source de la station