marzo 2018

Vediamo quali strumenti possiamo utilizzare per interfacciare Arduino al nostro Raspberry PI per potervi inviare comandi da shell.

La prima possibilità è quella di aprire la porta tramite stty, quindi dopo aver connesso Arduino tramite il cavo USB al Raspberry apriamo un terminale e diamo il seguente comando:

$ dmesg | tail -3

Il kernel ci informa che Arduino è disponibile sulla porta /dev/ttyUSB0, ecco l’output del mio terminale:

[ 6956.190363] usb 1-1.2: Product: USB2.0-Serial
[ 6956.191571] ch341 1-1.2:1.0: ch341-uart converter detected
[ 6956.194678] usb 1-1.2: ch341-uart converter now attached to ttyUSB0

Con queste informazioni possiamo aprire la porta con il seguente comando:

$ stty -F /dev/ttyUSB0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

….è un po lungo, lo so ma se dovete fare qualche script bash è fondamentale impostare correttamente la connessione. Sostituire eventualmete /dev/ttyUSB0 con il device prodotto dall’output di dmesg. A questo punto è possibile inviare comandi con:

$ echo -e “comando_da_inviare” > /dev/NOME_PORTA

nel mio caso ad esempio faccio girare un motore stepper  con:

$ echo -e “G1 X10” > /dev/ttyUSB0

Un altro sistema è usare cu, lo possiamo installare da terminale con:

$ sudo apt-get install cu

La sintassi per la connessione è:

$ cu -l /dev/ttyUSB0 -s 115200

dove -l specifica la porta (/dev/ttyUSB0) e -s imposta il baud rate. A quel punto la shell visualizza un messaggio: “Connesso” e si può iniziare ad inviare comandi. Il testo scritto non è visualizzato!!

Allo stesso modo possiamo usare minicom, lo si installa con:

$ sudo apt-get install minicom

per aprire la porta digitiamo:

$ minicom -b 115200 -o -D /dev/ttyUSB0

come per cu il testo scritto non viene visualizzato, abbiamo un messaggio di ok se il comando è andato a buon fine altrimenti uno di errore.

Ultima alternativa è screen, lo si installa con:

$ sudo apt-get install screen

e si avvia digitando screen e premendo invio. Alla richiesta si preme o spazio e return; sembra una normale shell ma stiamo utilizzando screen, ce ne accorgiamo se scriviamo exit e premiamo invio: il messaggio ci avvisa che abbiamo terminato la sessione con screen e non con la shell!!