[PROJEKT] Czujnik pyłu PMS3003 i Arduino
W artykule zaprezentowany jest czujnik jakości powietrza oparty o sensor PMS3003. W czasach, niestety, coraz większej ilości zanieczyszczeń i smogu, czujnik jawi się jako tańsza alternatywa dla profesjonalnych mierników. Pozwala wyznaczyć współczynniki PM2,5, i PM10, czyli najpopularniejsze miary czystości powietrza. Układ wykorzystuje także alfanumeryczny wyświetlacz LCD 2 x 16 będący częścią płytki LCD Keypad Shield firmy DFRobot. Na tym wyświetlaczu będą prezentowane wyniki pomiaru.
Do realizacji projektu potrzebne są:
-
- Płytka rozwojowa KAmduino UNO
- Czujnik PMS3003
- DFRobot LCD Keypad Shield z wyświetlaczem alfanumerycznym 2 x 16
- Konwerter stanów logicznych KAmodLVC
PMS3003 firmy Plantower to optyczny czujnik zawartości pyłów w powietrzu. Działa na zasadzie rozszczepienia światła lasera na drobinkach pyłów. Mierzy w zakresie 0-500 μg/m³ we wszystkich trzech zakresach. Sensor przesyła dane interfejsem UART co oznacza, że będzie doskonale współpracował z Arduino oraz w zasadzie wszystkimi innymi mikrokontrolerami.
Sensor wysyła dane cyfrowe o stałej długości ramki wynoszącej 24 bajty. Kolejne bajty ramki protokołu mają następujące znaczenie:
Numer bajtu | Znaczenie |
1 | 0x42 (stały) |
2 | 0x4d (stały) |
3, 4 | Długość ramki – 2×9+2 (dane + sprawdzenie poprawności) |
5, 6 | Współczynnik PM1,0 wg standardu TSI |
7, 8 | Współczynnik PM2,5 wg standardu TSI |
9, 10 | Współczynnik PM10 wg standardu TSI |
11, 12 | Współczynnik PM1,0 w środowisku atmosferycznym |
13, 14 | Współczynnik PM1,0 w środowisku atmosferycznym |
15, 16 | Współczynnik PM1,0 w środowisku atmosferycznym |
17, 18 | zastrzeżone |
19, 20 | zastrzeżone |
21, 22 | zastrzeżone |
23, 24 | Kod kontrolny – suma wszystkich pozostałych bajtów w ramce |
Dane podawane wg standardu TSI to dane skalibrowane dla środowiska zamkniętego, np. fabryki. Dane dla środowiska atmosferycznego są skalibrowane do pomiaru w środowisku otwartym. I takie powinny być używane, gdy chcemy zmierzyć ilość pyłów w powietrzu za oknem (czyli w zastosowaniu zakładanym przez autora). Dane przesyłane są w postaci 16-bitowej, tj. jako dwa kolejne bajty. Należy pamiętać, że najpierw przesyłanych jest 8 bitów starszych, następnie bity młodsze.
Kolejnym elementem użytym w projekcie jest Shield na Arduino firmy DFRobot o nazwie LCD Keypad Shield. Oprócz ekranu zawiera on m.in. również 5 przycisków użytkownika oraz potencjometr do kierowania jasnością wyświetlacza. W projekcie wykorzystamy jednak tylko wyświetlacz.
Niezbędnym elementem projektu jest konwerter stanów logicznych, np. KAmodLVC. Niestety czujnik mimo, że jest zasilany napięciem 5 V, to do komunikacji wykorzystuje sygnały o maksymalnym napięciu 3,3 V. Podłączenie sensora bezpośrednio do Arduino może więc spowodować uszkodzenie sensora, gdyż nie jest on przystosowany do komunikacji przy napięciu 5 V.
Czujnik posiada w zestawie różnokolorowy kabel połączeniowy. Przeznaczenie poszczególnych pinów sensora wraz z odpowiadającym mu kolorem izolacji jest następujące:
Nazwa pinu | Kolor | Znaczenie |
VCC | Brązowy | Zasilanie +5 V |
GND | Niebieski | Masa układu |
SET | Zielony | Uśpienie (gdy stan niski) |
RX | Pomarańczowy | Linia odbioru danych |
TX | Biały | Linia transmisji danych |
RESET | Zółty | Zerowanie (gdy stan niski) |
N/C | Czarny | |
N/C | Czerwony |
Podczas standardowej pracy układu linie SET i RESET mogą być niepodłączone, a linie oznaczone N/C – wręcz nie powinny. Do linii VCC należy doprowadzić zasilanie +5 V. Natomiast linie TX i RX należy podłączyć do ich odpowiedników na płytce Arduino (ale na krzyż – tzn. TX czujnika do RX płytki i analogicznie linię RX czujnika do TX na płytce Arduino) za pośrednictwem konwertera stanów logicznych (Arduino po stronie „VCC”, czujnik po stronie „VL”). Płytce KAmodLVC należy też zapewnić zasilanie obu typów tj. 5 V (do pinu VCC) i 3,3 V (do pinu VL) oraz masę układu (do któregokolwiek z pinów GND).
Uwaga. W celu ułatwienia połączeń na przewodu czujnika założono piny BLT-LF oraz obudowy BLS01. Fabrycznie przewody są ich pozbawione.