Arduino to platforma oparta o mikrokontroler RISC firmy ATMEL. W tym krótkim artykule przedstawione zostanie w jaki sposób można się komunikować z Arduino po sieci kablowej lub WiFi.
opkg update opkg install ser2net kmod-usb-serial-ftdi
Ten krok jest po części opcjonalny. Po prostu potrzebujemy zaprogramowanego Arduino programem, który korzysta z konsoli szeregowej. Może to być proste „Hello Word” lub coś bardziej skompilowanego. Przeze mnie zostanie wykorzystany Bitlash.
Bitlash jest linią poleceń dla Arduino. Można przez to wykonywać proste makra. Zachęcam do zapoznawania się z dokumentacją projektu.
Potrzebujemy pobrać w/w program i zainstalować. Instalacja jest prosta, rozpakowane archiwum wrzucamy do katalogu libraries IDE Arduino. Kontroler programujemy bitlashdemo. Podłączamy kablem USB do routera.
Od strony OpenWrt sprawdzamy czy wykryte zostało połączenie z Arduino:
ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected usb 1-1.2: Detected FT232RL usb 1-1.2: Number of endpoints 2 usb 1-1.2: Endpoint 1 MaxPacketSize 16384 usb 1-1.2: Endpoint 2 MaxPacketSize 16384 usb 1-1.2: Setting MaxPacketSize 64 usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB1
Jest w porządku.
Uruchamiamy ser2net:
ser2net -C "3001:raw:600:/dev/ttyUSB1:57600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
Wytłumaczenie:
Po uruchomieniu komendy, logujemy się z maszyny podłączonej do routera:
telnet 192.168.1.1 3001
W przypadku Bitlash zostaniemy przywitani
Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is '^]'. bitlash here! v1.1 (c) 2010 Bill Roy -type HELP- 1342 bytes free >
Można wykonać proste komendy:
> print 1+1 2
lub zapalić diodę pod pinem 13 (duemilanove)
> d13=1 d13=1
Można oczywiście otworzyć port 3001(lub inny), jednak jest to ryzykowne, gdyż logowanie nie wymaga żadnej autoryzacji.
uci add firewall rule uci set firewall.@rule[-1]._name=ser2net uci set firewall.@rule[-1].src=wan uci set firewall.@rule[-1].target=ACCEPT uci set firewall.@rule[-1].proto=tcp uci set firewall.@rule[-1].dest_port=3001 uci commit firewall /etc/init.d/firewall restart
