OpenWrt: Pomiar temperatury z GPIO

Router oparty o OpenWrt posiada wiele możliwości, jedną z nich jest wykorzystanie GPIO do podłączenia czujników temperatury,wilgotności czy ciśnienia.

Niektóre routery takich firm jak np. GL-iNeT, Turris czy większość mikrokomputerów posiadają złącze wejścia-wyjścia które to umożliwia na podłączenia zewnętrznych peryferii. Dlatego dzięki Domoticzowi można zamienić domowy router w serwis pogodowy dla naszego domu czy mieszkania. Proces konfiguracji takiej platformy omówiłem w poście Domoticz: Konfiguracja w OpenWrt

Natomiast w przypadku kiedy router nie posiada takich portów można rozważyć małą modyfikacje. Wystarczy sprawdzić czy przypadkiem jakaś dioda lub guzik nie jest podłączona do GPIO. Co umożliwi na podłączenie czujników zamiast jednego z tych elementów. Jednakże nie jest to zalecane prze zemnie działanie, gdyż nieumiejętne wykonanie tej modyfikacji może doprowadzić do spalenia elementów znajdujących się na PCB.

1) Na pierwszy ogień idzie popularny DS18B20/DS18B20+
Termometr ten nie należy do najdokładniejszych lecz może świetnie się sprawować jako zewnętrzny termometr lub czujnik pomiarowy do pieca CO/bojlera.

Instalacja tego czujnika pod OpenWrt wygląda następująco:

 
opkg update
opkg install kmod-w1 kmod-w1-master-gpio kmod-w1-gpio-custom
opkg install kmod-w1-slave-therm 

Następnie określamy GPIO do którego podłączyliśmy czujnik:

  • Rozpiska GPIO dla Raspberry Pi Zero W/WH
  • Rozpiska GPIO dla Raspberry Pi 3 model B/B+

Gdy już wybraliśmy odpowiedni port wejścia-wyjścia w konsoli wpisujemy:

 
echo "w1-gpio-custom bus0=0,numer_portu,0" > /etc/modules.d/50-w1-gpio-custom

W miejsce numer_portu podajemy numer GPIO do którego podłączyliśmy „nóżkę danych” czujnika np. echo „w1-gpio-custom bus0=0,4,0” > /etc/modules.d/50-w1-gpio-custom

Wyłączamy urządzenie i podłączymy czujnik:
Przed podłączeniem sensora należy pamiętać o dodaniu rezystora 4.7k między „nóżkę” danych oraz zasilania!

poweroff

Uruchamiamy urządzenia i wykonujemy testowy odczyt:

cat /sys/bus/w1/drivers/w1_slave_driver/numer-seryjny_czujnika/w1_slave

Przykładowy wynik:

 
71 01 4b 46 7f ff 0c 10 03 : crc=03 YES
71 01 4b 46 7f ff 0c 10 03 t=23062

Gdzie t to temperatura.

Domoticz potrafi odczytać te dane i przekonwertować na np. stopnie Celsjusza, wystarczy dodać czujnik w zakładce sprzęt o typie 1-Wire (System). Po chwili powinien pojawić się automatycznie w zakładce urządzenia.

W przypadku problemów z zainicjalizowaniem czujnika należy usunąć zawartość wpisu:

 
OWFS Path:

Pozostawiając wpis pustym.

2) DHT11

Aktualnie w OpenWrt 18.06.1 (BRCM2708 – Raspberry Pi) występuje problem z odczytem danych z tego czujnika, prawdopodobnie jest to spowodowane straszą wersją kernela.

Instalacja wygląda standardowo:

opkg update
opkg install kmod-iio-dht11 kmod-iio-core kmod-regmap

UWAGA: Poniższy punkt dotyczy tylko i wyłącznie Raspberry Pi!

vi /boot/config.txt

Na samym końcu dopisujemy:

 dtoverlay=dht11,gpiopin=GPIO 

Gdzie GPIO to numer portu wejścia-wyjścia do którego podłączyliśmy czujnik np.dtoverlay=dht11,gpiopin=4

Wyłączamy urządzenie i podłączamy sensor:
Przed podłączeniem sensora należy pamiętać o dodaniu rezystora 4.7k między „nóżkę” danych oraz zasilania!

poweroff

Przykładowy odczyt:

cat /sys/bus/iio/devices/iio\:device0/in_temp_input
cat /sys/bus/iio/devices/iio\:device0/in_humidityrelative_input

Aktualnie występuje problem z odczytywaniem danych przez sterownik.

You May Also Like

Avatar photo

About the Author: Krystian Kozak

Pasjonat rozwiązać Open Source zorientowanych na systemy wbudowane.

Dodaj komentarz

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