Aktualnie pracuję nad przekształceniem całego projektu w system wewnętrznych czujników które mogłyby być rozsiane w różnych miejscach domu. Koncept oparłem o układy nRF24L01 które są tanie, posiadając przy tym zadowalające parametry i nie wymuszają podłączania każdego czujnika do sieci Wi-Fi, co mogłoby spowodować spadek wydajności całej sieci, szczególnie przy większej liczbie mocno oddalonych od siebie czujek. Dodałem także obsługę układów Microchip MCP9700A, które są o wiele tańsze od Maximowych DS18B20, a przy odpowiedniej kalibracji i multisamplingu dają bardzo dobre rezultaty. Dodatkowo mają mniejsze wymagania prądowe i pracują przy niższych napięciach, co wiąże się z drugim rozwiązaniem — użyciem tanich i popularnych akumulatorków 18650 jako podstawowego źródła zasilania. Teoretycznie takie rozwiązanie powinno wystarczyć na ciągłą pracę przez ponad miesiąc na jednym ogniwie 3500mAh. Wymusiło to przejście na Arduino w wersji 3v3 które jest wolniejsze, ale nie wpływa to negatywnie na pracę przy tak prostym zadaniu.
Jako host całej sieci pracuje Raspberry Pi Zero W pod kontrolą Alpine Linux oraz podpiętym nRF24L01 bezpośrednio do natywnego SPI. Istnieje opcja użycia dowolnego sprzętu, jednak wiązałoby się to z użyciem nieporęcznych adapterów i komunikacji po UART. Host co określony przedział czasowy rozsyła do wszystkich podpiętych urządzeń żądanie pobrania danych z sensorów oraz pomiar naładowania akumulatorów, a następnie umieszcza dane w bazie PostgreSQL. Pewnie niektórzy powiedzą, że jestem głupi i powinienem używać InfluxDB albo innego silnika skierowanego tylko do tego typu zadań, ale prawdą jest, że są one bardzo ograniczone w swych bezpłatnych wersjach i/lub nie są zbyt wydajne. PostgreSQL dodatkowo znam i lubię, a jego wydajność jest naprawdę ponadprzeciętna.
Dane z bazy są zaciągane poprzez Grafanę, która może i marnuje się do tak prostych zastosowań, ale jest wygodna i prosta w obsłudze.
Lista komponentów:
Czujnik
- Arduino Pro Mini 3v3 ( ~$2)
- MCP9700A (~$0.3) LUB DS18B20 (~$0.6)
- nRF24L01 (~$0.8)
- Moduł ładowania dla ogniwa 18650 (~$0.3)
- Ogniwo typu 18650 ($2 — $15, zależne od pojemności i marki)
- Dwa/trzy rezystory i kilka kondensatorów foliowych lub ceramicznych
Nie uwzględniając kosztu obudowy całość wyniesie około $6,5 (25zł) przy cenach z AliExpress, w przypadku robienia zakupów w Polsce koszt wzrośnie mniej więcej czterokrotnie.
Stacja bazowa
- Raspberry Pi Zero W (~$15)
- nRF24L01 (~$0.8)
Pomijając znów akcesoria i obudowę wychodzi $15,8 (60zł), a RPi może służyć w tym samym czasie do innych celów. W tym wypadku wyjątkowo ceny w Polsce są porównywalne z tymi z AliExpress, choć z dostępnośćią RPi może być różnie.
Więcej screenów, zdjęcia oraz sam kod udostępnię w kolejnym poście, gdy już skompletuję wszystkie podzespoły.