Modulo Bluetooth
Transceiver Host Slave/Master
tipo HC-05

Ultimo aggiornamento 14 gennaio 2017


JLCPCB - 10 PCB per $ 2 (100 * 100 mm, 2-layer)
Il più grande produttore di PCB in Cina, oltre 600.000 clienti e oltre 10.000 ordini online al giorno
Produzione veloce in sole 24 ore e preventivo online gratuito: https://jlcpcb.com/quote


Indice

Descrizione

Il modulo Bluetooth HC-05  è uno dei moduli più popolari e poco costosi utilizzati per le comunicazioni RF, il suo costo è di meno di 10 € e risulta facile da implementare nei vostri progetti.
Il modulo ha una portata di 10 mt, e si imposta facilmente tramite comandi AT ed è programmabile sia come master che come slave a differenza del modello HC-06 che è solo utilizzabile come slave.
Il modulo permette di trasformare una porta UART\USART più comunemente conosciuta come seriale in una porta Bluetooth, generalmente con profilo SPP( Serial Port Profile), diventando cosi una seriale over Bluetooth.
Normalmente questo dispositivo viene usato quando si vuole far comunicare un microprocessore (MCU) per esempio un processore ATmel di norma montato su schede Arduino con il mondo esterno, dove il mondo esterno può essere un uno SmartPhone, un Personal Computer, o altro dispositivo fornito di una connessione Bluetooth.
Il modulo può essere trovato sia come semplice componente oppure già montato su una scheda di breakout, il consiglio è di optare per la seconda soluzione.

nel secondo caso, infatti. il modulo è montato su una piccola basetta su cui sono presenti un regolatore LDV - 662k e un LED che indica lo stato del dispositivo. Sull'altro lato è possibile vedere una descrizione e funzione di ciascun pin e l'indirizzo internet del fabbricante
La tensione di alimentazione può essere compresa tra i 3,6Vdc e i 6Vdc, mentre le linee dati sono a 3,3Vdc, il peso dell'oggetto è di 5 gr.

 

NOTA: Attenzione in commercio esistono svariate versioni di moduli HC-05, la piedinatura non è standard, quindi prestare attenzione quando effettuate i collegamenti e fate riferimento alle indicazioni relative al vostro modello.

Caratteristiche tecniche

Atri modelli di moduli bluetooth

Il modulo RBT-001 è un Bluetooth 2.0, misura solamente 29x29mm. Modulo Easy Bluetooth per effettuare collegamenti senza fili.
Permette un facile interfacciamento con il modulo RBT-001
Il modulo BlueSMiRF Silver è un modulo di ricetrasmissione di tipo Bluetooth con velocità di trasmissione da 2400 a 115200 bps, alimentazione da 3,3 V a 6V

Schema base di collegamento

Vediamo ora lo schema minino di collegamento tra il modulo SH-05 e una scheda Arduino UNO, dato che le linee dati sono a 3.3V mentre quelle di Arduino sono a 5V, sarà necessario inserire un partitore per ridurre la tensione in ingresso sul pin RX del modulo SH-05, mentre questo non sarà necessario sul pin TX.
In teoria si ha che se R1=R2 qualsiasi sia il loro valore quello che ottiene è un partitore di tensione simmetrico ossia applicando in ingresso 10V in uscita si avranno 5V, variando il rapporto tra R1 ed R2 a favore di R1 ( R1 > R2 ) in uscita al partitore di tensione si avrà una tensione di uscita inferiore a Vi/2; variando il rapporto a favore di R2 ( R1 < R2 ) si ottiene una Vo > Vi/2.

Dato che dobbiamo avere in uscita una tensione inferiore ai 3.3V partendo da una tensione di 5V, si è optato per un valore di R1 pari a 1.2kΩ e R2= 2.2 kΩ, con un rapporto pari a 0,545 il che garantisce un valore della tensione in uscita pari a 3.2V

PARTI:

Arduino uno Breadboard
Modulo HC-05 Cavetti per Breadboard di vari colori
1 resistenza da 1,2 kΩ (marrone, rosso, rosso) 1 resistenza da 2,2 kΩ (rosso, rosso, rosso)

Codice del programma di test

Vediamo un primo test che ci permetterà di verificare il funzionamento del modulo e la verifica di alcuni suoi parametri.

Programma  Test_HC-05.ino
/*
  Test_HC-05.ino
  Il programma testa il funzionamento del modulo
  Bluetooth tipo HC-05

  Sono utilizzati i seguenti pin
  Pin +3.3V         -> Alimentazione modulo HC-05
  Pin GND           -> GND modulo HC-05
  Pin Digital 9     -> Abilita modalità Command AT
  Pin Digital 10    -> RX HC-05
  Pin Digital 11    -> TX HC-05

  Creato il 08/01/2017 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

void setup()
{
  pinMode(9, OUTPUT);  // questo pin è connesso al relativo pin 34 (pin KEY) del HC-05
  // che portato a HIGH permette di passare alla modalità AT
  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Inserire i comandi AT:");
  BTSerial.begin(38400);  // Velocità di default del modulo HC-05
}

void loop()
{
  // Continua a leggere da HC-05 e invia Serial Monitor Arduino
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Continua a leggere da Arduino Serial Monitor e invia a HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}

Commutazione del modulo HC-05 in command mode

Passi per commutare impostare il modulo HC-05 in modalità command mode
Per il modulo HC-05 per passare alla modalità di comando AT, il pin HC-05 (spesso indicato come il Pin Key) deve essere posto a livello HIGH ma come di seguito mostrato.
Quando il modulo l'HC-05 entra in modalità di comando AT, comunicherà di default a 38400 baud rate.

Esempio Comandi AT per HC-05

È possibile inviare comandi AT al HC-05 dal Serial Monitor IDE Arduino mentre sulla scheda Arduino è in esecuzione il programma.
Vediamo alcuni comandi AT dei più popolari che permettono per esempio di cambiare il nome del dispositivo, modificare il codice di sicurezza, variare la velocità di comunicazione. Per la serie completa dei comandi AT vedere l'elenco.

NOTA: (rimuovere le virgolette dal comando AT)

Elenco comandi AT

Comandi AT

Funzione del comando

AT

Testa la connessione all’interfaccia AT

AT + reset

Resetta il nostro componente

AT + version

Comunica la versione del firmware

AT + orgl

Riporta le impostazioni correnti alle predefinite

AT + addr

Il dispositivo ci comunica il proprio indirizzo

AT + name

Domandiamo o impostiamo il nome del dispositivo

AT + rname

Domandiamo il nome di un dispositivo bluetooth a cui siamo collegati (remoto)

AT + role

Domandiamo o impostiamo il ruolo del dispositivo (1=Master / 0=Slave)

AT + class

Domandiamo o impostiamo la classe del dispositivo ( Classe of Device CoD)

AT + iac

Domandiamo o impostiamo le richieste del codice di accesso

AT + inqm

Domandiamo o impostiamo le richieste della modalità di accesso

AT + pswd

Domandiamo la password o ne impostiamo l’associazione

AT + uart

Domandiamo i parametri UART o li reimpostiamo

AT + cmode

Domandiamo la modalità di connessione o la impostiamo

AT + bind

Domandiamo o impostiamo l’associazione all’indirizzo del bluetooth

AT + polar

Domandiamo o impostiamo la polarità di output del LED

AT + pio

Impostiamo o resettiamo un pin di Input/Output (I/O) utente

AT + mpio

Impostiamo o resettiamo più pin di I/O utente

AT + mpio?

Domandiamo l’I/O di un pin utente

AT + ipscan

Domandiamo o impostiamo i parametri di scansione

AT + sniff

Domandiamo o impostiamo i parametri di risparmio energetico SNIFF

AT + senm

Domandiamo o impostiamo i modi di sicurezza e crittografia

AT + rmsad

Elimina un dispositivo autenticato dalla lista

AT + fsad

Trova un dispositivo dalla lista dei dispositivi autenticati

AT + adcn

Domandiamo il numero totale dei dispositivi dalla lista dei dispositivi autenticati

AT + mrad

Domandiamo quale è il dispositivo autenticato utilizzato più di recente

AT + state

Domandiamo lo stato corrente del dispositivo

AT + init

Inizializziamo il profilo SPP (ricerca)

AT + inq

Domandiamo quale sia il dispositivo individuabile più vicino

AT + inqc

Cancelliamo la ricerca dei dispositivi individuabili

AT + pair

Associazione al dispositivo

AT + link

Connessione ad un dispositivo remoto

AT + disc

Disconnessione da un dispositivo remoto

AT + ensniff

Entriamo in modalità risparmio energetico

AT + exsniff

Usciamo dalla modalità di risparmio energetico

 

Comandiamo un relè e misuriamo la temperatura con una connessione Bluetooth

Vediamo ora un'applicazione più complessa, in cui tramite l'utilizzo di una speciale APP, possiamo comandare un relè e leggere la temperatura misurata da un sensore LM35.

PARTI:

Arduino uno Breadboard
Modulo HC-05 Cavetti per Breadboard di vari colori
1 resistenza da 1,2 kΩ (marrone, rosso, rosso) 1 resistenza da 2,2 kΩ (rosso, rosso, rosso)
KY-019 5V relay module Sensore LM35

 

LM 35 Sensore di temperatura di precisione (Gradi centigradi)


Codice RS  533-5907
Piedinatura Datasheet

 

Programma  HC-05_rele.ino

 

/*
  HC-05_rele.ino
  Il programma accende e spegne un relè e misura la temperatura
  tramite un collegamento bluetooth tipo HC-05

  Sono utilizzati i seguenti pin
  Pin 5.0V          -> Alimentazione modulo HC-05,LM35, rele'
  Pin GND           -> GND modulo HC-05,LM35, rele'
  Pin Digital 8     -> Modulo rele'
  Pin Analogico A0  -> Sensore LM35
  Pin Digital 10    -> RX HC-05
  Pin Digital 11    -> TX HC-05

  Creato il 08/01/2017 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
float tempC;
int PinTemp = 0;
int rele = 8;

void setup()
{
  pinMode(rele, OUTPUT);  // questo pin è connesso al relè
  digitalWrite(rele, HIGH);
  Serial.begin(9600);
  BTSerial.begin(38400);  // Velocità di default del modulo HC-05
  Serial.println("Comando rele' e rilevazione temperatuira con LM 35");
  Serial.println("tramite collegamento Bluetooth mod.HC-05");
  Serial.println("By adrirobot");
  delay (2000);
}

void loop()
{
  tempC = analogRead (PinTemp);
  tempC = (5.0 * tempC * 100.0) / 1024.0;
  Serial.println (tempC);
  delay (1000);
  while (BTSerial.available())
  {
    char dato = BTSerial.read(); // "dato" è il valore che viene ricevuto dalla seriale
    switch (dato)
    {
      case 'A': // Se riceve la lettera A
        // accende rele'
        {
          digitalWrite(rele, LOW); // eccito il relè collegato al pin8
          BTSerial.println("Rele' ON");
          Serial.println("Rele' ON");
          break;
        }
      case 'S': // Se riceve la lettera S
        // Spegne rele'
        {
          digitalWrite(rele, HIGH); // Spengo il relè
          BTSerial.println("Rele' OFF");
          Serial.println("Rele' OFF");
          break;
        }
      case 'T': // Se ricevo la lettera T
        // trasmette la temperatura
        {
          BTSerial.print("Temperatura:");
          BTSerial.println(tempC);
          break;
        }
    }
  }
}

 

App Bluetooth Terminal HC-05

L'applicazione utilizzata è la "Bluetooth Terminal HC-05" è potrà essere scaricata da Google Play.
L'applicazione è compatibile con gli Smartphone Android è compatibile con tutti i controller, come Arduino, Raspberry Pi, AVR, PIC, ARM così come i controllori TI.
Tutto ciò che serve è una connessione adattatore seriale HC-05/ HC-06 con porte seriali dei controllori.
Questa applicazione può inviare e ricevere comandi via Bluetooth in modo da poter eseguire il debug dei sistemi hardware facilmente.
In questo caso si sono utilizzati tre dei tasti, definendo per ognuno la lettera assegnata nel codice di Arduino, da da inviare alla pressione del tasto.

A ogni pressione Arduino eseguirà il comando e risponderà con la frase appropriata o con il valore di temperatura letto dal sensore.

Alcune caratteristiche

Elenco revisioni

14/01/2017

Emissione preliminare