Avvertenze

Relativamente agli aspetti di sicurezza, poiché i progetti sono basati su alimentazione elettrica in bassissima tensione erogata dalla porta usb del pc o da batterie di supporto o alimentatori con al massimo 9V in uscita, non ci sono particolari rischi di natura elettrica. È comunque doveroso precisare che eventuali cortocircuiti causati in fase di esercitazione potrebbero produrre danni al pc, agli arredi ed in casi estremi anche a ustioni, per tale ragione ogni qual volta si assembla un circuito, o si fanno modifiche su di esso, occorrerà farlo in assenza di alimentazione e al termine dell’esercitazione occorrerà provvedere alla disalimentazione del circuito rimuovendo sia il cavo usb di collegamento al pc che eventuali batterie dai preposti vani o connettori di alimentazione esterna. Inoltre, sempre per ragioni di sicurezza, è fortemente consigliato eseguire i progetti su tappeti isolanti e resistenti al calore acquistabili in un qualsiasi negozio di elettronica o anche sui siti web specializzati.

Al termine delle esercitazioni è opportuno lavarsi le mani, in quanto i componenti elettronici potrebbero avere residui di lavorazione che potrebbero arrecare danno se ingeriti o se a contatto con occhi, bocca, pelle, etc. Sebbene i singoli progetti siano stati testati e sicuri, chi decide di seguire quanto riportato nel presente documento, si assume la piena responsabilità di quanto potrebbe accadere nell’esecuzione delle esercitazioni previste nello stesso. Per i ragazzi più giovani e/o alle prime esperienze nel campo dell’Elettronica, si consiglia di eseguire le esercitazioni con l’aiuto ed in presenza di un adulto.

Roberto Francavilla

Comunicazione in modalità wireless Bluetooth con Arduino

Con questa Lezione impareremo a collegare in modalità wireless Bluetooth il nostro Arduino con altri dispositivi.

Per questa modalità di controllo utilizzeremo il Modulo HC-05 che in sostanza consente ad Arduino di comunicare con il mondo esterno (in modo bidirezionale) tramite il Bluetooth.

Poiché l’uso del Modulo HC-05 con Arduino apre molteplici scenari per progetti davvero interessanti, prima di vedere come pilotare un braccio robotico in modalità Bluetooth, facciamo un focus su questo modulo e del suo impiego con Arduino dedicandogli una intera Lezione del Corso.

Descrizione Generale dello Standard Bluetooth

Lo standard di comunicazione Bluetooth è utilizzato per la trasmissione dati per reti personali senza fili (WPAN: Wireless Personal Area Network). E’ uno standard che ha trovato un enorme successo in quanto economico e sicuro e permette di scambiare informazioni tra dispositivi diversi attraverso una frequenza radio a corto raggio. La connessione avviene tra i diversi dispositivi presenti nell’area di copertura dal segnale radio (fino a qualche decina di metri). Questi dispositivi possono essere, ad esempio, smartphone, tablet, pc, stampanti, cuffie,… ed anche il nostro Arduino.

 

Ora, non è mia intenzione spiegare ed entrare nei dettagli tecnici delle comunicazioni via Bluetooth (abbreviato: BT) in quanto in internet potete trovare innumerevoli video ed articoli che lo fanno, per cui mi limiterò a darne una descrizione di massima ed anche molto superficiale, giusto per dare una idea e per trasferirvi le informazioni più importanti.

Il principio di comunicazione tra dispositivi collegati via BT è quello cosiddetto Master / Slave, ovvero il dispositivo master effettua la scansione nel proprio raggio di azione ed una volta individuato un secondo dispositivo, ne chiede la possibilità di connessione. Lo slave concede la connessione ed i due dispositivi si connettono formando una rete chiamata piconet. La connessione è di tipo paring, ovvero il dispositivo, una volta attivo nella comunicazione con un altro dispositivo, non è più disponibile ad un’altra comunicazione diversa.

Per quanto sopra spiegato, all’interno di una piconet ci sarà almeno un dispositivo master, che è il dispositivo che si occupa di tutto ciò che concerne la sincronizzazione del clock, mentre gli altri dispositivi che sono sincronizzati al master si chiamano slave.
Con il BT c’è la possibilità di poter collegare Arduino a qualsiasi dispositivo (PC, Smartphone, etc..) e già oggi ci sono App, soprattutto nel mondo Android e Windows, che consentono questo in modo semplice.

Il Modulo Bluetooth HC-05 per Arduino

Il modulo è sostanzialmente quello rappresentato in foto (il “sostanzialmente” è perché in commercio si possono trovare moduli con piccole differenze, a me è capitato, ad esempio, di acquistare un modulo che non aveva il pulsante per entrare nella modalità AT, ma poiché l’ho trovato molto utile vi suggerisco di acquistarlo con il pulsante, altrimenti occorrerà modificare sostanzialmente lo sketch ed i collegamenti previsti nel progetto che segue).

Nella parte anteriore è ben visibile il pulsante di “Enable” che serve per entrare in modalità di configurazione del Modulo (freccia rossa) ed è anche visibile il LED che in funzione della sua velocità di lampeggiamento, ci da delle indicazioni (freccia verde):

  • Lampeggiamento veloce e costante: Significa che il modulo è acceso ed è pronto a connettersi ad altri dispositivi.
  • 1 lampeggio ogni circa 2 secondi: il Modulo è in modalità di configurazione (o anche detta modalità AT), ovvero è in attesa di ricevere comandi in AT Mode (i comandi AT sono dei comandi inviati nell’ATtention Mode che sono in sostanza comandi seriali).
  • LED acceso fisso, significa che il modulo HC-05 è connesso in una rete piconet.

Passiamo al retro del modulo HC-05:

Come è possibile osservare ci sono 6 PIN:

EN: il pin se messo in stato di LOW (o non connesso) disattiva la modalità di configurazione, se messo HIGH o viene premuto il tasto, entra in modalita di configurazione. Per la configurazione occorre inviare comandi AT (per esempi e lista dei comandi AT potete fare riferimento ai comandi più utilizzati riportati nella tabella sotto.

VCC: è il pin dell’alimentazione la cui tensione può essere tra 3,6 V e 6 V. Può essere alimentato direttamente da Arduino a 5 V.

GND: la massa (terra) da collegare al GND di Arduino

TXD: uscita seriale del modulo, da collegare all’RX di Arduino e funziona a 3,3V.

RXD: ingresso seriale del modulo, da collegare al TX di Arduino e funziona a 3,3V.

STATE: il pin passa dallo stato LOW allo stato HIGH quando il modulo è connesso via Bluetooth, se connesso ad un PIN di Input di Arduino, lo si può utilizzare per gestire un evento legato alla connessione via Bluetooth.

I PIN “EN” e “STATE”, normalmente, non vengono utilizzati. Particolare attenzione occorre farla per la tensione di lavoro dei segnali Tx e Rx che come anche indicato dal produttore del modulo, lavorano a 3,3V, mentre Arduino ha una tensione di lavoro dei PIN a 5V.

Per ovviare a tale inconveniente e quindi non mettere a rischio la funzionalità del modulo BT, occorre utilizzare un cosiddetto “Convertitore di livello logico bidirezionale” o anche chiamato “Bi-Directional Level Shifter” o semplicemente “Bi-Directional Level Converter”.

Convertitore di livello logico bidirezionale

Innanzi tutto diciamo che l’applicazione del Convertitore di livello è indicata per tutti quei dispositivi (come Arduino) che lavorano su segnali logici a 5V che devono essere connessi a sensori, o display, che invece lavorano con logiche a 3,3V.

Il Convertitore è in formato breakout ed è un convertitore di livello logico bidirezionale, quello in foto è a 4 canali progettato per l’I2C. Il convertitore ha 4 FET BSS138 con pull-up 10K e lavora con segnali (lato LV) anche di 1,8V, mentre per il lato HV fino a 10V. Il Convertitore lavora anche con comunicazione di tipo Serial SPI con frequenza inferiore ai 2 MHz.

In commercio si trova nella versione completamente assemblato e testato con 4 linee di conversione bidirezionali complete e 2 header da 6 pin già saldati, oppure con gli header da saldare.

Il funzionamento del modulo è semplicissimo, non fa altro che prendere il segnale a 3,3 V e trasformarlo in un segnale a 5V e viceversa, per cui il modulo è caratterizzato dall’avere due lati, uno a 3,3V e l’altro a 5 V. Quello in foto è un modulo capace di convertire 4 canali distinti, per cui nel nostro caso, visto che occorre convertire i soli due canali Rx e Tx, va benissimo.

Il lato a 5V è identificabile dalla sigla “HV…”, mentre quello a 3,3V “LV…”. Il collegamento del modulo con Arduino e con l’eventuale sensore/display/modulo a segnali logici a 3,3V è semplicissimo:

Per ovviare a tale inconveniente e quindi non mettere a rischio la funzionalità del modulo BT, occorre utilizzare un cosiddetto “Convertitore di livello logico bidirezionale” o anche chiamato “Bi-Directional Level Shifter” o semplicemente “Bi-Directional Level Converter”.

Modulo Bluetooth HC-05 in modalità di configurazione e comandi AT

Diciamo subito che il modulo, quando è appena acquistato ha già una configurazione di default che soddisfa le nostre esigenze ed in particolare:

  • Nome dispositivo: HC-05
  • Modo di utilizzo come: Slave
  • Velocità di trasmissione di: 9600 baud
  • Pin-Password: 1234

Però a volte abbiamo necessità di modificare le impostazioni, o per cambiare nome, oppure per cambiare il PIN della password, o anche la modalità di funzionamento, non come Slave, ma come Master.

Per fare questo occorre adottare una procedura specifica che non sempre viene descritta in modo puntuale e preciso e che invece io cercherò di fare con il progetto seguente.

Progetto 05: Modalità di configurazione del Modulo HC-05 Bluetooth.

Innanzi tutto vi dico che configurare il Modulo Bluetooth HC-05 attraverso i comandi AT, una volta compresa la procedura, è veramente molto semplice effettuare. La difficoltà è nella procedura, soprattutto perché non è descritta in modo completo ed esaustivo né dal fornitore del modulo e tantomeno nei vari video che sono pubblicati in rete su tale argomento.

Per questo progetto ci occorre:

Lo schema da realizzare è il seguente:

mi preme farvi notare innanzi tutto che la tensione a 3,3V per il lato “LV” del convertitore l’ho presa direttamente da Arduino che mette a disposizione tale livello di tensione, poi vi faccio notare che il segnale Tx dell’HC-05 è collegato all’LV1 del Convertitore ed il corrispondente HV1 del convertitore va collegato al PIN 6 di Arduino che sarà definito come Rx. In sostanza il Tx del modulo HC-05 va collegato all’Rx di Arduino, infatti il modulo trasmette ed Arduino Riceve. Cosa opposta per il segnale Rx del Modulo HC che va collegato all’LV2 del convertitore e poi il corrispondente HV2 del convertitore viene collegato al PIN 7 di Arduino che sarà definito come Tx, pertanto il Modulo HC-05 Riceve ed Arduino Trasmette.

Il GND è lo stesso per Arduino, il Convertitore ed il modulo HC-05, come anche la tensione a 5V, viene presa da Arduino e va alimentare il Modulo HC-05 ed il lato “HV” del Convertitore.

Lo sketch da caricare su Arduino è il seguente:

Una volta montato il circuito, lo sketch da scrivere e caricare su Arduino è:

Analisi dello sketch del Progetto 05 - Configurazione del modulo HC-05 Bluetooth

Desidero evidenziare solo una cosa dello sketch che è molto importante ai fini della riuscita del progetto: quando si deve portare il Modulo HC-05 in modalità di Configurazione è necessario che il Baud Rate di comunicazione sia quello utilizzato nella Configurazione in fabbrica, normalmente è di 38400 Baud, fate attenzione al Datasheet rilasciato dal fornitore.

Procedura per la Modalità di Configurazione del modulo HC-05 Bluetooth

  • Collegate Arduino al PC mediante il cavo USB. In questo modo andremo ad alimentare il nostro circuito e vedrete che il modulo HC-05 avrà il LED che lampeggerà velocemente.
  • Caricate lo sketch su Arduino, ovviamente prima sinceratevi che Arduino sia collegato alla porta COM corretta.
  • Aprite il Monitor Seriale, cliccando sull’icona della lente in alto a destra dell’IDE, oppure cliccando contemporaneamente CTRL+MAIUSCOLO+M e selezionate in basso a destra: “38400 baud” e “Entrambi (NL & CR)” .
  • Se tutto è andato come doveva, comparirà sulla finestra del Monitor Seriale la scritta “ready…”
  • A questo punto, scollegate il solo cavetto dell’alimentazione del modulo HC-05 e tenendo premuto il tastino EN, ricollegate il cavetto di alimentazione.
  • Una volta ricollegata l’alimentazione potete rilasciare il pulsante EN e vedrete che il LED dell’HC-05 lampeggerà molto più lentamente, circa ogni due secondi.

    Siamo entrati in Modalità di Comandi AT e quindi di Configurazione. Per averne la certezza, andate sul Monitor Seriare e digitate nella barra dei comandi: AT 

E premete invio, vedrete che il Modulo HC-05 vi risponderà con OK

Principali comandi AT per la configurazione del modulo HC-05 Bluetooth

Di seguito vi riporto i comandi AT più utilizzati, ovviamente quelli che personalmente reputo i comandi più importanti, se a voi interessa invece conoscerne altri, allora potete tranquillamente cercare su internet con la chiave di ricerca ”comandi AT per HC-05” :

Di seguito il Video-Progetto 05

Progetto 06: Uso dell’HC-05 con Arduino. Modalità Switch.

Una volta compreso come configurare il nostro HC-05, passiamo a vedere come impiegarlo con Arduino. Questo progetto è molto, molto semplice, ma può essere considerato come base per applicazioni molto più complesse. In sostanza, tramite il nostro smartphone, o tablet (ma potrebbe essere qualsiasi dispositivo capace di connettersi via BT), possiamo pilotare Arduino e trasformarlo in uno interruttore con comando a distanza, ad esempio per accendere delle luci.

Innanzi tutto occorre precisare che gli smartphone Apple poiché utilizzano lo standard di comunicazione BLE, ovvero il Bluetooth Low Energy non sono compatibili con l’HC-05, per cui necessariamente dovremo utilizzare dispositivi Android e Windows.

Per questo progetto utilizzeremo un’APP Android generica molto flessibile e programmabile che ho trovato molto interessante soprattutto per sviluppare e testare alcuni miei progetti, ovviamente se desideriamo qualcosa di specifico, possiamo sempre realizzare la nostra APP con i tantissimi tool che si possono recuperare in rete.

L’APP si chiama “Arduino bluetooth controller” e si può scaricare ed istallare sul proprio dispositivo Android dal Google Play al seguente link:

https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=it&gl=US

E’ molto intuitiva e ci consente di utilizzare Arduino in quattro modalità diverse:

  • Joystick
  • Interruttore
  • Dimmer
  • Terminale per lo scambio dati

Una volta istallata l’APP sul nostro dispositivo mobile, passiamo al progetto vero e proprio.

Per questo progetto ci occorre:

Lo schema di montaggio è quasi identico a quello del progetto precedente, occorre solo aggiungere il LED e la resistenza:

Lo sketch da caricare su Arduino è il seguente:

A qusto punto passiamo al nostro dispositivo mobile, che nel mio caso è il mio Tablet su cui ho istallato l’APP e quindi l’avvio. Aperta l’APP si deve ovviamente connettere l’HC-05, per cui si avvia la ricerca dei dispositivi ed una volta trovato il nostro HC-05 si da indicazione di connessione, per la connessione ci viene chiesta la password che sarà “1234”.

A questo punto abbiamo la nostra AP che comunica con l’HC-05.

Procediamo quindi a configurare il nostro switch, con ‘a’ ed ‘s’ per acceso e spento, occhio che per memorizzare la lettera, una volta digitata la lettera di interesse occorre cliccare sul tastino verde della spunta, funziona come un comando di conferma, un OK insomma.

Una volta configurato lo switch, si ritorna alla schermata principale dell’interruttore ed a questo punto premendo il tastino virtuale del nostro interruttore sul Tablet, si accenderà e spegnerà il LED.

Il Video Progetto che segue mostra tutti i passaggi in dettaglio.

Analisi dello sketch del Progetto 06 - Uso dell’HC-05 con Arduino. Modalità Switch

Ci sono due cose che desidero evidenziarvi, la prima è che ho riportato la velocita a 9600 baud, sia per la porta di Arduino che quella del Bluetooth e la seconda è che come potete vedere dal codice:

  if (btSerial.available()){    //Condizione soddisfatta quando ci sono dati sulla porta dell’HC-05

lo sketch considera solo eventuali dati proveniente dall’esterno verso Arduino e non gestisce eventuali dati che dovessero partire da Arduino verso l’esterno.

Progetto 07: Scambio dati tra Smartphone e Arduino via BT con HC-05

Con questo progetto facciamo un passo in avanti molto significativo dal punto di vista dell’uso del modulo Bluetooth HC-05. Infatti, utilizzeremo la Modalità Terminale sul nostro Smartphone, o Tablet, per interrogare Arduino e farci restituire, con l’impiego di un DHT11, la temperatura e l’umidità presente nell’ambiente monitorato.

Potete facilmente intuire l’importanza di una funzionalità di questo tipo illustrata nel progetto, ad esempio possiamo mettere Arduino con i vari sensori collegati in un ambiente non accessibile e poi mediante un collegamento wireless BT, interrogare Arduino per farci dare ritorni sulle grandezze misurate dai vari sensori ad esso collegati. Inoltre, ho anche fatto attenzione al risparmio energetico, infatti il modulo sensore DHT11 viene attivato solo quando viene interrogato, nel resto del tempo risulta essere spento. Per cui le applicazioni sono veramente innumerevoli.

Per questo progetto ci occorre:

Lo schema di montaggio è quasi identico a quello del progetto precedente, occorre solo aggiungere oltre il LED e la resistenza, anche il modulo sensore DHT11 ed in particolare:

Come è possibile osservare dallo schema, l’alimentazione del modulo sensore DHT11 è collegato al PIN digitale 3 di Arduino che eroga, una volta posto ad uno stato HIGH, i 5 V necessari.

Lo sketch da caricare su Arduino è:

A qusto punto passiamo al nostro dispositivo mobile, che nel mio caso è il mio Tablet su cui ho istallato l’APP e quindi l’avvio. Aperta l’APP si deve ovviamente connettere l’HC-05, per cui si avvia la ricerca dei dispositivi ed una volta trovato il nostro HC-05 si da indicazione di connessione, per la connessione ci viene chiesta la password che sarà “1234”.

A questo punto abbiamo la nostra AP che comunica con l’HC-05.

Il Video Progetto che segue mostra tutti i passaggi in dettaglio.

Analisi dello sketch del Progetto 07 - Scambio dati tra Smartphone e Arduino con HC-05

Come potete osservare, lo sketch è molto simile a quello precedente, ovviamente è stata implementata la parte riguardante il DHT11, con il richiamo della relativa libreria che deve ovviamente essere prima caricata se non già esistente, e quella riguardante il rilascio delle informazioni da parte di Arduino una volta letti i valori di temperatura ed umidità. Le letture si attivano solo quando viene acceso il sensore e vengono “stampate” sia sul monitor seriale che “scritte” ed inviate alla porta seriale BT.

L’ultimo “if” dello sketch consente, in caso di manutenzione, di scrivere del testo nella barra di testo del monitor seriale e premendo invio compare sul dispositivo mobile collegato via BT in modalità terminale. Poiché l’ho utilizzato durante lo sviluppo dello sketch, ho ritenuto utile lasciare anche questa possibilità.

Progetto 08: Scambio dati tra PC e Arduino via BT con HC-05

Proseguiamo con un ulteriore progetto di scambio dati, questa volta tra un PC ed Arduino via Bluetooth mediante il modulo HC-05. Questi sono progetti per imparare cose nuove e propedeutiche a ciò che ci servirà nei successivi progetti, per cui seguiteli che vi serviranno!

In sostanza questo progetto è quasi identico al precedente, le due differenze sostanziali che ci sono fra questi due progetti, cioè fra il Progetto 07 e il Progetto 08 è che in quest’ultimo utilizzeremo quale interfaccia un PC e realizzeremo un APP mediante Processing per interfacciarci con Arduino, per questo motivo, e qui la seconda differenza, dovremo modificare leggermente lo sketch su Arduino per far sì che i dati inviati dallo stesso Arduino siano leggibili da Processing.

Quindi lo scopo del progetto è sempre quello di rilevare umidità e temperatura di un ambiente tramite il modulo sensore DHT11 e trasmetterli al PC, quando richiesti, via BT con l’HC-05.

Per questo progetto ci occorre:

Lo schema di montaggio è identico a quello del progetto precedente:

Lo sketch da caricare su Arduino è:

Lo sketch da caricare su Processing è invece:

/*
BeMaker.org - BRACCIO ROBOTICO
Progetto 08 – SCAMBIO DATI TRA PC E ARDUINO VIA BT CON HA-05
*/
import processing.serial.*;            //Richiama libreria porta seriale in Processing
Serial myPort;                         //Crea oggetto myPort
String Pacchetto;                      //Definisce la variabile Pacchetto come stringa di caratteri che riceve da Arduino
String Stato;                          //Definisce la variabile Stato come stringa che sarà estratta dalla stringa Pacchetto
String Umidita;                        //Definisce la variabile Umidità come stringa che sarà estratta dalla stringa Pacchetto
String Temperatura;                    //Definisce la variabile Temperatura come stringa che sarà estratta dalla stringa Pacchetto
int m;                                 //Definisco la variabile m come intero che individua il primo carattere della substringa
int n;                                 //Definisco la variabile n come intero che individua la posizione del ";" quale ultimo carattere del substringa
void setup(){
  size(450, 500);                          //Crea una finestra 450x500
  myPort = new Serial(this, "COM9", 9600); // Inizializzazione comunicazione seriale (per Arduino Uno: 9600, la porta dipende dal PC)
  myPort.bufferUntil('\n');                // Definisce il carattere terminale della stringa da leggere
  myPort.write('s');                       //Viene inviato il carattere 's' alla porta BT per sincerarci che partiamo da una condizione nota
}
void serialEvent (Serial myPort){           // Controlla se ci sono dati sulla porta seriale
  Pacchetto = myPort.readStringUntil('\n'); //Legge la stringa proveniente da Arduino e la mette nella variabile Pacchetto
}
void draw(){
  background(255, 255, 0);             //Colore di sfondo: Giallo
  fill(0, 0, 255);                     //Colore di riempimento: Blu
  stroke(0);                           //Colore contorno: Nero
  strokeWeight(5);                     //Spessore contorno
  rect(50, 100, 150, 50, 10);          //Disegna rettangolo tasto ON
  rect(250, 100, 150, 50, 10);         //Disegna rettangolo tasto OFF
  fill(255);                           //Colore testo: Binaco 
  textSize(23);                        //Dimensione Testo (carattere default:Arial)
  text("DHT11 ON",65, 135);            //Posiziona scritta "DHT11 ON" nel rettangolo ON
  text("DHT11 OFF", 262, 135);         //Posiziona scritta "DHT11 OFF" nel rettangolo OFF
  textSize(30);                        //Dimensione testo
  fill(33);                            //Colore testo: Grigio scuro quasi nero
  text("Arduino dice:", 135, 200);     //Posiziona testo "Arduino dice:"
  textSize(16);                        //Dimensione testo
  text("WWW.BEMAKER.ORG", 150, 450);   //Posiziona testo "WWW.BEMAKER.ORG"
  textSize(25);                        //Dimensione testo
// Processo di decodifica dati da Arduino
//In questa sezione viene analizzata la stringa ricevuta ed estratte le substringhe definite sopra: Stato, Umidità, e Temperatura
  if (Pacchetto.length() > 0) {            //Se Pacchetto ha una lunghezza maggiore di zero, ovvero se c'è contenuto di caratteri allora si parte con l'estrazione
    m = 0;                                 //il primo carattere della substringa si trova nella posizione 0
    n = Pacchetto.indexOf(";");            //l'ultimo carattere della substringa si trova nella posizione individuata dal fine substringa
    Stato = Pacchetto.substring(m, n);     //La substringa Stato va dalla posizione 0 alla posizione n del primo ";"
    m=n+1;                                 //il primo carattere della nuova substringa si trova nella posizione n+1, cioè quella successiva al ";"
    n = Pacchetto.indexOf(";", n+1);       //la nuova posizione del secondo ";" viene cercata ovviamente dopo il primo già precedentemente trovato
    Umidita = Pacchetto.substring(m, n);   //La substringa Umidita va dalla precedente posizione n+1 alla nuova posizione n del secondo ";"
    m=n+1;                                 //il primo carattere della nuova substringa si trova nella posizione n+1, cioè quella successiva al secondo ";"
    n = Pacchetto.indexOf(";", n+1);       //la nuova posizione del terzo ";" viene cercata ovviamente dopo il secondo già precedentemente trovato
    Temperatura = Pacchetto.substring(m, n);//La substringa Temperatura va dalla precedente posizione n+1 alla nuova posizione n del terzo ";"
  }
  text("DHT11: ", 155, 240);                //Arduino ci dice se il DHT11 è acceso o spento
  text(Stato, 255, 240);                    //Posizione testo ricevuto da Arduino sullo stato del DHT11
  text("Umidità % : ", 50, 300);            //Arduino ci dice l'umidità rilevata dal DHT11, quando è spento restituisce NA cioè Non Disponibile
  text(Umidita, 260, 300);                  // Posizione testo ricevuto da Arduino sullo stato del DHT11
  text("Temperatura °C : ", 50, 360);       //Arduino ci dice la temperatura rilevata dal DHT11, quando è spento restituisce NA cioè Non Disponibile
  text(Temperatura, 260, 360);              // Posizione testo ricevuto da Arduino sullo stato del DHT11
  // Quando il tasto ON viene premuto
  if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
    myPort.write('a');                 //Viene inviato il carattere 'a' alla porta BT
    stroke(255,0,0);                   //Il contorno del tasto si colora di Rosso
    strokeWeight(10);                  //lo spessore del contorno diventa da 10
    noFill();                          //Nessun riempimento (trasparente)
    rect(50, 100, 150, 50, 10);        //rettangolo del tasto ON
    delay(2000);
  }
  // Quando il tasto OFF viene premuto
  if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
    myPort.write('s');                  //Viene inviato il carattere 's' alla porta BT
    stroke(255,0,0);                    //Il contorno del tasto si colora di Rosso
    strokeWeight(10);                   //lo spessore del contorno diventa da 10
    noFill();                           //Nessun riempimento (trasparente)
    rect(250, 100, 150, 50, 10);        //rettangolo del tasto OFF
    delay(2000);
  }
}

Il Video Progetto che segue mostra tutti i passaggi in dettaglio.

Analisi dello sketch del Progetto 08 - Scambio dati tra PC e Arduino via BT con HC-05

Per entrambi gli sketch, sia per quello da caricare su Arduino che per Processing, ogni riga di codice è commentata per cui vi invito a leggere i vari commenti, comunque in sintesi: Arduino legge i valori misurati dal DHT11 e crea una stringa di dati separati da “;” ed inviati alla porta seriale dove è collegato il BT. Processing riceve tale stringa e la decompone in substringhe per poi utilizzarne le singole parti per stampare i dati ricevuti.

Desidero solo farvi osservare due cose importanti, altrimenti rischiate che non vi funzioni il progetto:

  • La velocità di comunicazione per Arduino Uno sulla porte seriale BT è bene impostarla a 9600 baud
  • Nella riga:

myPort = new Serial(this, “COM9”, 9600);

          occorre inserire la porta COM di comunicazione con cui il vostro PC si connette con il modulo BT HC-05. Per scoprire quale porta trascrivere nel codice di Processing, innanzi tutto procedete con accoppiare il PC al Modulo via BT, andate su impostazioni e scegliete altri dispositivi BT e Aggiungi dispositivo BT:

Il risultato sarà che verrà aggiunto il modulo HC-05 tra i dispositivi associati. Sempre nella stessa sezione scorrete verso il basso e cliccate su Altre opzioni BT:

Compare la finestra sotto, cliccate su Porte COM:

E compare la finestra sotto con le indicazioni che ci servono.

Come potete osservare nel mio caso la porta di comunicazione è la COM 9.

Se hai trovato la lezione interessante fai una donazione mi aiuterai a realizzarne tante altre.