Pożar charakteryzuje się emisją energii cieplnej, której towarzyszy występowanie wysokiej temperatury oraz wydzielanie gazów, dymu i zazwyczaj płomieni. Znany czujnik BME688 nadaje się dobrze do wykrywania tych cech, za wyjątkiem samych płomieni. Dlatego uzupełnienie układu o czujnik płomieni może w znacznym stopniu zwiększyć funkcjonalność układu pomiarowego.
Czujnik płomieni na podczerwień
Flame Sensor Waveshare 9521 to niewielki moduł optycznego czujnika płomieni (fotografia 1) [5].
Na płytce został zastosowany popularny fototranzystor YG1006 z niewielkim prądem ciemnym (maksymalnie 100 nA) oraz dość wysokim natężeniem prądu pracy (1,77…7,07 mA), dużą szybkością reakcji (15 μs) i maksymalną czułością przy długości fali 940 nm. Jest on dołączony przez szeregowy rezystor 4,7 kΩ do zasilania. Punkt połączenia (sygnał analogowy) jest wyprowadzony na złącze płytki oraz podany na wejście komparatora LM393. Napięcie odniesienia jest pobierane z potencjometru (regulacja czułości). Wyjście cyfrowe komparatora jest dołączone do diody LED i udostępnione na złączu płytki. Taka organizacja pozwala na samodzielną pracę czujnika z sygnalizacją optyczną detekcji płomienia.
Specyfikacja czujnika:
- zakres widma: 760…1100 nm,
- kąt detekcji: 0°…60°,
- napięcie zasilania: 3,3 V…5,3 V,
- temperatura pracy: –25°…85°C,
- wymiary płytki: 27,3×15,4 mm.
Według producenta czujnik wykrywa płomień o wysokości 5 cm z odległości 1 m.
Czujnik ruchu PIR typu HC-SR501
Moduł czujnika PIR typu HC-SR501 to pasywny detektor ruchu, który reaguje na zmiany promieniowania podczerwonego w otoczeniu (fotografia 2) [6]. Czujnik ruchu PIR działa na zasadzie wykrywania różnicy temperatur między obiektami, które emitują ciepło, a otoczeniem. Gdy obiekt przemieszcza się w zasięgu detektora, zmiana w natężeniu promieniowania powoduje wygenerowanie sygnału wyjściowego (wysokiego). Za pomocą dwóch potencjometrów użytkownik może ustawić czas, przez jaki sygnał wyjściowy będzie utrzymywany po wykryciu ruchu (od 5 do 200 sekund) oraz dostosować czułość sensora.
W prezentowanym systemie został zastosowany detektor PIR typu LHI778 z wbudowanym wtórnikiem napięcia na bazie tranzystora FET, pracującego z rezystorem obciążenia 47 kΩ. Promieniowanie podczerwone jest skupiane na detektorze za pomocą soczewki Fresnela (biała kopułka). Na płytce został zastosowany układ scalony BIS0001 (3…6 V) mający prąd spoczynkowy 1 mA (typ) oraz prąd pracy 2,5 mA (maks.). Układ może pracować w dwóch trybach wybieranych zworką:
- Retriggering – stan wysoki utrzymywany podczas trwania ruchu (domyślnie)
- Non-retriggering – stan wysoki generowany tylko raz po wykryciu ruchu.
- Zasilanie płytki jest realizowane przez układ LDO typu HT7133-1, dostarczający napięcie 3,3 V (30 mA).
Parametry techniczne czujnika HC-SR501:
- zasilanie: 4,5 V…20 V DC,
- pobór prądu w stanie czuwania: 50 μA,
- napięcie wyjściowe: 3,3 V (cyfrowe),
- zasięg detekcji: do 7 m,
- kąt widzenia: do 100°,
- wyjście cyfrowe: HIGH – ruch wykryty, LOW – brak ruchu.
Za pomocą potencjometrów można ustawić czas, przez jaki sygnał wyjściowy będzie utrzymywany po wykryciu ruchu (od 5 do 200 sekund) oraz dostosować czułość czujnika (od 3 do około 7 m).
Płytka RPi Pico2 firmy Raspberry Pi
Nowe płytki Pico 2 i Pico 2W firmy Raspberry Pi z procesorem RP2350 są zgodne elektrycznie z płytkami Pico z pierwszej serii (Pico/Pico W) [1]. W modułach zostały zastosowane układy pamięci NOR Flash z serii W25Q (Winbond) o częstotliwości pracy do 133 MHz (przepustowość do 66 MB/s). Dokładny opis jest zamieszczony w artykule „Płytka Raspberry Pi Pico 2/2W z procesorem RP2350” [2].
Płytka Pico 2 zawiera przetwornicę buck-boost, która dostarcza napięcie 3,3 V (do zasilania RP2350 i obwodów zewnętrznych) z szerokiego zakresu napięć wejściowych (1,8 do 5,5 V).
Czujnik BME688
Czujnik gazu układu BME688 firmy Bosch jest wytwarzany w technologii MOX. Lista gazów, które mogą być wykrywane przez BME688, obejmuje niemal wszystkie lotne związki organiczne, lotne związki siarki oraz inne gazy, takie jak tlenek węgla (CO) i wodór (H) w zakresie na poziomie ppb (parts per billion). Czujnik ma w obudowie otwór o średnicy mniejszej niż 1 mm. Dyfuzja gazu do środka i na zewnątrz obudowy trwa kilka sekund. Nie ma potrzeby stosowania wymuszonego przepływu gazu [10].
Moduł BME688 Breakout Board firmy pi3g zawiera układ BME688 firmy Bosch skonfigurowany do pracy z szyną I²C [8]. Układ scalony BME688 jest zamontowany daleko od złączy płytki, co pozwala na poprawną pracę czujnika z daleka od źródeł ciepła. Moduł pobiera prąd nieprzekraczający 50 mA. Złącze X1 ma wyprowadzone sygnały SCL, SDA oraz masę i zasilanie 3,3 V, w sposób kompatybilny ze złączem GPIO płytki Raspberry Pi Pico 2. W celu podłączenia wystarczy wyrównać pozycje 3,3 V na obydwu złączach. Raspberry Pi ma dwa wyprowadzenia I²C na GPIO 2 (SDA) i GPIO 3 (SCL) dla I2C0 (master) – piny układu scalonego 27 i 28.
Aby uzyskać stabilny odczyt rezystancji czujnika konieczne jest czyste napięcie zasilania. Nie nadaje się do tego napięcie 3V3 dostarczane przez płytkę Pico 2, gdyż zawiera ono silne tętnienia. Dobrym sposobem jest pobranie zasilania 3,3 V ze zmodyfikowanej płytki przetwornika ADS1115 (opis w [11]).
Modyfikowany moduł DFRobot I²C ADS1115
Moduł DFRobot I²C ADS1115 (DFR0553) firmy DFRobot [3] zawiera układ przetwornika analogowo-cyfrowego ADS1115. W celu zapewnienia optymalnych warunków zasilania, płytkę należy zmodyfikować zgodnie z opisem, który zamieściliśmy w poprzednich odcinkach niniejszego cyklu. Do pracy z układem ADS115 została zastosowana biblioteka języka MicroPython [4].
Pico Inky Pack – moduł z wyświetlaczem e-Paper
Pico Inky Pack (PIM634) firmy Pimoroni to moduł z czarno-białym wyświetlaczem e-Paper o przekątnej 2,9” i rozdzielczości 296×128 px, przeznaczony do płytek z serii Raspberry Pi Pico. Ma wbudowany kontroler, który realizuje komunikację za pomocą interfejsu SPI. Pico Graphics to zunifikowana biblioteka grafiki i wyświetlania firmy Pimoroni umożliwiająca sterowanie wyświetlaczami z Pico w języku MicroPython [8].
Cyfrowy miernik zużycia energii z układem INA219
INA219 firmy Texas Instruments to scalony bocznik prądowy i monitor mocy z interfejsem zgodnym z I²C. Układ monitoruje zarówno spadek napięcia na boczniku, jak i napięcie zasilania magistrali, z programowalnymi czasami konwersji i filtrowaniem.
Moduł cyfrowego miernika mocy „I²C Digital Wattmeter” (SEN0291) firmy DFRobot [12] zawiera tylko układ INA219 z zewnętrznym rezystorem bocznikującym 0,01 Ω, złącze do zasilania i komunikacji I²C oraz złącze pomiarowe.
Układ INA219 odczytuje napięcie szyny zasilania mierzonego obwodu (wyprowadzenie IN–) względem potencjału swojego wyprowadzenia masy (GND). Jeśli masa mierzonego obwodu nie będzie połączona galwanicznie z wyprowadzeniem GND układu INA219, to wynik pomiaru napięcia szyny zasilania będzie niepoprawny.
Specyfikacja modułu miernika mocy INA219:
- napięcie zasilania: 3,3…5 V,
- zakres pomiaru napięcia: 0…26 V,
- rozdzielczość napięcia: 4 mV,
- błąd pomiarowy napięcia: do 0,2% (typowy),
- zakres pomiaru prądu: 0…8 A (dwukierunkowy),
- rozdzielczość prądu: 1 mA,
- błąd pomiarowy prądu: do 2% (typowy, wymagana ręczna kalibracja),
- zakres pomiaru mocy: 0…206 W,
- rozdzielczość mocy: 20 mW (sprzętowa)/4 mW (programowa),
- prąd spoczynkowy: 1 mA (max.),
- adres I²C: 0x40, 0x41, 0x44 lub 0x45,
- wymiary: 30×22 mm.
Na udostępnianym na stronie producenta schemacie wersji V1.0 modułu widać układ LDO. W aktualnej wersji płytki V2.1.0 nie jest on obecny.
Moduł buzzera z aktywnym generatorem
Moduł buzzera z generatorem MOD-04526 wytwarza dźwięk o stałej częstotliwości przy zasilaniu za pomocą stałego źródła napięcia (fotografia 3) [9]. Wewnętrzny generator utrzymuje stabilną częstotliwość dźwięku, więc moduł nie wymaga generowania sygnału PWM ani dodatkowych układów oscylatora. Sygnał generowany jest przy podaniu na pin IN stanu niskiego. Na płytce, oprócz buzzera z generatorem, znajduje się także tranzystor, którego zadaniem jest kluczowanie zasilania.
Specyfikacja modułu buzzera:
- napięcie zasilania: 3…5 V,
- pobór prądu: około 20 mA,
- sygnał sterujący: cyfrowy, aktywowany stanem niskim,
- częstotliwość dźwięku: ok. 2300 Hz,
- wymiary modułu: 28×12×12 mm,
- zakres temperatury pracy: –20°C…+70°C.
Moduł ładowarki akumulatora Li-Ion z układem TP4056
Układ TP4056 to scalona ładowarka akumulatora litowo-jonowego lub litowo-polimerowego, przystosowana do obsługi pojedynczego ogniwa (3,7 V). Wewnętrzne obwody chronią ogniwo przed nadmiernym ładowaniem [13] i zawierają dwa wyjścia stanu, wskazujące ładowanie oraz jego zakończenie. Programowalny prąd ładowania może mieć natężenie do 1 A. Układ obsługuje ładowanie w trybach stałego prądu (CC) oraz stałego napięcia 4,2 V (CV). Obsługuje automatyczne przejście do trybu uśpienia o typowym poborze prądu poniżej 2 μA.
Właściwości modułu ładowarki TP4056:
- wbudowane diody sygnalizujące proces ładowania i pełne naładowanie,
- napięcie zasilania: 4...8 V DC z zewnętrznego zasilacza lub 5 V poprzez złącze microUSB,
- maksymalne napięcie ładowania: 4,2 V,
- maksymalny prąd ładowania: 1 A,
- pobór prądu bez obciążenia: 2 mA,
- pobór prądu z dołączonego ogniwa (po odłączeniu zasilania ładowarki): max. 6 μA,
- przelotowe pola lutownicze do podłączenia ogniwa i zasilania,
- wymiary: 23×17×4 mm.
Akumulator Li-Ion
Akumulator Li-Ion XTAR 18650 ma nominalne napięcie 3,7 V i pojemność 2600 mAh [14]. Posiada zabezpieczenie przed przeładowaniem, nadmiernym rozładowaniem, przeciążeniem i zwarciem.
Właściwości akumulatora XTAR 18650:
- akumulator Li-Ion (litowo-jonowy),
- typ: 18650,
- napięcie nominalne: 3,7 V,
- pojemność minimalna: 2600 mAh,
- maksymalny prąd ładowania: 2 A,
- maksymalne napięcie ładowania: 4,2 V,
- maksymalny prąd rozładowania: 5 A,
- próg zadziałania zabezpieczenia prądowego: 6,2 A.
Akumulator zbudowany jest na bazie na bazie oryginalnego ogniwa marki Samsung.
Ekspander szyny RPi Pico
Ekspandery firmy Pimoroni są przeznaczone do płytek z serii Raspberry Pi Pico. Wyposażone zostały w jedno standardowe złącze żeńskie (do bezpośredniego wpięcia płytki z serii Pico) oraz zestawy męskich listew 2×20 pinów, które umożliwiają podłączenie dodatkowych modułów rozszerzeń. Etykiety pinów, umieszczone na górnej stronie płytki, znacznie ułatwiają prototypowanie. Ekspander Pico Decker (Quad Expander) o numerze katalogowym PIM555 ma cztery zestawy męskich listew, a Pico Omnibus (Dual Expander) PIM556 – dwa zestawy.
Konfiguracja pomiarowa
Konfiguracja pomiarowa (fotografia 4) zawiera następujące elementy:
- płytka Raspberry Pi Pico 2 [1],
- moduł DFRobot I²C ADS1115 [4] (zmodyfikowany),
- wyświetlacz Pico Inky Pack (PIM634),
- ekspander Pico Omnibus (PIM556),
- czujnik środowiskowy BME688 [10],
- czujnik ruchu PIR HC-SR501 [6],
- czujnik płomieni 760...1100 nm, Waveshare 9521 [5],
- DFRobot Gravity v2.1.0 (INA219) (I²C) [3],
- moduł buzzera z aktywnym z generatorem MOD-04526 [9],
- akumulator Li-Ion 18650 XTAR 2600 mAh [14],
- ładowarka Li-Pol TP4056 [13],
- tranzystor PMOS DMG2305UX.
Istnieje możliwość komunikacji z innym systemem komputerowym z zastosowaniem łącza UART. Przy zmianie płytki Raspberry Pi Pico 2 na wersję 2W jest także możliwe nawiązanie łączności bezprzewodowej poprzez Wi-Fi lub Bluetooth.
Przygotowanie środowiska programowego
Interpreter MicroPython firmy Pimoroni dla Pico 2 [7] zawiera dodatkowo sterowniki wielu czujników oraz wyświetlaczy, w tym Pico Inky Pack [8].
- Zmontuj elementy zgodnie z opisem.
- Pobierz najnowszy interpreter MicroPythona w pliku pico2-v0.0.12-pimoroni-micropython.uf2 ze strony firmy Pimoroni [7].
- Trzymając wciśnięty biały przycisk BOOTSEL, podłącz Raspberry Pi Pico2 do komputera kablem Micro USB.
- Skopiuj pobrany plik .uf2 na Raspberry Pi Pico 2. Płytka jest widoczna jako dysk RP2350 w eksploratorze plików Windows.
- W komputerze zainstaluj najnowszą wersję programu Thonny, a następnie uruchom go.
- Kliknij ikonkę trzech linii w prawym dolnym rogu i wybierz „Configure interpreter”.
- Ustaw typ interpretera na „MicroPython (Raspberry Pi Pico)”.
- Z menu w prawym dolnym rogu wybierz MicroPython (Raspberry Pi Pico) · Board CD @COMxx.
- Interpreter w polu Shell z wyświetli informację o wersji:
- MicroPython feature/psram-and-wifi, pico2 v0.0.12 on 2025-02-28; Raspberry Pi Pico2 with RP2350
- Pobierz folder code z kodem aplikacji z repozytorium https://ep.com.pl/files/kvz/13756-code.zip.
- Otwórz w oknie Files folder code.
- Kliknij prawym klawiszem myszy na plik main.py i wybierz Upload to.
- Tak samo załaduj do płytki Pico 2 drugi plik z folderu.
Oprogramowanie
Oprogramowanie w języku Python realizuje kompleksowe zarządzanie prototypowym systemem bezpieczeństwa, który korzysta z zestawu czujników (gazu, płomienia, ruchu, temperatury, wilgotności, napięcia zasilania) oraz wyświetlacza e-Paper i sygnalizatora dźwiękowo-świetlnego (buzzery i diody LED). Program napisano w języku MicroPython, co ułatwia rozwój oraz implementację logiki sterującej.
Kod dzieli się logicznie na następujące sekcje:
- deklaracje bibliotek i pinów,
- definicje klas (INA219),
- inicjalizacja czujników i urządzeń,
- logika inicjalizacji i kalibracji (linia bazowa odczytu gazu),
- procedury odczytów z czujników i logika alarmowa,
- procedury wyświetlania danych,
- obsługa przycisków i czujnika PIR,
- pętla główna.
Na początku działania system przez 2 minuty zbiera dane z czujnika gazu BME688, aby wyznaczyć wartość bazową (current_baseline). Ta liczba służy jako punkt odniesienia do wykrywania anomalii (np. nagłego wzrostu stężenia gazów). Wartość baseline jest aktualizowana z wykorzystaniem bieżących odczytów. Wartość delta, czyli odchylenie od baseline, służy natomiast do oceny jakości powietrza – duże spadki (poniżej progu bme_alarm) sugerują obecność gazów (np. CO).
Wartość napięcia z czujnika płomienia odczytywana jest przez przetwornik ADS1115. Wartości poniżej flame_alarm są uznawane za potencjalny pożar.
Klasa INA219 służy do odczytu napięcia i prądu zasilania oraz obliczania poziomu naładowania akumulatora (w %).
Przyciski wyświetlacza umożliwiają natychmiastowe wykonanie funkcjonalności:
A – sprawdzenie warunków pożaru (manualny test),
B – odtwarzanie melodii błędu,
C – odświeżanie ekranu.
Obsługa przycisków wyświetlacza i czujnika ruchu jest realizowana w trybie przerwań (IRQ), co zapewnia natychmiastową reakcję systemu, bez potrzeby ciągłego odpytywania stanu klawiszy.
Buzzer odtwarza sekwencję dźwięków dla alarmu (tune_fire) lub błędu (tune_error).
Wartości poziomu gazu i płomienia odczytane z czujników, ich status, temperatura, stan naładowania akumulatora i informacje alarmowe (np. „FIRE”) są pokazywane na wyświetlaczu e-Paper oraz wysyłane poprzez łącze USB.
Pętla while działa jako główna pętla nieskończona. Cała logika systemu została zrealizowana w postaci obsługi czterech przerwań i timera.
Timer co 10 s aktywuje sekwencję realizującą następujące zadania:
- odczyt wartości napięcia z czujnika płomienia,
- odczyt wartości poziomu gazu, temperatury, wilgotności i ciśnienia z czujnika BME688,
- pomiar napięcia na akumulatorze,
- wyświetlenie wyników i wysłanie ich przez USB,
- detekcja możliwości wystąpienia pożaru na podstawie zmian odczytów parametrów.
Kod zawiera wiele zabezpieczeń: sprawdzanie statusu wewnętrznego czujnika BME688, obsługę wyjątków (try-except) w przypadku błędów komunikacji z czujnikami, zastosowanie wartości domyślnych przy braku danych inicjalizacji.
Wnioski z pomiarów
Proces testowania miał na celu weryfikację poprawności działania, skuteczności detekcji oraz wydajności energetycznej prototypu. Testy przeprowadzono w sposób iteracyjny, począwszy od testów jednostkowych komponentów. Przeprowadzono serię eksperymentów pozwalających na sprawdzenie reakcji systemu na różne bodźce:
- Detekcja ruchu
- Przebieg: W pobliżu czujnika umieszczono rękę.
- Wyniki: System natychmiast zasygnalizował ruch. W obecnej wersji reakcja została ograniczona do informacji tekstowej.
- Detekcja otwartego płomienia
- Przebieg: W pobliżu czujnika płomieni umieszczano źródło ognia (świeca).
- Wyniki: System niezawodnie i natychmiastowo (<1 s) reagował na obecność płomienia w polu widzenia czujnika. Wartość odczytu z ADC spadała gwałtownie poniżej ustalonego progu, co skutkowało wyzwoleniem alarmu. Po usunięciu źródła płomienia odczyt powracał do wartości poprzedniej.
- Detekcja dymu
- Przebieg: W pobliżu czujnika BME688 umieszczono zapaloną trociczkę zapachową.
- Wyniki: System niezawodnie i natychmiastowo reagował na obecność dymu. Po usunięciu źródła dymu odczyt bardzo wolno powracał do wartości bazowej.
Testy potwierdziły poprawność doboru czujnika oraz skuteczność działania logiki alarmowej.
Zapis przeprowadzonej próby pokazano na listingu 1. Po przeprowadzeniu detekcji urządzeń dołączonych do szyny I²C wykonano dwa dodatkowe pomiary czujnikiem BME688, jeden bezpośrednio po drugim. Jak widać na wydruku, pierwszy pomiar sygnalizował prawidłowe wykonanie pomiaru rezystancji (gazu), lecz przy nieprawidłowym działaniu grzejnika wewnętrznego. Uzyskana wartość pomiarowa jest błędna. Dopiero drugi pomiar jest całkowicie poprawny. W dalszym działaniu oprogramowania następne pomiary z tego czujnika są wykonywane podwójnie.
I²C0 (SCL-PIN5 SDA-PIN4): Detected devices:
[‘0x45’, ‘0x48’, ‘0x77’]
I²C0 Decimal address: [69, 72, 119]
23.84°C, 100689.12Pa, 66.11%, 931120.69 Ohm, Heater Status: Unstable, Gas valid: True
23.84°C, 100689.10Pa, 66.13%, 31045.36 Ohm, Heater Status: Stable, Gas valid: True
Gas baseline collection: 2min
1.00 23.86°C 100688.89Pa 66.21% 40583.39 Ohms Heater: Stable Gas_valid: True
2.00 23.86°C 100688.82Pa 65.78% 44849.34 Ohms Heater: Stable Gas_valid: True
3.00 23.87°C 100688.75Pa 65.65% 50127.28 Ohms Heater: Stable Gas_valid: True
4.00 23.87°C 100688.75Pa 65.56% 53556.48 Ohms Heater: Stable Gas_valid: True
5.00 23.88°C 100688.61Pa 65.95% 56574.59 Ohms Heater: Stable Gas_valid: True
6.00 23.88°C 100688.52Pa 65.61% 58918.30 Ohms Heater: Stable Gas_valid: True
7.00 23.89°C 100688.45Pa 65.50% 60850.96 Ohms Heater: Stable Gas_valid: True
8.00 23.89°C 100688.41Pa 65.37% 62591.69 Ohms Heater: Stable Gas_valid: True
9.00 23.90°C 100688.44Pa 65.20% 64532.39 Ohms Heater: Stable Gas_valid: True
10.00 23.91°C 100688.38Pa 65.28% 65523.42 Ohms Heater: Stable Gas_valid: True
11.00 23.92°C 100688.28Pa 65.32% 66753.59 Ohms Heater: Stable Gas_valid: True
12.00 23.92°C 100688.22Pa 65.07% 67226.89 Ohms Heater: Stable Gas_valid: True
Gas Baseline: 64580 Ohm
Gas: 67492.75 Baseline: 64608.95 Gas delta: 2912.93 FlameADC: 3241.35 FlameALARM: 2000.00 Temp: 23.93°C BAT: 98.00%
Gas: 67976.63 Baseline: 64642.63 Gas delta: 3367.68 FlameADC: 3240.47 FlameALARM: 2000.00 Temp: 23.94°C BAT: 98.00%
PIR movement detection
Gas: 73415.55 Baseline: 64730.36 Gas delta: 8772.92 FlameADC: 3253.60 FlameALARM: 2000.00 Temp: 23.95°C BAT: 97.90%
Gas: 78987.97 Baseline: 64872.93 Gas delta: 14257.61 FlameADC: 3247.97 FlameALARM: 2000.00 Temp: 23.96°C BAT: 97.90%
PIR movement detection
Gas: 89043.48 Baseline: 65114.64 Gas delta: 24170.54 FlameADC: 3203.97 FlameALARM: 2000.00 Temp: 23.97°C BAT: 97.81%
Gas: 84460.57 Baseline: 65308.10 Gas delta: 19345.93 FlameADC: 175.76 FlameALARM: 2000.00 Temp: 23.98°C BAT: 97.90%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 81399.05 Baseline: 65469.01 Gas delta: 16090.95 FlameADC: 176.26 FlameALARM: 2000.00 Temp: 23.98°C BAT: 97.81%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
PIR movement detection
Gas: 80100.13 Baseline: 65615.32 Gas delta: 14631.11 FlameADC: 3259.72 FlameALARM: 2000.00 Temp: 23.99°C BAT: 98.10%
Gas: 90747.96 Baseline: 65866.65 Gas delta: 25132.64 FlameADC: 3219.22 FlameALARM: 2000.00 Temp: 24.00°C BAT: 97.81%
Gas: 5684.85 Baseline: 65806.47 Gas delta: -60181.80 FlameADC: 3217.47 FlameALARM: 2000.00 Temp: 24.02°C BAT: 97.81%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 12703.45 Baseline: 65753.37 Gas delta: -53103.02 FlameADC: 3217.35 FlameALARM: 2000.00 Temp: 24.07°C BAT: 97.81%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 19008.02 Baseline: 65706.63 Gas delta: -46745.35 FlameADC: 3217.60 FlameALARM: 2000.00 Temp: 24.12°C BAT: 98.10%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 24672.32 Baseline: 65665.59 Gas delta: -41034.30 FlameADC: 3218.60 FlameALARM: 2000.00 Temp: 24.16°C BAT: 97.81%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 29976.58 Baseline: 65629.91 Gas delta: -35689.02 FlameADC: 3218.10 FlameALARM: 2000.00 Temp: 24.19°C BAT: 98.10%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 34678.95 Baseline: 65598.95 Gas delta: -30950.96 FlameADC: 3219.72 FlameALARM: 2000.00 Temp: 24.22°C BAT: 98.10%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 39167.69 Baseline: 65572.52 Gas delta: -26431.27 FlameADC: 3218.10 FlameALARM: 2000.00 Temp: 24.24°C BAT: 97.90%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 42866.71 Baseline: 65549.82 Gas delta: -22705.81 FlameADC: 3218.47 FlameALARM: 2000.00 Temp: 24.26°C BAT: 98.00%
WYKRYTO POZAR! ROB ZDJECIE KAMERA
Gas: 46613.25 Baseline: 65530.88 Gas delta: -18936.57 FlameADC: 3218.85 FlameALARM: 2000.00 Temp: 24.27°C BAT: 97.90%
Gas: 51210.24 Baseline: 65516.56 Gas delta: -14320.64 FlameADC: 3219.47 FlameALARM: 2000.00 Temp: 24.28°C BAT: 98.10%
Gas: 54065.47 Baseline: 65505.11 Gas delta: -11451.09 FlameADC: 3216.85 FlameALARM: 2000.00 Temp: 24.29°C BAT: 97.90%
Gas: 56914.18 Baseline: 65496.52 Gas delta: -8590.93 FlameADC: 3215.35 FlameALARM: 2000.00 Temp: 24.30°C BAT: 97.90%
Gas: 58918.30 Baseline: 65489.95 Gas delta: -6578.23 FlameADC: 3215.97 FlameALARM: 2000.00 Temp: 24.30°C BAT: 97.81%
Listing 1. Wydruk próby testowej
Zbieranie danych do ustalenia wartości bazowej jest realizowane z takim samym odstępem (co 10 s), jak podczas normalnej pracy. Typowo, po dłuższym okresie bez zasilania, rezystancja bez obecności dymu lub gazów jest bardzo niska i wynosi około 10 kΩ. Następnie rośnie i po kilkunastu/kilkudziesięciu minutach osiąga poziom powyżej 100 kΩ. Zjawisko to zostało pokazane w poprzednim artykule [16]. Jest to spory problem i wymaga dynamicznej adaptacji wartości progowej do tych zmian.
Pomiary zasilania
Do dynamicznego pomiaru prądu zasilania bardzo dobrze nadaje się zestaw Power Profiler Kit II (PPK2) firmy Nordic Semiconductor. Dokładny opis urządzenia można znaleźć w artykule „Profilowanie mocy z zastosowaniem Power Profiler Kit II” [15].
Zapis pomiaru zasilania przeprowadzonej próby pokazano na rysunku 1. W dolnym panelu widać stan wejść cyfrowych, przy czym sygnały 2 i 3 dotyczą szyny I²C, a sygnał 5 sygnalizuje działanie procedury uruchamianej przez timer.
Czujnik BME688 pobiera na początku pracy dosyć duży prąd (związany z uruchomieniem grzałki) podczas pomiaru gazu. Potem sensor nagrzewa się wewnętrznie i pobór prądu maleje. Przetwornica DC/DC płytki RPi Pico 2 reaguje na skokowe zwiększenie poboru prądu pikiem prądowym (do 368 mA) ze źródła zasilania. Przy pierwszym dołączeniu zasilania do płytki RPi Pico 2 ten impuls może osiągnąć wartość nawet 0,6 A.
Średni pobór prądu podczas próby wynosił 31 mA. Ta wartość jest podwyższona ze względu na działanie buzzera podczas alarmów (34 mA, 1,5 s). W trakcie normalnej pracy prąd zasilania wynosi średnio ok. 26 mA. Podczas działania pustej pętli (sleep) pobór wynosi ok. 25 mA, zatem wykonywanie pomiarów dodaje średnio tylko poniżej 2 mA. Pobór prądu w trakcie pomiaru gazu wynosi ok. 40 mA, czyli dodaje tylko 15 mA do wartości bazowej.
Problemem do rozwiązania jest duży pobór prądu w pustej pętli. Rozwiązaniem może być wprowadzenie procesora w stan obniżonego poboru mocy. Jednak obecna wersja oprogramowania w języku MicroPython nie udostępnia poprawnej procedury uśpienia.
Podsumowanie
Opisany układ jest próbą oceny przydatności tanich i dostępnych czujników do wykrywania zagrożeń pożarowych. Uzupełnienie dobrego czujnika parametrów środowiska BME688 o detektor płomieni (IRED) znacząco zwiększyło możliwość wykrywania różnych cech pożaru. Czujnik ruchu (PIR) umożliwia ponadto wykrywanie obecności osób w zagrożonym obszarze.
Zastosowany do badań interwał pomiarowy równy 10 s stanowi złoty środek, realizując cel projektu, jakim jest stworzenie autonomicznego i skutecznego, a jednocześnie energooszczędnego systemu bezpieczeństwa.
Istnieje możliwość rozszerzenia wykrywania zjawisk związanych z pożarem poprzez monitorowanie zmian temperatury i ciśnienia.
Układ wymaga przeprowadzenia dalszych badań i ustalenia np. optymalnych wartości progów detekcji, dodania monitorowania obecności osób itd. Należy też zastosować usypianie procesora. Wydaje się to możliwe po zintegrowaniu z obecnym oprogramowaniem firmowej biblioteki Powman (w języku C).
Opis i realizacja oprogramowania bazuje na projekcie „Autonomiczny układ wykrywania pożaru” wykonanego w ramach przedmiotu „Systemy Wbudowane i Oprogramowanie” na kierunku Internet Rzeczy Wydziału Elektroniki i Technik Informacyjnych Politechniki Warszawskiej przez zespół w składzie: Amelia Malaszewska, Mikołaj Piotrowski, Mikołaj Bednarczyk i Jakub Kander.
Henryk A. Kowalski
Instytut Informatyki
Politechnika Warszawska
Literatura:
[1] Raspberry Pi Pico 2, https://www.raspberrypi.com/products/raspberry-pi-pico-2/
[2] RP2350 Datasheet, 2024-10-16, Raspberry Pi, https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf
[3] Gravity: I²C ADS1115 16-Bit ADC Module, DFR0553, DFRobot, https://www.dfrobot.com/product-1730.html
[4] ADS1115_mpy, A MicroPython module for the ADS1115 ADC. Wolfgang (Wolle) Ewald, https://github.com/wollewald/ADS1115_mpy
[5] Flame Sensor, Waveshare 9521, https://www.waveshare.com/product/Flame-Sensor.htm
[6] Czujnik PIR HC-SR501 – detektor ruchu, Kamami, https://kamami.pl/czujniki-ruchu/200743-modhc-sr501-5906623440597.html
[7] Pimoroni Pico MicroPython for RP2350/Pico2 boards, https://github.com/pimoroni/pimoroni-pico-rp2350
[8] Pico Graphics, Pimoroni, https://github.com/pimoroni/pimoroni-pico/tree/main/micropython/modules/picographics
[9] Moduł z buzzerem aktywnym z generatorem – zielony, MOD-04526, Botland, https://botland.com.pl/buzzery-generatory-dzwieku/4526-modul-z-buzzerem-aktywnym-z-generatorem-zielony-5904422300654.html
[10] Bosch gas sensor BME688, https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme688/#documents
[11] Czujniki gazu i dymu, Henryk A. Kowalski, EP 6/2025, https://ep.com.pl/projekty/moduly-w-aplikacjach/16536-internet-rzeczy-w-pomiarach-srodowiskowych-18-czujniki-gazu-i-dymu
[12] Gravity: I²C Digital Wattmeter, SEN0291, DFRobot, https://www.dfrobot.com/product-1827.html
[13] Moduł ładowarki akumulatora Li-ion z układem TP4056 i złączem microUSB, Kamami, https://kamami.pl/ladowarki-li-po-moduly/562280-modul-ladowarki-akumulatora-li-ion-z-ukladem-tp4056-i-zlaczem-microusb-5906623455461.html
[14] Akumulator Li-Ion Xtar 18650 3,7 V 2600 mAh z zabezpieczeniem, Kamami, https://kamami.pl/akumulatory/579126-akumulator-li-ion-xtar-18650-37v-2600mah-z-zabezpieczeniem-6952918340263.html
[15] Profilowanie mocy z zastosowaniem Power Profiler Kit II, Henryk A. Kowalski, EP 5/2022, https://ep.com.pl/kursy/15267-systemy-dla-internetu-rzeczy-60-profilowanie-mocy-z-zastosowaniem-power-profiler-kit-ii
[16] Detekcja pożaru z płytką Raspberry Pi Pico 2 w języku Python, Henryk A. Kowalski, EP 4/2025, https://ep.com.pl/projekty/moduly-w-aplikacjach/16496-internet-rzeczy-w-pomiarach-srodowiskowych-16-detekcja-pozaru-z-plytka-raspberry-pi-pico-2-w-jezyku-python