Czujnik smogu pojawiał się na lamach tranzystor.pl już parę razy np. Arduino i Sensora SDS011 czy SDS011 wraz z ESP8266. Czym tak w ogóle jest smog w skrócie jest to zjawisko atmosferyczne, które charakteryzuje się występowaniem niebezpiecznych dla naszego zdrowia pyłów zawieszonych w powietrzu. Smog składa się z pyłów zawieszonych takich jak PM 10 i PM 2,5, lotnych związków organicznych takich jak np. benzen, benzo(a)piren, ozonu, dwutlenku siarki, tlenków azotu, tlenku węgla itp. Tym razem skorzystam z „klocków” napisanych przez kadamski i udostępnionych na jego Gicie.
Potrzebne komponenty
- RaspberryPi lub pochodne np NanoPi
- Czujnik smogu SDS011 wraz z konwerterem UART
- kata pamięci z zainstalowanym Debianem / Raspberrypi OS
Parametry czujnika smogu SDS011
- Typ pomiarów: PM10 oraz PM2,5
- Zakres pomiarów: 0 – 999.9 μg /m³
- Napięcie pracy: 5V (4.7 – 5.3V)
- Pobór prądu podczas praca: ~70mA ±10mA
- Pobór prądu w trybie uśpienie lasera i wentylatora: < 4mA
- Temperatura pracy: do -10 do +50C (jeszcze trzyma swoją dokładność po za tymi zakresami lubi się „pomylić” bardziej)
- Wilgotność pracy do 70% należy pamiętać, że kondensacja prawy wodnej fałszuje wyniki
- Dokładność pomiaru: 70% dla 0.3μm
98% dla 0.5μm
Na początek dla naszego RaspberryPi pobieramy odpowiedni obraz Raspbian Lite lub full wg uznania i wgrywamy go na karcie. Resztę to już na bank znacie 😉 Następnie logujemy się przez SSH do systemu.
Następnie musimy zainstalować kilka pakietów które będą nam potrzebne w dalszej części:
sudo apt install git-core python-serial python-enum lighttpd
Zanim zaczniemy, musimy wiedzieć, do którego portu szeregowego jest podłączony adapter USB dmesg nam w tym pomaga:
dmesg
Odczyt danych na RaspberryPi
Najpierw tworzymy instancję dla czujnika, a następnie odczytujemy go co 1 minut przez 30 sekund. Wartości te można oczywiście dostosować. Pomiędzy interwałami pomiarowymi wprowadzamy czujnik w stan uśpienia, aby wydłużyć jego żywotność (według producenta żywotność to ok. 8000 godzin).
Możemy pobrać skrypt za pomocą tego polecenia:
wget -O /home/pi/aqi.py https://www.tranzystor.pl/pliki/PM2.5-PM10_raspberry/aqi.py
Aby skrypt działał bez błędów, potrzebne są jeszcze dwie małe rzeczy:
sudo chown pi:pi /var/www/html/
echo [] > /var/www/html/aqi.json
Po powyższych poleceniach możesz uruchomić skrypt:
chmod +x aqi.py
./aqi.py
Uruchomianie skryptu automatycznie
Z racji, że jestem leniwy aby nie musieć za każdym razem ręcznie uruchamiać skryptu, możemy pozwolić się z cron,
crontab -e
i na końcu dodaj następujący wiersz:
@reboot cd /home/pi/ && ./aqi.py
Teraz nasz skrypt będzie się uruchamiać automatycznie przy każdym starcie systemu.
Wizualizacja danych na stronie HTML i AQI
Wcześniej już zainstalowaliśmy już bardzo lekki serwer WWW lighttpd . Przydało by się zapisać nasze pliki HTML, Javascript i CSS w katalogu /var/www/html/ , abyśmy mogli w łatwy sposób mogli uzyskać dostęp do danych z innego komputera. Aby pobrać potrzebne pliki musimy wykonać 4 poniższe polecenia:
wget -O /var/www/html/index.html https://www.tranzystor.pl/pliki/PM2.5-PM10_raspberry/html/index.html
wget -O /var/www/html/aqi.js https://www.tranzystor.pl/pliki/PM2.5-PM10_raspberry/html/aqi.js
wget -O /var/www/html/style.css https://www.tranzystor.pl/pliki/PM2.5-PM10_raspberry/html/style.css
wget -O /var/www/html/history.html https://www.tranzystor.pl/pliki/PM2.5-PM10_raspberry/html/history.html
Teraz wystarczy otworzyć adres z którym się łączymy z naszym RaspberryPi w przeglądarce i spojrzeć na aktualne wartości cząstek stałych, np. http://10.10.10.26
May też dostęp do historii pomiarów:
Fajne i potwierdzam że działa 🙂 w zasadzie to przerobiłem to i zmodyfikowałem to tak że można publikować wyniki online na własnej stronie internetowej.
Jak masz chęć możesz się z nami podzielić, twoją wersją.