Inteligentny czujnik gazu #projekt

Posted by

Posiadam w domu piec gazowy, jest co prawda w piwnicy oraz w pokoju, w którym się znajduje jest wentylacja, ale bezpieczeństwa nigdy za wiele i postanowiłem zrobić czujkę gazu, która w efekcie końcowym będzie w stanie wysłać mi powiadomienie na telefon lub poinformować mnie w inny sposób.

Jest to kolejny smart sensor, który będzie zintegrowany z moim własnym systemem inteligentnego domu. Długo się zastanawiałem nad wyborem odpowiedniego czujnika do detekcji gazu, który jest używany do ogrzewania domów. Co prawda miałem w moim zestawie kilka takich modułów MQ-2 oraz MQ-3, ale postanowiłem zrobić większy research na ten temat, aby dokształcić się na temat detekcji gazów.

Jak działają czujniki z rodziny MQ?

Czujniki tego typu działają w oparciu o rezystor chemiczny, który pod wpływem zawartości określonych gazów (przedział ppm) zmienia swoją rezystancję. W tym artykule jest bardzo dobrze wyjaśniona zasada ich działania.

Trochę informacji o gazach

Czytając o gazach w głowie miałem dwa pytania: Jakie są rodzaje gazów?, oraz Gdzie umieścić czujnik aby był skuteczny?

Odpowiadając sobie na te pytania przygotowałem taką listę gazów wraz z informacjami o nich, bazując na tym źródle:

  • gaz ziemny (metan) – często wykorzystywany w domach; jest lżejszy więc będzie się unosił ku górze, dlatego, aby wykryć ten gaz czujka powinna być umiejscowiona na suficie.
  • propan-butan – jest cięższy i czujka wykrywająca go powinna znaleźć się przy podłodze.
  • tlenek węgla (potocznie czad) – pojawia się tam gdzie coś się spala (pali), np. silnik samochodu spalinowego, kotłownia, również zawiera go dym z papierosów. Ma on zbliżoną gęstość do powietrza, jednak ze względu na to że najczęściej towarzyszy on ciężkiemu dwutlenkowi węgla to czujnik powinien być umiejscowiony nisko, lub najlepiej w połowie wysokości pomieszczenia.

Gazy mogą być lżejsze albo cięższe od powietrza. Dlatego umieszczenie czujnika jest zależne od tego, jaki rodzaj gazu chcemy wykrywać (dane, na jakiej wysokości umieścić czujnik podane są wyżej). Są jednak cechy niezmienne, które opisują, w jakich miejscach nie umieszczać czujnika. Nie umieszczamy go blisko punktów przewiewnych, czyli kominów wentylacyjnych, albo w miejscach, gdzie występuje przeciąg, przy oknach/drzwiach. Również nie powinniśmy montować ich w punktach martwych tzn. w rogach pomieszczenia. Najlepiej by było jakby czujnik był zamontowany jak najbliżej źródła prawdopodobnego wycieku gazu.

Wiedząc już jakie rodzaje gazów najczęściej mogą nam zagrażać oraz gdzie względem ich wycieku umiejscowić czujnik, musiałem zdecydować, którą wersje czujnika wybrać. Z racji, że chodzi o piec domowy, który wykorzystuje metan do ogrzewania, czujnik powinien być jak najwyżej, oraz możliwie jak najbliżej pieca. Najprościej zamontować go po prostu nad piecem 🙂

Sugerując się danymi z tabeli z tego artykułu wybrałem czujnik MQ-2 (są dostępne inne w zależności, jakie ppm chcemy wykrywać). Metan (CH4) ma wartość stężenia w przedziale 2000-10000 ppm, czyli od 0.2% do 1%, więc mieści się idealnie w zakresie pomiarowym czujnika. Dodatkowo wykrywa on bardzo dobrze opary alkoholu oraz dym z papierosów. Kilka informacji o MQ-2:

  • przedział roboczy ppm wynosi 300-10000 ppm czyli stężenie gazu od 0,03 do 1%
  • pobór energii ok 88 mA dla 5V (min 4,5V)
  • czas nagrzewania wstępnego ok 2 min? – ogólnie jak podłączyłem pierwszy raz czujnik do uC to wartości na wyjściu analogowym były w przedziale 700-800, przy wykryciu gazu dużo wyższe. Po dłuższym czasie (ponad 30 min) ustabilizowały się one i w granicy 245 (0,66V). Jeżeli sensor nie jest używany przez dłuższy czas to po podłączeniu zasilania, nim się nagrzeje, wartości odczytu są zawyżone, ale po kilku dziesięciu sekundach się stabilizują.

Moduł dysponuje dwoma wyjściami:

  1. analogowe (A0) do jest to wyjście bezpośrednio z czujnika MQ-2, czyli realny spadek napięcia na rezystorze chemicznym
  2. cyfrowe – jest to wyjście na module do tego czujnika i jest ono zależne od komparatora, możemy regulować to za pomocą potencjometru (czułość czujnika), jeżeli wartość na A0 przekroczy próg, na wyjściu cyfrowym będzie stan wysoki, w normalnej sytuacji niski.

Przygotowania

Po tym dość długim wstępie można w końcu przejść do opisania projektu. Zacząłem od wytyczenia wymagań, jakie ma spełnić. Na pewno chce, aby czujka działała niezależnie od tego, czy sieć Wi-Fi w domu funkcjonuje poprawnie. Powiadomienia może wtedy nie wyśle, ale chcę, aby mogła poinformować o wykrytym wycieku gazu w inny sposób. Projekt jest na tyle prosty po stronie hardware’owej, że nie było sensu rysować jakichś bloczków i innych notatek, po prostu od razu przygotowałem prototyp.

Kiedy całą koncepcję zweryfikowałem to przeszedłem do narysowania schematu:

oraz schematu płytki PCB:

Sercem modułu będzie popularny Wemos D1 Mini, gdyż posiada on wejście analogowe, które będzie niezbędne, aby odczytać wartość z MQ-2. Wykorzystałem również dwie diody LED, buzzer oraz przycisk. Dioda zielona sygnalizuje poprawne połączenie z Wi-Fi, natomiast czerwona zapali się w momencie wykrycia gazu przez czujnik razem z buzzerem 5V. Wiem, że brzęczyk jest trochę słaby i usłyszenie go z innego pomieszczenia, a tym bardziej z góry gdzie znacznie częściej przebywają domownicy, ale aby sygnał dźwiękowy był wystarczająco słyszalny to musiał bym zamontować dość spory głośnik i znacznie większy zasilacz, czego nie chciałem robić. Schodząc do piwnicy będziemy w stanie go usłyszeć, a dla mnie najcenniejsze i tak będzie powiadomienie na telefon.

Na pierwszym schemacie brakuje zasilacza oraz gniazda do podłączenia 5V, ponieważ początkowo miałem użyć zewnętrznej ładowarki do telefonu i podłączyć ją pod Wemos’a ale koniec końców zdecydowałem się rozwiązać to instalując popularny zasilacz HLK-PM01 bezpośrednio na płytce. Gabaryty urządzenia się troche zwiększyły, ale za to nie trzeba stosować dodatkowych komponentów do jego uruchomienia.

Praca

Kiedy schemat płytki PCB był gotowy można było przystąpić do lutowania. Uprzednio przygotowałem sobie wszystkie komponenty na wydrukowanym schemacie ideowym:

Potem zabrałem się za lutowanie całości:

Oprogramowanie

W czujniku zaimplementowałem funkcjonalność dynamicznego łączenia się z WiFi. Polega to na tym, że dane do WiFi zapisuje w EEPROM urządzenia. Przy starcie mikrokontrolera jest sprawdzany odczyt z pamięci i jeżeli znajdują się tam dane to zostaną wczytane i nastąpi automatyczne połączenie z WiFi. W przeciwnym razie zostanie włączony tryb AccessPointu na ESP i zaserwowana zostanie strona logowania, gdzie podajemy SSID oraz PASSWORD do sieci WiFi, z którą chcemy się połączyć.

Jeżeli dane, które podaliśmy są złe, to musimy zresetować pamieć EEPROM. Robi się to w następujący sposób: trzymamy przycisk S1 przez 10 sekund, aż buzzer piknie i wtedy ESP powinno uruchomić się znowu w trybie AccessPoint’u.

Tryb normalny

Domyślnie przez API możemy odczytać wartość temperatury oraz wilgotności, jeżeli podpięliśmy DHT, oraz dane z czujnika gazu: są to odpowiednio wartość odczytu analogowego, równowartość zapisana w voltach, oraz flaga czy gaz został wykryty, na wartość PPM przyjdzie jeszcze czas, bo niestety konwersja wartości analogowej odczytanej z czujnika na wartość w PPM nie jest tak prosta.

Całe REST API wystawione przez czujnik znajduje się tutaj, a link do repozytorium z wersją 1.2.0 tutaj.

Obudowa 3D

Kiedy miałem całość polutowana i zaprogramowaną, przyszedł czas umieścić to w jakiejś obudowie. Niestety nie miałem nic gotowego w co by wpasowała się moja płytka, więc trzeba było ogarnąć coś samemu. Wykonałem odpowiednie pomiary i z pomysłem w głowie mogłem przejść do projektowania 3D 😀

Musiałem w projektowaniu uwzględnić kilka rzeczy jak otwór do podłączenia przewodu 230V, otworów na diody LED, przycisk oraz gas sensor. No i potem po modyfikacjach oczywiście otworu na DHT, który będzie umieszczany na zewnątrz obudowy. Wyszło coś takiego:

Główną część obudowy łącze z pokrywą za pomocą śrub. Wykonałem wcześniej odpowiednie miejsca na mocowanie insertów gwintowanych, aby móc później skręcić całość porządnie. No i oczywiście na koniec musiałem przerobić lekko obudowę, aby wyciąć otwór pod przewód do DHT. Użyłem do tego nożyka do tapet oraz palnika, sposób genialny, dzięki rozgrzanemu ostrzu, otwór wyszedł prosto i precyzyjnie, a co najlepsze szybko. Wcześniej się męczyłem z wierceniem oraz pilnikami do wyrównania powierzchni, ale jak widać było to bez sensu.

Gotowe urządzenie prezentuje się następująco:

Testy

Oczywiście uprzednio oraz cały czas podczas projektowania, testowałem czujnik. Robiłem to na kilka sposobów:

  1. Gaz do zapalniczek, po prostu rozpylałem trochę w kierunku czujnika, wykrywał od razu i bezbłędnie.
  2. Dym z papierosów, palący się papieros wystarczy przytrzymać blisko czujnika, tak aby dym z niego był skierowany ku czujnikowi. Co prawda, aby uruchomić alarm tego dymu musi być dużo, ale po odczytach z wyjścia analogowego można stwierdzić, że wykrywa go bardzo dobrze.
  3. Ostatnią rzeczą, jaką używałem do testów, był spirytus, górę czujnika, taką metalową okrągłą siateczkę przykładałem do otworu w butelce i po chwili alarm się włączał. Był to zdecydowanie najwygodniejszy sposób testowania, bo nie wymagał rozpylania szkodliwego gazu ani smrodzenia dymem tytoniowym.

Aktualizacja [v1.1.0]

Po pierwszych dniach testów wyszło że umieszczenie DHT w obudowie obok zasilacza oraz MQ-2, które się grzeją, nie jest najlepszym pomysłem – chyba że chcemy monitorować temperaturę wewnątrz obudowy haha. Niestety nie dysponując pomysłem jak odizolować ten czujnik od temperatury z innych elementów postanowiłem wlutować zamiast niego złącze i po prostu umieścić go daleko od urządzenia. Dodatkowo w jego miejsce pojawił się przycisk służący do resetowania pamięci EEPROM, czyli głównie loginu i hasła do Wi-Fi.

Aktualizacja [v1.2.0]

Dodana została obsługa programowania OTA (over the air programming), czyli możliwość programowania sterownika bezprzewodowo poprzez sieć WiFi, oraz, mechanizm podawania loginu i hasła do WiFi został wyciągnięty do biblioteki i opublikowany na platformio tutaj.

Podsumowanie

Jest to na pewno jedno z ważniejszych urządzeń, jakie robiłem w życiu, gdyż przyczynia się do poprawy bezpieczeństwa. W tym przypadku wygląd i gabaryty nie miały znaczenia, choć nie uważam, aby obudowa była brzydka, ponieważ i tak te czujniki będą u mnie montowane w piwnicy, przy liczniku z zaworami oraz przy piecu, więc prawdopodobnie nikt nigdy ich nie zobaczy.

Koszt wykonania takiego czujnika to około 30-40 zł, w zależności co już posiadamy a co musimy kupić. Jak już wspominałem.

Pytania:

  1. W jaki sposób odizolować czujnik temperatury i wilgotności od reszty elementów w urządzeniu, które wpływają negatywnie na odczyty z niego?
  2. Czy da się użyć któregoś czujników z rodziny MQ do pomiaru spalin w samochodzie?

Plany na przyszłość:

  1. Porównać go z innymi dostępnymi czujnikami gazu na rynku, czas wykrycia (od jakiego stężenia) oraz rodzaje wykrywanych substancji.
  2. Dodać algorytm przeliczający odczytane napięcie na wartość PPM, która powie nam dużo więcej na temat stężenia gazu w powietrzu.

Źródła i linki:

print

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *