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
    icon IPv4 Jeśli masz jakieś pytania odezwij się do mnie na forum Tomkii (opomiarowanie, meteo i inne tematy)
    Ostatnia modyfikacja: 2011-10-26