Forse non tutti sanno che è possibile caricare uno sketch di Arduino direttamente dal terminale o meglio, tramite SSH. Questa è una piccola guida per poterlo fare. Un fattore propedeutico per poterlo fare, è un computer con sistema operativo Linux o un Raspberry collegato via USB all’Arduino. Credo sia possibile anche da Windows ma questa guida è orientata solo per sistemi operativi Linux (Debian, Ubuntu, CentOS, Fedora, ecc.).
In questi giorni, per comodità, ho avuto la necessita di fare del debug su un Arduino, lontano dalla postazione di lavoro (il computer sul quale stavo programmando lo sketch). Avevo la necessità di modificare lo sketch e vedere l’output sulla seriale, per fortuna vicino all’Arduino avevo un mediacenter con Xubuntu onboard. All’inizio lavoravo in desktop remoto e Dropbox per condividere lo sketch ma la procedura era veramente fastidiosa e le connessioni in desktop remoto su linux sono lente, molto instabili e di scarsa qualità … e chi vuole smentire questa affermazione è un bugiardo 🙂 inoltre il delay di aggiornamento del file modificato su Dropbox era molto lungo. Pertanto dovevo trovare una soluzione rapida, stabile e funzionale. Quindi avendo a disposizione un computer linux con SSH abilitato al quale ho collegato il mio Arduino, mi sono orientato su questa via e ho cercato qualcosa online.
La prima cosa che ho trovato è una guida per compilare e caricare lo sketch di Arduino direttamente da terminale, funzionava benissimo ma purtroppo ha bisogno di un ambiente grafico (es. X11) per lavorare, in quanto lancia la IDE di Arduino in background. Essa controlla se è abilitato l’ambiente grafico in caso negativo l’applicazione va in crash, quindi non potevo utilizzare una connessione SSH da terminale puro.
Altra ricerca e trovo un applicazione scritta in Phyton su GitHub, non semplicissima da configurare la prima volta, ma una volta capito il funzionamento vi posso garantire che il tutto risulterà semplice anche per le volte successive in cui avrete bisogno di questa funzionalità.
Il pacchetto si chiama Arduino-Makefile per installarla su Ubuntu e compagnia bella
0 1 2 |
sudo apt-get install arduino-mk |
Mentre per le altre disto consiglio l’importazione del repository ufficiale. Su GitHub è tutto scritto come fare.
Una volta installato il pacchetto va copiato il file Arduino.mk all’interno della cartella del vostro sketch.
Es. su Ubuntu
0 1 2 |
cp /usr/share/arduino/Arduino.mk ~/Arduino/Sketch/MioSketch |
se utilizzate un’altra distro il file da copiare Arduino.mk lo troverete dentro la cartella del repository che avete appena scaricato.
Con un edityor di testo (nano, vi, pico, gedit, ecc.) modificate il file Arduino.mk sopratutto la directory che contiene la IDE di Arduino, il tipo di Arduino utilizzato, la porta USB dove è collegato e il file Arduino.mk originale
0 1 2 3 4 5 6 |
ARDUINO_DIR = /usr/share/arduino BOARD_TAG = uno ARDUINO_PORT = /dev/ttyACM* ARDUINO_LIBS = include /usr/share/arduino/Arduino.mk |
Adesso recatevi nella cartella che contiene il vostro Sketch, per capirsi, la cartella che contiene il file con l’estensione .ino
0 1 2 |
cd ~/Arduino/Sketch/MioSketch |
e cambiate il nome al file Arduino.mk in Makefile
0 1 2 |
mv Arduino.mk Makefile |
adesso il gioco è fatto.
Per caricare lo sketch sul vostro Arduino non dovete far altro che eseguire
0 1 2 |
make upload |
Adesso sarebbe bello vedere l’output di Arduino sulla seriale. Niente paura, per questa funzionalità ci vine incontro un altro pacchetto che si chiama picocom. Questo pacchetto ci permette di leggere sul terminale i dati della seriale di Arduino in output. Ed è possibile anche inviare dati in input ad Arduino.
Per installare picocom su Ubuntu
0 1 2 |
sudo apt-get install picocom |
Per leggere i dati della seriale di Arduino
0 1 2 |
picocom /dev/ttyACM0 -b 9600 -r -l |
dove /dev/ttyACM0
è la porta seriale dove è collegato Arduino.
Per uscire da picocom
0 1 2 3 |
Ctrl+A Ctrl+X |
Quindi ricapitolando, personalmente, ho usato questa configurazione per caricare e monitorare uno Sktech di Arduino da remoto.
Arduino UNO, un server SSH e un Client Windows.
Sul server era abilitato, oltre al server SSH anche un server samba sul quale avevo condiviso la cartella contente lo Sketch di Arduino, alla quale mi connettevo direttamente da un PC Windows. Ho utilizzato la condivisione della cartella Sketch di progetto solamente per apportare modifiche in maniera rapida. Nel caso non fosse possibile per voi utilizzare samba perché state effettuando questa questa operazione da due reti diversi e non avete a disposizione un tunnel potete utilizzare un Client SCP che permette tramite portocollo SSH la modifica dei file in maniera semplice e veloce. Per Windows consiglio WinSCP.
Una volta modificato lo Sketch tramite client SSH, (per Windows consiglio PuTTY) per prima cosa eseguivo make upload
per copilare e caricare lo sketch sull’Arduino e una volta terminata l’operazione di upload eseguivo picocom /dev/ttyACM0 -b 9600 -r -l
per leggere l’output prodotto da Arduino sulla seriale.
Spero come sempre di essere stato abbastanza chiaro anche per i neofiti e che questa breve guida sia utile a tutti coloro che si sono trovati nella mia stessa circostanza.
Reference
- https://github.com/sudar/Arduino-Makefile
- http://macbury.ninja/2014/8/compiling-sketches-for-arduino-in-linux-console
- http://pblog.ebaker.me.uk/2014/01/uploading-arduino-sketch-from-raspberry.html
- http://www.deanmao.com/2012/08/10/uploading-sketches-to-the-arduino-on-the-pi/
- http://www.mjoldfield.com/atelier/2009/02/arduino-cli.html
- http://manpages.ubuntu.com/manpages/hardy/man8/picocom.8.html
I commenti sono chiusi.