29 listopada, 2020 Autor admin Wyłączony

Arduino i bluetooth

Arduino Uno do komunikacji z komputerem używa wbudowanego, sprzętowego UART (na pinach 0 i 1). To za jego pomocą dokonywane jest m.in. programowanie procesora na płytce Arduino.

Zdarza się jednak, że stosowanie kabli łączących Arduino z komputerem jest uciążliwe. Co zrobiłem w takiej sytuacji? Pozbyłem się kabla i zrobiłem „most” bluetooth łączący Arduino z komputerem bezprzewodowo. Jak? Już mówię.

Do szczęścia potrzebne mi były dwa moduły bluetooth znane jako HC-05.

Moduł HC-05 ma 6 wyprowadzeń, z czego interesują mnie tylko 4.
VCC – zasilanie 5V pobrane z płytki Arduino
GND – masa
TXD – wyjście danych – musi być połączone z wejściem danych RX po stronie Arduino
RXD – wejście danych – musi być połączone z wyjściem danych TX po stronie Arduino

Schemat połączeń przedstawia obrazek. Zaznaczę tylko, że HC-05 może być podłączony do sprzętowego UART (piny 0, 1), co zapewnia również możliwość bezprzewodowego programowania Arduino lub do dowolnych pinów (2-12) w trybie tzw. SoftwareSerial (tu przesył danych będzie możliwy, ale programowanie już nie).

Podłączenie drugiego przęsła „mostu” również nie jest skomplikowane. Tu potrzebny będzie konwerter RS232<->USB. Podłączenie jest równie nieskomplikowane.

Po połączeniu modułów i podłączeniu do portu USB, całość zostanie wykryta przez system jako „USB Serial Port”. Warto w menedżerze urządzeń podejrzeć jaki port COM będziemy mieli do dyspozycji. Można to też sprawdzić w Arduino IDE, obserwując jaki port mamy do dyspozycji w programie.
Całość po zmontowaniu jest nie większa od pendrive 😉

Przed zlutowaniem „pendrive” po stronie komputera warto tymczasowo podłączyć do konwertera RS232-USB moduł, który będzie pracował po stronie Arduino w celu ustawienia jego konfiguracji.
Do konfiguracji używamy dowolnego programu przesyłającego dane na port COM. Może to być na przykład program Realterm pobrany z tej strony.

HC-05 od strony Arduino konfigurujemy jako slave. W tym celu przed podłączeniem go do USB przyciskamy microswitch znajdujący się na płytce i trzymając go wpinamy w port USB. Dioda na płytce powinna migać bardzo powoli, co oznacza, że jesteśmy w trybie konfiguracji modułu.
Teraz używając programu Realterm otwieramy port COM z prędkością transmisji ustawioną na 38400 bps. W zakładce send, w polu obok przycisku Send ASCII, wpisujemy AT i naciskamy przycisk Send ASCII. Odpowiedzią modułu powinno być potwierdzenie „OK”.

Teraz przechodzimy do właściwej konfiguracji modułu. Ustawiamy prędkość transmisji między modułami – komendą AT+UART=57600,1,0 i przyciskiem Sens ASCII. Poprawną odpowiedzią układu powinno być OK.

Dalej na tej samej zasadzie ustawiamy:
– pin parowania urządzeń – komendą AT+PSWD=”1234″ ustawiamy pin np. 1234
– rolę urządzenia – tu jako Slave, komendą AT+ROLE=0.
I to wszystko. Można odłączyć moduł i podobnie podłączyć moduł mający działać po stronie komputera.
Konfiguracji dokonujemy w identyczny sposób z tą różnicą, że ten moduł ustawiamy jako Master komendą AT+ROLE=1.

Po skonfigurowaniu obu modułów i ich podłączeniu (jeden do PC, drugi do Arduino) diody led na obu powinny migać tym samym kodem – dwa szybkie błyski, jedna dłuższa przerwa.

Jeśli moduł bluetooth podpięty jest do pinów 0 i 1 Arduino (sprzętowy UART) możliwe jest bezprzewodowe programowanie procesora. W tym celu po otwarciu programu w Arduino IDE i wybraniu przycisku Wgraj, gdy zakończy się kompilowanie programu, natychmiast po pojawieniu się komunikatu „Wgrywanie…” należy przycisnąć przycisk Reset na płytce Arduino.

Wykorzystując moduły w swoich projektach i programach dobrze jest zapamiętać wcześniej ustawioną prędkość transmisji między modułami gdyż z taką właśnie prędkością konfigurujemy „Serial” (hard lub soft) w swoich programach po obu „stronach mostu”:

#include <SoftwareSerial.h>             //uzywane przez BT (bluetooth serial z PC)
//definicje pinów seriala: BT bluetooth
SoftwareSerial BT(2, 3); // RX | TX

byte dana_in[9];
byte dana_out[9];

void setup()  
{
  BT.begin(57600);    
}