Cz. 1 Budowa stacji meteorologicznej w oparciu o arduino i czujniki

Cz. 1 Budowa stacji meteorologicznej w oparciu o arduino i czujniki

 

 

 Powyższy temat jest prawdopodobnie dobrze znany większości z was. Celem  tego artykułu jest zebranie wszelkiej wiedzy od ogólnej po tą już bardziej szczegółową i przedstawienie jej w przystępny sposób. Na wstępie chciałbym zaznaczyć, że pierwsze zapiski na tematy meteorologiczne sięgają aż 334 r .p .n .e. , a ich autorem był Arystoteles który napisał pracę “Meteorologika”. Była to pierwsza taka rozprawa o atmosferze.

 

 Dziś mamy XXI wiek i erę elektroniki więc teraz może coś w tym kierunku. Co wspólnego ma ze sobą Arduino i pogoda? Na pierwszy rzut oka może wydawać się, że nic. Jednak dzięki współczesnej technologii możemy obserwować, badać i poszerzać wiedzę na temat meteorologii i zasad nią rządzących. Najlepsze jest to, że możemy sami obserwować, badać pogodę i nie potrzebujemy do tego labolatorium ani super wydajnego komputera. Wystarczy nam pierwszy lepszy mikrokontroler np. ATMEGA8 firmy Atmel lub gotowy moduł z ATMEGA 328p jak np. Arduino. Ta mała płytka daje nam ogromne możliwości, dzięki swoim wejściom analogowym i wejściom / wyjściom cyfrowym.Możemy bez lutowania podłączać różne czujniki (i nie tylko).

 

 Na rynku dostępnych jest również bardzo dużo rożnego rodzaju czujników, dzięki którym można odbierać informacje o aktualnej temperaturze, wilgotności powietrza i ciśnieniu atmosferycznym. Lecz dzięki wykorzystaniu Arduino i innych czasami nietypowych czujników takich jak np. czujnik światła, czujnik poziomu wody, czujnik czystości powietrza, enkoder itp. możemy własnoręcznie wykonać w pełni sprawną i zaawansowaną stację meteorologiczną. W internecie znajduje się wiele przykładów stacji pogodowych: przewodowych, bezprzewodowych, z większą lub mniejszą ilością badanych czynników atmosferycznych i wykorzystujące różne sposoby wysyłania danych drogą bezprzewodową.

 

 Teraz, gdy mamy już małą wiedzę ogólną na temat stacji meteorologicznych, wiemy czym one są, do czego służą i przy pomocy jakich elementów możemy ją samodzielnie wykonać przejdźmy dalej.

 Może nie będziemy się zajmować od razu przewidywaniem pogody na przyszłe dni, bo chyba nie o to tu chodzi, ale na początek zajmiemy się odczytywaniem i wykorzystywaniem danych zebranych za pomocą Arduino z poszczególnych czujników.

 Więc może teraz przyszedł czas na zagłębienie się w temat związany z czujnikami, każdy wybierze te, które chciałby zastosować w swoim projekcie.

 

  • temperaturę możemy mierzyć na wiele sposobów za pomocą wielu dostępnych termistorów i czujników temperatury. Zacznijmy może od najprostszych termistorów. Nazwa ta nie przypadkowo składa się z dwóch członów: “termi” - czyli termika, temperatura wielkość fizyczna związana z ciepłem. Następnie drugi człon brzmi - “stro” od słowa rezystor, rezystor jest elementem elektronicznym, jak większość z was wie jego zadaniem jest stawienie odpowiedniego oporu, dzięki czemu posiada zdolność obniżenia przyłożonego napięcia, a odłożone napięcie przekształcane jest w ciepło. Rozróżniamy również parę rodzai termistorów: NTC i PTC. Różnią się tym, iż  w termistorach NTC przy wzroście temp. maleje oporność, a PTC analogicznie na odwrót czyli przy wzroście temp. rośnie oporność.




Słowo termistor oznacza zmianę rezystancji wewnętrznej w zależności od temperatury (więcej o termistorach tutaj).





Mamy również wiele innych czujników        temperatury np. popularny DALLAS DS18B20 - 5zł . Ten czujnik wykorzystuje magistralę komunikacyjną SPI dzięki niej można podłączyć parę czujników pod jeden przewód co jest oszczędnością przewodów.

 

Czyli za pomocą termistora podłączonego do  Arduino możemy zbierać w łatwy sposób dane o temp. Następną wielkością jaką będziemy mierzyć będzie:



  • ciśnienie atmosferyczne, które nie możemy zmierzyć już tak łatwo jak temperaturę. Ale się nie martwcie są oczywiście odpowiednie czujniki i gotowe biblioteki do Arduino. Ja wykorzystałem czujnik ciśnienia BMP-280 - 15zł.  Dlaczego akurat ten? Odpowiedź jest prosta. Czujnik ten jest dokładny i oprócz ciśnienia mierzy również temperaturę przez co nie musimy stosować dodatkowego czujnika i jest on tani (napięcie zasilania to 3,3V!!!).

  Nie ma się co rozpisywać są również inne czujniki np. BMP-180 ale jego cena jest wyższa.

  • wilgotność powietrza mierzy się za pomocą higrometrów. Na rynku dostępnych jest wiele higrometrów od dokładnych i drogich, po te mniej dokładniejsze i tańsze. Najpopularniejszymi są więc higrometr DHT22 - 24zł, który jest dokładny i niestety drogi. Mierzy wilgotność powietrza w szerokim zakresie od 0 do 100%RH i temp. od -40 do 125 stopni. DHT21 jest nieco tańszy ale o porównalnej specyfikacji. Jego tańszy i nieco gorszy odpowiednik to DHT11 - 7zł., który ma uboższe parametry: wilgotność od 20 do 90%RH i temp. od 0 do 50 stopni. Ja wybrałem właśnie ten czujnik, ponieważ czujnik temp. jest już w czujniku ciśnienia i jest bardzo dokładny, a parametry owego higrometru nie są najgorsze, przy czym całość kosztuje grosze.

  • czujnik zanieczyszczeń powietrza to element niecodziennie spotykany w stacjach meteo. Czujnik taki mierzy mikrocząsteczki, które występują w powietrzu. Jego wadą jest optyka przez co nie może być narażony na punkt rosy ani wilgotność powyżej 95%. 

 Zakres temperatury pracy również nie jest odpowiedni na Polską  zimę (od -10 do 65   stopni). GP2Y1010AU0F - 30zł.

  • czujnik światła może nim być najprostszy i najtańszy fotorezystor. Sama nazwa wskazuje jak i w przypadku termistora że i ten czujnik zmienia swoją rezystancję wewnętrzną, tylko tym razem w zależności od natężenia światła. Są również odpowiednie czujniki np. GY-302, BH1750 - 10zł.





  • czujnik wilgotności gleby mierzy poziom wilgotności gleby dzięki któremu będziemy wiedzieć kiedy w ogrodzie gleba będzie zbyt sucha i kiedy należy ją podlać ( ).







  • kierunek i siła wiatru, istnieją specjalne maszty z tymi czujnikami, lecz są drogie. Może wykonamy je własnoręcznie? Będzie to bardzo trudne zadanie ale myślę, że jest ono wykonalne.

 Podsumowując zadacie pytanie, czy to się w ogóle opłaca?  Przecież istnieją gotowe stacje pogodowe, które kosztują grosze. Jeżeli chcesz to oczywiście kup sobie taką stację ja sam posiadam taką w domu i kosztowała około 100zł. A na te części i moduły wydamy... no właśnie ile? Policzmy bo sam jestem ciekaw. No więc tak:

 

  • Arduino, którego ceny w naszym sklepie zaczynają się już od 20zł - Arduino UNO R3 CH340

  • czujniki jakie chcemy i ile ich chcemy: wybrałem podstawowe: ciśnienia - 15zł, temperatury (wewnętrznej) - 5zł, wilgotności - 7zł

  • jakieś przewody sądzę, że każdy ma ;)

 Całość to wydatek rzędu 47zł. za komplet. Przyznacie, że jest to atrakcyjna cena.

 

 Mamy już wszystkie potrzebne elementy i moduły do pomiarów lecz została jedna ostatnia i moim zdaniem najważniejsza kwestia. Jaka ma być to stacja? Jak wspomniałem na początku przewodowa, bezprzewodowa, z wyświetlaczem czy bez niego? Podpięta do komputera? A jeżeli bezprzewodowa to oparta na jakim systemie przesyłania danych?

 

   I tutaj pojawia się problem oraz komplikacja (ja tak miałem). Należy podjąć decyzję i oszacować związane z nią koszty oraz konsekwencje. Postaram się pomóc w podjęciu tej właściwej  decyzji, przedstawię wszystkie za i przeciw każdego rozwiązania.

 

Może na pierwszy ogień zabierzemy się za najtańszą stację przewodową. Do jej budowy będziemy potrzebować wyżej wymienionych elementów, (które chcemy) większą ilość dłuższych przewodów. Musimy wybrać sposób odbierania informacji. No więc możemy wszystkie informacje z świata zewnętrznego odbierać przez port UART czyli przez wbudowane USB w Arduino i wyświetlać wszystkie informacje w serial monitorze.

 

 Lecz taki pomysł nie przypadł mi do gustu. Włączać komputer aby sprawdzić ile jest stopni na dworze to przecież nonsens. Lepiej sprawdzić to uruchamiając telefon i wpisać odpowiednią frazę w wyszukiwarke. Drugim rozwiązaniem jest zastosowanie wyświetlacza. Osobiście uważam to rozwiązanie za lepsze, ponieważ nic nie trzeba robić aby odczytać informacje, a wyświetlacz kosztuje tylko ok. 9zł -

 

  Wyświetlacz LCD to wydatek, który podniesie cenę całości do ok. 56zł. To już spora kwota, lecz nadal niewielka w porównaniu do stacji pogodowej z taką ilością czujników.

 Mamy wszystkie potrzebne elementy i czujniki więc zabieramy się do łączenia wszystkiego w całość. Podłączmy wszystko zgodnie ze schematem poniżej:

stacja meteo schemat(link do pobrania schematu).

  • Plusem takiego rozwiązania jest to, że cały czas mamy interesujące nas informacje  wyświetlne na wyświetlaczu, jak i cena jest bardzo przystępna.

  • Minusem jest to, iż magistrala I2C, dzięki której działa czujnik ciśnienia jest dwu przewodowa i ograniczona do pojemności przewodów do 400pF. Z moich doświadczeń jest to ok. 3m przewodu. Więc czujnik musi być blisko ARDUINO. 

 Istnieje jednak rozwiązanie: całość stacji umieścić na zewnątrz, a tylko przewody do wyświetlacza przeciągnąć do środka budynku. Wyjścia cyfrowe znacznie lepiej poradzą sobie z długością przewodów, ponieważ ich sygnał 5v będzie się zmniejszał przy dużo dłuższej długości przewodów niż magistrali. A więc mamy do wyboru parę opcji, którą wybierzecie to już zależy od was. Sketch dostępny w następnej części.

 

 To by było na tyle w tej części, zapraszam do kolejnej, w której użyjemy większej ilości czujników oraz przyjrzymy się im bliżej. Następnie zajmiemy się przesyłaniem danych z naszej stacji drogą bezprzewodową. W tym celu posłużymy się popularnym i tanim modułem RF433Mhz. Wypróbujemy także inne moduły komunikacyjne takie jak bluetooth czy wi-fi, dzięki którym informacje o aktualnej sytuacji za oknem trafią bezpośrednio na nasz smartfon.