Arduino invio dati sensore tramite Bluetooth HC-05

Sulla scia del precedente articolo, ecco una semplice implementazione per eseguire l’invio di dati da un sensore analogico tramite Bluetooth.
Per non riscrivere le stesse cose del precedente articolo, se non lo hai ancora fatto, ti consiglio di leggerlo.

    Materiale occorrente:

  • Al solito un Arduino;
  • Un modulo HC-05 (anche HC-06 va bene);
  • Un potenziometro;
  • Una resistenza da 220 ohm; (facoltativa)
  • Un led; (facoltativo)

Collegamento

Come già detto nell’articolo precedente, il modulo HC-05, ha sei pin (KEY, RX, TX, VCC, GND, STATE):

  • KEY: serve a settare il modulo per la comunicazione tramite comandi AT. Per il nostro esempio non ci servirà;
  • RX e TX: i pin deputati allo scambio dei dati;
  • Vcc e GND: pin di alimentazione del modulo HC-05, da 3,3 a 6 Volt;
  • STATE: pin di output che passa dallo stato LOW allo stato HIGH quando il modulo è connesso. Ci attaccheremo un LED just for;

Qui di seguito lo schema dei collegamenti.

Il potenziometro simula un sensore

Il potenziometro simula un sensore

Il codice

Il codice è abbastanza semplice e simile a quello dell’articolo precedente. Una cosa interessante da notare e che non molti usano fare, è il controllo del valore che determina l’invio o meno dell’informazione. Creando una variabile locale chiamata ultimaRilevazione, conservo l’ultima lettura effettuata dal sensore (che nel mio esempio è simulato dal potenziometro) per poi confrontarla con quella effettuata durante il ciclo loop del programma. Nel caso in cui il valore di ultimaRilevazione ed il valore della lettura corrente siano uguali, il sensore non avrà rilevato nessuna variazione, quindi, inviare il dato sarebbe una perdita di tempo, ed un consumo inutile di risorse. Viceversa, se i valori dovessero essere diversi, il sensore avrà notato una variazione, in questo caso, l’informazione dovrà essere inviata.
Ecco il codice:

/*
   Arduino Bluetooth HC-05 Invio di dati Analogici
   Semplice programmino per vedere come Arduino scambia dati prelevati da un sensore analogico e li invia tramite il modulo bluetooth HC-05
   Autore  : Andrea Lombardo
   Web     : http://www.lombardoandrea.com
   Post    : http://adf.ly/12267939/arduino-hc-05-invio-dati-sensore
   Git     : https://github.com/AndreaLombardo/Arduino-HC-05_Invio_Analog_Data
*/

//Includo libreria SoftwareSerial
#include <SoftwareSerial.h>

//definisco pin RX e TX da Arduino verso modulo BT
#define BT_TX_PIN 12
#define BT_RX_PIN 11
//definisco il pin del sensore analogico
#define PIN_SENSORE A0

//istanzio oggetto SoftwareSerial (il nostro futuro bluetooth)
SoftwareSerial bt =  SoftwareSerial(BT_RX_PIN, BT_TX_PIN);

int ultimaRilevazione = -1;

void setup() {

  //definisco modalità pin
  pinMode(BT_RX_PIN, INPUT);
  pinMode(BT_TX_PIN, OUTPUT);
  pinMode(PIN_SENSORE, INPUT);

  //inizializzo comunicazione Bluetooth
  bt.begin(9600);

}

void loop() {
  
  //leggo il dato dal sensore, e se diverso dall'ultima lettura lo invio al Bluetooth
  int dato = analogRead(PIN_SENSORE);
  
  if (dato != ultimaRilevazione) {
    //store dell'ultima rilevazione
    ultimaRilevazione = dato;
    bt.println(dato);
  }

  //ricontrollo ogni 1 secondo
  delay(1000);
}

Per quanto riguarda la visualizzazione dei dati ti rimando all’articolo precedente dove spiego come usare l’App Android Bluetooth Electronics.
Detto questo, buon montaggio e buon esperimento!

    Come sempre

  • Assicurati che tutti i collegamenti siano corretti;
  • Ricordati di impostare la porta COM del tuo Arduino;
  • E ricorda che io non mi assumo nessuna responsabilità per eventuali danni o disastri che causi 😀

Puoi clonare il progetto da GitHub o scaricare il file zip!

Approfondimenti

Prodotti Amazon

Ricerche che hanno riportato a questa pagina: