Moduł DFRobot Air Quality Sensor z czujnikiem jakości powietrza SGP40
W niniejszym artykule zaprezentujemy moduł DFRobot z czujnikiem jakości powietrza SGP40 firmy Sensirion. W artykule znajdziesz także prosty przykład implementacji obsługi sensora na platformie Arduino.
Czujnik jakości powietrza SGP40
Czujnik gazów SGP40 firmy Sensirion służy do oceny jakości powietrza wewnątrz pomieszczenia. Działa w sposób podobny do ludzkiego nosa, tzn. wykrywa zmiany stężenia VOC w określonym czasie. SGP40 to zintegrowany system wykonany w technologii CMOSens, oparty o sensor na tlenku metalu (MOX). Dostarcza danych o jakości powietrza przez cyfrowy interfejs I2C. Dane w układzie są również cyfrowo korygowane względem aktualnej wilgotności powietrza. Dzięki zastosowaniu sprawdzonej technologii MOXSens, czujniki są odporne na zanieczyszczenia siloksanami. Skutkuje to bardzo dobrą stabilnością długoterminową pod kątem czułości, a także czasu odpowiedzi. Dzięki innowacyjnemu materiałowi czułemu oraz technologii grzewczej sensor zapewnia znaczącą redukcję poboru mocy. Oznacza to, że sprawdzi się również w aplikacjach zasilanych bateryjnie. Sensor SGP40 nie wymaga kalibracji.
Czujnik jest przeznaczony do automatycznej kontroli jakości powietrza np. oczyszczaczach powietrza, okapach kuchennych i systemach wentylacji na żądanie.
Najważniejsze parametry czujnika
- Zakres pomiarowy: 0 – 1000 ppm ekwiwalentu etanolu,
- Wyjście sensora: 16-bitowe dane surowe,
- Wyjście układu: cyfrowy współczynnik VOC Index,
- Czas odpowiedzi: < 10 s (τ63),
- Czas uruchomienia: < 60 s,
- Napięcie zasilania: 1,7-3,6 V
- Konsumpcja prądu: 2,6-3.5 mA (odpowiednio dla 3,3 V oraz 1,8 V),
- Interfejs I2C,
- Wbudowana kompensacja wilgotności.
Współczynnik VOC Index
Czujnik SGP40 wykrywa zmianę stężenia tzw. lotnych związków organicznych (ang. volatile organic compounds, VOCs). Są to uboczne produkty procesów przemysłowych stanowiące źródło zanieczyszczeń środowiska. W skład tej grupy wchodzą m.in. aceton, terpeny, węglowodory aromatyczne, związki zawierające chlor i inne.
Algorytm wbudowany w czujnik przelicza stężenie VOC w powietrzu na współczynnik VOC Index. Ten współczynnik przyjmuję wartość z przedziału 0-500 i określa zmianę stężenia VOC w określonym czasie. Przedział środkowy jest wyznaczany z uśrednionych odczytów czujnika w długim dystansie czasowym i jest ustalony jako VOC Index równy 100. W normalnych warunkach sensor jest w stanie uzyskiwać dokładne odczyty na krótko po starcie. Natomiast w warunkach zwiększonego zanieczyszczenia powietrza, czujnik może zacząć pokazywać precyzyjne odczyty po godzinie.
Poziom podstawowy VOC Index wynosi 100, a jakość powietrza jest odwrotnie proporcjonalna do wyniku – im więcej zanieczyszczeń tym wyższy wynik. Według producenta poziom 0-200 oznacza normalne powietrze, 200-300: lekkie zanieczyszczenie, 300-400: średnie, a powyżej: wysokie. Od poziomu 200 producent sugeruje wentylację pomieszczenia.
Rys. 1. Wykres przedstawiający przykładowy zestaw danych z czujnika wraz z interpretacją
Moduł DFRobot Fermion SGP40 Air Quality Sensor
DFRobot Fermion Air Quality Sensor to niewielki (18 x 11,5 mm) moduł, którego głównym komponentem jest sensor Sensirion SGP40. Płytka ma wyprowadzenia goldpin, dzięki którym do czujnika można doprowadzić zasilanie oraz komunikację I2C. Moduł zawiera także stabilizator napięcia zasilania czujnika oraz proste translatory poziomu logicznego dla interfejsu I2C. Stabilizator generuje napięcie zasilania 3,3 V. Do płytki z czujnikiem należy dostarczyć napięcie z zakresu 3,3-5 V. Jest to więc prosty produkt umożliwiający na etapie prototypowania dołączenie sensora do płytki rozwojowej, takiej jak Arduino czy STM32 Nucleo.
Producent podaje, że moduł z czujnikiem idealnie sprawdza się w aplikacjach pracujących wewnątrz pomieszczenia, które mają pracować przez długi okres czasu. Są to np. oczyszczacze powietrza oraz okapy kuchenne.
Rys. 2. Moduł DFRobot Fermion SGP40 Air Quality Sensor
Przykład pracy czujnika SPG40 na platformie Arduino
Firma DFRobot wraz z modułem dostarcza biblioteki do obsługi czujnika w języku C oraz Python. Dzięki nim można łatwo zaimplementować obsługę czujnika na platformach Arduino, a także Raspberry Pi. Biblioteki wraz z opisem dostępne są na portalu github: https://github.com/cdjq/DFRobot_SGP40.
W dalszej części artykułu opiszemy przykład obsługi czujnika na Arduino. W tym celu użyjemy płytki Arduino UNO, płytki stykowej oraz standardowych przewodów męsko-męskich. Do połączenia modułów wystarczy doprowadzić połączenie zasilania, a także interfejs I2C. W Arduino UNO interfejs I2C dostępny jest na portach A4 (SDA) oraz A5 (SCL).
Tabela 1. Podłączenie modułu z sensorem SGP40 do Arduino UNO
DFRobot Air Quality Sensor | Arduino UNO |
VCC | 5V |
GND | GND |
SCL | A5 |
SDA | A4 |
Rys. 3. Moduł z czujnikiem SGP40 podłączony do Arduino UNO
Sposób dodawania biblioteki do środowiska Arduino jest standardowy. Poniżej zaprezentowano kod do obsługi czujnika. Kod ma za zadanie zainicjalizować sensor, a także wypisać dane w postać VOC Index na port szeregowy płytki.
Rozpoczynamy od importu biblioteki oraz inicjalizacji klasy DFRobot_SGP40. Następnie włączany jest port szeregowy oraz sensor SGP40. W tym drugim przypadku funkcja Begin testuje pracę czujnika przez 10 sekund, co pozwala sprawdzić czy sensor pracuje prawidłowo, a także rozgrzać czujnik w celu prawidłowej pracy.
W pętli głównej programu wykonywana jest funkcja getVocIndex, która pobiera z czujnika dane o współczynniku VOC Index. Pobrane dane są również wypisywane na port szeregowy. Każdy obieg pętli, dzięki zastosowaniu funkcji delay, trwa ok. 1 sekundy.
Poniżej pełen kod programu:
Listing 1. Kod programu testującego czujnik SGP40 na Arduino
#include <DFRobot_SGP40.h> DFRobot_SGP40 mySgp40; void setup() { Serial.begin(115200); //Inicjalizacja - czujnik pracuje przez 10 sekund, co pozwala rozgrzać i uruchomić sensor while(mySgp40.begin(10000) !=true){ Serial.println("failed to init chip, please check if the chip connection is fine"); delay(1000); } } void loop() { //odbiór Indeksu VOC uint16_t index = mySgp40.getVoclndex(); //Wypisanie danych na port szeregowy Serial.print("vocIndex = "); Serial.println(index); delay(1000); }
Kod dostępny jest także w sekcji „Do pobrania”. Odczyty po jakimś czasie powinny ustabilizować się w okolicach 100. Aby sprawdzić działanie sensora, można przetestować go za pomocą np. gazu z zapalniczki.
Poniżej efekt działania programu.
Rys. 4. Efekt działania przykładu na platformie Arduino
Podsumowanie
Moduł DFRobot Fermion: SGP40 Air Quality Sensor to mały moduł umożliwiający budowę prototypów korzystających z sensora SGP40 firmy Sensirion. Czujnik ten pozwala na wykrywanie zmian w jakości powietrze poprzez pomiar stężenia lotnych związków organicznych (VOC). Czujnik wysyła dane w formie parametru VOC Index, którego rolą jest sygnalizacja zmiany (a zwłaszcza zwiększenia) stężenia w stosunku do poziomu średniego. Moduł z czujnikiem można stosować w aplikacjach pracujących wewnątrz pomieszczenia, które mają pracować przez długi okres czasu, np. w oczyszczaczach powietrza i okapach kuchennych.
Moduł DFRobot Fermion: SGP40 Air Quality Sensor jest dostępny w ofercie sklepu internetowego Kamami.pl