Własna stacja pogodowa - część trzecia

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.

Przykładowy panel Grafany reprezentujący pomiary z pojedynczego czujnika.

Przykładowy panel Grafany reprezentujący pomiary z pojedynczego czujnika.

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.

Prototyp, w oczekiwaniu na moduły radiowe wykorzystałem prądożerny HC-05.

Prototyp, w oczekiwaniu na moduły radiowe wykorzystałem prądożerny HC-05.

Więcej screenów, zdjęcia oraz sam kod udostępnię w kolejnym poście, gdy już skompletuję wszystkie podzespoły.