4.5
(2)

Arduino může komunikovat s jinými zařízeními přes Bluetooth pomocí modulu HC-05 (master/slave). Umožňuje Arduinu připojit se a vyměňovat si data s dalšími zařízeními, jako je smartphone, počítač nebo jiné mikrokontroléry. komunikaci Bluetooth lze použít například k dálkovému ovládání robota, zobrazení a ukládání dat v počítači nebo smartphonu

Předpoklad: Arduino Sériová komunikace

Materiál

  • Počítač
  • Arduino UNO x2
  • Kabel USB
  • Modul Bluetooth HC-05 ZS-040 x2 (nebo 1x HC-.05 a 1x HC-06)
  • Dupontní kabely M/F

Přehled modulu HC-05

Bluetooth modul HC-05 má 6 pinů, 2 pro napájení, 2 pro navázání spojení, 1 pro vstup do konfiguračního režimu a další pro zjištění stavu spojení.

  • Napájení VCC. Obvykle se připojuje k 5V pinu Arduina.
  • GND zem. Obvykle se připojuje k vývodu GND počítače Arduino
  • Přijímací vývod RX. Obvykle připojen k vysílacímu kolíku (TX) Arduino
  • TX vysílací kolík. Typicky připojen k přijímacímu pinu (RX) Arduina
  • Stav je HIGH, když je modul připojen
  • Key ou EN musí být nastaven na HIGH (3,3 V) pro vstup do konfiguračního režimu a musí být odpojen pro vstup do komunikačního režimu.

Zvláštností modulu HC-05 je, že jej lze použít jako podřízený modul (ekvivalent modulu HC-06) a jako hlavní modul, což znamená, že se může sám spárovat s jiným zařízením.

Schémata pro konfiguraci

Pozor :

  • Používáme pin 2 a 3 Arduino Uno. V závislosti na mikrokontroléru nemusí některé piny podporovat sériovou komunikaci. Zejména se jedná o Arduino Mega, Micro a Leonardo. Podívejte se do dokumentace.
  • Protože modul Bluetooth používá logiku 3,3 V, doporučujeme přidat dělič napětí, aby se snížilo napětí 5 V z Arduina. (rezistor 1k mezi pinem3 a Rx; 2k Ohm mezi Rx a GND).

Konfigurace modulu HC-05

Konfigurace modulu HC-05 může být zajímavá pro ověření, zda funguje, zda je správně zapojen, a pro úpravu jeho parametrů, jako je jeho název (užitečné, pokud používáte více modulů), PIN kód a rychlost komunikace (baudrate). Zejména pokud jej chcete používat jako nadřazený modul. Aby bylo možné modul HC-05 konfigurovat, měl by být napájen, ale ne spárován, a pin KEY/EN by měl být před zapnutím modulu nastaven na HIGH. V konfiguračním režimu bude LED blikat každé dvě sekundy.

Otevřete sériový monitor a zvolte možnost koncové linky „Nová linka“ a přenosovou rychlost 9600.

Všimněte si, že HC-05 vstoupí do konfiguračního režimu s přenosovou rychlostí 38400b/s.

Kód konfigurace

Následující kód umožňuje upravovat a kontrolovat parametry pomocí sériového monitoru a AT příkazů.

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

Příkazy AT

V porovnání s modulem HC-06 lze modul HC-05 používat jako nadřazený modul a pomocí příkazů AT můžete také kontrolovat uložené parametry.

Všeobecně platí, že zadáním příkazu AT+<command>? se zobrazí dotaz na uložený parametr (například: AT+PSWD? zobrazí kód PIN modulu). Pokud zadáte AT+<command>=<Param>, můžete nastavit hodnotu parametru (např.: AT+PWSD=0000 upraví kód PIN na 0000).

Zde jsou uvedeny některé příkazy AT:

  • Pro otestování komunikace zadejte AT do sériového monitoru Arduino IDE. Pokud je vše správně nastaveno, mělo by se zobrazit OK.
  • Pro změnu názvu modulu zadejte AT+NAME=<Param>. Modul by měl odpovědět OK (Defaut HC-05, Například: Chcete-li změnit název na BTM1, zadejte AT+NAME=BTM1).
  • Chcete-li změnit PIN kód, zadejte AT+PSWD=<Param> . Modul by měl odpovědět OK(Výchozí 1234, Příklad: Chcete-li změnit kód PIN na 0000, zadejte AT+PSWD=0000).
  • AT+ROLE=<Param> pro midy roli modulu jako slave nebo master (Výchozí 0, Příklad: Chcete-li změnit roli jako master, zadejte AT+ROLE=1, jako slave zadejte AT+ROLE=0).
  • Pro změnu přenosové rychlosti zadejte AT+UART=<Param1>,<Param2>,<Param3> s parametry sériové komunikace Param1, 2 a 3: přenosová rychlost, stop bit a paritní bit v tomto pořadí (Standardně,nastaveno na 9600,0,0. Příklad: pro změnu přenosové rychlosti na 115200 zadejte AT+UART=115200,0,0).

Pro modul Bluetooth HC-05 existují další příkazy AT, které najdete na následujícím odkazu.

UPOZORNĚNÍ: Existují různé verze modulu HC-05 a postup konfigurace se může lišit. Před použitím nezapomeňte zkontrolovat označení modulu a verzi firmwaru. Pro tento návod jsme použili modul HC-05 s označením ZS-040 a firmwarem verze 2.0-20100601.

N.B.: Pokud modul nereaguje, zkontrolujte zapojení, vodivost kabelů a přenosovou rychlost.

Pokud máte s konfigurací modulu HC-05 problémy, neváhejte nám zanechat komentář nebo nás kontaktovat.

Konfigurace slave

Pro nastavení modulu jako slave můžete změnit název jako AT+NAME=HC05-Slave a zvolit požadované komunikační parametry a kód PIN. Musíte se ujistit, že master a slave mají stejné komunikační parametry.

  • AT vrátí OK
  • AT+NAME=HC05-Slave
  • AT+UART=9600,0,0
  • AT+ROLE=0
  • Zadáním AT+ADDR získáte adresu modulu (např: +ADDR:98d3:32:

Pro podřízený modul můžete také použít modul HC-06

Konfigurace master

Chcete-li nastavit modul jako master, musíte změnit roli a nastavit stejný komunikační parametr jako u podřízeného modulu.

  • AT returns OK
  • AT+NAME=HC05-Master
  • AT+UART=9600,0,0
  • AT+ROLE=1
  • Adresa modulu slave musí být zadána v modulu master, aby se mohl připojit:

Schémata pro komunikaci

V komunikačním režimu není připojen pin Key/EN.

Komunikační kód

Když jsou oba moduly nakonfigurovány, nahrajte následující kódy do desek Arduino připojených k vašim modulům. Zapněte moduly, abyste vstoupili do komunikačního režimu. Master modul by se měl připojit k slave modulu a LED by měla blikat každou sekundu.

Použijeme stejnou knihovnu SoftwareSerial.h jako pro modul HC-06:

  • SoftwareSerial hc05(Rx,Tx) pro definici pinů sériového portu
  • hc05.begin() pro definici přenosové rychlosti (hodnota by měla být stejná jako u vašeho modulu)
  • hc05.available() pro testování, zda jsou ve vyrovnávací paměti modulu dostupná data
  • hc05.read() pro čtení dat po jednom bajtu
  • hc05.print() pro odeslání řetězce ve tvaru ASCII
  • hc05.write() pro odeslání dat po jednom bajtu

Kód 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();}

Kód 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();}

Pokud otevřete oba sériové monitory a pokud zadáte příkaz v monitoru desky Master, měli byste vidět následující výsledky. Deska master vyšle příkaz, který je přijat a odeslán zpět deskou slave. Komunikace funguje korektně v obou směrech.

Pokud máte problémy s konfigurací nebo párováním modulů Bluetooth, neváhejte nás kontaktovat nebo zanechat komentář.

Aplikace

  • Řiďte robota na dálku pomocí smartphonu
  • Odesílejte měření teploty do smartphonu

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.