Stap 6: Arduino schetsen
Er zijn twee schetsen, één voor de PCB gemonteerd in de behuizing genoemd Weather5.ino. En één voor de PCB in mijn huis genaamd W5Receive.ino
nrf24L01
Dit is een bijgewerkte versie van maniacBug bibliotheek
https://Arduino-info.Wikispaces.com/Nrf24L01-2.4GHz-howto
https://github.com/TMRh20/RF24
De netwerkbibliotheek is in het bijgevoegde zip-bestand
RF24Network-Development.zip
Probleem/oplossing: Ik hoopte voor het verzenden van alle gegevens in één keer, maar ik had problemen, dus ik het in twee pakketten verdeelde:
struct payload_t1
{
niet-ondertekende lang strijd; 4 bytes
dubbele TempC; 4 bytes
dubbele RH; 4 bytes
dubbele Vcc; 4 bytes
dubbele BP; 4 bytes
} payload1;
struct payload_t2
{
dubbele RainAccum; 4 bytes
dubbele MPH; 4 bytes
dubbele GustMPH; 4 bytes
dubbele WDIR; 4 bytes
} payload2;
Dit werkt beter.
BMP180
Ik gebruikte Sparkfun sfeBMP180 bibliotheek.
Ik gebruikte de bibliotheken-methode voor de berekening van de luchtdruk
Dit vereist hoogte in meter. Ik gebruikte:
#define 1417.0 hoogte / / hoogte meter
DHT22
Ik gebruikte deze bibliotheek:
https://github.com/markruys/Arduino-DHT
HMC5883L
Ik gebruikte de Adafruit bibliotheken
https://github.com/adafruit/Adafruit_Sensor
https://github.com/adafruit/Adafruit_HMC5883_Unified
De lus van de schets Weather5 is vrij ingewikkeld. Een vereenvoudigde uitleg:
Windsnelheid moet continu worden gecontroleerd. Ik tellen het aantal omwentelingen en RPM kunt berekenen. Aangezien dit de dezelfde anemometer gebruikt in mijn vorige weerstation, heb ik de aanpassingswaarde dit omzetten in MPH.
Gust snelheid wordt berekend door het vinden van de kortste tijd tussen revoluties en dat omzetten in MPH.
Regen moet ook voortdurend worden gecontroleerd, ik gewoon het aantal emmer tips. Dit is niet geconverteerd naar inches.
De andere gegevens hoeft niet continu worden gecontroleerd, zodat het alleen voor het verzenden van pakketten wordt verkregen. Dit is de accuspanning, temperatuur, RH, BP en Wind richting.
Eenmaal een minuut, alle gegevens is verzonden naar W5Receive PCB.
W5Receive schets ontvangt alle gegevens.
Alle deze doet converteren is het TempC om TempF en berekend de Wind Chill.
De laatste formule, ik kon vinden voor de Wind Chill dit behoort.
http://usatoday30.usatoday.com/Weather/winter/Windchill/Wind-Chill-formulas.htm
Al deze gegevens is verstuurd naar de seriële poort.
Probleem: Ik probeerde dit voor een paar dagen en een probleem gevonden. De batterijen waren te snel drainage.
Oplossing: Ik deed een snelle maatregel van het huidige verbruik. Het ging over 67mA. Ik dacht dat dit een weinig hoog. Ik was vrij zeker was het grootste afvoerkanaal de nrf24L01 dus ik deed wat onderzoek en hoe het neer na pakketten die worden verzonden en je het alleen recht bedacht voor het verzenden van pakketten. Dit verminderd stroom over 6mA. Hopelijk, zullen dit genoeg.
Schetsen zijn gekoppeld.