[PROJEKT] Komunikacja między dwoma modułami Bluetooth HC-05

Moduły Bluetooth są używane aby przesyłać informacje na niewielkie odległości (do około 10 metrów). W poprzednich projektach, gdzie sterowano jasnością diod LED ([PROJEKT] Sterowanie diodami WS2812 za pomocą smartfona – KAmduino UNO, KAmodBT-HC05 oraz diody WS2812) występowała komunikacja między telefonem a modułem Bluetooth. Jednak czasami zachodzi potrzeba nawiązania komunikacji moduł Bluetooth <> moduł Bluetooth, np. miedzy dwoma robotami, czy do przesyłania danych między dwoma płytkami Arduino. Właśnie taka komunikacja zostanie opisana w tym artykule.

Do realizacji tego projektu będziemy potrzebować:

Rys 1. Moduł HC-05

Moduł HC-05 pracuje w standardzie Bluetooth 2.0, co pozwala na komunikację do około 10 metrów. W przeciwieństwie do modelu HC-06 może on pełnić role Master lub Slave (HC-06 może pełnić tylko role Slave), co jest bardzo ważne przy tworzeniu komunikacji między dwoma modułami Bluetooth. Aby można było zrealizować tego typu komunikację, jeden moduł musi być ustawiony jako urządzenie nadrzędne (Master), a drugie jako urządzenie podrzędne (Slave). Do konfiguracji modułów służą komendy AT, które zostaną opisane w dalszej części artykułu (spis wszystkich komend AT znajduje się w dokumentacji do modułu HC-05, można go znaleźć w sekcji do pobrania na końcu artykułu).

Aby była możliwość konfiguracji modułów, należy wykorzystać konwerter USB <> UART. Należy pamiętać iż moduł Bluetooth HC-05 pracuje w standardzie logicznym 3,3 V, dlatego podczas konfiguracji należy użyć konwertera stanów logicznych. Niektóre moduły z układem HC-05 posiadają wbudowane konwertery. Przykładem takiego rozwiązania jest moduł KAmodBT-HC05.

Podłączenie konwertera USB<> UART zostało przestawione w tabelce:

Pin konwentera USB <> UART Pin modułu Bluetooth HC-05
VCC VCC
GND GND
RX* TXD*
TX* RXD*

*Poprzez konwerter stanów logicznych

Aby wprowadzić moduły w stan konfiguracji, podczas podłączenia zasilania należy przytrzymać przycisk zaznaczony na zdjęciu (gdy nie ma takiego przycisku na module, należy na pin KEY podać napięcie 3,3 V). Wejście w tryb konfiguracji sygnalizowane jest poprzez czerwoną diodę LED, która w tym trybie miga z zmniejszoną częstotliwością.

 

Rys 2. Przycisk umożliwiając wejście modułu w tryb konfiguracji

 

Jako pierwszy należy skonfigurować moduł Slave. W tym celu można wykorzystać monitor portu szeregowego z Arduino IDE. Należy wybrać port COM, który został przydzielony konwerterowi USB<>UART (można to sprawdzić np. w menadżerze urządzeń). Należy zmienić prędkość w monitorze portu szeregowego na 34800. Najpierw powinno się sprawdzić czy wszystko działa poprawnie. W tym celu należy przesłać do modułu komendę AT. Jeżeli wszystko jest podłączone prawidłowo powinno się otrzymać komunikat OK. Teraz można przejść do konfiguracji modułu. Pierwszym krokiem będzie ustawienie nazwy modułu (“SLAVE”). Aby to zrobić należy wykonać następującą komendę:

Moduł powinien odesłać komunikat zwrotny OK. Do sprawdzenia czy nazwa uległa modułu należy wykorzystać komendę:

Niektóre komendy do działania potrzebują wciśnięcia przycisku którego używaliśmy do wprowadzenia modułu w tryb obsługi komend AT.

Następnie trzeba ustalić rolę modułu. Pierwszy moduł będzie pełnił rolę podrzędna, czyli Slave. W celu ustawieniu tego parametru należy wykorzystać następującą komendę:

Gdzie 0 – Slave, 1 – Master. Sprawdzenie aktualnej ustawionej roli odbywa się poprzez wywołanie komendy:

Powinien wyświetlić się komunikat: +ROLE:0, co oznacza iż moduł od teraz będzie pełnił rolę podrzędną (Slave).

Kolejnym krokiem konfiguracyjnym dla modułu Slave będzie sprawdzenie jego adresu/numeru. Aby to zrobić należy przesłać do modułu komendę:

W odpowiedzi otrzymano adres/numer jaki posiada ten konkretnie moduł Bluetooth:

Czyli moduł ten ma adres: 20:15:5;28:52:77. Należy go zapisać, ponieważ będzie on potrzebny do skonfigurowania połączenia między modułami. Ostatnim krokiem będzie ustawienie szybkości transmisji danych UART modułu. Aby sprawdzić jakie aktualnie ustawienia posiada moduł należy wywołać komendę:

Do zmiany ustawień portu UART służy polecenie: AT+UART=<Param>, <Param2>, <Param3>. Ta komenda posiada 3 parametry. Pierwszy jest odpowiedzialny za ustawienie prędkości, drugi decyduje ile bitów stopu będzie w ramce danych, ostatni określa czy występuje kontrola parzystości. W tym przypadku należy ustawić moduł na prędkość 9600, bez bitu stopu oraz bez kontroli parzystości. Komenda będzie wyglądała następująco:

Jeżeli wszystko przebiegło prawidłowo otrzymamy komunikat zwrotny OK.

Do pobrania

O autorze