Ostatnio w paru wątkach pojawiał się moduł BlueTooth (w skrócie BT) więc może warto przybliżyć parę niuansów z nim związanych.
Po pierwsze o co chodzi z tymi masterami i slejwami?
Musimy zacząć od rysunku bo tak będzie najłatwiej to wytłumaczyć.
Załącznik:
bluetooth.jpg [ 165.75 KiB | Przeglądane 19623 razy ]
Moduły BT tworzą małe sieci połączeń, w której jest jeden dowodzący (to właśnie MASTER - tu Miki) oraz może w niej być do 7 aktywnych modułów pracujących jako SLAVE (tu Gufi). Dlatego jest to ważne bo to MASTER kontroluje zegar i określa które urządzenie w której "szczelinie czasowej" może sobie z nim pogadać. Taki prawdziwy szef. Stąd też wynika, że SLAVE nie może gadać z innym SLAVEm bezpośrednio. A także MASTER nie może gadać z innym MASTEREM.
W większości sytuacji w życiu naokoło najczęściej stosuje się tylko 2 moduły - parki. Na przykład:
- telefon i słuchawka bezprzewodowa
- konsola do gier i bezprzewodowy kontroler
- komputer i moduł GPS
- komputer i kopter MultiWii
- komputer i nadajnik eLeReS
- itd, itp
Z uwagi na powyższy schemat takie parki to zawsze master-slave. Często o tym nie wiemy bo większość nowoczesnych urządzeń ma w sobie tą magię, która robi za nas sporo i nie zmusza nas do rozumienia tego, co się tam dzieje.
Jeśli chodzi o światek Arduino możemy kupić 2 typy modułów. Takie które działają tylko w określonym trybie np SLAVE lub takie które mogą pracować jako Miki (MASTER) lub Gufi (SLAVE).
Przykładowo moduły z oznaczeniem
HC-05 mogą pracować w obydwu trybach. Więcej o BT możecie przeczytać na
WikipediiKonfiguracja BTBez względu jaki typ modułu mamy, prawie zawsze musimy go odpowiednio skonfigurować. Do różnych zadań będą potrzebne różne konfiguracje. Najważniejsze parametry jakie można ustawić to:
- prędkość połączenia, bity stopu, parzystość
- nazwa modułu BT
- pin
- rola (master/slave)
Wszelkich ustawień dokonujemy za pomocą programów terminalowych. Polecam dwa.
Putty oraz
BrayTerminal Pierwszy jest prostszy więc nie odstraszy mnogością możlwości a drugi ma parę świetnych funkcji jak na przykład autorozpoznawanie połączenia.
Gdy już pełni szczęścia odbieramy paczkę od Chińczyka w większości przypadków moduł ma następujące ustawienia:
Kod:
Prędkość: 9600 bps (bitów na sekundę)
Bity danych: 8 bits
Bity stopu: 1 bit
Parzystość: None
Sterowanie przepływem: None
Hasło: 1234
Nazwa modułu: linvor albo HC-05
O parzystości i innych można poczytać
tu.Na rynku jest sporo różnych modułów BT więc nie zdziwcie się gdy Wasza płytka będzie inaczej wyglądać niż inne, będzie miała dodatkowe PINy itd Jest w tym spory bałagan. Ważne żeby płytka miała pin podpisany KEY oraz wszystkie konfiguracje lepiej wykonywać z ustawieniem UART'a na 3,3V. Nie ufajcie tym 5V w opisach
Podłączamy nasz moduł BT do UART'a USB np
CP2102, o którym już było wcześniej. Sprawdzamy, który port COM używamy. I właśnie taki wpisujemy w programie terminalowym
Załącznik:
putty.jpg [ 65.7 KiB | Przeglądane 19623 razy ]
Świat komand AT.Dzięki komendom AT możemy sprawdzić ustawienia naszego modułu BT a także wpisać własne ustawienia. I tu znów jest mały bałagan gdyż niektóre moduły są od razu gotowe na przyjmowanie komend AT, a w niekórych musimy je "wprowadzić" w ten stan. Robimy to podłączając pin KEY do pinu z 3,3V.
Komendy AT dobrze sobie wpisywać w notatniku i tylko wklejać do okienka programu terminalowego, ale to także zależy od programu jakiego używamy
ot tak żeby było łatwiej
AT - sprawdza czy mamy połączenie i czy jesteśmy w trybie przyjmowania komend, moduł odpowie nam
OKAT+NAME zwróci nam nazwę modułu BT np
HC-05AT+NAME=KOPTER_OSY ustawi nazwę modułu na
KOPTER_OSYAT+UART zwróci nam ustawienia połączenia np
9600,0,0Jeśli chcemy zmienić te ustawienia bo na przykład nasz kopter wymaga innej prędkości, wpisujemy np:
AT+UART=115200,0,0Nie zdziwcie się jeśli przy ponownej próbie połączenia nie uda się Wam to. Przecież właśnie zmieniliście prędkość z 9600 na 115200
Należy więc takiej samej zmiany dokonać w programie terminalowym w prędkości połączenia.
Niekóre moduły wymagają wpisania znaku zapytania na końcu komendy w której o coś pytamy a niektóre nie....Wspominałem już o bałaganie? Więc zamiast
AT+NAME trzeba wpisać
AT+NAME?Generalnie najlepiej zawsze zaczynać od pytania o dane ustawienie i jeśli moduł odpowie to wtedy możemy je zmieniać.
Jeden z moich modułów dla zmiany prędkości połączenia wymagał takiej składni:
AT+BAUD8 żeby ustawić prędkość na 115200 a zupełnie nie rozumiał komendy AT+UART
Kolejne przydatne komendy to
AT+ROLE zwróci nam tryb w jakim moduł działa (0=Slave role; 1=Master role)
AT+PSWD=1234 ustawi hasło/pin na 1234 spotkałem się także ze składnią
AT+PIN=1234 analogicznie pytamy o hasło komendą:
AT+PSWDZastosowania.Całe mnóstwo. Oprócz tych najbardziej znanych jak komunikacja koptera przez moduł BT z tabletem/telefonem/komputerem, podłączenie nadajnika eLeReS do komputera i odczytywanie danych z telemetrii, można wysyłać dane z płytek Arduino do innego urządzenia z modułem BT albo do innego Arduino.
Warto zainteresować się aplikacjami na Androida (tablety/telefony): SensoDuino czy ArduinoCommander
I jeszcze ze dwa linki, chociaż jest tego cała masa, serio, spytajcie wujka Gugla
MłodeDrwale o BTŁączenie Arduino BTedyta 7.03:Kolejna ciekawostka, moduł BT nazwany HC-05, płytka ma mikroprzycisk blisku pinów, wygląda jak ta (tu nie ma samego modułu)
Żeby wejść w tryb programowania (komendy AT) należy po podłączeniu na chwilę nacisnąć ten przycisk i puścić - testujemy wpisując AT do terminala. Reszta bez zmian.