Kolejna stacja pogody na arduino

Kolejna stacja pogody na 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 3.7V a jest ono doładowywane 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

Ocena: 5/5 (głosów: 16)

Podobne posty

18 komentarzy do “Kolejna stacja pogody na arduino

  • Profesjonalny projekt DIY! Dodałem RSS do Twojej strony.

    Co to za czujnik na schemacie nad panelem fotowoltaicznym?
    Jak długo wytrzymuje taki czujnik deszczu? Czy śniedź, rdza na ścieżkach nie “blokuje” sygnału?
    I jeszcze pytanie o wspomniany w opisie dławik. Ostatnio miałem problem z hermetycznym podłączeniem oświetlacza LED na ścianie zewnętrznej bo nie mogłem znaleźć nigdzie dławika na płaski kabel. U Ciebie widzę, że jest nawet taśma. Możesz wrzucić link do źródła takich dławików?

    Odpowiedz
    • Andy, dzięki. Ten “czujnik” to wg fritza antena GSM. Czujnik deszczu jest cynowany, czas pokaże – wcześniej nie używałem. Myślę że jak zacznie śniedzieć to odczyszczę i pocynuję. Może w międzyczasie znajdę inny patent na pomiar opadu. Użyłem taśmy dla wygody i efektu wizualnego ;) Jest delikatnie zrolowana i zabezpieczona termokurczem. Do wody bym tego nie wrzucił, ale do naszych celów powinno wystarczyć. Dławik akurat kupiłem w Casto. Podobnie jak kolanko w którym umieściłem czujniki.

      Odpowiedz
  • Podoba mi się pomysł wykorzystania przezroczystej obudowy i montażu ogniwa PV wewnątrz. Niby takie proste, ale wpaść na to już trudniej. Moja stacja jeszcze w powijakach, ale przyszły już czujniki zapylenia SDS011. Potrzebna będzie grzałeczka do ogrzewania powietrza gdy wilgotność jest wyższa niż 65-70%, tak aby odczyty zapylenia nie były fałszowane przez kropelki wody. Później trzeba jeszcze zasilanie tuby geigera mullera rozkminić i będzie można przystąpić do montażu. Jako czujnik środowiskowy wybrałem BME280. Wydaje się być lepszym wyborem niż popularny DHT11/22.
    A do prezentacji danych posłuży polski nettemp zainstalowany na malinie, która mieszka w głównej rozdzielnicy. Komunikacja stacji z maliną przez LoRa lub po prostu RFM69HW

    Odpowiedz
  • Ile czujników sds chcesz zamontować :) Obudowę dobierałem min pod kątem czujnika PM ale konieczność podgrzewania powietrza a co za tym idzie mocniejszego zasilania, sprawiła ze będę pozyskiwał dane o jakości powietrza w inny sposób. Prezentuję wyniki na thingspeak’u bo tak szybko i wygodnie, chociaż niesie to spore ograniczenia. Docelowo szukam rozwiązania na bezpieczne logowanie większej ilości czujników w bazie MySql na zewnętrznym hoście.

    Odpowiedz
    • Wystarczy mi jeden SDS011. A przyszło trochę więcej bo przed wprowadzeniem do sprzedaży (w Nettigo) chcemy je gruntownie przetestować. Ogólnie to bardzo fajny czujnik, jedyny minus to zakres temperatury podany przez producenta (od -10C), jednakże powietrze i tak trzeba ogrzewać, żeby nie fałszowało pomiarów, więc przy okazji problem niskiej temperatury sam się rozwiązał.
      Jeżeli chodzi o prezentację i archiwizowanie danych to nettemp tutaj wymiata. A najlepsze jest to, że można go zainstalować nie tylko na raspberry pi, ale również na “cienkim kliencie” – terminalu z allegro za 40 zł.

      Odpowiedz
        • Rok temu proponowałem wprowadzenie Nextionów do oferty. Ale spotkałem się z kilkoma opiniami, że jest to strasznie przereklamowane. Na chwilę obecną nie mamy tego w planach. Chyba, że jakąś partię testową do 10 szt.

          Odpowiedz
  • KamilK dobry pomysł z ogniwem, jak to się sprawuje? tzn czy starcza energii na ciągła pracę?
    i pytanie po co arduino + esp + radio? czy nie prościej nodemcu za 3$ z bootloaderem arduino? Masz wtedy dostęp z każdej przeglądarki, obojętnie jaki OS.

    Odpowiedz
    • Pokazuję i objaśniam :) Na końcu artykułu znajdziesz link do strony, na której umieściłem dane se stacji. Między innymi stan baterii i napięcie solara. Po tygodniu pojemność baterii to 79.5% Przy jakim takim nasłonecznieniu bilans na koniec dnia jest taki jak na koniec. Czyli daje radę. A jeszcze do wydłubania jest kilka ledów. Dlaczego esp? Będzie ono zbierać dane z różnych czujników za pomocą rf linków i wysyłać na wyświetlacz a przy okazji do sieci. Znacznie taniej jest zbudować 10 czujników na promini niż nodemcu. No i umieszczanie nodemcu w czujniku który co 5 minut sprawdza temperaturę z jednego czujnika, to strzelanie do muchy z armaty. Poza tym rf linki mogą mieć znacznie większy zasięg.

      Odpowiedz
    • Miałem problemy z dostawcą z Ali. Czekałem prawie 3 mce. na części :( Co gorsze nie doszły i zamówiłem jeszcze raz. Mam kod odbiornika działający na EPS8266 więc całość zadziała, ale nie chcę pokazywać Wam płytki stykowej ale gotowy zamknięty projekt. W między czasie myślę nad obudową oraz interfejsem wyświetlacza nextion :)

      Odpowiedz

Odpowiedz

anuluj

Masz uwagi?