Stacja Pogody Arduino

W życiu każdego majsterkowicza przychodzi ten moment, kiedy postanawia zrobić Stację Pogody.

Ze mną jest nie inaczej.

Projekt zasadniczo będzie składał się z kilku części. Pierwsza z nich to główny zestaw czujników zewnętrznych:

  • ciśnienia atmosferycznego
  • temperatury
  • wilgotności
  • nasłonecznienia
  • opadu atmosferycznego

Zestaw komunikuje się za pomocą modułu 433Mhz z odbiornikiem, który będzie stanowić koleją część projektu.

Wspomniane czujniki zasilane są z ogniwa Li-po 3.7V a ogniwo doładowywane jest z panela słonecznego.

Z racji użycia czujnika opadu atmosferycznego oraz panelu słonecznego, cała obudowa jest wystawiona na działanie deszczu i słońca. Co niestety prowadzi do sporych przekłamań w odczycie temperatury. W związku z tym przygotowałem oddzielny czujnik temperatury przygruntowej. Ten element pojawi się w trzeciej odsłonie projektu (czekam na części).

Schemat

Zmontowany moduł

Jak widać poniżej, obudowa jest hermetyczna i zamykana przezroczystym wiekiem, pod którym umieściłem panel słoneczny. Poniżej panela znajduje się czujnik nasłonecznienia LDR. Przez wieko przechodzą dwa goldpiny do czujnika opadów atmosferycznych. Wspomniane elementy podpięte są do złącza ETH co umożliwia szybkie i wygodne rozpięcie wieka od obudowy.

Ponieważ zależało mi na hermetyczności obudowy, czujniki ciśnienia oraz wilgotności znajdują się na zewnątrz, a przewody do nich, prowadzone są przez dławik.

Kod programu

Jak już wspomniałem, urządzenia gada z odbiornikiem za pomocą nadajnika FS1000A na 433Mhz. Oczywistym jest tu użycie biblioteki VirtualWire, ale tylko do czasu, gdy po stronie odbiorczej też będziemy mieć Arduino. Taka była też pierwsza wersja mojej stacji. Po stronie odbiorczej było drugie Nano, które odebrane dane wyrzucało na wyświetlacz. Ale ponieważ gdzieś zalegał mi ESP8266 12E, postanowiłem wysłać moje dane do internetu! Jednak wykorzystanie ESP8266 tylko w roli “nadajnika WiFi” dla Arduino jest… no cóż- słabe, musiałem znaleźć sposób na komunikację Arduino Nano bezpośrednio z ESP8266 za pomocą wspomnianych RF linków. Niecałe dwa dni później…  Udało mi się zestawić połączenie z wykorzystaniem (cudownej) biblioteki RadioHead.

Dane z czujników gromadzone są w 5 minutowych odstępach i wysyłane bez większej obróbki do ESP8266. Pomiędzy kolejnymi odczytami Arduino jest usypiane przy wykorzystaniu biblioteki LowPower.

Ponieważ planuję odczytywać więcej urządzeń, każdemu z nich nadaję DEVICE_ID. Ten zestaw ma ID=99.

Kilka rzeczy w kodzie o których warto wspomnieć

RH_ASK driver(2000, 0, 10, 0);

tu inicjujemy transmisję gdzie pierwszy parametr to prędkość a 3 to numer pinu gdzie podpinamy radiolink

dtostrf(h, 1, 1, ftc);

wszystkie floaty przed wysłaniem są obcinane do jednego miejsca po przecinku

sendMessage("01", ftc);

dla własnej wygody/ciekawości odczytuję także temperaturę wewnątrz urządzenia’

float btmp = bmp.readTemperature();

podobnie temperaturę czujnika barometrycznego

float slp = (bmp.readSealevelPressure(260) / 100);

260 to wysokość npm na której zamontowane są moje czujniki

long batt = readVcc();

oprócz danych pogodowych mierze także napięcie na Arduino

int solarV = analogRead(solarPin);

oraz napięcie na ogniwie słonecznym

sendMessage("00", "0000");

to sekwencja która powinna zawsze znajdować się na końcu odczytu czujników. Usypia ona mikro-kontroler na 5 minut.

Długosc anteny 16.2cm dla 433Mhz

dlaczego 16.2cm? To długość tego białego drucika (nad klawiaturą) któremu dla 433Mhz zmierzyłem VSWR 1.16

Koszty

  1. 6V 1.1W 200mA Polycrystalline Silicon Epoxy Solar Panels Module Power Mini Solar Cells Portable Outdoor Charger 112x84mm 2,76$
  2. Nano CH340/ATmega328P 2,49$
  3. 1pcs DHT22 digital temperature and humidity sensor 2.32$
  4. 5V 1A Micro USB 18650 Lithium Battery Charging Board Charger 0,6$
  5. Battery Storage Case Plastic for 2 x 18650 0,7$
  6. Snow/Raindrops Detection Sensor Module 0,5$
  7. 433Mhz RF transmitter and receiver Module 0,8$
  8. Obudowa hermetyczna około 30 PLN
  9. Akumulator -odzysk

Panie, ale czy to działa?

Działa

Dodaj komentarz

3 komentarzy do "Stacja Pogody Arduino"

Powiadom o
avatar
Sortuj wg:   najnowszy | najstarszy | oceniany
lockter
Gość

świetny projekt, szukałem inspiracji do zbudowania właśnie czegoś podobnego – stacji z czujnikami która komunikuje się z bazą odczytującą te dane. chodzi mi o to by odczytane dane można było dalej przetwarzać. czy możesz powiedzieć jaki zasięg udało się uzyskać na tych modułach RF433 i czy udaje się zewnętrznemu modułowi bezproblemowo pracować przy zasilaniu solarnemu – czy i jak często trzeba go doładowywać?

czy mógłbyś udostępnić też kody źródłowe?

wpDiscuz