4.5
(2)

Arduino poate comunica cu alte dispozitive prin Bluetooth folosind modulul HC-05 (master/slave). Acesta permite Arduino să se conecteze și să facă schimb de date cu alte dispozitive, cum ar fi smartphone-uri, computere sau alte microcontrolere. comunicarea Bluetooth poate fi utilizată pentru a controla un robot de la distanță, pentru a afișa și stoca date pe computer sau pe smartphone, de exemplu.

Precondiții: Arduino Comunicare serială

Materiale

  • Computer
  • Arduino UNO x2
  • Cablu USB
  • Modul Bluetooth HC-05 ZS-040 x2 (sau 1x HC-…05 și 1x HC-06)
  • Cabluri duplex M/F

Prezentare generală a modulului HC-05

Modulul Bluetooth HC-05 are 6 pini, 2 pentru alimentare, 2 pentru a stabili conexiunea, 1 pentru a intra în modul de configurare și celălalt pentru a cunoaște starea conexiunii.

  • Alimentare VCC. Conectată de obicei la pinul de 5V al Arduino.
  • GND masă. Conectat de obicei la pinul GND al Arduino
  • Pin de recepție RX. Conectat în mod obișnuit la pinul de transmisie (TX) al Arduino
  • TX pin de transmisie. Conectat de obicei la pinul de recepție (RX) al Arduino
  • Starea este HIGH atunci când modulul este conectat
  • Tasta ou EN trebuie să fie setată la HIGH (3,3V) pentru a intra în modul de configurare și trebuie deconectată pentru a intra în modul de comunicare.

Particularitatea HC-05 este că poate fi utilizat ca modul sclav (echivalent cu HC-06) și ca modul maestru, ceea ce înseamnă că se poate împerechea singur cu un alt dispozitiv pe cont propriu.

Schematică pentru configurare

Atenție :

  • Utilizăm pinii 2 și 3 ai Arduino Uno. În funcție de microcontroler, este posibil ca unii pini să nu suporte comunicarea serială. În special, Arduino Mega, Micro și Leonardo. Verificați documentația.
  • Din moment ce modulul Bluetooth utilizează o logică de 3,3V, este recomandat să adăugați un divizor de tensiune pentru a reduce tensiunea de 5V de la Arduino. (rezistență de 1k între pin3 și Rx; 2k Ohm între Rx și GND).

Configurarea modulului HC-05

Configurarea modulului HC-05 poate fi interesantă pentru a verifica dacă acesta funcționează, dacă este conectat corect și pentru a-i modifica parametrii, cum ar fi numele (util atunci când utilizați mai multe module), codul PIN și viteza de comunicare (baudrate). Mai ales dacă doriți să îl utilizați ca modul master. Pentru a permite configurarea, modulul HC-05 trebuie să fie alimentat, dar nu trebuie să fie cuplat, iar pinul KEY/EN trebuie să fie setat la HIGH înainte ca modulul să fie pornit. Când se află în modul de configurare, LED-ul va clipi două secunde la fiecare două secunde.

Deschideți monitorul serial și selectați opțiunea de sfârșit de linie „New line” și o rată de baudrate de 9600.

Rețineți că HC-05 intră în modul de configurare cu o rată de baudrate de 38400bps.

Cod de configurare

Codul următor vă permite să modificați și să verificați parametrii folosind monitorul serial și comenzile AT.

#include <SoftwareSerial.h>#define rxPin 2#define txPin 3#define baudrate 38400String msg;SoftwareSerial hc05(rxPin ,txPin);void setup(){ pinMode(rxPin,INPUT); pinMode(txPin,OUTPUT); Serial.begin(9600); Serial.println("ENTER AT Commands:"); hc05.begin(baudrate);}void loop(){ readSerialPort(); if(msg!="") hc05.println(msg); if (hc05.available()>0){ Serial.write(hc05.read()); }}void readSerialPort(){ msg=""; while (Serial.available()) { delay(10); if (Serial.available() >0) { char c = Serial.read(); //gets one byte from serial buffer msg += c; //makes the string readString } }}

Comande AT

În comparație cu modulul HC-06, HC-05 poate fi utilizat ca modul master și puteți, de asemenea, să verificați parametrii salvați folosind comenzile AT.

În general, tastând comanda AT+<comandă>? se va solicita parametrul salvat (ex: AT+PSWD? va afișa codul PIN al modulului). Dacă introduceți AT+<comandă>=<Param>, puteți seta valoarea parametrului (ex: AT+PWSD=0000 pentru a modifica codul PIN la 0000).

Iată câteva dintre comenzile AT:

  • Pentru a testa comunicarea, introduceți AT în monitorul serial al Arduino IDE. Dacă totul este configurat corect, ar trebui să se afișeze OK.
  • Pentru a modifica numele modulului, introduceți AT+NAME=<Param>. Modulul ar trebui să răspundă OK (Defaut HC-05, Ex: Pentru a schimba numele în BTM1 introduceți AT+NAME=BTM1).
  • Pentru a modifica codul PIN, introduceți AT+PSWD=<Param> . Modulul ar trebui să răspundă OK(Default 1234 Ex: Pentru a schimba PIN-ul în 0000 introduceți AT+PSWD=0000).
  • AT+ROLE=<Param> pentru a modifica rolul modulului ca sclav sau maestru (Default 0, Ex: pentru a schimba rolul ca maestru introduceți AT+ROLE=1, ca sclav introduceți AT+ROLE=0).
  • Pentru a modifica baudrate, introduceți AT+UART=<Param1>,<Param2>,<Param3> cu parametrii de comunicație serială Param1, 2 și 3: baudrate, bit de oprire și respectiv bit de paritate (În mod implicit, setat la 9600,0,0. Ex: pentru a modifica baudrate la 115200 introduceți AT+UART=115200,0,0).

Există și alte comenzi AT pentru modulul Bluetooth HC-05 pe care le puteți găsi urmând link-ul.

ATENȚIE: Există diferite versiuni ale modulului HC-05 și procedura de configurare poate varia. Asigurați-vă că verificați eticheta modulului și versiunea firmware înainte de utilizare. Pentru acest tutorial, am folosit un modul HC-05 etichetat ZS-040 și versiunea de firmware 2.0-20100601.

N.B.: Dacă modulul nu răspunde, verificați cablajul, conductivitatea cablurilor și baudrate.

Nu ezitați să lăsați un comentariu sau să ne contactați dacă aveți probleme la configurarea modulului HC-05.

Configurare sclav

Pentru a seta modulul ca sclav, puteți schimba numele ca AT+NAME=HC05-Slave și alegeți parametrii de comunicare și codul PIN pe care îl doriți. Va trebui să vă asigurați că maestrul și sclavul ca aceiași parametri de comunicare.

  • AT revine OK
  • AT+NAME=HC05-Slave
  • AT+UART=9600,0,0
  • AT+ROLE=0
  • Introduceți AT+ADDR pentru a obține adresa modulului (ex: +ADDR:98d3:32:21450e)

Pentru modulul sclav, puteți utiliza și un modul HC-06

Configurare master

Pentru a seta modulul ca master, trebuie să schimbați rolul și să setați același parametru de comunicare ca și modulul sclav.

  • AT returnează OK
  • AT+NAME=HC05-Master
  • AT+UART=9600,0,0
  • AT+ROLE=1
  • Adresa modulului sclav trebuie introdusă în modulul maestru pentru a-i permite acestuia să se apără: AT+BIND=98d3,32,21450e (înlocuiți punctele „:” cu virgulă „,”)

Schematică pentru comunicare

În modul de comunicare, pinul Key/EN nu este conectat.

Cod de comunicare

După ce ambele module sunt configurate, încărcați următoarele coduri în plăcile Arduino conectate la modulele dumneavoastră. Porniți modulele pentru a intra în modul de comunicare. Modulul master ar trebui să se conecteze la modulul slave și LED-ul ar trebui să clipească la fiecare secundă.

Utilizăm aceeași bibliotecă SoftwareSerial.h ca și pentru modulul HC-06:

  • SoftwareSerial hc05(Rx,Tx) pentru a defini pinii portului serial
  • hc05.begin() pentru a defini viteza de transmisie (valoarea ar trebui să fie aceeași cu cea a modulului dumneavoastră)
  • hc05.available() pentru a testa dacă datele sunt disponibile în buffer-ul modulului
  • hc05.read() pentru a citi datele câte un octet pe rând
  • hc05.print() pentru a trimite un șir de caractere în format ASCII
  • hc05.write() pentru a trimite date câte un octet la un moment dat

Codul Master

#include <SoftwareSerial.h>SoftwareSerial ArduinoSlave(2,3);String answer;String msg;void setup(){Serial.begin(9600);Serial.println("ENTER Commands:");ArduinoSlave.begin(9600);}void loop(){//Read command from monitorreadSerialPort();//Read answer from slavewhile (ArduinoSlave.available()) {delay(10); if (ArduinoSlave.available() >0) {char c = ArduinoSlave.read(); //gets one byte from serial bufferanswer += c; //makes the string readString}}//Send data to slaveif(msg!=""){Serial.print("Master sent : ");Serial.println(msg);ArduinoSlave.print(msg);msg="";}//Send answer to monitorif(answer!=""){Serial.print("Slave recieved : ");Serial.println(answer);answer="";}}void readSerialPort(){while (Serial.available()) {delay(10); if (Serial.available() >0) {char c = Serial.read(); //gets one byte from serial buffermsg += c; //makes the string readString}}Serial.flush();}

Codul Slave

#include <SoftwareSerial.h>SoftwareSerial ArduinoMaster(2,3);String msg;void setup(){Serial.begin(9600);ArduinoMaster.begin(9600); }void loop(){readSerialPort();// Send answer to masterif(msg!=""){Serial.print("Master sent : " );Serial.println(msg);ArduinoMaster.print(msg);msg=""; }}void readSerialPort(){while (ArduinoMaster.available()) {delay(10); if (ArduinoMaster.available() >0) {char c = ArduinoMaster.read(); //gets one byte from serial buffermsg += c; //makes the string readString}}ArduinoMaster.flush();}

Dacă deschideți ambele monitoare seriale și dacă introduceți o comandă în monitorul plăcii master, ar trebui să vedeți următoarele rezultate. Placa master trimite o comandă care este recepționată și trimisă înapoi de către placa slave. Comunicațiile funcționează corect în ambele direcții.

Dacă aveți probleme cu configurarea sau împerecherea modulelor Bluetooth, nu ezitați să ne contactați sau să lăsați un comentariu.

Aplicație

  • Conduceți robotul la distanță cu ajutorul smartphone-ului
  • Transmiteți măsurarea temperaturii către smartphone

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.