Playground.arduino.cc will be read-only starting December 31st, 2018. For more info please look at this Forum Post

E' possibile connettere direttamente Arduino, via USB, agli apparati che possono far girare il sistema operativo GNU/Linux OpenWRT (es. Alice Gate 2 Plus Wifi e molti altri). Tra le cose più interessanti ho scoperto che è possibile scaricare su Arduino gli sketch .hex direttamente dall'apparato OpenWRT, senza dover per forza utilizzare il PC. Tale applicazione è utile (come nel mio caso della centrale di irrigazione), per gestire il funzionamento di Arduino su dispositivi telecontrollati (via Internet o Wifi).

Schema di connessione:

(wifi-LAN) <-> Apparato OpenWRT <-> (USB) <-> Arduino <-> Elettrovalvole e sensori di pressione

I pacchetti necessari per la connessione di Arduino ad OpenWRT sono:

kmod-usb-core
kmod-usb-ohci
kmod-usb-serial
kmod-usb-serial-ftdi
kmod-usb2

Per procedere all'upgrade dello sketch è necessario installare il pacchetto avrdude (disponibile precompilato nel repository OpenWRT):

opkg update
opkg install avrdude

A questo punto, una volta caricato sul dispositvo OpenWRT il codice macchina .hex (generato dall'IDE Arduino o compilato a mano con avr-gcc), bisogna lanciare il comando:

avrdude -p m328p -P /dev/ttyUSB0 -c stk500v1 -b 57600 -C /etc/avrdude.conf -U flash:w:/root/Blink.cpp.hex

Ovviamente al posto di "/dev/ttyUSB0" va inserito il device corretto, così come "m328p" riguarda l'ATmega328P. "/root/Blick.cpp.hex" è il percorso del file .hex da caricare. Il reset di Ardino avviene (almeno nel mio caso) automaticamente; se così non fosse basta inviare un impulso via seriale sul DTR prima di lanciare avrdude.

root@irrigator:/etc# avrdude -p m328p -P /dev/ttyUSB0 -c stk500v1 -b 57600 -C /etc/avrdude.conf -U flash:w:/root/Blink.cpp.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/root/Blink.cpp.hex"
avrdude: input file /root/Blink.cpp.hex auto detected as Intel Hex
avrdude: writing flash (896 bytes):

Writing | ################################################## | 100% 0.28s

avrdude: 896 bytes of flash written
avrdude: verifying flash memory against /root/Blink.cpp.hex:
avrdude: load data flash data from input file /root/Blink.cpp.hex:
avrdude: input file /root/Blink.cpp.hex auto detected as Intel Hex
avrdude: input file /root/Blink.cpp.hex contains 896 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.22s

avrdude: verifying ...
avrdude: 896 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

root@irrigator:/etc#

Note:

Il test è stato eseguito con esito positivo su un Alice Gate 2 Plus Wifi, OpenWRT Backfire 10.03.1rc-1, Arduino Duemilanove.

http://en.wikipedia.org/wiki/OpenWrt

Per info sull'argomento: Marco D'Ambrosio info@marcodambrosio.it