Az Arduino a HC-05 modul segítségével (master/slave) Bluetooth-on keresztül kommunikálhat más eszközökkel. Ez lehetővé teszi, hogy az Arduino csatlakozzon és adatokat cseréljen más eszközökkel, például okostelefonnal, számítógéppel vagy más mikrokontrollerekkel.A Bluetooth kommunikáció segítségével távolról vezérelhet egy robotot, megjeleníthet és tárolhat adatokat például a számítógépen vagy az okostelefonon.
Előfeltétel: Arduino soros kommunikáció
Anyag
- Számítógép
- Arduino UNO x2
- USB kábel
- Bluetooth modul HC-05 ZS-040 x2 (vagy 1x HC-05 és 1x HC-06)
- Dupont kábelek M/F
Modul HC-05 áttekintés
A Bluetooth modul HC-05 6 pinnel rendelkezik, 2 a tápellátáshoz, 2 a kapcsolat létrehozásához, 1 a konfigurációs módba való belépéshez, a másik pedig a kapcsolat állapotának megismeréséhez.
- VCC tápellátás. Általában az Arduino 5V-os tűjéhez csatlakozik.
- GND földelés. Általában az Arduino
- RX vételi csapjához csatlakozik. Általában az Arduino
- TX átviteli csapjára (TX) csatlakoztatva. Jellemzően az Arduino vételi csapjára (RX) csatlakoztatva
- A modul csatlakoztatásakor az állapot HIGH
- Key ou EN-t HIGH-ra (3,3V) kell állítani a konfigurációs módba való belépéshez, és le kell választani a kommunikációs módba való belépéshez.
A HC-05 különlegessége, hogy használható slave modulként (a HC-06-nak megfelelő) és master modulként is, ami azt jelenti, hogy önállóan is párosítható egy másik eszközzel.
Sémák a konfiguráláshoz
FIGYELEM :
- Az Arduino Uno 2. és 3. pinjét használjuk. A mikrokontrollertől függően előfordulhat, hogy egyes csapok nem támogatják a soros kommunikációt. Különösen az Arduino Mega, Micro és Leonardo. Ellenőrizze a dokumentációt.
- Mivel a Bluetooth modul 3,3V-os logikát használ, ajánlatos egy feszültségosztót hozzáadni az Arduino 5V-os feszültségének csökkentésére. (1k ellenállás a pin3 és az Rx között; 2k Ohm az Rx és a GND között).
A HC-05 modul konfigurálása
A HC-05 modul konfigurálása érdekes lehet annak ellenőrzésére, hogy működik-e, helyesen van-e csatlakoztatva, és hogy módosíthatók-e a paraméterei, például a neve (hasznos, ha több modult használ), a PIN-kód és a kommunikációs sebesség (baudrate). Különösen akkor, ha master-modulként kívánja használni. A konfigurálás lehetővé tételéhez a HC-05 modult táplálni kell, de nem kell párosítani, és a KEY/EN csapot HIGH értékre kell állítani a modul bekapcsolása előtt. Amikor konfigurációs módban van, a LED két másodpercenként két másodpercenként villogni fog.
Nyissa meg a soros monitort, és válassza ki a “New line” (Új vonal) opciót és a 9600-as baudrátát.
Megjegyezzük, hogy a HC-05 38400bps baudrátával lép konfigurációs módba.
Konfigurációs kód
A következő kód lehetővé teszi a paraméterek módosítását és ellenőrzését a soros monitor és az AT parancsok segítségével.
#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 } }}
AT-parancsok
A HC-05 a HC-06 modulhoz képest master-modulként használható, és az AT-parancsok segítségével ellenőrizheti a mentett paramétereket is.
Az AT+<parancs>? parancs beírása általában a mentett paramétert kéri (pl.: AT+PSWD? a modul PIN-kódját jeleníti meg). Ha beírja az AT+<command>=<Param> parancsot, akkor beállíthatja a paraméter értékét (pl.: AT+PWSD=0000 a PIN kód 0000-ra történő módosításához).
Itt van néhány AT-parancs:
- A kommunikáció teszteléséhez írja be az AT parancsot az Arduino IDE soros monitorába. Ha minden megfelelően van beállítva, akkor OK-t kell megjelenítenie.
- A modul nevének módosításához írja be az AT+NAME=<Param> parancsot. A modulnak OK-val kell válaszolnia (Defaut HC-05, Pl.: A név BTM1-re történő módosításához írja be az AT+NAME=BTM1-et).
- A PIN kód módosításához írja be az AT+PSWD=<Param> parancsot. A modulnak OK-val kell válaszolnia (alapértelmezett 1234 Pl.: A PIN kód 0000-ra történő módosításához adja be az AT+PSWD=0000).
- AT+ROLE=<Param> a modul szolga vagy mester szerepének beállításához (alapértelmezett 0, Pl.: a mester szerepének módosításához adja be az AT+ROLE=1-et, a szolga szerepének módosításához adja be az AT+ROLE=0-t).
- A baudrate módosításához adja meg az AT+UART=<Param1>,<Param2>,<Param3> parancsot a Param1, 2 és 3 soros kommunikációs paraméterekkel: baudrate, stop bit és paritás bit (Alapértelmezésben 9600,0,0. Például: a baudrate 115200-ra történő módosításához adja meg az AT+UART=115200,0,0,0 parancsot).
A HC-05 Bluetooth modulhoz további AT-parancsok is léteznek, amelyeket a linket követve talál.
FIGYELEM: A HC-05 modulnak különböző verziói léteznek, és a konfigurációs eljárás eltérő lehet. Használat előtt feltétlenül ellenőrizze a modul címkéjét és a firmware verzióját. Ehhez a bemutatóhoz a ZS-040 feliratú HC-05 modult és a 2.0-20100601 firmware-verziót használtuk.
N.B.: Ha a modul nem reagál, ellenőrizze a kábelezést, a kábelek vezetőképességét és a baudrátát.
Ne habozzon megjegyzést hagyni vagy kapcsolatba lépni velünk, ha problémái vannak a HC-05 modul konfigurálásával.
Slave konfiguráció
A modul slave-ként való beállításához megváltoztathatja a nevet AT+NAME=HC05-Slave néven, és kiválaszthatja a kívánt kommunikációs paramétereket és PIN-kódot. Meg kell győződnie arról, hogy a master és a slave azonos kommunikációs paraméterekkel rendelkezik.
- AT visszatér OK
- AT+NAME=HC05-Slave
- AT+UART=9600,0,0
- AT+ROLE=0
- A modul címének megadásához adja meg az AT+ADDR-t (pl.: +ADDR:98d3:32:21450e)
A szolga modulhoz HC-06 modult is használhat
Mester konfiguráció
A modul mesterré való beállításához meg kell változtatni a szerepet, és ugyanazt a kommunikációs paramétert kell beállítani, mint a szolga modulnál.
- AT visszatér OK
- AT+NAME=HC05-Master
- AT+UART=9600,0,0
- AT+ROLE=1
- A slave modul címét be kell írni a master modulba, hogy engedélyezze az alkalmazást: AT+BIND=98d3,32,21450e (a pontok “:” helyett vessző “,”)
Sémák a kommunikációhoz
A kommunikációs módban a Key/EN pin nincs csatlakoztatva.
Kommunikációs kód
Ha mindkét modul konfigurálva van, töltse fel a következő kódokat a modulokhoz csatlakoztatott Arduino lapokra. Kapcsolja be a modulokat a kommunikációs üzemmódba lépéshez. A master modulnak csatlakoznia kell a slave modulhoz, és a LED-nek másodpercenként villognia kell.
A HC-06 modulhoz használt SoftwareSerial.h könyvtárat használjuk:
- SoftwareSerial hc05(Rx,Tx) a soros port tűinek meghatározásához
- hc05.begin() a baudrate meghatározásához (az értéknek meg kell egyeznie a moduljával)
- hc05.available() a modul pufferében lévő adatok elérhetőségének teszteléséhez
- hc05.read() az adatok bájtonkénti beolvasásához
- hc05.print() egy ASCII formátumú karakterlánc elküldéséhez
- hc05.write() az adatok egy bájtonkénti elküldéséhez
Master kód
#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();}
Slave kód
#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();}
Ha mindkét soros monitort megnyitja, és ha a master lapmonitoron beír egy parancsot, a következő eredményeket kell látnia. A master kártya küld egy parancsot, amelyet a slave kártya fogad és visszaküld. A kommunikáció mindkét irányban megfelelően működik.
Ha problémái vannak a Bluetooth modulok konfigurálásával vagy párosításával, ne habozzon kapcsolatba lépni velünk, vagy hagyjon megjegyzést.
Alkalmazás
- Vezesse robotját távolról az okostelefonjával
- Hőmérsékletmérés küldése az okostelefonjára