Pubblicato il

Lezione 0 Raspberry Pi e Arduino – Come collegare Raspberry pi ad Arduino

Come collegare Raspberry pi ad Arduino

Premessa

Come promesso spiegheremo come collegare arduino alla basetta Raspberry Pi tramite porta seriale. Ciò ci permetterà in futuro di creare progetti molto più complessi con i due microprocessori che stanno prendendo piede ormai nel campo della domotica, robotica e altro. Il nostro intento sarà quello di leggere un segnale analogico tramite arduino e trasmetterlo al Raspberry pi che a sua volta trasmetterà il dato ricevuto dalla porta seriale per svolgere un determinato compito che può essere un’accensione di un led tramite il modulo gpio oppure leggere un sensore pir con arduino e ricevere una mail con il raspberry Pi che verifica l intrusione o meno di una persona in un determinato posto o altre mille idee che verrano con l’accrescere delle conoscenze della programmazione e della consolidazione dei componenti elettronici.

LISTA DEI MATERIALI:

Svolgimento

Munirsi dell’arduino e del raspberry pi, seguite le lezioni che trovate nella sezione progetti per installare i dovuti programmi necessari per il funzionamento delle basette. Successivamente il primo passo sarà quello di accendere il raspberry pi (preferibilmente sistema operativo occidentalist) e installare da terminale il programma caricatore di arduino.

sudo apt-get install arduino

una volta installato collegare l’arduino al raspberry pi tramite il cavo dell’arduino alla presa USB del raspy. Successivamente installare sempre nel terminale del raspberry pi il modulo che permetterà di leggere i dati ricevuti dall arduino tramite la porta seriale.

sudo apt-get install python-serial

Compiuti i passaggi preliminari cominceremo con la stesura dei programmi.

Procedimento hardware e software

– Fase Arduino software e hardware
Dal raspberry aprite il programma appena installato del caricatore arduino e procediamo con un programma che accende un led, che manda tramite porta seriale una sequenza di bit al raspberry Pi.Il modulo serial in python si occuperà di tradurre per noi e leggerà il valore passato tramite le precise istruzioni che impareremo in questa guida. Il programma bene o male lo abbiamo gia visto nella lezione 0 dell arduino quindi riproponiamo lo stesso esempio in modo più articolato.

Vedere lezione 0 arduino per collegamenti hardware del led.

char val=’0′;
int led = 13 ;

void setup()
     {
     pinMode ( led , OUTPUT );
     Serial.begin(9600);
     }

void loop()
     {
     val = Serial.read();
     if(val==’a'){
     digitalWrite ( led , HIGH );
     Serial.println(“Acceso”);
     }
     if(val==’s')
          {
          digitalWrite ( led , LOW );
          Serial.println(“Spento”);
          }
     }

Caricate il programma su arduino testato e verificate il suo funzionamento. Ora il nostro intento sarà quello di leggere i valori inseriti tramite il monitor seriale di arduino su terminale raspberry pi. Una piccola premessa noi adesso stiamo inserendo valori tramite monitor ma potrebbe servire per un vostro progetto che l arduino legga solamente i valori di un sensore di temperatura e li mandi direttamente al raspberry senza un interfaccia grafica, quindi vi consiglio di provare alcuni esercizi pratici per consolidare perfettamente il funzionamento della porta seriale.

– Fase Raspberry pi software e hardware
Una volta accertato il funzionamento del programma caricato in arduino passeremo alla lettura dei suoi dati con il raspberry pi. Inanzitutto io consiglio di installare un programma chiamato scite, molto comodo per scrivere i vostri programmi python ma possiede molti linguaggi al suo interno.
Quindi da terminale:

sudo apt-get install scite

il programma python che permette la lettura dei valori:

import time #importa libreria time
import serial #importa libreria serial lettura valori usb

ser = serial.Serial('/dev/ttyACM0', 9600) #imposta la porta dove leggere i valori

while True: #ciclo infinito
   message = ser.readline() #funzione lettura porta
   if(message): #ciclo iterativo se viene inserito un valore in arduino
      print(message) #stampa valore
      time.sleep(0.5) #tempo di riposo mezzo secondo

Alcune precauzioni nell’istruzione serial.Serial(‘/dev/ttyACM0’, 9600) dovete sostituire /dev/ttyACM0 con il valore che trovate voi nel programma arduino. Il percorso lo trovate in basso a destra nel programma caricatore di arduino toverete una sigla molto similare a quella sopra riportata.

Ora salvate il tutto in una cartella con il nome del file a vostro piacimento ma con estensione .py e da terminale caricate aprite la cartella contenente il file e utilizzate il comando:

sudo python nomefile.py per eseguirlo.

Buon apprendimento.