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);
}