Comunicazione Seriale con Arduino

Prima di iniziare è bene ricordare che esistono numerose schede di Arduino e non tutte funzionano allo stesso modo: alcune hanno funzionalità che altre non hanno e l'elenco potrebbe continuare.

lezione
lezione
Comunicazione Seriale con Arduino
Tipo di risorsa Tipo: lezione
Materia di appartenenza Materia: Sistemi automatici per le superiori 1
Avanzamento Avanzamento: lezione completa al 50%

Di seguito verrà descritto come attivare una comunicazione seriale con Arduino o - meglio - tra due schede Arduino. Facendo sì che queste possano dialogare tra loro le potenzialità di calcolo e di progettazione si espandono notevolmente.

Porta seriale modifica

 
Porta USB tipo B

La porta seriale è presente in tutte le schede Arduino (alcune schede ne hanno anche più d'una), se non altro per trasferire il codice da eseguire dal computer alla scheda Arduino stessa. La medesima porta viene poi riutilizzata quando dalla scheda Arduino si desidera inviare dati al computer per visualizzarli, memorizzarli o altro.

Come dovrebbe essere noto, Arduino lavora con livelli di tensione pari a   e  . Pertanto non è possibile connettere Arduino a una porta seriale RS-232 che - tipicamente - lavora a  .

Questo viene rimarcato perché - oltre alla connessione via USB - nelle schede Arduino Uno, Nano, Mini, e Mega i pin 0 e 1 sono direttamente connessi alla porta USB (e quindi al computer). Collegare qualsiasi cosa a questi pin può interferire con la comunicazione con il computer, causando anche upload falliti sulla scheda.

Pertanto, comunicazione seriale va usata solo quando la scheda non dialoga con il computer (o con altre macchine).

Comunicazione con altre schede modifica

È possibile utilizzare la comunicazione seriale con i pin Tx/Rx rispettando la logica TTL ( ). Per eseguire una comunicazione seriale con un dispositivo esterno TTL (inclusa un'altra scheda Arduino) è sufficiente collegare il pin Tx al pin Rx del proprio dispositivo e il pin Rx al pin Tx. Da non dimenticare che anche la messa a terra delle schede devono essere connesse, diversamente mancherebbe un riferimento di massa.

 

Comunicazione da computer ad Arduino via seriale modifica

Per inviare dati dal computer ad Arduino, tramite la porta seriale, è sufficiente l'utilizzo del monitor seriale.

  Per approfondire questo argomento, consulta la pagina Pilotaggio di Arduino tramite tastiera.

Comunicazione tra due schede Arduino modifica

Schema di montaggio modifica

 

Codice modifica

Scheda n. 1 modifica

#include <SoftwareSerial.h>
SoftwareSerial port(0 ,1); //rx tx
int pul11 = 10;
int led2 = 4;
int tozzi = 0;
int to;

void setup()
{
 port.begin(9600);
 pinMode(pul11, INPUT);
 pinMode(led2, OUTPUT);
}

void loop()
{
  tozzi = 0;
  if (digitalRead(pul11))
    bitSet(tozzi, 0);
  port.write(tozzi);

  if (port.available()){
    to = port.read();
    digitalWrite(led2, bitRead(to, 0));
  }     
}

Scheda n. 2 modifica

#include <SoftwareSerial.h>
SoftwareSerial port(0 ,1); //rx tx
int led1 = 12;
int pul1 = 9;
int mok = 0;
int toz;

void setup()
{
  port.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(pul1, INPUT);
}

void loop()
{
  mok = 0;
  if (digitalRead(pul1))
    bitSet(mok, 0);
  port.write(mok);

  if (port.available()){
    toz = port.read();
    digitalWrite(led1, bitRead(toz, 0));
  }  
}