Gestire Arduino da Raspberry Pi

Molti di noi hanno sempre visto Arduino e Raspberry Pi come due entità separate. Pur presentando caratteristiche diverse con impieghi differenti in alcune situazioni, le due schede possono essere gestite da un'unica piattaforma. Raspberry Pi è in pratica un mini-computer, Arduino necessita di un PC per essere programmato. Perchè non gestire Arduino attraverso Raspberry Pi ?

Introduzione

Raspberry Pi ha una lunga storia, se pur non tanto lunga, ma sicuramente importante con molte soluzioni di single board computer che si sono susseguite nel corso degli anni. L'ultima versione la Raspberry Pi 3 è l'esempio classico di come la Raspberry Pi Fundation vuole affrontare il mercato IoT con un deciso passo verso l'integrazione dei sistemi. La scheda Raspberry Pi è essenzialmente un computer, dotata di porte USB, Wi-Fi, tutto l'occorrente che troviamo su un personal computer ma in misura decisamente ridotta, con l'introduzione anche delle porte GPIO per la gestione di sensori/attuatori esterni. Cosa importante sarà installare il sistema operativo disponibile dal sito della casa madre per il download completo.

Arduino è una scheda dotata di un microcontrollore, utilizzato per la prototipazione rapida e la gestione dei vari segnali attraverso un'interfaccia software IDE.  A differenza di Raspberry Pi, non è dotata di un sistema operativo. In commercio abbiamo varie versioni, ognuno con un fattore di forma e caratteristiche hardware che si adattano a seconda dell'applicazione finale. Essenzialmente è basata su un microcontrollore ATmega che si differenzia su varie versioni, dall'Arduino UNO passando per M0 Pro. Arduino Uno ha ottenuto molti apprezzamenti per la sua facilità di realizzare e gestire progetti open source. Recentemente, la casa madre italiana ha rilasciato una versione dell'IDE Arduino per i computer basati su Linux ARM.

Immaginate di fare lo sviluppo di progetti Arduino utilizzando un computer di circa 35 $ (Raspberry Pi), invece di usare un PC o MAC!

Collegare Arduino alla scheda Raspberry Pi

Per prima cosa Arduino deve essere collegato alla scheda Raspberry Pi attraverso la porta USB. Per verificare che il collegamento sia andato a buon fine è sufficiente, da terminale, digitare il seguente comando.

$ lsusb

E' meglio avere l'ultima versione di Raspbian Jessie sul proprio Raspberry Pi. L'ultima immagine di Raspbian Jessie può essere scaricata dal seguente link.  Se si dispone già di Raspbian Jessie sul Raspberry Pi, è possibile eseguire un aggiornamento digitando:

sudo apt-get update

Con un semplice download e digitando 'install' in un terminale, Arduino IDE è disponibile su quasi ogni single board computer con processore ARM e sistema operativo Linux. Naturalmente, Arduino è stato sempre disponibile per essere implementato su Raspberry Pi con il comando:

sudo apt-get install arduino

Ma questa era una vecchia versione che può funzionare solo con la board Arduino UNO. Cliccando quindi su "Linux ARM" nella pagina web di Arduino, verrà scaricato il software direttamente nella cartella Download. È possibile utilizzare l'applicazione Archiever fornita con la distribuzione Raspbian per estrarre il file tar.

Digitando il seguente comando:

sudo ./install.sh

è possibile quindi installare Arduino. Nella figura 1 è possibile vedere la schermata dell'IDE Arduino su un computer Raspberry Pi con sistema operativo Raspbian.

Figura 1: esempio di schermata Arduino IDE nel sistema operativo Raspbian (Raspberry Pi)

Inoltre, sotto Preference nella voce "Additional Board Manger URLs", è possibile inserire il seguente link per gestire il modulo ESP8266. Nella voce "Board Manager" è possibile selezionare il modulo ESP8266 per l'installazione e quindi l'implementazione del codice nell'IDE. A questo punto l'interfaccia si presenta come nelle altre versioni ed è possibile iniziare sin da subito a programmare con Arduino, implementando tanti progetti open source.

Collegamento I2C

Dal momento che il Raspberry Pi ha un numero limitato di porte USB (dipende dal modello ma anche dal tipo di applicazione, 2 o 4 porte può essere sufficiente ricordando anche che ci sono gli HUB USB), è possibile collegare Arduino tramite protocollo I2C in modo da separare due aree di applicazione ma nello stesso tempo implementare molti più segnali da gestire. Una configurazione di I2C-slave Arduino si realizza in pochi minuti tramite la libreria corrispondente. C'è bisogno solo di definire un indirizzo per lo slave e due metodi-callback per l'invio e la ricezione di dati.

void setup()
{
  // define slave address (0x2A = 42)
  #define SLAVE_ADDRESS 0x2A

  // initialize i2c as slave
  Wire.begin(SLAVE_ADDRESS);
  
  // define callbacks for i2c communication
  Wire.onReceive(receiveData);
  Wire.onRequest(sendData);
}

// callback for received data
void receiveData(int byteCount)
{
    […]
}

// callback for sending data
void sendData()
{
    […]
}

Per alcuni scenari è necessario consentire la comunicazione su due o più livelli di tensione differenti. Ad esempio, se si desidera utilizzare un ATmega168 / 328 o Arduino in esecuzione @ 16MHz / 5 V come I2C-slave con un Raspberry Pi in esecuzione @ 3.3 V, è necessario isolare i livelli di intercomunicazione tra i due dispositivi (Figura 2).

Figura 2: Shifter I2C

Dopo aver correttamente collegato i due dispositivi e caricato il modulo i2c-dev-module, è possibile verificare il collegamento con:

sudo modprobe i2c-dev
sudo i2cdetect -y -a 0

Se tutto funziona bene il Raspberry Pi troverà un dispositivo all'indirizzo 0x2A e si può procedere con l'esecuzione del codice.

Conclusioni

Con la nuova versione Raspberry Pi 3 non c'è problema di porta USB avendone a disposizione ben 4. In ogni caso il progettista in base alla propria applicazione potrà utilizzare il miglior collegamento. Il protocollo I2C permette di gestire Arduino e Raspberry facendo interagire tra loro le varie porte, quella USB garantisce un primo semplice approccio per la programmazione Arduino senza l'ausilio di un PC. In ogni caso, la programmazione di Arduino può avvenire semplicemente attraverso il mini-PC Raspberry Pi con un costo decisamente molto contenuto rispetto ai tradizionali PC.

 

 

 

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 4 aprile 2017

Scrivi un commento