PiWS ver. 2 – amatorska stacja pogodowa

PiWS ver. 2 – amatorska stacja pogodowa

Pierwszy projekt stacji pogodowej o którym pisałem w tym miejscu zbierała podstawowe dane meteo 1291 dni czyli prawie 3,5 roku , będąc z powodu mojej przeprowadzki w dwóch miejscach. Na początku lipca podjąłem decyzję o wyłączeniu tego projektu, ale tylko aby rozpocząć jego rozbudowę.

Stacja w pierwszej kolejności dostała nowe oczy , czyli nową kamerę do RPi , i tym razem postawiłem na klasyka kupując następcę poprzedniej kamery czyli RPi Camera HD v2 z 8px obiektywem. robi zdjęcia o niebo lepsze o swojej poprzedniczki. To jedyne podobieństwo z poprzednią konstrukcją, reszta to w zasadzie nowa „technologia”.

Rdzenną formą , albo jak kto woli sercem całego zestawu pozostało RPi 2B , to właśnie do tego mikrokomputera podłączona jest ww. wymieniona kamera. Zasada jej działania pozostaje niezmienna , wyświetla zdjęcie na stronie głównej ( zdjęcie wykonuje za pomocą komenty raspstill z delay 15 min, po kolejnym wywołaniu skryptu z cron poprzednie zmienia nazwę i ląduje w archiwum snapów na serwerze hostingowym )

Reszta zbudowanego trzy lata temu mechanizmu wystawiania zdjęć na lokalny serwer www Raspberry oraz pobieganie na serwerze hostingowym za pomocą komendy wget nadal sprawdza się wyśmienicie , a że mówią aby nie zmieniać tego co dobre 🙂 to tak też zostało.

Dodatkiem który działa już teraz jest napis na snapie (wymaga jeszcze modyfikacji , ale skupiam się teraz nad innymi funkcjami. Klikając na miniaturę na stronie głównej zostanie przeniesieni do osobnej podstrony która przedstawia większe zdjęcie ( screen poniżej)

Pierwszą ważną zmianą są elementy pomiarowe , pogodynka nie pobiera już danych za pomocą podłączonych przez magistralę GPIO czujników typu DHT22 , do mikrokomputera poprzez złącze USB została podłączona stacja pogodowa CONRAD WS0101. Aby całość mogła poprawnie być eksportowana , na mikrokomputerze zostało zainstalowane i skonfigurowane ( nie bez problemów – ale o tym w dalszej części ) oprogramowanie CumulusMX które za pomocą Mono pobiera dane i buduje defaultową stronę www , którą właśnie staram się dopasować do swoich potrzeb. Ale może od początku:

Czujniki mojej stacji pogodowej , w tej chwili „zawieszone” są tymczasowo na elemencie okiennym , po dokonaniu wszystkich stosownych modyfikacji wyląduje na dachu lub przymocowana do wysięgnika i zamocowana do muru budynku.

Dużym problemem jest ( wiele osób wskazywało podobne przeboje ) czujnik temperatury oraz wilgotności ( dla niewtajemniczonych to ten w harmonijkowej obudowie ) narażony na nadmierne naświetlenie przekłamuje w rannych godzinach temperaturę. W chwili pisania artykułu nie podjąłem jeszcze decyzji jak zaradzić temu problemowi. ( opcje są dwie albo zbuduję nowy pojemnik dla czujnika temperatury i wilgotności , albo ekran ochraniający ustawiony w kierunku padania słońca )

Kolejnym ważnym elementem stacji jest czujnik pomiaru pyłków zawieszonych SDS011 dzięki któremu dokonuję pomiaru pyłków PM2,5 oraz PM10 . Czujnik podłączony za pomocą przejściówki UART USB do Raspberry Pi i za pomocą skryptu w Pythonie odczytuje dane i zapisuje do bazy danych mysql na serwerze zdalnym. Skrypt w Pythonie co 15 min uruchamia czujnik odczekuje 1 min i analizuje dane , wypluwa je do pliku txt po czym kolejny skrypt pobiera te dane i wkłada do bazy danych.

Czujnik nie pracuje cały czas ponieważ jego żywotność jest ograniczona dlatego zdecydowałem się na taktowanie co 15 min.

Rysowanie wykresów w zasadzie pozostawiłem dwóm silnikom rysującym wykresy ( google charts oraz drugim użytym przez dev Cumulusa ) Pewnie zaraz padnie pytanie dlaczego tak ? A przyczyna jest prosta 🙂 nie potrafiłem tamtych zastosować 🙂

Dobra to może czas na bardziej techniczny opis tego całego ustrojstwa :

  1. Stacja pogodowa Conrad WS0101 – nie nazwałbym jej profesjonalnym instrumentem pomiarowym , ale posiada całkiem niezłe dane techniczne :
  • Zakres pomiarowy wilgotności powietrza na zewnątrz : 10 do 90 %
  • Zakres pomiarowy temperatury na zewnątrz : -40 do +65 °
  • Zakres pomiarowy wilgotności powietrza wewnątrz : 10 do 90 %
  • Zakres pomiarowy temperatury wewnątrz : 0 do +50 °C
  • Zakres pomiarowy ciśnienia powietrza : 300 do 1100 hPa
  • Zakres pomiarowy opadów : 0 do 9999 mm
  • Zakres pomiarowy prędkości wiatru : 0 do 160 km/h
  • Zasięg maksymalny : 100 m

Za te pieniądze nie są to złe parametry dla amatorskiej stacji pogodowej. Co prawda jakość wykonania zaraz po wyjęciu z pudełka trochę mnie rozczarowała. Łopatki wiatrołapu oraz listek wskaźnika kierunku wiatru wydają się być w dotyku dość liche . Zaraz po otwarciu pudełka uznałem że stacją jednak nie wyląduje na razie na dachu bo obawiam się że szybko będę musiał ją wymieniać 😛

Za to zdecydowanie trzeba przyznać że w pudełku znajduje się absolutnie wszystko co potrzebne do montażu, od masztu do trytytek. Irytuje tylko to że stacja bazowa może być zasilana za pomocą zasilacza sieciowego , którego oczywiście w zestawie BRAK.

Wszystkie czujniki stacji znajdują się na maszcie przyczepionym do wysięgnika antenowego o długości 100 cm zawieszonego na wysokości ok. 5 m nad ziemią. Montaż został wykonany w optymalnym bezpiecznym miejscu pozwalającym na optymalne odczyty w pobliżu mojego miejsca zamieszkania.

2.  Mikrokomputer Raspberry PI 2 B został zakupiony przy budowie poprzednicznki PiWS 2 . Pi 2B to maszyna 700 MHz oraz 512 mb ramu. Zainstalowałem na nim najnowsza wersję Raspbiana Streatch , z kompilacją jądra :

uname -a
Linux pogoda 4.14.50+ #1122 Tue Jun 19 12:21:21 BST 2018 armv6l GNU/Linux

Aby poprawnie podłączyć stację do PI potrzebowałem zainstalować MONO – oprogramowanie które w najprostszym tłumaczeniu pozwala na uruchomienie plików .exe w systemie linux. To dzięki MONO możemy uruchamiać aplikację CumuluxMX.exe dzięki której PI odbiera dane ze stacji. (Instalacja mono nastarcza często dość sporo problemów , z powodu tego że ostatnią działającą wersją z CumulusemMX jest wersja 1.9.4 a w nowych repozytoriach są tylko wyższe wersje, trzeba okłamać system aby korzystał ze starego repo , zmieniając wpisy w /etc/apt/source.list.

Podłączenie stacji odbyło się za pomocą kabla USB A-B ( w zestawie ) , po podłączeniu raspbian wykrywa stację a poprawnie zainstalowanie mono pozwala na odczyt danych.  Zainstalowany na odpowiednim porcie mini serwer www (znajduje się w instalacji Cumulusa ) pozwala na konfigurację programu oraz wyświetlenie podstawowych danych pomiarowych. W zakładce settings można ustalić oraz skonfigurować wszystko ! Od daty i czasu do eksportów wyników do portali pogodowych lub własnego serwera.

Stacja za pomocą komputera RPi przekazuje do bazy danych mysql z częstotliwością 10 min.. Cześć stron które widzicie jako piws.ovh to automatycznie generowane pliki html , które z większym bądź mniejszym stopniu zostały zmodyfikowane, a inne napisane od podstaw.

3.  Do mojego komputera Rpi podłączona jest już wyżej opisywana nowa kamera. Podłączona jest ona za pomocą predefiniowanego złącza. Zdjęcie wykonuje się co 4 minuty wywołując w cronie taki oto prosty skrypcik :

#!/bin/bash

rm /var/www/html/tmp/image.jpg

raspistill -o /var/www/html/tmp/image.jpg -w 850 -h 600

Nie trzeba tego prostego skryptu tłumaczyć 🙂 Następnie zdjęcie pobierane jest przez skrypt php na serwerze hostingowym (6) i umieszcza go na stronie www jako miniaturkę na stronie głównej , oraz na podstronie o nazwie to snap , gdzie prostym skryptem piszę na bieżącym zdjęciu aktualne wyniki ze stacji pomiarowej. Skrypt pobierający działa w interwale 5 min , a piszący dane działa „na żywo” .

5.  Czujnik smogu podłączony jest do Rpi za pomocą przejściówki UART – USB – ale z tego co czytałem da się podłączyć czujnik też poprzez magistralę GPIO. Odczyt z czujnika odbywa się także za pomocą ustawionego zadania cron na komputerze Rpi , co 15 min. Skrypt pobierający dane oraz przeliczający je , został zaczerpnięty z jednej z amerykańskich stron oraz lekko przepisany. Skrypt jest napisany w Pythonie i z racji faktu iż pisałem oprogramowanie do obsługi stacji „na szybko” brak jest bezpośredniego eksportu danych do mysql 😛 Skrypt zapisuje dane w pliku .txt który pobierany jest za pomocą skryptu php na serwerze hostingowym i importowany do bazy danych.

4.  Ostatnim dodanym elementem jest powerbank który chroni przed zatrzymaniem aparatury pomiarowej oraz Rpi , chwilę szukałem powerbanka który potrafi jedocześnie ładować i być ładowanym. Takowy znalazłem w ofercie firmy Good Ram , podobno powinien pracować ciągle ( bez czasu przełączenia ).