4.5
(2)

Arduino voi kommunikoida Bluetooth-moduulin HC-05 avulla muiden laitteiden kanssa Bluetoothin välityksellä (isäntä/orja). Sen avulla Arduino voi muodostaa yhteyden ja vaihtaa tietoja muiden laitteiden, kuten älypuhelimen, tietokoneen tai muiden mikrokontrollereiden kanssa.Bluetooth-viestintää voidaan käyttää esimerkiksi robotin etähallintaan, tietojen näyttämiseen ja tallentamiseen tietokoneelle tai älypuhelimeen.

Edellytys: Arduino Sarjaliikenne

Materiaali

  • Tietokone
  • Arduino UNO x2
  • USB-kaapeli
  • Bluetooth-moduuli HC-05 ZS-040 x2 (tai 1x HC-05 ja 1x HC-06)
  • Dupont-kaapelit M/F

Moduulin HC-05 yleiskuvaus

Bluetooth-moduulissa HC-05 on 6 pinniä, 2 virransyöttöä varten, 2 yhteyden muodostamista varten, 1 konfigurointitilaan siirtymistä varten ja yksi yhteyden tilan tiedottamista varten.

  • VCC virransyöttö. Kytketään tyypillisesti Arduinon 5V-pinniin.
  • ND maa. Kytketään tyypillisesti Arduinon GND-pinniin
  • RX-vastaanottopinni. Tyypillisesti kytketty Arduinon lähetyspinniin (TX)
  • TX-lähetyspinni. Tyypillisesti kytketty Arduinon vastaanottotappiin (RX)
  • Tila on HIGH, kun moduuli on kytketty
  • Key ou EN on asetettava HIGH:iin (3,3 V) konfigurointitilaan siirtymiseksi, ja se on irrotettava kommunikointitilaan siirtymiseksi.

HC-05:n erityispiirre on, että sitä voidaan käyttää orjamoduulina (vastaa HC-06:ta) ja master-moduulina, mikä tarkoittaa, että se voi muodostaa pariliitoksen toisen laitteen kanssa yksinään.

Skeemapiirros konfigurointia varten

VAROITUS :

  • Käytämme Arduino Unon nastoja 2 ja 3. Mikrokontrollerista riippuen jotkin nastat eivät välttämättä tue sarjaliikennettä. Erityisesti Arduino Mega, Micro ja Leonardo. Tarkista dokumentaatio.
  • Koska Bluetooth-moduuli käyttää 3,3 V:n logiikkaa, on suositeltavaa lisätä jännitteenjakaja Arduinon 5 V:n jännitteen vähentämiseksi. (vastus 1k pin3:n ja Rx:n välillä; 2k Ohm Rx:n ja GND:n välillä).

Moduulin HC-05 konfigurointi

Moduulin HC-05 konfigurointi voi olla mielenkiintoista, kun halutaan varmistua siitä, että moduuli toimii, että se on kytketty kunnolla ja että sen parametreja voidaan muuttaa, kuten sen nimeä (hyödyllinen, kun käytetään useita moduuleja), PIN-koodia ja tiedonsiirtonopeutta (baudinopeutta). Erityisesti jos sitä halutaan käyttää master-moduulina. Jotta konfigurointi olisi mahdollista, moduuliin HC-05 on kytkettävä virta, mutta ei pariliitosta, ja KEY/EN-piikki on asetettava HIGH-asentoon ennen kuin moduuli kytketään päälle. Kun olet konfigurointitilassa, LED vilkkuu kaksi sekuntia kahden sekunnin välein.

Avaa sarjamonitori ja valitse loppulinjavaihtoehto ”Uusi linja” ja baudinopeudeksi 9600.

Huomaa, että HC-05 siirtyy konfigurointitilaan, kun baudinopeus on 38400bps.

Konfigurointikoodi

Ohjeessa on seuraava koodi, jonka avulla voit modifioida parametreja ja tarkastaa ne sarjamonitorin ja AT-käskyjen avulla.

#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-komennot

Vertailtuna moduuliin HC-06, HC-05:tä voidaan käyttää master-moduulina, ja voit myös tarkistaa tallennetut parametrit AT-komennoilla.

Yleisesti, kun kirjoitat komennon AT+<komento>? kysyy tallennetun parametrin (esim. AT+PSWD? näyttää moduulin PIN-koodin). Jos kirjoitat AT+<command>=<Param>, voit asettaa parametrin arvon (esim: AT+PWSD=0000 muuttaaksesi PIN-koodin 0000:ksi).

Tässä on joitain AT-komentoja:

  • Testaaksesi tiedonsiirtoa kirjoita AT Arduino IDE:n sarjavalvontamonitoriin. Jos kaikki on asetettu oikein, sen pitäisi näyttää OK.
  • Muuttamaan moduulin nimeä, syötä AT+NAME=<Param>. Moduulin pitäisi vastata OK (Defaut HC-05, Esim: Jos haluat muuttaa nimen BTM1:ksi, syötä AT+NAME=BTM1).
  • PIN-koodin muuttamiseksi syötä AT+PSWD=<Param> . Moduulin pitäisi vastata OK (Oletus 1234 Esim: Jos haluat muuttaa PIN-koodin 0000:ksi, kirjoita AT+PSWD=0000).
  • AT+ROLE=<Param> moduulin roolin vaihtamiseksi orja- tai päällikkörooliksi (Oletus 0, Esim: jos haluat vaihtaa roolin päällikkörooliksi, kirjoita AT+ROLE=1, ja jos haluat vaihtaa roolin päälliköksi, kirjoita AT+ROLE=0).
  • Muuttaaksesi baudinopeutta, syötä AT+UART=<Param1>,<Param2>,<Param3> Param1, 2 ja 3 sarjaliikenneparametreilla: baudinopeus, stopbitti ja pariteettibitti (Oletusarvoisesti asetettu 9600,0,0. Esim: jos haluat muuttaa baudinopeuden 115200:ksi, kirjoita AT+UART=115200,0,0).

Bluetooth-moduulille HC-05 on olemassa muitakin AT-komentoja, jotka löytyvät linkin takaa.

VALVONTA: Moduulista HC-05 on olemassa eri versioita, ja konfigurointimenettely voi vaihdella. Muista tarkistaa moduulin etiketti ja laiteohjelmistoversio ennen käyttöä. Tässä ohjeessa käytimme moduulia HC-05, jonka merkintä on ZS-040 ja firmware-versio 2.0-20100601.

N.B.: Jos moduuli ei vastaa, tarkista johdotus, kaapeleiden johtavuus ja baudinopeus.

Älkää epäröikö jättää kommenttia tai ottaa yhteyttä meihin, jos HC-05-moduulin konfiguroinnissa on ongelmia.

Slave-konfigurointi

Asettaaksesi moduulin orjaksi, voit muuttaa nimeksi AT+NAME=HC05-Slave ja valita haluamasi viestintäparametrit ja PIN-koodin. Sinun on varmistettava, että master- ja slave-moduulilla on samat viestintäparametrit.

  • AT palaa OK
  • AT+NAME=HC05-Slave
  • AT+UART=9600,0,0
  • AT+ROLE=0
  • Syötä AT+ADDR saadaksesi moduulin osoitteen (esim. +ADDR:98d3:32:21450e)

Orjamoduulina voit käyttää myös HC-06-moduulia

Master-konfigurointi

Moduulin asettaminen masteriksi edellyttää roolin muuttamista ja samojen kommunikaatioparametrien asettamista kuin orjamoduulin.

  • AT palaa OK
  • AT+NAME=HC05-Master
  • AT+UART=9600,0,0
  • AT+ROLE=1
  • Slave-moduulin osoite on syötettävä master-moduulin kohdalle, jotta se voi käyttää: AT+BIND=98d3,32,21450e (korvaa pisteet ”:” pilkulla ”,”)

Kommunikaatiokaavio

Kommunikaatiotilassa Key/EN-pinni ei ole kytkettynä.

Kommunikaatiokoodi

Kun molemmat moduulit on konfiguroitu, lataa moduulien yhteyteen kytkettyihin Arduinon piirilevyihisi seuraavat koodit sisään. Kytke moduulit päälle siirtyäksesi kommunikointitilaan. Master-moduulin pitäisi muodostaa yhteys slave-moduuliin ja LEDin pitäisi vilkkua joka sekunti.

Käytämme samaa kirjastoa SoftwareSerial.h kuin HC-06-moduulissa:

  • SoftwareSerial hc05(Rx,Tx) määritelläksesi sarjaportin nastat
  • hc05.begin() määritelläksesi baudinopeuden (arvon pitäisi olla sama kuin moduulissasi)
  • hc05.available() testataksesi, onko moduulin puskurissa dataa saatavilla
  • hc05.read() lukeaksesi dataa tavu kerrallaan
  • hc05.print() lähettäksesi merkkijonon ASCII-muodossa
  • hc05.write() lähettääksesi dataa yksi tavu kerrallaan

Master-koodi

#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-koodi

#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();}

Jos avaat molemmat sarjavalvontamonitorit ja jos syötät komennon master-piirilevyn monitoriin, sinun pitäisi nähdä seuraavat tulokset. Master-kortti lähettää komennon, jonka slave-kortti vastaanottaa ja lähettää takaisin. Tietoliikenne toimii oikein molempiin suuntiin.

Jos sinulla on ongelmia Bluetooth-moduulien konfiguroinnissa tai pariliitoksessa, ota meihin yhteyttä tai jätä kommentti.

Sovellus

  • Aja robottia etänä älypuhelimellasi
  • Lämpötilamittausten lähettäminen älypuhelimeesi

Vastaa

Sähköpostiosoitettasi ei julkaista.