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
digitemp_DS2490 -a -i
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
Auomatyzacja sprowadza się do dodania odpowiedniego polecenia do crona
echo "0,10,20,30,40,50 * * * * /usr/sbin/gettemp.sh" >> /etc/crontabs/root