lunedì 27 giugno 2016

Scambio seriale tra Arduino Expansion Board e Intel Edison

Scambiare dati tra il lato Arduino (via Expansion Board) ed Intel Edison non e' immediato perche' in Yocto non sono predisposte porte seriali.(ripreso da questo link)

Per aggirare il problema si deve installare prima socat, con le istruzioni sotto indicate
----------------------------
wget http://www.dest-unreach.org/socat/download/socat-2.0.0-b8.tar.gz 
tar xvf socat-2.0.0-b8.tar.gz 
cd socat-2.0.0-b8 
configure 
make 
make install
----------------------------
Una volta installato il programma si creano delle interfacce seriali virtuali

nohup socat pty,link=$HOME/tty0,raw,echo=0 pty,link=$HOME/tty1,raw,echo=0 &

(viene generato un messaggio ma non si tratta di un errore)
Si vedra' che in /home/root/ sono comparsi di due dispositivi tty0 e tty1

Adesso si puo' caricare su Arduino IDE lo sketch sottostante che di fatto usa una seriale virtuale che punta su /home/root/tty0
----------------------------------------------
RingBuffer rx_buffer_S1;
TTYUARTClass mySerial(&rx_buffer_S1, 3, false);

void setup() {
  mySerial.init_tty("/home/root/tty0");
  mySerial.begin(115200);
}

void loop()
{
  mySerial.write("luca");
  delay(500);
}
---------------------------------------------

Per leggere i dati inviati dal lato Arduino (in questo caso una semplice stringa) e' sufficiente puntare minicom (o altro terminale seriale) su /home/root/tty1 con i parametri 115200 8N1