Czujnik SDS011 i wizualizacja danych na openSenseMap.

Na fali zainteresowania problemem smogu w Polsce i ja postanowiłem sprawdzić jak to jest na prawdę. Mieszkam na prowincji w dolinie Biebrzy, więc uważam się za w miarę bezpiecznego, ale ciekawość wzięła górę. Po lekturze bardzo dobrych wpisów Łukasza  oraz Cezara kupiłem czujnik pyłu zawieszonego Nova Fitness SDS011. Podłączenie i uruchomienie, po zapoznaniu się z instrukcjami z cytowanych powyżej blogów poszło bez problemu. Postanowiłem nie opisywać po raz kolejny tych samych czynności, postarałem się jednak o rozwinięcie tematu. Jako, iż mam pewne doświadczenie w GIS od jakiegoś czasu chodziło mi po głowie aby podzielić się odczytami ze światem. Idealna byłaby interaktywna mapa. Badając problem natknąłem się na openSenseMap.

Znalezione obrazy dla zapytania opensensemap

Jest to platforma wymiany danych z czujników oparta na OpenStreetMap. Projekt powstał w 2015 r. w GI@School lab at the Institute for Geoinformatics w niemieckim  Münster, gdzie wykorzystywany jest głównie w edukacji dzieci i młodzieży.

Szukałem sposobu na zasilenie mapy odczytami ze swoich czujników i okazało się, że powstał projekt luftdaten

FireShot Capture 34 - Home – luftdaten.info – Feinstaub selber_ - https___luftdaten.info_en_home-en_.png

Ma on na celu popularyzacje budowy własnych czujników do pomiaru jakości powietrza i dzielenia się odczytami. Świetna sprawa.

Budowa czujnika jakości powietrza.

Do budowy stacji pomiarowej, zgodnie z założeniami projektu luftdaten, wykorzystałem czujnik pyłu zawieszonego PM10/PM2.5 SDS011, czujnik temperatury i wilgotności DHT22 oraz płytkę NodeMCU V3.

Znalezione obrazy dla zapytania luftdaten

Czujniki podłączamy zgodnie ze schematem. Ważne jest aby zachować poniższe podłączenie ponieważ nie ma możliwości zadeklarowania pinów w oprogramowaniu układowym.

FireShot Capture 9 - fine dust sensor construction_ - https___luftdaten.info_en_construction-manual_.png

Po podłączeniu przewodów całość włożyłem w puszkę montażową i wygląda to tak.

Wgranie oprogramowania projektu LUFTDATEN.

Następnie pobieramy firmware  https://www.madavi.de/sensor/update/data/latest_de.bin. Przenosimy plik latest_de.bin do katalogu, w którym mamy program ESPEASY. Wgrywamy  analogicznie do ESPEASY. Wybieramy FlashESP826 i wgrywamy oprogramowanie.

Screenshot_20180314_172947.png

Screenshot_20180314_173120.png

Konfiguracja stacji pomiarowej.

Po ponownym podłączeniu urządzeniu do zasilania pojawi nan się nowa sieć Feinstaubsensor-6134254. Logujemy się na nią bez hasła. W przeglądarce wpisujemy standardowy adres 192.168.4.1.

Spectacle.Lh9737.png

Wybieramy naszą sieć WIFI, podajemy hasło i zapamiętujemy ID ( przyda się w dalszej części ). Naciskamy Speichern i po chwili urządzenie pojawi się w naszej sieci. Znajdujemy jego adres, na przykład przy pomocy aplikacji mobilej Fing i wpisujemy w przeglądarkę. Otworzy nam się strona konfiguracji.

Spectacle.T11463.png

W zakładce Konfiguration wybieramy podłączone czujniki.

Screenshot_20180314_175825.png

Wracamy na razie do strony głównej przyciskiem Zurück zur Startseite i wybieramy Aktuelle Werte. Jeżeli podłączyliśmy czujnik zgodnie ze schematem to już mamy odczyty.

Screenshot_20180314_180145.png

Już możemy cieszyć się monitoringiem jakości powietrza. Jednak zależało nam na udostępnieniu  odczytów  ma mapie. Wykorzystamy do tego wspomniany serwis openSenseMap.

Udostępnienie danych do openSenseMap.

Screenshot_20180314_180608.png

Oczywiście na początku zakładamy konto. Następnie, z prawej strony, pod profilem, tworzymy New senseBox. Akceptujemy licencję i dodajemy nasz czujnik.

Screenshot_20180314_181054.png

Screenshot_20180314_181454.png
 Poprzez Add sensor dodajemy kolejno podłączone czujniki.
Screenshot_20180314_181901.png
Po podwójnym zatwierdzeniu zmian otrzymujemy adresy naszych czujników. Najważniejszy jest senseBox ID.
Screenshot_20180314_1821521.png
Wracamy ponownie do oprogramowania płytki ( wpisujemy jej adres w przeglądarce ) i zaznaczamy OpenSenseMap oraz podajemy senseBox ID otrzymany powyżej.
Screenshot_20180314_182545.png
Zatwierdzamy i po wszystkim.

Wizualizacja danych na OpenDenseMap.

Znajdujemy lokalizację naszej stacji pomiarowej i po naciśnięciu na nią mamy taki oto obraz.
Screenshot_20180314_184424.png
Mamy również pogląd danych historycznych ( po wybraniu czujnika )
Screenshot_20180314_184518.png
Możemy również przeanalizować dane na wykresach. W przypadku danych z czujnika sds011 w poniższym adresie zamiast xxxxxxx wstawiamy numer naszej stacji pomiarowej z pierwszego zdjęcia.
Screenshot_20180314_184927.png
Analogicznie możemy zrobić dla czyjnika DHT22
Screenshot_20180314_185152.png

 Podsumowanie

Zastanawiające jest że na stronie projektu mamy 1452 czujniki z czego tylko 13 w Polsce, z czego jeden mój. Może to wiele wyjaśnić w temacie świadomości Polaków odnośnie jakości powietrza. W 2016 roku 33 na 50 miast z najgorszą jakością powietrza było w Polsce. Jestem całym sercem, aby i u nas wdrażać takie projekty edukacyjne. Zapraszam do dzielenia się swoimi pomiarami.

 

Moduł WiFi z ESP8266 (NodeMCU) i ESP Easy. Bezprzewodowe czujniki i przekaźniki w Domoticzu.

W moim systemie od dłuższego czasu prym wiodą czujniki i przełączniki bezprzewodowe.  Na blogu testowałem kilka takich rozwiązań  jak np.  gniazdka Orvibo czy Xiaomi Smart Home Starter Kit. Do odczytu temperatury, wilgotności, natężenia światła czy przełączników stosuje moduły WiFi z ESP8266 (NodeMCU) z oprogramowaniem ESP Easy.  Ich niewątpliwą zaletą jest łatwość programowania, kompletny firmware i nie ukrywam niska cena. Nie do przecenienia jest stabilność odczytów. Pierwsza płytka pracuje u mnie w systemie ponad rok bez przerwy, monitorując pogodę na zewnątrz.

Poradników i przewodników jak zintegrować płytki NodeMCU z Domoticzem jest w sieci dużo, jednak i ja postanowiłem opisać swoje doświadczenia. Myślę, że właśnie to rozwiązanie stanie się u mnie wiodącym.

  • Wybór odpowiedniej płytki.

Nie wdając się w szczegóły na rynku mamy płytki ESP8266 NodeMCU dwóch generacji. Od razu polecam urządzenia drugiej generacji. Jednak i one różnią się między sobą. Na pierwszy rzut oka możemy je rozpoznać po tym, iż wersja V2 jest węższa od V3 i na płytce stykowej pozostawia po jednym rzędzie otworów. Jest jednak i poważniejsza różnica. Leży ona w konwerterze USB-UART. NodeMCU w wersji V3 został wyposażony w układ CH340, natomiast V2 w Silicon Labs CP2102. Ten drugi jest lepiej obsługiwany przez system Windows z uwagi na dostępność sterowników. Ja mam płytki w obu wersjach i nigdy nie miałem z nimi problemów, jednak na początek polecam wersję V2.

IMG_20180120_104432.jpg

  • Programowanie płytki w systemie Windows

W pierwszej kolejności pobieramy najnowsze oprogramowanie ESPEasy_v2.0. Jest to wersja rozwojowa, ale już bardzo stabilna. Wypakowujemy archiwum, podłączamy płytkę do portu USB i uruchamiamy plik ESPEasy_v2.0.

Screenshot_20180120_144640

 

Jeżeli płytka zostanie poprawnie wykryta ( u mnie na porcie COM4) wybieramy firmware ( w zależności od ilości pamięci ). Dla płytki  ESP8266 NodeMCU V2 i V3 tak jak na zdjęciu powyżej. Naciskamy Flash. Kropki świadczą o postępie programowania. Na koniec otrzymujemy komunikat Flash Complete. Jeżeli pojawią się problemy z wykryciem płytki polecam zainstalowanie Arduino IDE.

  • Podłączenie płytki do sieci Wifi

Odłączamy płytkę od komputera i podłączamy do zasilania. W tym momencie urządzenie powinno zostać wykryte  jako dodatkowa sieć ESP_Easy_0. Płytka w tym momencie pracuje w trybie AP. Logujemy się do sieci hasłem configesp. Po wpisaniu w przeglądarkę adresu 192.168.4.1 otrzymamy możliwość dodania urządzenia do naszej sieci.

Screenshot_20180120_144148

Po kilkunastu sekundach urządzenie dostanie adres IP w naszej sieci.

Screenshot_20180120_144306

  • Konfiguracja ESPEasy.

Wpisujemy powyższy adres w przeglądarkę i przechodzimy do podłączenia czujników.

Screenshot_20180120_141633.png

Aby przekazać dane do Domoticza przechodzimy do zakładki Controllers.

Screenshot_20180120_152907.png

Naciskamy EDIT i wprowadzamy dane ( adres IP i port ) Domoticza. Pamiętać należy o zaznaczeniu Enabled.

Screenshot_20180120_153059.png

  • Dodanie czujników do płytki

Jako przykład pokaże jak podłączyć popularny czujnik temperatury i wilgotności DHT11.

Znalezione obrazy dla zapytania nodemcu dht11

Następnie przechodzimy do zakładki Devices. Naciskamy EDIT i wprowadzamy dane.

Screenshot_20180120_153849.png

Pamiętać należy o zaznaczeniu Enabled. Podajemy Pin do którego podłączyliśmy czujnik i IDX czujnika w Domoticzu. Jak dodać wirtualny przełącznik pisałem we wpisie.

Sprawdzamy czy widzimy odczyty.

Screenshot_20180120_155041.png

Jeżeli prawidłowo podaliśmy adres IP, port i IDX Domoticza to musi działać.

Screenshot_20180120_155337

W następnych wpisach pokażę jak podłączyć czujnik odległości HC-SR04 i prosty przekaźnik.

Podłączenie czujnika temperatury i wilgotności DHT-11/DHT22 do Raspberry i DOMOTICZA

Znalezione obrazy dla zapytania dht11 dht22

Poniżej przedstawię sposób integracji jednego z bardziej popularnych ( i tanich ) czujników do pomiaru wilgotności powietrza i temperatury w pomieszczeniu ( DHT11 ) oraz na zewnątrz ( DHT22).

Porównanie parametrów czujnika DHT11 i DHT22:

  • Napięcie zasilania: 3 V do 5,5 V / 3,3 V do 6 V
  • Średni pobór prądu: 0,2 mA / 0,2 mA
  • Temperatura
    • Zakres pomiarowy: 0 – 50 °C / -40 do 80 °C
    • Rozdzielczość: 8-bitów (1 °C) / 8-bitów (0,1 °C)
    • Dokładność: 1 °C / ± 0,5 °C
    • Czas odpowiedzi: 6 – 15 s (typowo 10 s) / średnio 2 s
  • Wilgotność:
    • Zakres pomiarowy: 20 – 90 %RH / 0 – 100 % RH
    • Rozdzielczość: 8-bitów (±1 % RH*) / 8-bitów (±0,1 % RH)
    • Dokładność  ±4 RH* (przy 25 °C) / ±2 %RH*
    • Zakres pomiarowy: 6 – 30 s / średnio 2 s

Jak widać powyżej, czujnik DHT22 cechuje się większym zakresem pomiaru oraz dokładnością. Sposób podłączenia i oprogramowanie czujników właściwie się nie różni.

Podłączenie czujników do Raspberry Pi

Znalezione obrazy dla zapytania dht 11 raspberry pi

DHT11 Pinout

źródło : http://domoticx.com

Po zalogowaniu się do DOMOTICZA przez ssh wydajemy kolejno poniższe komendy:

sudo apt-get install git-core

sudo apt-get update
sudo apt-get install -y python3 python3-pip python-dev
sudo pip3 install rpi.gpio
sudo apt-get update
sudo apt-get install build-essential python-dev
sudo git clone git://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT

sudo python setup.py install
cd examples
sudo chmod +x AdafruitDHT.py

Po uruchomieniu skryptu poniższa komendą powinniśmy otrzymać wynik pomiaru.
sudo ./AdafruitDHT.py 22 4 ( gdzie 22 to typ czujnika a 4 to pin, do którego jest podłączony )

zrzut ekranu99.png

Jeżeli Raspberry Pi poprawnie odczytuje temperaturę i wilgotność przekazujemy dane do DOMOTICZA.

Dodanie odczytów z czujników DHT11 i DHT22 do DOMOTICZA.

Na początku tworzymy wirtualny czujnik wilgotności i temperatury ( analogicznie jak np. w poście Geolokalizacja w Domoticzu).

zrzut ekranu100.png

Następnie tworzymy skrypt o nazwie np. DHT22 komendą:

sudo nano DHT22.sh

Wklejamy następujący kod:

#!/bin/sh

# Domoticz server
SERVER="192.168.2.21:8080"
# DHT IDX
DHTIDX="21"

# DHTPIN
DHTPIN="4"

sleep 5

sudo nice -20 python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 $DHTPIN > /var/tmp/temp.txt
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp" | awk '{ print $3 }')
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp")

TEMP=$(awk ' /Temp/ {print substr ($0,6,4)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Hudmidity/ {print substr ($0,0)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Humidity/ {print 1$}' /var/tmp/temp.txt)
HUM=$(awk ' /Humidity/ {print substr ($0,22,4)}' /var/tmp/temp.txt)
echo $TEMP
echo $HUM

# Send data
curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command&c=getauth&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"


TEMP=""
HUM=""

Nadajemy uprawnienia dla pliku:

sudo chmod +x DHT22.sh

i dodajemy wpis do crona, aby otrzymywać odczyty w zadanym interwale czasu ( analogicznie jak we wpisie Czujnik deszczu w Domoticzu ).

Efekt końcowy powinien być mniej więcej taki.

zrzut-ekranu101

Podsumowując. Bardzo polecam te czujniki. Ich cena na Aliexpress to tylko ok. $ 0,80. Są w miarę dokładne i stabilne. Przy tej cenie i wykorzystaniu Pi ZERO możemy stworzyć tani, bezprzewodowy czujnik o praktycznie nieograniczonych możliwościach zastosowania.

your code here