Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Rozbudowa routera o interfejs 1Wire i RS232

p4trykx 18 Dec 2010 03:41 15236 26
Altium Designer Computer Controls
  • Rozbudowa routera o interfejs 1Wire i RS232

    Przedstawiam modyfikację routera WRT54g v2.2. Urządzenie zostało rozbudowane o interfejs 1wire oraz port szeregowy w standardzie RS232 ale są też wyprowadzenia zwykłego UARTa.
    Planuję zbudować stację pogodową z czujnikami 1Wire, router będzie zbierał dane z czujników i prezentował je na stronie www.
    Płytka rozmiarami pasuje do wersji 2.2 routera WRT54g ale może być użyta praktycznie w każdym routerze z 2 portami szeregowymi. Trzeba tylko jakoś ją zamocować i może przylutować inne goldpiny zamiast kątowych.
    W złączu minidin 8 są wyprowadzone sygnały RS232(dodatnie i ujemne napięcia) oraz bezpośrednio UART. Można np. podłączyć sobie telefon komórkowy bez przejściówek.
    W minidin jest też zasilanie 5V lub 12V w zależności od położenia przełącznika.
    Układ do obsługi 1wire to DS2480B jest zasilany napięciem 5V ze stabilizatora którego można podłączyć pod zasilacz routera. Pobór prądu układu jest rzędu 50mA więc powinno wystarczyć. Jako opcję można dolutować drugi stabilizator do zasilania 12V jeśli wykorzystuje się pamięci EPROM na 1Wire. Trzeba wtedy odpowiednio ustawić zworki.

    Mi na razie 12V nie jest potrzebne więc nie montowałem drugiego stabilizatora ani nie testowałem.

    Zdecydowałem się nie używać konwertera napięć pomiędzy routerem a DS2480 ponieważ nie mogłem nigdzie go kupić. Przy testach na pająka wszystko działało bez mimo, że router ma napięcia 3.3V a DS2480 ma 5V. Znalazłem też kilka schematów z bezpośrednim podłączeniem więc postanowiłem nadmiernie nie komplikować. Jeśli ktoś by chciał to jest ciekawy układ ADUM1401 chyba się do tego nada. Może ktoś bardziej obeznany w elektronice wypowie się czy na dłuższą metę nie zaszkodzi to routerowi.

    Dodatkowo dodałem diodę chroniącą przed ESD.

    Do konwersji UART do RS232 użyłem dobrze znanego wszystkim MAX232.

    Wyprowadzenia masy ,1wire oraz 5V w złączu RJ11 są standardowe. Jedynie co dodałem to 12V które chyba nie występuje tylko w złączach RJ45 tego standardu.

    Jeśli chodzi o warstwę software-ową to wszystko działa na Openwrt 10.3 z jądrem 2.4 z zainstalowanym pakietem owfs. Owfs to bardzo fajny projekt, mamy dzięki niemu dostęp do czujników tak poprzez system plików.
    Tak montujemy czujniki jeśli mamy jądro 2.6 to możemy pominąć mknod

    Code:
    mknod /dev/fuse c 10 229
    
    owfs -d /dev/tts/1 /mnt/owfs/


    Na koniec koszty
    DS2480B można kupić od 10 zł w jakimś serwisie aukcyjnym albo zamówić jako próbki od Maxima albo za 30zł w TME
    Tak samo dioda ds9503 kosztuje coś koło 4 zł
    Do tego np. termometr kosztuje ok 6 zł

    W załączniku projekt w Eagle

    Trochę linków o 1wire
    http://owfs.org/
    http://www.elportal.pl/index.php?module=ContentExpress&func=display&ceid=118
    http://n952.dyndns.ws/1wire/
    http://hackaday.com/tag/1-wire/
    http://www.alres.pl/glowna/projekty/ghost.html
    http://openrouter.info/index.php?option=com_c...acja-meteo-na-owfs&catid=47:artykuy&Itemid=61

    Rozbudowa routera o interfejs 1Wire i RS232 Rozbudowa routera o interfejs 1Wire i RS232 Rozbudowa routera o interfejs 1Wire i RS232

    EDIT
    Jednak po założeniu obudowy wyszło mi, że porty są trochę zapadnięte. Więc lepiej przesunąć je trochę do przodu poza krawędź płytki o ok. 2 mm. Mniej więcej o grubość plastiku obudowy.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    p4trykx
    Level 16  
    Offline 
    Has specialization in: programowanie asp.net
    p4trykx wrote 260 posts with rating 153, helped 7 times. Live in city Wrocław. Been with us since 2008 year.
  • Altium Designer Computer Controls
  • #2
    Bojleros
    Level 16  
    Witam.

    Taki mod można wykonać w prostszy sposób. Zamiast DS2480 można zrobić układ na dwóch tranzystorach i 3 rezystorach. Ponadto DS zasiliłeś z 5V a elektronika routera pracuje na 3V3. Jeżeli by zwrócić uwagę na pin TXD układu DS to będzie on podawał sygnał 0 - 5V na wejście procesora (które jest 3V3). Czy jest to do końca dopuszczalne to nie wiem ale bezpieczniej jest podawać 3V3.

    Rozbudowa routera o interfejs 1Wire i RS232

    Ten układ to przykład przejściówki z rs232 na 1wire. Jeżeli pominiesz max232 to śmiało możesz go puścić z 3V3 i takim samym napięciem zasilać DS18S20. U mnie to działa nawet w parsite. Odczyt robię poprzez digitemp.
  • Altium Designer Computer Controls
  • #3
    p4trykx
    Level 16  
    Rzeczywiście twoje rozwiązanie jest prostsze. Masz to zamontowane w routerze i działa tylko przy zasilaniu 3v3?
    Rozwiązanie z DS2480 powinno być teoretycznie lepsze jeśli ma się dużo czujników i długie przewody.
    Wcześniej też zbudowałem jeszcze prostszy układ do podłączenia przez RS232
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=8501062
    http://mod-planet.com/index.php?module=subjects&func=viewpage&pageid=293

    Co do tych napięć to tak jak napisałem nie wiem czy tak można ale działa.
  • #4
    Popak
    Moderator on vacation ...
    Witam
    Ja kiedyś przerabiałem ruter Linksys WRT54G aby miał RS232 i kartę pamięci. Korzystałem z materiałów z tych stron:
    http://www.dd-wrt.com/wiki/index.php/WRT54GL_MAX232_Serial
    http://www.dd-wrt.com/wiki/index.php/Linksys_WRT54G-TM_SD/MMC_mod.
    I wszystko śmigało :)
    >> p4trykx << Czy grzeje ci się trochę główny procesor w ruterze?
    Poskracaj przewody i powiąż je aby jakoś to wyglądało.
  • #5
    DJ MHz
    Level 24  
    Ja zamontowałem radiatorki na procesorze i układach, które się bardziej grzały w tym routerze. Mam przy okazji sd mod wraz z pomidorkiem do obsługi.
  • #6
    maciej_333
    Level 37  
    Bojleros wrote:
    Witam.

    Taki mod można wykonać w prostszy sposób. Zamiast DS2480 można zrobić układ na dwóch tranzystorach i 3 rezystorach. Ponadto DS zasiliłeś z 5V a elektronika routera pracuje na 3V3. Jeżeli by zwrócić uwagę na pin TXD układu DS to będzie on podawał sygnał 0 - 5V na wejście procesora (które jest 3V3). Czy jest to do końca dopuszczalne to nie wiem ale bezpieczniej jest podawać 3V3.

    Ten układ to przykład przejściówki z rs232 na 1wire. Jeżeli pominiesz max232 to śmiało możesz go puścić z 3V3 i takim samym napięciem zasilać DS18S20. U mnie to działa nawet w parsite. Odczyt robię poprzez digitemp.

    Taki konwerter RS232/1-WIRE zadziała nawet bez konwertera poziomów napięć MAX232. Wystarczy dodać diodę pomiędzy B, a E T1. Katoda diody do B, anoda do masy. Dioda zabezpiecza złącze BE T1 przed przebiciem w momencie gdy RS232 wystawi wartość ujemną dla 0 logicznego. Coś takiego wg mojego pomysłu niedawno jeden z użytkowników elektrody wypróbował i działało bardzo dobrze. Poziomy TTL na linii RxD port RS232 rozpoznaje poprawnie. W takiej konfiguracji jednak Vcc musi wynieść +5V.
  • #7
    p4trykx
    Level 16  
    DJpopak;) wrote:
    Witam
    >> p4trykx << Czy grzeje ci się trochę główny procesor w ruterze?
    Poskracaj przewody i powiąż je aby jakoś to wyglądało.

    Grzeje się procesor oraz karta wifi (to pod blaszką) ale chyba w granicach normy. Moja płytka jest specjalnie takiej wielkości, żeby nie zasłaniać procesora i wifi. Pod nią nie ma nic specjalnie grzejącego się.
    W WRT54g można trochę podkręcić procka i może wtedy radiator się przydaje.
  • #8
    Padre76
    Level 10  
    Ja mam u siebie przerobione chłodzenie w Planet WAP-4035 bo grzał sie ponad 50 stopni C latem aż do zawieszenia. Założyłem do niego duży wolnoobrotowy wentylator na 12V i temperatura spada do 15 max 20 st.C. latem. Polecam takie chłodzenie jest ciche i jak wiadomo czym chłodniejszy układ tym nam sprzęcik dłużej pochodzi.
  • #9
    Bojleros
    Level 16  
    Zacząłem się zastanawiać nad dodaniem jakiegoś transila bo faktycznie nie mam żadnego zabezpieczenia linii 1wire. Co do działania to mój konwerter potrafił pociągnąć dość długą i rozgałęzioną linię w domku jednorodzinnym. Wszystko tworzyło gwiazdę z około 20 metrowymi ramionami w parsite po kablu telefonicznym. Działało około pół roku aż do awarii serwera (przegrzanie).


    Z modów routera to oprócz 1wire na ttyS1 mam konsolę po rs232 na ttyS0 i kartę SD. Będę próbował wykonać mod na 64MB ram o ile dorwę odpowiednią kość pamięci.

    I tu mam pytanie: Czy ktoś z Was nie ma kości ram użytej przez tego klienta ?
    Wygląda jak moduł Kingstona. Podobny jest do KVR400X64SC3A/512.

    Nie mam dużego doświadczenia w dobieraniu ram a nie chce eksperymentować na pcb bo je pokaleczę.
  • #10
    siejacy_zamet
    Level 12  
    Rozumiem, że kolega Padre76 podał temperatury względem temperatury powietrza, bo latem to jakoś mi się nie wydaje, żeby występowały temperatury rzędu 15-20 st.C.
  • #12
    p4trykx
    Level 16  
    Tak drukarkę da się podłączyć. Co prawda to jest usb 1.1 ale chyba drukarki więcej nie potrzebują. Niestety mój model V2.2 nie ma nigdzie wyprowadzeń trzeba oszlifować obudowę chipa a taki odważny nie jestem. Inne wersje WRT54g mają łatwiejszy dostęp.
  • #13
    DJ MHz
    Level 24  
    Ok. W szpargałach znalazłem potrzebne części do zamontowania portów usb.

    PS
    Co myślicie o połączeniu do RS232 aparatu z Sony Ericssona T300? Posiada on rs232 do łączenia się z telefonem. Pozostaje tylko odpowiednia konfiguracja programowa.
  • #14
    p4trykx
    Level 16  
    Telefon najlepiej podłączyć bezpośrednio bez żadnych przejściówek. Ja mam S35 i Sagema My X5-2. Oba działają po podłączeniu bezpośrednim.
    Jeśli chodzi o oprogramowanie to w Openwrt jest gnokii można wysyłać sms-y itp.
    Tu jest dobry tutorial http://eko.one.pl/?p=openwrt-gnokii
    Jedynie przy instalacji gnokii trzeba jeszcze doinstalować kilka pakietów, które nie instalują się automatycznie.
    bluez-libs
    libpcsclite
  • #15
    viki
    Level 16  
    Napisz jak kompilowales linuxa. (Open WRT). Na ubuntu? Jakie biblioteki dodales itp. Ja mecze sie z kompilacja na windzie i mam juz dosc.
  • #16
    p4trykx
    Level 16  
    Tak, używam Ubuntu.
    Zrobiłem tak jak tu napisali http://www.openwrt.pl/doku.php/kompilowanie:kompilacja_svn
    Są tam podane pakiety, które są potrzebne do kompilacji.
    Najlepiej ściągnąć werjse backfire z svn-a
    Code:
    svn co svn://svn.openwrt.org/openwrt/branches/backfire


    Przy pierwszym razie make może czasami się wywalić bo są jeszcze ściągane dodatkowe rzeczy z internetu i czasami na tym się zacina. Więc po prostu trzeba jeszcze raz dać polecenie make
  • #17
    DJ MHz
    Level 24  
    No, a ja już zakończyłem konfigurowanie. Mało się znam na tym sofcie, błędy mi wyskakiwały przy próbie wgrania nowego tomato :D z obsługą ftp/drukarki/usb, tylko szkoda, że nie ma w nim sd obsługi :/. Długo zajęło mi ustawianie w win7 drukarki, ale wkońcu działa. Tak samo pamięci masowe, widoczne pod ftp://adres:21 :). Nokia równierz drukuje :) z czego się cieszę.


    PS
    Wie ktoś może jak dodać obsługe kart SD/mmc do tej dystrybucji Tomato usb? Na karcie bym instalował dodatkowe moduły i paczki, a tak jedyne wyjście to pendrive sformatowany pod linuxem.

    Rozbudowa routera o interfejs 1Wire i RS232 Rozbudowa routera o interfejs 1Wire i RS232 Rozbudowa routera o interfejs 1Wire i RS232
  • #18
    p4trykx
    Level 16  
    Nie jestem pewien ale dd-wrt ma chyba opcję z pakietami na sdmm prawie w standardzie.
    Natomiast Openwrt można skompilować z modułem jądra extroot wtedy mamy fajną funkcjonalność. Na karcie jest jakby nakładka całego systemu i możemy na niej instalować pakiety zmieniać konfigurację a jak ją wyciągniemy to startuje z wewnętrznego flasha.
  • #19
    Bojleros
    Level 16  
    Kiedyś sam kompilowałem openwrt i ddwrt. Obecnie korzystam z gotowych wsadów bo szkoda czasu na dopracowywanie konfiguracji. Podobną funkcjonalność można osiągnąć przerabiając gotowe obrazy.

    Jak się używa opkg to można podać -d "cel" (gdzieś się go konfiguruje w pliku) no i instalowane pakiety lądują przykładowo na karcie sd. Trzeba tylko instalować z głową, mam tu na myśli manualne dodawanie linków do brakujących plików bo nie wszystkie pakiety są przystosowane do instalacji w lokalizacji innej niż /. Oprócz tego modyfikacja $PATH i odpowiednie wpisy w /etc/ld.so.conf

    Skrypty startowe jakoś przerabiałem tak żeby robiło fsck przed montowaniem.

    Wiele innych zmian .....



    DJ MHz Na pierwszy rzut oka masz takie samo pcb jak ja. Zmieniałeś te rezystory 4k7 na liniach usb na rezystory 15k (według specyfikacji usb1.1) ??

    Ja w logach mam po podłączeniu kilka errorów (przy rezystorach 4k7)

    Code:

    hub.c: new USB device 00:03.0-1, assigned address 18
    usb.c: USB device not accepting new address=18 (error=-145)
    hub.c: new USB device 00:03.0-1, assigned address 19
    usb.c: USB device not accepting new address=19 (error=-145)

    [/code]
  • #20
    DJ MHz
    Level 24  
    Rezystory zostawiałem takie jakie były. Zbytnio się nie znam na tomato tzn na logach, to co tyczy się usb :
    Code:
    Jan  1 01:00:04 router user.info kernel: Initializing USB Mass Storage driver...
    
    Jan  1 01:00:04 router user.info kernel: usb.c: registered new driver usb-storage
    Jan  1 01:00:04 router user.info kernel: USB Mass Storage support registered.
    Jan  1 01:00:04 router user.info kernel: Journalled Block Device driver loaded
    Jan  1 01:00:05 router user.err syslog: init_module: ehci-hcd: No such device
    Jan  1 01:00:05 router user.err syslog: can't load module ehci-hcd (/lib/modules/2.4.37.10/kernel/drivers/usb/ehci-hcd.o): Operation not permitted
    Jan  1 01:00:05 router user.info kernel: usb-uhci.c: $Revision: 1.275 $ time 18:37:26 Nov 30 2010
    Jan  1 01:00:05 router user.info kernel: usb-uhci.c: High bandwidth mode enabled
    Jan  1 01:00:05 router user.info kernel: usb-uhci.c: v1.275:USB Universal Host Controller Interface driver
    Jan  1 01:00:05 router user.err syslog: init_module: usb-uhci: No such device
    Jan  1 01:00:05 router user.err syslog: can't load module usb-uhci (/lib/modules/2.4.37.10/kernel/drivers/usb/usb-uhci.o): Operation not permitted
    Jan  1 01:00:05 router user.debug kernel: PCI: Setting latency timer of device 00:03.0 to 64
    Jan  1 01:00:05 router user.info kernel: usb-ohci.c: USB OHCI at membase 0xb8003000, IRQ 6
    Jan  1 01:00:05 router user.info kernel: usb-ohci.c: usb-00:03.0, PCI device 14e4:4716
    Jan  1 01:00:05 router user.info kernel: usb.c: new USB bus registered, assigned bus number 1
    Jan  1 01:00:05 router user.info kernel: hub.c: USB hub found
    Jan  1 01:00:05 router user.info kernel: hub.c: 2 ports detected
    Jan  1 01:00:05 router user.info kernel: usb.c: registered new driver usblp
    Jan  1 01:00:05 router user.info kernel: printer.c: v0.13: USB Printer Device Class driver
    Jan  1 01:00:05 router lpr.err p9100d[56]: socket: Address family not supported by protocol
    Jan  1 01:00:05 router user.debug kernel: vlan0: dev_set_allmulti(master, 1)
    Jan  1 01:00:06 router user.info kernel: hub.c: new USB device 00:03.0-1, assigned address 2
    Jan  1 01:00:06 router user.debug kernel: vlan0: dev_set_promiscuity(master, 1)
    Jan  1 01:00:06 router user.info kernel: device eth0 entered promiscuous mode
    Jan  1 01:00:06 router user.info kernel: device vlan0 entered promiscuous mode
    Jan  1 01:00:06 router user.info kernel: printer.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 1 proto 2 vid 0x03F0 pid 0x1204
    Jan  1 01:00:06 router user.debug hotplug[87]: Attached USB device /proc/bus/usb/001/002 [INTERFACE=7/1/2 PRODUCT=3f0/1204/100]


    Po świeżym uruchomieniu.
  • #21
    Bojleros
    Level 16  
    To co piszesz świadczy o tym że jądro poprawnie nadaje adres na magistrali usb:

    Code:

    Jan  1 01:00:05 router user.info kernel: usb.c: new USB bus registered, assigned bus number 1


    U mnie tego nie ma i teraz muszę dojść dlaczego.

    Czy podpinałeś pendrive ? Jaki efekt ? Ew. Czy mógłbyś podpiąć i pokazać czy działa ?

    Jaki masz tam kernel na tomato ? (uname -a)

    Z góry dzięki !
  • #22
    DJ MHz
    Level 24  
    Kernel 2.4.31.10, dystrybucja tomato 1.28 pod kernele 2.4, chciałem 2.6 ale na moim taki nie idzie. Router wrt54gl wersja 1.1.

    Pendrive podpinałem wraz z mp3 i innymi dyskami (teraz mam podpięty telefon z openwrt zainstalowanym, kombinuje ze sterownikami kamery, ale kiepsko mi to idzie, nie znam się na tym w ogóle).
    Bez problemów montuje partycje ext2/ext3, ntfs, fat/fat32. Mogę bez problemów uruchomic serwer samby, wtedy widoczne są dyski zamontowane, w otoczeniu sieciowym :), transfer nawet nawet, jak na usb 1.1

    Logi po podłączeniu pendriva kingston 4 GB.

    Code:
    Dec 24 23:17:03 wireless-linksys user.info kernel: hub.c: new USB device 00:03.0-1, assigned address 10
    
    Dec 24 23:17:04 wireless-linksys user.info kernel: scsi1 : SCSI emulation for USB Mass Storage devices
    Dec 24 23:17:04 wireless-linksys user.warn kernel:   Vendor: Kingston  Model: DataTraveler 2.0  Rev: PMAP
    Dec 24 23:17:04 wireless-linksys user.warn kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
    Dec 24 23:17:04 wireless-linksys user.warn kernel: Attached scsi removable disk sda at scsi1, channel 0, id 0, lun 0
    Dec 24 23:17:04 wireless-linksys user.warn kernel: sda: Waiting for disc 0 to settle.
    Dec 24 23:17:05 wireless-linksys user.warn kernel: SCSI device sda: 7936000 512-byte hdwr sectors (4063 MB)
    Dec 24 23:17:05 wireless-linksys user.warn kernel: sda: Write Protect is off
    Dec 24 23:17:05 wireless-linksys user.info kernel:  /dev/scsi/host1/bus0/target0/lun0: p1
    Dec 24 23:17:05 wireless-linksys user.debug kernel: WARNING: USB Mass Storage data integrity not assured, unmount it before unplugging
    Dec 24 23:17:05 wireless-linksys user.debug kernel: USB Mass Storage device found at 10. Host: 1
    Dec 24 23:17:05 wireless-linksys user.debug hotplug[2115]: Attached USB device /proc/bus/usb/001/010 [INTERFACE=8/6/80 PRODUCT=930/6545/100]
    Dec 24 23:17:06 wireless-linksys user.warn kernel: MSDOS FS: IO charset utf8
    Dec 24 23:17:06 wireless-linksys user.warn kernel: MSDOS FS: Using codepage 852
    Dec 24 23:17:06 wireless-linksys user.info hotplug[2115]: USB vfat fs at /dev/discs/disc0/part1 mounted on /tmp/mnt/disc0_1


    PS
    Znających się na openwrt i "bardziej zaawansowanych" na tomato prosił bym o kontakt w celu odpowiedzi na kilka pytań (gg 3033841)
  • #23
    Bojleros
    Level 16  
    Ha ! Szczerze zazdroszczę działającego USB. Jak wrócę ze świąt to muszę sprawdzić kilka pomysłów. BTW. Rozumiem że obydwa porty działają poprawnie ?

    Jeżeli się rozchodzi o 2.6 na wrt to według mnie są dwa podstawowe problemy.

    1. 2.6 Jest większy i potrzebuje więcej ramu (16MB na 2.4 to i tak bieda). Udawało mi się uruchomić go na wrt lecz distro musiało być bardzo okrojone.
    2. Sterowniki do wlan dla wrt54gl-eu są zamknięte i dostępne tylko pod 2.4 (to się mogło zmienić od czasu jak kombinowałem z kompilacją)
  • #24
    p4trykx
    Level 16  
    Sterowniki są już otwarte i działają w wersji 10.3.1 RC4 więc można spokojnie 2.6 instalować jednak moduł karty SD nie działa prawidłowo.
  • #25
    Bojleros
    Level 16  
    @p4trykx, piszesz o wersji tomato ? Czy to już jest w mainline 2.6 ?
  • #26
    p4trykx
    Level 16  
    Miałem na myśli OpenWrt nie wiem dokładnie na czym jest oparte Tomato.
  • #27
    Bojleros
    Level 16  
    Szkoda tylko że na tej nowej wersji też mi nie działa usb ... nawet po przerobieniu zasilania i wymianie kabelka ....