Arduino Bluetooth modul HC-05

Arduino Bluetooth modul HC-05 je komunikační modul, který umožňuje propojit Arduino bezdrátově s dalším zařízením, které podporuje Bluetooth. Tento modul obsahuje Bluetooth ve verzi 2.0 a komunikuje s Arduinem pomocí sériové linky s výchozí rychlostí 9600 baudů. Vzhledem k velikosti celého modulu je i anténa poměrně malá a dosah je proto omezen na vzdálenost maximálně 10 metrů na volném prostranství. Co se týká napájecího napětí, tak pro tento modul HC-05 je zapotřebí napětí v rozsahu 3,3 až 6 Voltů. Proudový odběr při napájení 5 Volty se pohybuje okolo 2 miliAmpér v klidu a při komunikaci dosahuje maximálně 40 mA. Celý modul má pak rozměry 3,2 x 1,6 centimetrů.

Pro úspěšné propojení Bluetooth modulu HC-05 s Arduinem stačí zapojit celkem čtyři vodiče. Propojíme RXD s pinem 11, TXD s pinem 10, GND se zemí Arduina a VCC s 3,3 nebo 5 Volty Arduina. Pro datové piny RXD a TXD lze využít také ostatní digitální piny, ale tuto volbu je nutné provést na začátku programu. Na deskách Mega a Mega 2560 je možné pro pin RX využít pouze tyto piny: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). A na deskách Leonardo a Micro lze pro pin RX využít tyto piny: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). Viz reference knihovny SoftwareSerial.

Ukázkový program obsahuje na svém začátku nastavení čísel propojovacích pinů pro Bluetooth a LED diodu, kdy využíváme integrovanou LED diodu na pinu 13. Dále připojíme knihovnu SoftwareSerial a následně inicializujeme modul Bluetooth s nastavenými piny. V podprogramu setup je zahájena komunikace s Bluetooth modulem rychlostí 9600 baudů a vytištěna testovací zpráva společně s nastavením LED diody jako výstup. Nekonečná smyčka loop obsahuje vytvoření proměnné pro ukládání dat a hlavní if podmínku. V této podmínce zjistíme, jestli se nám nenačetly nějaká data přes Bluetooth a v případě že ano, tak si je pomocí funkce read načteme do proměnné. Následně proběhne dekódování přijatého znaku pomocí funkce switch. Uvnitř této funkce můžeme uvést všechny typy zprávy, na které chceme reagovat. Jako první tedy po přijetí znaku nuly vypneme LED diodu a vypíšeme informaci zpět do Bluetooth zařízení. Příkaz break znamená ukončení aktuálního běhu funkce switch. Poté v dalších case najdeme pod jedničkou zapnutí LED diody a v případě přijetí znaku a vypíšeme do Bluetooth modulu aktuální čas od zapnutí Arduina. Při přijetí znaku b je uvedena ukázka, jak přijmout více znaků, tedy například konfiguraci pro běh Arduina. Jako první je vytištěna informace o načítání zprávy a poté pomocí smyčky while tiskneme přijaté znaky zpět do té doby, dokud jsou nějaké k dispozici. V dalších dvou case se nachází takzvané řídící znaky CR a LF, které se mohou vyskytovat v komunikaci podle použitého programu na druhém zařízení. V programu tedy v případě jejich přijetí nevykonáme žádnou funkci. Bylo je ale nutné takto přidat do case, protože poslední case default vypíše v případě přijetí ostatních znaků hlášku o neznámém znaku. Po funkci switch se v programu nachází už jen pauza po dobu 100 milisekund.

// Arduino Bluetooth modul HC-05

// nastavení propojovacích pinů Bluetooth a LED diody
#define RX 11
#define TX 10
#define pinLED 13
// připojení knihovny SoftwareSerial
#include <SoftwareSerial.h>
// inicializace Bluetooth modulu z knihovny SoftwareSerial
SoftwareSerial bluetooth(TX, RX);

void setup() {
  // zahájení komunikace s Bluetooth modulem
  // skrze Softwarovou sériovou linku rychlostí 9600 baud
  bluetooth.begin(9600);
  bluetooth.println("Arduino zapnuto, test Bluetooth..");
  // nastavení pinu s LED diodou jako výstup
  pinMode(pinLED, OUTPUT);
}

void loop() {
  // proměnná pro ukládání dat z Bluetooth modulu
  byte BluetoothData;
  // kontrola Bluetooth komunikace, pokud je dostupná nová
  // zpráva, tak nám tato funkce vrátí počet jejích znaků
  if (bluetooth.available() > 0) {
    // načtení prvního znaku ve frontě do proměnné
    BluetoothData=bluetooth.read();
    // dekódování přijatého znaku
    switch (BluetoothData) {
      // každý case obsahuje dekódování jednoho znaku
      case '0':
        // v případě přijetí znaku nuly vypneme LED diodu
        // a vypíšeme hlášku zpět do Bluetooth zařízení
        digitalWrite(pinLED, LOW);
        bluetooth.println("Vypni LED diodu.");
        break;
      case '1':
        // v případě přijetí jedničky zapneme LED diodu
        // a vypíšeme hlášku zpět do Bluetooth zařízení
        digitalWrite(pinLED, HIGH);
        bluetooth.println("Zapni LED diodu.");
        break;
      case 'a':
        // v případě přejetí znaku 'a' vypíšeme
        // čas od spuštění Arduina
        bluetooth.print("Cas od spusteni Arduina: ");
        bluetooth.print(millis()/1000);
        bluetooth.println(" vterin.");
        break;
      case 'b':
        // zde je ukázka načtení většího počtu informací,
        // po přijetí znaku 'b' tedy postupně tiskneme 
        // další znaky poslané ve zprávě
        bluetooth.print("Nacitam zpravu: ");
        BluetoothData=bluetooth.read();
        // v této smyčce zůstáváme do té doby,
        // dokud jsou nějaké znaky ve frontě
        while (bluetooth.available() > 0) {
          bluetooth.write(BluetoothData);
          // krátká pauza mezi načítáním znaků
          delay(10);
          BluetoothData=bluetooth.read();
        }
        bluetooth.println();
        break;
      case '\r':
        // přesun na začátek řádku - znak CR
        break;
      case '\n':
        // odřádkování - znak LF
        break;
      default:
        // v případě přijetí ostatních znaků
        // vytiskneme informaci o neznámé zprávě
        bluetooth.println("Neznamy prikaz.");
    }
  }
  // krátká pauza mezi kontrolami komunikace Bluetooth modulu
  delay(100);
}

Po nahrání programu do Arduino desky s připojeným Bluetooth modulem HC-05 můžeme přejít k připojení Bluetooth modulu s druhým zařízením. Mezi tyto zařízení můžeme zařadit například počítač, telefon či tablet. Po zapnutí Bluetooth modulu v daném zařízení můžeme začít vyhledávat Bluetooth moduly v okolí a měli bychom vidět zařízení s názvem „HC-05“. Pro spárování pak použijeme výchozí kód 1234. Po úspěšném spárování je dalším krokem zvolení nějakého komunikačního programu. V případě počítače si můžeme všimnout, že po spárování Bluetooth modulu nám v Arduino IDE v nabídce portů přibyde nový COM port. Pokud si tedy zvolíme tento nový port a otevřeme Sériový monitor, můžeme začít komunikovat s Arduinem skrze Bluetooth. Pokud bychom chtěli otestovat komunikaci s chytrým telefonem či tabletem, který má operační systém Android, můžeme provést obdobným způsobem spárování s modulem HC-05. Poté je nutné stáhnout nějakou aplikaci Bluetooth Terminal z Obchodu Play, já jsem vyzkoušel „Serial Bluetooth Terminal“ od Kai Morich. V této aplikaci pak stačí zvolit správné zařízení, stisknout ikonu propojení a můžeme začít komunikovat s Arduinem.

Arduino Bluetooth modul HC-05 je velice zajímavým komunikačním prvkem pro Arduino. Díky své malé velikosti se hodí do různých projektů, kde chceme komunikovat s Arduinem z počítače či chytrých zařízení jako je telefon či tablet. Je zde pouze problém při komunikaci se zařízeními od firmy Apple, protože ty nepodporují necertifikované moduly ve verzi Bluetooth 2.0. Pokud byste tedy chtěli využít pro ovládání Arduina svoje Apple zařízení, je nutné zvolit jiný Bluetooth modul.

 

Seznam použitých komponent:

http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html

http://dratek.cz/arduino/1005-arduino-bluetooth-modul-hc-05-1427822941.html

http://dratek.cz/arduino/1255-bluetooth-bezdratovy-modul-hc-05-pro-arduino-1459623967.html

Další podobné články