Pomiary temperatury z magistrali 1-wire za pomocą ASUS WL-500GPv1
Instrukcja uruchomienia pomiaru temperatury z czujników Dallas-Maxim
Na początek potrzebujemy skrzynkę z jak największą ilością pamięci RAM i
portem USB. Do tego celu dobrze nadaje się ASUS WL-500GPv1 i to jego będzie
dotyczył dalszy opis (tym niemniej można zastosować np. jakiegoś Linksys-a).
Potrzebne elementy:
router ASUS WL-500GPv1 (antenka po lewej stronie), koszt około
200-300PLN daje się upolować na Alledrogo. Można próbować z v2 ale OpenWRT
Kamikaze 8.09.2 z jądrem 2.6 nie widzi portu USB więc albo trzeba by
kroskompilować nowsze ze źródeł albo próbować uruchomić na jądrze 2.4
(działa USB - sprawdzałem).
UWAGA! GPv2 działa z wersją Backfire 10.03.1-rc4 (sprawdziłem).
przejściówka USB->1-wire - możliwe są dwie wersje: oparta na konwerterze
USB->RS232 oraz DS2480B (np.
MP00202) lub oparta na DS2490 - układ nie zalecany do nowych konstrukcji.
Koszt około 50PLN.
czujniki 1-wire np. do pomiaru temperatury DS18B20,
do pomiaru impulsów z liczników
DS2423
(niestety nie produkowane!!!) lub
BAE910 (nie testowałem).
Instalacja OpenWRT na ASUS
Ściągamy obraz OpenWRT dla naszego ASUS-a
http://downloads.openwrt.org/kamikaze/8.09.2/brcm47xx/openwrt-brcm47xx-squashfs.trx
lub wersję z jądrem 2.4 (dla v.2)
http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/openwrt-brcm-2.4-squashfs.trx
Dla wersji ASUS-a 500GPv2 ściągamy wersję Backfire - sprawdzona:
http://downloads.openwrt.org/backfire/10.03.1-rc4/brcm47xx/openwrt-brcm47xx-squashfs.trx
Na komputerze z Windows nadajemy IP: 192.168.1.2, uruchamiamy program
ASUS Utility Firmware Restoration, wybieramy
w nim ściągnięty plik z openwrt.
Włączamy naszego ASUS-a do prądu trzymając wciśnięty przycisk
restore aż zacznie mrugać dioda od zasilania - wtedy go puszczamy i klikamy
na programie "Prześlij". Po zakończeniu przesyłania czekamy aż na modemie
zapali się dioda od zasilania.
W tym momencie powinniśmy już widzieć nasz routerek z systemem OpenWRT -
łączymy się przeglądarką z adresem http://192.168.1.1
Do dalszych działań nasz ASUS musimy skonfigurować tak, aby miał dostęp do
internetu (Administration->Network->Interfaces->WAN).
Następnie wchodzimy w System->Software i klikamy "Update package lists".
Teraz są dwie możliwości postępowania:
Całość upychamy na istniejącej pamięci flash (zmieści się - sprawdzone)
Zwiększanie pamięci flash
Dokładamy pamięć pendrive
Tutaj będzie opis dokładania pamięci pendrive...
Konfiguracja OpenWRT do współpracy z czujnikami temperatury
Od tego miejsca postępowanie dla obu przypadków jest identyczne. Wybieramy z
System->Software następujące pakiety do zainstalowania:
kmod-usb-core
kmod-usb-ohci
kmod-usb-uhci
kmod-usb2
kmod-usb-serial
kmod-usb-serial-ftdi - lub inny (zależy na jakiej kości kupiliśmy
przejściówkę - dla MP00202 jest potrzebny ftdi)
owserver
owhttpd - nie jest konieczny ale się przydaje
owshell
lighttpd
bash
ntpdate
Tutaj będzie opis uruchamiania ntpdate (może odpala się
domyślnie - sprawdzić!)...
Instalacja skryptów
Teraz zaczynamy linux-owe czary-mary. Łączymy się z naszym routerkiem albo
za pomocą komendy "telnet 192.168.1.1" albo jakimś programem obsługującym
protokół ssh (teraterm, putty - trzeba wcześniej ustawić hasło - bez tego
ssh nie wpuści).
Wrzucamy skrypty które wykonają całą robotę - zastosujemy dość mało
intuicyjny edytor vi (bo zawsze jest). Dla tych co vi nie trawią proponuje
instalację np. joe (odszukać w System->Software, nazywa się "joe"). Później
wszędzie gdzie jest napisane "vi" wpisujemy "joe".
Tak więc wykonujemy polecenie:
vi /usr/bin/rrd.sh
wciskamy kolejno "esc" A (dla joe nic nie wduszamy) i poprzez ctl+c ctl+v
wklejamy tekstową zawartość rrd.sh
Następnie go zapisujemy "esc" "w" "q" (w joe ctl+x)
vi /usr/bin/rrd_graph.sh
Opis jak wyżej, plik rrd_graph.sh
To jest plik rysujący wykresy. Nazwy tutaj użyte są odpowiednie dla
moich danych (zobacz plik ds_table.txt). Trzeba go sobie pozmieniać!!!
Teraz plik do generowania backupów
vi /usr/bin/rrd_backup.sh
Opis jak wyżej, plik rrd_backup.sh
No i plik z danymi czujników:
vi /etc/ds_table.txt
Opis jak wyżej, plik ds_table.txt
Należy wstawić własne numery seryjne czujników i dodać własne opisy (nie
stosować spacji i polskich znaków!).
Ustawiamy startowanie programów owfs:
vi /etc/init.d/owfs
Opis jak wyżej, plik owfs
Nadajemy prawa wykonywania do plików:
chmod 755 /etc/init.d/owfs
i ustawiamy aby sam startował po restarcie naszej skrzynki
cd /etc/rc.d
ln -s ../init.d/owfs S99owfs
Teraz możemy przeładować routerek komendą
reboot
Po restarcie i ponownym połączeniu się (telent lub ssh) powinniśmy już
zobaczyć nasze czujniki
owdir
Przykładowy wynik komendy:
root@Zolza:~# owdir
/10.48557B010800
/28.C07D58020000
/28.B24958020000
/28.D3E9FA010000
/28.88D4FA010000
/28.CA5758020000
/28.6AD0FA010000
/28.C1D1B0010000
/28.959358020000
/28.DF8E58020000
/01.BA82FD0E0000
/1D.7E9605000000
/bus.1
/bus.0
/settings
/system
/statistics
/structure
/simultaneous
/alarm
Możemy również już odczytać temperaturę np.
owread 28.D3E9FA010000/temperature
Nadajemy prawa wykonywania do plików dla skryptów:
chmod 755 /usr/bin/rrd*
tworzymy drzewko www:
mkdir /home/www
ln -s /tmp/rrd/temp /home/www/temp
ln -s /tmp/rrd/prad /home/www/prad
tworzymy plik cron.txt:
vi cron.txt
Opis jak wyżej, plik cron.txt
uruchamiamy go:
crontab cron.txt
I od tej chwili co 10 minut powinien być wywoływany skrypt rrd.sh. Poznamy
to po tym, że utworzy się katalog /tmp/rrd i zaczną się w nim pojawiać pliki
z rozszerzeniem rrd
ls -la /tmp
ls -la /tmp/rrd
Tutaj będzie opis uruchamiania serwera WWW (lighttpd)...
Opisu jak widać brak, więc prezentuje sposób na zmuszenie już działającego
demona www do serwowania naszych stron.
OpenWRT domyślnie instaluje serwis www do zarządzania pudełkiem. Strony
te są umieszczone w katalogu /www. Aby zobaczyć nasze wyniki trzeba
zrobić do nich link.
cd /www
ln -s /home/www pomiary
W efekcie strony html umieszczone w katalogu /home/www będą się nam
wyświetlać po wywołaniu http://adres.ip.ASUSa/pomiary/
grafiki (pliki .png) będziemy widzieć jako
http://adres.ip.ASUSa/pomiary/temp/ oraz /pomiary/prad/
Taka a nie inna struktura plików jest konieczna ponieważ cała zawartość
katalogu /tmp wraz z podkatalogami ginie po restarcie naszego routerka.
Dodatkowo w celu zapewnienia ciągłości zasilania
routerek ASUS został podłączony do
domowej instalacji 12V.
Co można zmierzyć czujnikami na magistrali 1-wire
Zbiór różnych przydatnych informacji
technicznych - kabelkologie
Jeśli masz jakieś pytania odezwij się do mnie na
forum Tomkii
(opomiarowanie, meteo i inne tematy)
Ostatnia modyfikacja: 2011-10-26