Installare commandline arduino su Sheevaplug (Ubuntu)

Visto che ci ho perso un pomeriggio sperando di fare cosa gradita vi spiego come ho fatto :-)

Per chi non lo sa ricordo che lo Sheevaplug è un "plug computer" con processore ARM da 1GHz che consuma al max 5W su cui girano le comuni distribuzioni Linux (io ho la Ubuntu 9.04), quindi l'ideale da accoppiare al mio Arduino Uno!

Per iniziare scaricatevi l'ultima versione source dell'arduino ide (al momento in cui scrivo la 0022) http://arduino.cc/en/Main/Software scompattatela da qualche parte ma non perdete tempo a compilarla perchè non fa i binari giusti per l'ARM !

installate invece i seguenti pacchetti da apt-get:

apt-get install binutils-avr avr-libc gcc-avr

ci sarebbe anche l'avrdude ma arduino necessita di una versione patchata quindi va scaricata tramite GIT e compilata

git clone git://github.com/arduino/avrdude.git

assicuratevi di avere l'ultima versione di libusb-dev, automake e autoconf:

apt-get install automake autoconf libusb-dev

editate il file "bootstrap" di avrdude e commentate le linee dove stranamente impone una particolare versione di automake/autoconf, se avete una versione superiore va benissimo... quindi compilate

./bootstrap ./configure make

vedrete che vi da un'errore relativa a una WINDOWS_DIRS (?!?) è un simpatico bug del source di avrdude :-)

editate configure.ac verso la riga 169 noterete su due righe la stringa @WINDOWS_DIRS@ eliminatela!

ora make funzionerà, se volete fate anche

make install

ma io ho semplicemente copiato l'eseguibile di avrdude in arduino-0022/hardware/tools/ (cioè dove mi aveva compilato la versione sbagliata quando avevo provato a compilare l'arduino ide)

come avrdude.conf ho usato quello fornito in arduino-0022/hardware/tools/avrdude.conf ma dovete editarlo e togliere tutti i "programmer" che hanno dentro type = par; altrimenti vi darà un errore

ora potete scaricare l'ottimo Makefile di Martin Oldfield http://mjo.tc/atelier/2009/02/arduino-cli.html installatelo seguendo le istruzioni, l'unico requisito per farlo girare è perl, intallatelo se non ce l'avete

apt-get install perl

inoltre servono anche le due librerie perl YAML e Device::SerialPort installatele usando dando 'yes' a tutto con: cpan install YAML install Device::SerialPort

infine è necessario una piccola modifica al file Arduino.mk perchè non gestisce correttamente il reset alla riga 423 circa commentate tutto il suo codice relativo al reset ed inserite la seguente linea

perl -e 'use Device::SerialPort; Device::SerialPort->new("$(ARD_PORT)")->pulse_dtr_on(500);'

e con questo è tutto! il resto dovrebbe essere semplice vi riporto il makefile che uso io per compilare wergioino.pde

ARDUINO_DIR = /home/wergio/arduino/arduino-0022 AVR_TOOLS_PATH = /usr/bin AVRDUDE = $(ARDUINO_DIR)/hardware/tools/avrdude AVRDUDE_CONF = $(ARDUINO_DIR)/hardware/tools/avrdude.conf

TARGET = wergioino BOARD_TAG = uno ARDUINO_PORT = /dev/ttyACM0

ARDUINO_LIBS = IRremote InternalTemp

include /home/wergio/arduino/Arduino.mk

per testare la comunicazione su seriale sto utilizzando screen, per caso conoscete qualcosa di meglio? che cioè non mi prenda un carattere alla volta ma mi permetta di inserire comandi come si fa dall'arduino ide

ciao

Intendi quegli scatolotti che si attaccano ad una presa della corrente? Carino... ma è un minicomputer a tutti gli effetti? Cioè, può eseguire anche programmi scritti dall'utente? Ha un disco (tipo SSD) per la memorizzazione dei dati (SO, programmi eccc)?

Tornando al tuo articolo, spieghi bene ma per chi non ha l'oggetto non si capisce poi che fine faccia il tuo sketch. Dove lo carichi? Sull'Arduino o sul microcomputer?

si, io ho questo http://www.globalscaletechnologies.com/t-sheevaplugdetails.aspx fu il primo plug-computer (lo presi dagli USA, ma ora è possibile prenderli a molto meno anche dall'UK), ma è un modello vecchio di anni ormai anche se il suo lavoro lo fa ancora benissimo! questo è il sito di riferimento per questo genere di dispositivi http://plugcomputer.org/

in estrema sintesi si tratta di computer a tutti gli effetti su cui gira una distribuzione linux, hanno un costo contenuto (anche meno di 100 euro) e sono molto piccoli come puoi vedere dalle foto, la loro caratteristica principale è che sono a basso consumo, il mio consuma 5W a pieno carico quindi sono ideali per applicazioni always-on, hanno una flash interna come disco (non va certo alla velocità di un ssd, ma il principio è lo stesso), almeno 1 porta USB e almeno una porta ethernet, hanno processori ARM (di tipo RISC) quindi l'unica scocciatura è che il software spesso deve essere appositamente compilato perchè le distribuzioni linux standard sono quasi tutte precompilate per x86 o x64. Di norma non hanno prese VGA o HDMI quindi vi si accede da terminale ssh come un qualsiasi server. Io personalmente lo uso come mini-server casalingo, per scaricare qualche torrent, come file sever (ci ho collegato un disco esterno usb), e come web server per alcune semplici paginette html.

La mia guida è relativa a come utilizzare lo sheevaplug come ambiente di sviluppo per arduino da linea di comando, l'idea è che avendo l'arduino sempre collegato via usb allo sheevaplug che è acceso 24h24 è estremamente comodo scrivere gli sketch direttamente sullo sheeva e poi caricarli immediatamente sull'arduino, volendo posso farlo anche quando non sono a casa da remoto, inoltre sarebbe l'ideale anche per qualche esperimento di domotica, del tipo che da internet tramite una pagina php posso interfacciarmi con l'arduino (ora sto facendo proprio qualche esperimento in questo senso)

in conclusione il plugcomputer sembra la soluzione ideale come complemento all'arduino perchè aggiunge delle funzionalità server e una maggiore potenza di calcolo, mantenendo allo stesso tempo un prezzo contenuto e bassi consumi

PS: ho letto che l' "arduino due" avrà anche lui un processore ARM, quindi sembra che si stiano muovendo anche loro nella direzione dei plugcomputer :-)

GPIO significa che, come l'arduino, può gestire dei pin direttamente sul sheevaplug?

Vediamo se ho capito. Ti colleghi via terminale ssh al plugcomputer, ti si apre un terminale a tutti gli effetti perché in quello scatolotto hai un microcomputer con kernel e ambiente di sviluppo. Scrivi il tuo sketch, poi lo uppi sull'Arduino sempre tramite microcomputer.

Se ho ben capito potresti ad esempio collegarti allo scatolotto dalla casa del mare per aggiornare lo sketch di un Arduino che gestisce qualcosa nel tuo impianto di casa, è così? Oppure più semplicemente fare delle modifiche col portatile dal piano inferiore mentre l'Arduino e lo scatolotto (scusa se lo chiamo così ma è.... uno scatolotto :sweat_smile: ) stanno ad esempio al piano di sopra?

scusate se mi intrometto nella discussione.

Se ho ben capito potresti ad esempio collegarti allo scatolotto dalla casa del mare per aggiornare lo sketch di un Arduino che gestisce qualcosa nel tuo impianto di casa, è così?

..certo, come lo puoi fare da qualsiasi pc linux (pure win, penso).. addirittura da un apparato con openwrt installato, come un router Linksys o un NSLU2: http://www.arduino.cc/playground/Italiano/Avrdude-openwrt

Superfigo! :stuck_out_tongue_closed_eyes:

Lo Sheevaplug è una figata, soprattutto per i bassi consumi e la dimensione, anche se il dev kit si poteva solo prendere in America (come wergio ha confermato).

[OT] Ci sono cmq delle varianti, come il Pogoplug, il GuruPlug, il DockStar, e altri che possono essere tulizzati nello stesso modo; qui un confronto tra le caratteristiche http://blogdoch.net/index.php?m=03&y=10&entry=entry100307-154800

Ora son intrippato con questi: http://www.raspberrypi.org/ che son sempre pc minimali, non rifiniti bene come gli *plug, ma che costano 25-35 USD...

Qui le caratteristiche: http://elinux.org/RaspberryPiBoard [/OT]

Confermo quanto detto da pitusso! E' uno scatolotto davvero utile! io ce l'ho da 2 anni 8) e grazie a lui ho risparmiato un bel po' di soldi (se ci pensate è una follia tenere acceso un pc 24h24 quando basta un plugcomputer)

Può fare tutto quello che farebbe un server linux (ovviamente è meno potente, ma per la maggior parte delle cose va benissimo)

A proposito del GPIO il processore ARM supporterebbe in teoria anche delle uscite tipo arduino ma purtroppo non sono esposte all'esterno! E' stata una scelta del produttore che li ha impiegati per altre cose (l'interfaccia SD se non sbaglio) qui trovate un articolo interessante su sheevaplug + arduino http://www.arcfn.com/2009/06/arduino-sheevaplug-cool-hardware.html

Se li volete comprare in europa senza pagare la dogana li vendono qui: http://www.newit.co.uk/ Comunque ora ne stanno uscendo un sacco di modelli, non conoscevo il Raspberry sembra interessante soprattutto per il prezzo!

Ma un Raspberry ha installato linux come il sheevaplug?

Ma un Raspberry ha installato linux come il sheevaplug?

..dirttamente dal wiki:

Code and binaries for Raspberry Pi will be available at various places from launch, including pre-built Linux distributions.

E' architettura ARM, e Linux su ARM ci gira già da tempo. Se poi guardiamo cosa si può far girare sulla BeagleBoard: http://beagleboard.org/project ci si può fare un'idea delle possibilità. La BeagleBoard è basata su procio ARM, processore da 720Mhz. Il resto delle caratteristiche è a mio avviso abbastanza simile, solo che il costo è x4

Ciao, ho fatto alcune ulteriori modifiche al file Arduino.mk per il make, lo metto in allegato se vi può essere utile, le modifiche sono le seguenti:

  1. non è più obbligatorio specificare TARGET, se non lo fate verrà preso il nome della directory del progetto
  2. nuova variabile ARDUINO_CORE_EXCLUDE funziona in modo simile a ARDUINO_LIBS ma in questo caso per escludere delle librerie “core” (lo utilizzo per disabilitare la libreria “Tone” in alcuni progetti mi va in conflitto con altre librerie per via dei timer)
  3. reset tramite perl (come avevo descritto nel primo post)
  4. fix al “make upload” che in alcuni casi faceva il reset prima di compilare i sorgenti

Arduino.mk (13.1 KB)