Pomiar temperatury przy użyciu OpenWrt
czyli na openwrt też się da
Ostatnia zmiana: 2009-03-01 16:30

1. Instalacja
2. Uruchomienie
3. Pomiar


Dysponując interfejsem RS232C (pełnym, z odpowiednimi napięciami), można posłużyć się opisem interfejsu pasywnego. Ponieważ z pewnych powodów nie można było zrobić tego na WL-500gP, został zakupiony interfejs aktywny na DS2490 (koszt ok 50pln), na USB. Wykorzystano Asusa WL-500gP z OpenWrt Kamikaze 8.09
Instalacja

Niezbędne elementy to:
- interfejs ds2490


(kliknij, aby powiększyć)

Jest to de facto konwerter USB na magistralę 1Wire. Można więc podłączyć całą masę chipów wyposażonych w magistralę 1-Wire, nie tylko czujnik temperatury.

- dowolna liczba czujników DS18S20 lub DS18B20

Montaż całości jest prosty, interfejs należy podłączyć do portu USB asusa, i podłączyć odpowiednio czujnik DS18S20 (masa do masy, 1wire do 1 wire). Przewód może być do 30m, jednak z różnych powodów nie należy przesadzać z długością. Sposób budowy czujnika opisany jest przy okazji interfejsu pasywnego - nożkę DQ podłączyć do 1wire, natomiast dwie skrajne złączyć ze sobą i połączyć do masy. Liczba czujników może być dowolna, podłączamy je równolegle z istniejącymi.

Uruchomienie
Do pomiaru zostanie wykorzystany program digitemp. Instalujemy go w standardowy sposób:

    opkg install digitemp

Zakładając że mamy podłączony czujnik prawidłowo, sprawdzamy, czy wszystko działa i generujemy plik konfigurcyjny:

    digitemp_DS2490 -a -i

Wynikiem powinna być informacja, że wykryto interfejs DS2490 na magistrali USB, wyszukano i znaleziono czujniki. Oraz oczywiście odczyt temperatury z czujników. Jeżeli nie działa, należy w pierwszej kolejności sprawdzić, czy właściwie został podłączony czujnik pod interfejs.
Pomiar
Pomiar i archiwizacja pomiarów sprowadza się do napisania odpowiedniego skryptu (do umieszczenia w /usr/sbin/gettemp.sh):

    echo `digitemp_DS2490 -t 0 -q -o "%Y-%m-%d %H:%M:%S %.2C" | grep -v Found` >> temperature.txt

Dane są odczytywane i dodawane do pliku temperature.txt w formacje "YYYY-MM-DD HH:MM:SS 00.00" w kolejnych liniach. Oczywiście, zapis pomiaru można zrealizować inaczej, wkładać do bazy danych lub wyświetlać bezpośrednio na WWW.

Auomatyzacja sprowadza się do dodania odpowiedniego polecenia do crona

    echo "0,10,20,30,40,50 * * * * /usr/sbin/gettemp.sh" >> /etc/crontabs/root

Mając zebraną dostateczną ilość danych można sporządzić wykres korzystając z dostępnych narzędzi (rrdtool, php czy gnuplot). W tym przypadku został wykorzystany gnuplot.