Képzeld el, hogy a projektjeidben nincsenek korlátozó kábelek, és az eszközök szabadon kommunikálhatnak egymással, akár egy távolabbi sarokból is. Ez nem sci-fi, hanem valóság, és az Arduino, a nyílt forráskódú mikrokontroller platform segítségével könnyedén megvalósítható. A Bluetooth technológia lehetővé teszi, hogy két Arduino „beszélgessen” egymással, adatokat cseréljen, vagy akár egyik a másikat irányítsa. Ebben az átfogó cikkben lépésről lépésre bemutatjuk, hogyan hozhatod létre ezt a vezeték nélküli kapcsolatot, a kezdeti beállítástól a praktikus alkalmazásokig.
Miért érdemes Bluetooth-t használni Arduinóval?
A vezeték nélküli kommunikáció számos előnnyel jár. Nincs szükség hosszú kábelekre, ami rugalmasabb elhelyezést tesz lehetővé, és esztétikusabbá teheti a projektedet. Gondolj csak bele: egy távolról irányítható robot, egy okos otthoni rendszer, ahol a szenzorok vezeték nélkül küldik az adatokat egy központi egységnek, vagy akár egy adatgyűjtő rendszer, ami kényelmesen továbbítja az információkat a számítógépedre. A Bluetooth modulok Arduinóval rendkívül költséghatékony és könnyen kezelhető megoldást nyújtanak ezekre a feladatokra.
A piacon számos Bluetooth modul található, de az HC-05 és az HC-06 a legnépszerűbbek az Arduino közösségben. Ennek oka egyszerű: olcsók, könnyen beszerezhetők, és a velük való munka nem igényel különösebb elektronikai vagy programozási előképzettséget, csak egy kis odafigyelést és türelmet.
A Bluetooth alapjai az Arduino világában: HC-05 és HC-06
Mielőtt mélyebben elmerülnénk a részletekben, tisztázzuk a két leggyakoribb modul közötti különbséget:
- HC-06: Ez a modul „slave” (szolga) üzemmódban működik. Ez azt jelenti, hogy csak elfogadni képes a bejövő kapcsolatokat más Bluetooth eszközöktől (például egy okostelefontól, vagy egy HC-05 modulból). Ideális olyan projektekhez, ahol az Arduino egy távoli parancsot vár, például egy LED felkapcsolását vagy egy motor elindítását.
 - HC-05: Ez a modul sokkal rugalmasabb, mivel „master” (mester) vagy „slave” üzemmódban is képes működni. Ez létfontosságú, ha két Arduinót szeretnénk közvetlenül egymáshoz csatlakoztatni, mivel az egyiknek mesterként kell viselkednie (kezdeményezi a kapcsolatot), a másiknak pedig szolgaként (elfogadja a kapcsolatot). Ha kétirányú, Arduino-Arduino kommunikációra van szükség, az HC-05 a preferált választás.
 
Mivel a cikk kifejezetten a két Arduino közötti kommunikációra fókuszál, a továbbiakban elsősorban az HC-05 modult fogjuk használni és beállítani mester/szolga párosként.
Szükséges alkatrészek és bekötés
Ahhoz, hogy elkezdhesd a projektet, szükséged lesz a következőkre:
- 2 db Arduino lap (pl. Arduino Uno, Nano, Mega – bármelyik megteszi)
 - 2 db HC-05 Bluetooth modul
 - Jumper kábelek
 - Breadboard (ajánlott, de nem kötelező)
 - Opcionálisan: feszültségosztó (ellenállások, vagy egy dedikált logikai szint konverter)
 
A bekötés menete
Mindkét Arduinohoz azonos módon kell bekötni az HC-05 modult. Fontos! Az HC-05 modul 3.3V-os logikai szinttel működik. Az Arduino UNO és Nano 5V-os logikai szinten dolgozik a digitális tűkön. Ez potenciális problémát jelenthet a modul RX (bemenet) tűje számára. Bár sokan direktben kötik be az Arduino TX-ét az HC-05 RX-ére anélkül, hogy probléma merülne fel rövid távon, a hosszú távú stabilitás és a modul védelme érdekében erősen ajánlott feszültségosztót használni az Arduino TX (5V) és a HC-05 RX (3.3V) közé. Az HC-05 TX tűje azonban közvetlenül köthető az Arduino RX tűjére, mivel az 3.3V-os jelet küld, amit az Arduino 5V-os bemenete is képes felismerni.
Feszültségosztó bemutatása: Használhatsz két ellenállást: egy 1kΩ-os és egy 2kΩ-os ellenállást. Kösd az Arduino TX (5V) kimenetét a 2kΩ-os ellenálláshoz, majd a 2kΩ-os ellenállás másik végét kösd össze az 1kΩ-os ellenállással. Az 1kΩ-os ellenállás másik végét kösd a GND-re. Az 1kΩ és 2kΩ ellenállások találkozási pontját kösd az HC-05 RX tűjére. Ez leosztja az 5V-os jelet kb. 3.3V-ra. Vagy használj egy kész logikai szint konverter modult.
Most nézzük a bekötést minden HC-05 modulhoz:
- HC-05 VCC ➡️ Arduino 5V
 - HC-05 GND ➡️ Arduino GND
 - HC-05 TX ➡️ Arduino RX (javaslat: D10, ha SoftwareSerial-t használsz)
 - HC-05 RX ➡️ Arduino TX (javaslat: D11, ha SoftwareSerial-t használsz – ide kell a feszültségosztó!)
 
Fontos megjegyzés: Ne használd az Arduino 0 (RX) és 1 (TX) tűjét, ha soros monitort is szeretnél használni a debuggoláshoz, mert az Arduino ezeket a tűket a számítógéppel való kommunikációra használja. Helyette használjuk a SoftwareSerial könyvtárat, ami lehetővé teszi, hogy bármely más digitális tűt felhasználhassunk soros kommunikációra.
A Bluetooth modulok konfigurálása (AT parancsok)
Ez a lépés a legkritikusabb, mivel itt állítjuk be az egyik HC-05-öt mesternek, a másikat pedig szolgának. Az AT parancsok segítségével tudjuk konfigurálni a modulokat. Az AT parancsok módba való belépéshez a modul KEY/EN tűjét fel kell húzni 3.3V-ra, miközben áram alá helyezzük a modult. Egyes moduloknál egy kis gomb is található, amit lenyomva tartva, majd bekapcsolva lehet az AT módba lépni.
AT mód bekötés (csak a konfigurálás idejére):
Arduino és HC-05 modul (konfigurálás céljából):
- HC-05 VCC ➡️ Arduino 5V
 - HC-05 GND ➡️ Arduino GND
 - HC-05 TX ➡️ Arduino D10 (RX tű a SoftwareSerial-hez)
 - HC-05 RX ➡️ Arduino D11 (TX tű a SoftwareSerial-hez – feszültségosztóval!)
 - HC-05 KEY/EN ➡️ Arduino 3.3V (Ez aktiválja az AT módot 38400 baud sebességgel)
 
Arduino sketch az AT parancsok küldéséhez:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX, TX (HC-05 TX to Arduino D10, HC-05 RX to Arduino D11 via voltage divider)
void setup() {
  Serial.begin(9600);    // Serial monitorhoz
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400); // HC-05 AT command mód sebessége
}
void loop() {
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  if (Serial.available()) {
    BTSerial.write(Serial.read());
  }
}
Töltsd fel ezt a kódot az Arduinódra. Nyisd meg a Soros monitort (baud rate: 9600) és győződj meg róla, hogy az „Új sor” vagy „Mindkettő NL & CR” opció van kiválasztva. Most adhatod ki az AT parancsokat:
HC-05 konfigurálása Slave (szolga) módba:
Az egyik modul lesz a szolga. Csatlakoztasd az Arduinóhoz a fent leírt AT mód szerint, majd kapcsold be az Arduinot úgy, hogy a KEY/EN tű fel legyen húzva 3.3V-ra. Írd be a Soros monitorba a következő parancsokat:
AT(Válasz: OK) – Teszt, hogy kommunikál-e a modul.AT+NAME=ArduinoSlave(Válasz: OK) – Nevezzük át a modulunkat.AT+PSWD=1234(Válasz: OK) – Állítsuk be a jelszót.AT+ROLE=0(Válasz: OK) – Állítsuk szolgára (0 = slave).AT+ADDR?(Válasz: +ADDR:xxxxxxxxxxxx) – Jegyezd fel a modul címét (12 digites hexadecimális szám, pl. 98da:01:021941). Ez a mester modulnak kell majd.
Kapcsold ki a modul áramellátását, majd távolítsd el a KEY/EN bekötést. A szolga modul most készen áll a normál üzemmódra (9600 baud).
HC-05 konfigurálása Master (mester) módba:
A másik modult mesterré konfiguráljuk. Hasonlóan, csatlakoztasd az Arduinóhoz AT mód szerint, majd kapcsold be az Arduinót úgy, hogy a KEY/EN tű fel legyen húzva 3.3V-ra. Írd be a Soros monitorba a következő parancsokat:
AT(Válasz: OK)AT+NAME=ArduinoMaster(Válasz: OK) – Nevezzük át a modulunkat.AT+PSWD=1234(Válasz: OK) – Állítsuk be ugyanazt a jelszót, mint a szolga modulnak.AT+ROLE=1(Válasz: OK) – Állítsuk mesterre (1 = master).AT+CMODE=0(Válasz: OK) – Csatlakozási mód beállítása (0 = megadott címre csatlakozik).AT+BIND=xxxxxxxxxxxx(Válasz: OK) – Itt írd be a szolga modul 12 digites címét, amit az előző lépésben jegyeztél fel. Ne felejtsd el kettőspontokkal elválasztani a szexet (pl. 98da,1,21941 – azaz AT+BIND=98da,1,21941)
Kapcsold ki a modul áramellátását, majd távolítsd el a KEY/EN bekötést. A mester modul is készen áll a normál üzemmódra (9600 baud).
Arduino kód a kommunikációhoz
Miután mindkét HC-05 modult konfiguráltuk (egyiket mesternek, másikat szolgának) és bekötöttük az Arduinóhoz a normál üzemmódnak megfelelően (KEY/EN tű nincs felhúzva, csak VCC, GND, TX, RX), elkezdhetjük a kommunikációs kód írását.
A normál üzemmódú bekötés emlékeztetőül (mindkét Arduinohoz):
- HC-05 VCC ➡️ Arduino 5V
 - HC-05 GND ➡️ Arduino GND
 - HC-05 TX ➡️ Arduino D10 (SoftwareSerial RX)
 - HC-05 RX ➡️ Arduino D11 (SoftwareSerial TX – feszültségosztóval!)
 
Szolga Arduino kód (ArduinoSlave)
Ez az Arduino fogja fogadni a mester üzeneteit és válaszolni rájuk.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX, TX (HC-05 TX to Arduino D10, HC-05 RX to Arduino D11 via voltage divider)
const int LED_PIN = 13; // Példa: beépített LED
void setup() {
  Serial.begin(9600);    // Soros monitor a debugoláshoz
  BTSerial.begin(9600);  // HC-05 normál üzemmód sebessége (gyárilag 9600, de AT paranccsal átállítható)
  pinMode(LED_PIN, OUTPUT);
  Serial.println("Arduino Slave Ready. Waiting for connection...");
}
void loop() {
  if (BTSerial.available()) {
    char receivedChar = BTSerial.read();
    Serial.print("Received: ");
    Serial.println(receivedChar);
    if (receivedChar == '1') {
      digitalWrite(LED_PIN, HIGH);
      BTSerial.write("LED ONn");
      Serial.println("LED ON, sending confirmation.");
    } else if (receivedChar == '0') {
      digitalWrite(LED_PIN, LOW);
      BTSerial.write("LED OFFn");
      Serial.println("LED OFF, sending confirmation.");
    } else {
      BTSerial.write("Unknown command.n");
      Serial.println("Unknown command received.");
    }
  }
  // Opcionálisan, a szolga is küldhet adatot időzítetten
  // static unsigned long lastSendTime = 0;
  // if (millis() - lastSendTime > 5000) {
  //   BTSerial.print("Hello from Slave!n");
  //   Serial.println("Sent 'Hello from Slave!'");
  //   lastSendTime = millis();
  // }
}
Mester Arduino kód (ArduinoMaster)
Ez az Arduino fogja kezdeményezni a kapcsolatot és küldeni az üzeneteket a szolga modulnak.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX, TX (HC-05 TX to Arduino D10, HC-05 RX to Arduino D11 via voltage divider)
void setup() {
  Serial.begin(9600);    // Soros monitor a debugoláshoz
  BTSerial.begin(9600);  // HC-05 normál üzemmód sebessége
  Serial.println("Arduino Master Ready. Attempting to connect...");
}
void loop() {
  // Olvasás a Bluetooth modulról és kiírás a Soros monitorra
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  // Olvasás a Soros monitorról és küldés a Bluetooth modulra
  if (Serial.available()) {
    char inputChar = Serial.read();
    BTSerial.write(inputChar);
    Serial.print("Sent: ");
    Serial.println(inputChar);
  }
  // Példa: Küldjünk '1'-et, majd '0'-t 5 másodpercenként
  static unsigned long lastSendTime = 0;
  static bool ledState = false;
  if (millis() - lastSendTime > 5000) {
    if (ledState) {
      BTSerial.write('0');
      Serial.println("Sent '0' (Turn LED OFF)");
    } else {
      BTSerial.write('1');
      Serial.println("Sent '1' (Turn LED ON)");
    }
    ledState = !ledState;
    lastSendTime = millis();
  }
}
Töltsd fel a megfelelő kódot mindkét Arduinóra. Kapcsold be először a szolga, majd a mester Arduinót. Látnod kell, ahogy a mester modul LED-je gyorsan villogásból lassú villogásba, majd folyamatosan világító állapotba vált (ez jelzi a sikeres párosítást és kapcsolatot). A szolga modul LED-je is hasonlóan viselkedhet. Ezután a mester Arduino automatikusan küldi a parancsokat, és a szolga visszajelzéseket küld a Soros monitorodra.
Gyakori problémák és hibaelhárítás
A Bluetooth kommunikáció néha trükkös lehet. Íme néhány gyakori probléma és a megoldásuk:
- Nincs kapcsolat / Nem párosodik:
- Ellenőrizd újra az AT parancsokat! Győződj meg róla, hogy a mester és a szolga szerepek, a jelszavak és a kötési cím (BIND) pontosan be lettek állítva.
 - Ellenőrizd, hogy a KEY/EN tű nincs-e felhúzva 3.3V-ra normál üzemmódban.
 - Próbáld meg kikapcsolni és visszakapcsolni mindkét Arduinót (először a szolga, majd a mester).
 - Győződj meg róla, hogy a modulok elég közel vannak egymáshoz a párosításhoz.
 
 - Szemét karakterek a Soros monitoron:
- Valószínűleg a baud rate (átviteli sebesség) nem egyezik. Győződj meg róla, hogy a 
BTSerial.begin()értéke (általában 9600) megegyezik a modul gyári vagy beállított értékével. - Az AT módhoz használt baud rate 38400, míg a normál kommunikációhoz általában 9600.
 
 - Valószínűleg a baud rate (átviteli sebesség) nem egyezik. Győződj meg róla, hogy a 
 - Nincs adatátvitel:
- TX/RX felcserélve? Ez a leggyakoribb hiba. Az Arduino TX-e a modul RX-ére, és az Arduino RX-e a modul TX-ére megy.
 - Feszültségosztó hiánya vagy hibás bekötése: Ha az HC-05 RX tűje 5V-ot kap, az károsíthatja a modult vagy instabil működést okozhat. Ellenőrizd a feszültségosztó bekötését!
 - Győződj meg arról, hogy a 
SoftwareSerialinicializálása a megfelelő tűket használja (pl.SoftwareSerial BTSerial(10, 11);). - Ellenőrizd a tápellátást.
 
 - Az AT parancs mód nem működik:
- Győződj meg róla, hogy a KEY/EN tű 3.3V-ra van húzva, mielőtt áram alá helyezed a modult.
 - Ellenőrizd a Soros monitor baud rate-jét (9600 a Serial-hoz, 38400 a BTSerial-hoz AT módban).
 - Próbáld meg újraindítani az Arduinot és a Soros monitort.
 
 
Lehetséges alkalmazások és további fejlesztési ötletek
Amint elsajátítod a két Arduino közötti Bluetooth kommunikáció alapjait, a lehetőségek szinte végtelenek:
- Okos Otthon: Érzékelők adatainak vezeték nélküli gyűjtése (pl. hőmérséklet, páratartalom) és egy központi vezérlőhöz való továbbítása, amely relékkel vezérli a világítást vagy fűtést.
 - Robotika: Egy robot távirányítása egy másik Arduinóval, vagy különböző robotrészek közötti koordináció.
 - Adatgyűjtés: Egy távoli szenzoradatok vezeték nélküli naplózása egy másik Arduinón, ami akár SD kártyára is rögzítheti az adatokat.
 - Távirányító rendszerek: Például egy RC autó irányítása, vagy egy garázskapu nyitó/záró mechanizmus.
 - Oktatási projektek: Remek bevezetés a vezeték nélküli hálózatok és az IoT alapjaihoz.
 
A HC-05 modul hatótávolsága általában 10 méter beltéren, ami bőven elegendő otthoni vagy hobbiprojektekhez. Ha nagyobb távolságra van szükséged, érdemes más vezeték nélküli technológiákat (pl. NRF24L01, ESPNow, LoRa) megfontolni, de a Bluetooth tökéletes a közeli kommunikációra.
Összefoglalás
A Bluetooth kommunikáció két Arduino között egy rendkívül hasznos készség, amely megnyitja az ajtót a vezeték nélküli elektronikai projektek előtt. Bár az AT parancsok konfigurálása eleinte kissé bonyolultnak tűnhet, a folyamat megértése után rendkívül egyszerűvé válik. Az HC-05 modulok rugalmassága és az Arduino nyílt forráskódú ökoszisztémája kombinálva hatékony és költséghatékony megoldást kínál számtalan alkalmazáshoz. Ne habozz kipróbálni, kísérletezni, és élvezni a vezeték nélküli szabadságot, amit ez a technológia nyújt!
Leave a Reply