O to mój, już stary projekt, bazujący na ESP i sensorze SDS011 do mierzenia cząsteczek PM10 PM2.5.

Hardware

Do tego projektu użyłem ESP8266 (znane jako nodemcu) i czujniki jak DTH11 (trochę biedny ten czujnik), BMP180 i wcześniej wspomniany SDS011.

Schemat łączenia

Tak to mniej więcej się prezentuje

Czujnik smogu DIY

Czujnik smogu DIY

Software

Postawiłem na nodemcu ESPEasy

Pamiętać należy o zmianie w konfigu przed flashowaniem opcji testowej, aby mieć możliwość ustawienia SDS011 na naszym ESP.

Należy zakomentować #define PLUGIN_BUILD_NORMAL

I odkomentować #define PLUGIN_BUILD_TESTING
Sekcja devices

Po flashu softu, należy mniej więcej skonfigurować nasze czujniki mniej więcej tak jak na zdjęciu poniżej. Można nazwać urządzenia jak chcemy, ale skrypt sprawdza nazwę urządzenia zanim doda rekord do bazy danych. Jeśli chcemy inne nazwy możemy je zmienić w pliku config/devices.php

Najlepiej ustawić inny czas opóźnienia na każdym urządzeniu.

Sekcja Controllers
Należy stworzyć nowy kontroler jako generic HTTP

Controller Hostname: – Adres strony gdzie jest twój skrypt.
Controller Publish: – URL z szablonem danych, które chcemy przesłać
Dobrze skonfigurować hasło, które oczywiście musi być takie samo jak w konfigu.

URL do controller publish:

index.php?s=update&name=%sysname%&task=%tskname%&valuename=%valname%&value=%value%&pass=Twoje hasło z konfigu

Strona

Pliki na serwer do pobrania na GitHub.

Baza danych

CREATE TABLE `records2` (
`id` int(128) NOT NULL,
`device` text NOT NULL,
`val1` decimal(6,2) NOT NULL,
`valname1` text NOT NULL,
`val2` decimal(6,2) NOT NULL,
`valname2` text NOT NULL,
`val3` decimal(6,2) NOT NULL,
`valname3` text NOT NULL,
`datatime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin2;

Config
$devicePasword – Hasło takie samo jak do URL
$timeZone – Jeśli Twój serwer jest w innej strefie czasowej, można tutaj ustawić różnice.
$delayOnUpdate – Jeśli Twój serwer lub internet jest wolny, należy ustawić większą różnicę, ale nie należy przesadzać.
$differenceBetweenUpdate – Można ustalić różnicę pomiędzy następnymi aktualizacjami rekordów.

Inne

Testowanie

Możesz zmienić swój URL controller publish w sakcji controllers na

test.php&name=%sysname%&task=%tskname%&valuename=%valname%&value=%value%
i sprawdzić wartości pod test.log

Index
Nie byłem pewien jak przedstawić index jakości powietrza więc użyłem takiej formuły: PM2.5+PM10/2. Możesz ustawić własną w pliku function.php.
Obudowa
Właściwie to wszystko zależy od nas. Można użyć dwóch Rur PCV zagiętych umieścić tam nasze urządzenie i rury skierować do dołu.
Bugs
Pewnie znajdziesz wiele błędów 🙂 Możesz spróbować je samemu naprawić albo napisać do mnie.

Demo

 

Pod adresem:
https://mzielinski.pl/smog/