Étape 6: Arduino croquis
Il y a deux esquisses, une pour le circuit imprimé monté dans le boîtier appelé Weather5.ino. Et un pour le PCB dans ma maison appelée W5Receive.ino
nrf24L01
Il s’agit d’une version actualisée de la bibliothèque de maniacBug
https://Arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HOWTO
https://github.com/TMRh20/RF24
La bibliothèque de réseau est dans le fichier zip joint
RF24Network-Development.zip
Problème/SOLUTION : J’espérais d’envoyer toutes les données à la fois, mais j’ai eu des problèmes, alors j’ai divisé en deux paquets :
struct payload_t1
{
unsigned long comptoir ; 4 octets
double NC ; 4 octets
double RH ; 4 octets
double Vcc ; 4 octets
BP double ; 4 octets
} payload1 ;
struct payload_t2
{
double RainAccum ; 4 octets
double mi/h ; 4 octets
double GustMPH ; 4 octets
double WDIR ; 4 octets
} payload2 ;
Cela fonctionne mieux.
BMP180
J’ai utilisé Sparkfun sfeBMP180 bibliothèque.
J’ai utilisé la méthode de bibliothèques de calcul de la pression barométrique
Ces exige l’Altitude en mètres. J’ai utilisé :
#define 1417.0 ALTITUDE / / mètres d’Altitude
DHT22
J’ai utilisé cette bibliothèque :
https://github.com/markruys/Arduino-DHT
HMC5883L
J’ai utilisé les bibliothèques Adafruit
https://github.com/Adafruit/Adafruit_Sensor
https://github.com/Adafruit/Adafruit_HMC5883_Unified
La boucle de croquis de Weather5 est assez compliquée. Une explication simplifiée :
Vitesse du vent doit être surveillée en permanence. Je compte le nombre de tours et peut calculer tr/min. Puisqu’il s’agit de l’anémomètre même utilisé dans ma précédente station météo, j’ai la valeur de rajustement de ce convertir à mi/h.
Vitesse des rafales est calculé en trouvant le temps le plus court entre les révolutions qui convertir à mi/h.
Pluie doit également être surveillée en permanence, j’ai juste de compter le nombre de conseils de seau. Ce n’est pas converti en pouces.
Les autres données n’a pas besoin d’être surveillés en permanence donc il est obtenu uniquement avant l’envoi de paquets. Il s’agit de RH, BP et direction du vent, la température, la tension de la batterie.
Une fois par minute, toutes les données sont envoyées à W5Receive PCB.
W5Receive croquis reçoit toutes les données.
Tout cela n’est de convertir la NC à TempF et calcule le refroidissement éolien.
La dernière formule, j’ai pu trouver pour l’éolien est celle-ci.
http://usatoday30.usatoday.com/Weather/Winter/Windchill/Wind-Chill-Formulas.htm
Toutes ces données sont envoyées au port série.
Problème : J’ai essayé pendant quelques jours et trouvé un problème. Les piles ont été vidange trop vite.
SOLUTION : J’ai fait une mesure rapide de la consommation actuelle. Il était environ 67mA. J’ai pensé que c’était un peu élevé. J’étais presque sûr que le drain plus grand était le nrf24L01 alors j’ai fait quelques recherches et trouvé comment alimenter il vers le bas après les paquets envoyés et il allumer juste avant l’envoi de paquets. Ceci réduit actuel à propos de 6mA. J’espère que cela sera suffisant.
Esquisses sont attachés.