User Tools

Site Tools


Sidebar

Accès rapide

projets:010

Station météo

Des capteurs + une raspberry pi = une station météo

Quelles sont les mesures et les capteurs que j'imagine dans cette station ?

Capteur Mesure Importance
Anémomètre vitesse du vent 0
Baromètre pression atmosphérique ++
Capteur d'humidité humidité de l'air ambiant ++
Girouette direction du vent 0
GPS temps (pour l'horodatage des données 0
Pluviomètre importance d'une précipitation 0
Thermomètre température de l'air ambiant ++

Matériel (sourcing)

Matériel Description Prix
Baromètre + thermomètre BMP180 $9.95 Adafruit
BMP180 $0.72 AliExpress
Capteur d'humidité + thermomètre DHT11 $5 Adafruit
DHT11 $0.67 AliExpress
GPS GPS (pin) $39.95 Adafruit
GPS BU-353-S4 (usb) $25.10 AliExpress
Arduino
Arduino Arduino UNO rev3 20 € Arduino.cc
Raspberry Pi [1]
Raspberry Pi Raspberry Pi 3 + carte SD 49,90 € Kubii
Alimentation Miro USB 5V 2,5A 7,90 € Kubii
Horloge [2] DS1307 + pile 8,50 € Kubii
DS1307 $1.10 AliExpress
LIR2031 (pile rechargeable) $0.99 AliExpress
  • [1] Je veux utiliser cette raspberry comme serveur local connecté à Internet. C'est elle qui fera régulièrement une requête à l'Arduino pour avoir la valeur des capteurs de la station et qui rassemblera ces valeurs.
  • [2] Permet de se passer du GPS pour récupérer l'horodatage.

logbook

2 avril 2018

Premiers essais avec les capteurs que j'ai achetés. La documentation d'Adafruit m'aide particulièrement dans cette tâche.

J'ai la joie de découvrir qu'il y a eu une erreur dans ma commande AliExpress : un AM2302 m'a été livré à la place d'un DHT11. Pas grâce, il me semble que ce capteur est plus performant !

Capteur Description Documentation
BMP180 Baromètre + thermomètre Adafruit
AM2302 Capteur d'humidité + thermomètre Adafruit

29 octobre 2018

Voici comment je pense organiser la station météo : chaque capteur de la station est adapté pour avoir une interface I2C esclave et ils sont tous reliés à une raspberry pi qui collecte toutes les données.

Voici quelques ressources utiles.

  • DIY I2C Devices with ATTiny85 − Exemple d'un capteur de luminosité auquel une interface I2C est ajoutée grâce à un ATTiny85
  • I2C (wikipedia) − Présentation du protocole I2C.
  • I2C at Raspeberry Pi GPIO (lien) − Broches à utiliser sur une Raspberry Pi pour toute communication I2C.

Téléversement du code

Pour commencer, j'essaie de reproduire le capteur de luminosité I2C. Je reprends ma documentation sur l'ATtiny85 pour téléverser le code source du capteur. Attention aux points suivants :

  • L'horloge de l'ATtiny85 doit être fixée à 1Mhz (et non à 8Mhz).
  • Installer la librairie TinyWireS (github). (voir log du 30 octobre 2018)
  • (l. 130) SLEEP_MODE_PWR_SAVE n'est pas défini pour l'ATtiny85. À remplacer par SLEEP_MODE_PWR_DOWN ? (voir log du 30 octobre 2018)

Sur le watchdog

Dans ce code source, l'ATtiny85 passe la plupart du temps en veille, mais toute les secondes, il est “réveillé” par une interruption levé par le watchdog. Les pages 42 à 47 de la documentation de l'ATtiny85 donnent les détails sur la configuration du watchdog, en voici quelques notes.

La configuration du watchdog se fait en éditant le registre WDTCR (Watchdog Timer Control Register).

Bit 7 6 5 4 3 2 1 0
WDTRC WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
  • WDIE = Watchdog Timeout Interrupt Enable
  • WDCE = Watchdog Change Enable
  • WDE = Watchdog Enable
  • WDP = Watchdog Timer Prescaler

Modifier un registre bit par bit.

  • registre |= 1 « p : met à 1 le bit de registre situé en p-ième position.
  • registre |= (1 « p)|(1 « q) : met à 1 les bits de registre situés en p-ème et en q-ième position.

Exemple. WDTCR |= (1 « WDCE) | (1 « WDE);

Remarque. _BV(p) est équivalent à 1 « p.

Par sécurité, WDCE et WDE doivent être passés à 1 avant de pouvoir modifier la configuration du watchdog. En jouant sur les valeurs de WPD[0-3], on change l'intervalle de temps entre deux interruptions provoquées par le watchdog.

WDP3 WDP2 WDP1 WDP0 Typical Time-out at Vcc = 5.0V
0 0 0 0 16 ms
0 0 0 1 32 ms
0 0 1 0 64 ms
0 0 1 1 128 ms
0 1 0 0 250 ms
0 1 0 1 500 ms
0 1 1 0 1.0 s
0 1 1 1 2.0 s
1 0 0 0 4.0 s
1 0 0 1 8.0 s

Dans son usage premier, le watchdog provoque un reset de l'ATtiny85. Pour qu'une exception soit levée, bien mettre à 1 WDIE.

Raspberry Pi et I2C

  • Dans raspi-config, bien activer l'interface I2C.
  • Pour ne pas être embêté par une question de masse, alimenter le capteur depuis la Raspberry Pi.
  • Installer i2c-tools pour vérifier que le capteur fonctionne bien depuis la ligne de commande.
    • i2cdetect -y 1 : détecte les périphériques connectés en I2C.
    • i2cget 1 chip-address : lit un bit.

Je dois dire que je ne suis pas allé plus loin que là car mon capteur n'est pas détecté par ma rasp … :-/ Du moins pour le moment.

30 octobre 2018

Après quelques recherches, voici les solutions qui j'ai trouvées pour faire fonctionner le montage.

Changer la librairie TinyWireS. La dernière version de TinyWireS semble avoir quelques bugs qui ne sont pas corrigés (Issue 44). J'ai donc remplacée la librairie TinyWires de rambo par la librairie TinyWire de lucullusTheOnly (github). Dans le code source de l'ATtiny85, il faut corriger l'import et remplacer toutes les occurrences de TinyWireS par TinyWire.

Corriger le SLEEP_MODE. Apparemment, une interruption du watchdog ne fait pas sortir du SLEEP_MODE_PWR_DOWN (contrairement à un reset, cf. la documentation). Ligne 130, j'ai donc remplacé SLEEP_MODE_PWR_DOWN par SLEEP_MODE_IDLE.

Recherches pour le capteur d'humidité

  • DHT Tiny Breakout for the Raspberry Pi − Exemple de montage d'un capteur d'humidité (DHT22) et d'une ATtiny85 utilisée comme interface I2C.
    • hackster − Présentation complète du projet.
    • github − Code source de l'ATtiny85.
    • Une idée intéressante : la possibilité de couper l'alimentation du capteur pour économiser de l'énergie (la masse du DHT22 est branchée sur une pin de l'ATtiny85 en mode OUTPUT. En changeant son niveau, le DHT est alimenté ou non :
      • DHT_POWER_PIN = LOW ⇒ DHT on
      • DHT_POWER_PIN = HIGH ⇒ DHT off
  • Class for DHTxx sensors. − Une librairie pour communiquer avec le DHT22. Elle est compatible avec l'ATtiny85 (0.1.09 : OK, 0.1.13 : OK)
    • arduino.cc − Description de la librairie sur le site d'Arduino.
    • github − Repo avec des versions plus récentes de la librairie.

Notes

Sources

  • MySensors − Create your own Wonnected Home Experience.

Avec un ESP3266

Batterie + panneaux solaires

  • High Efficiency MPPT Solar Charger − Projet complet d'un chargeur de batterie par un panneau solaire.
    • Soldernerd − Listes des articles sur ce projet sur le blog de son inventeur.
    • hackaday − Projet sur hackaday.

Projets de station météo

Wunderground

- Description Note Lien
Anémomètre (capteur par effet Hall) Construction et calibration. 0 link
Anémomètre (capteur optique) Construction et calibration. 0 link
GPS Connexion d'un GPS USB à une raspberry pi. 0 link
projets/010.txt · Last modified: 2020/07/31 16:03 by a2ohm