Comandi da shell sulla porta seriale da Raspberry (o pc) ad Arduino
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!!