Bluetooth do Arduino i nie tylko to proste

Bluetooth do Arduino i nie tylko to proste

 Początki komunikacji bluetooth sięgają ok. roku 2000, a idea powstała już parę lat wcześniej przez firmę ERICSSON, która chciała przesyłać dane bez konieczności użycia przewodu. Dziś każdy smartfon (ponieważ era zwykłych telefonów komórkowych skończyła się już parę lat temu) posiada ten właśnie moduł komunikacyjny na pokładzie. Moduły bluetooth są również wykorzystywane w inteligentnych zegarkach, jak i osobne moduły komunikacyjne do mikrokontrolerów ale i także do kontrolerów APM, kontrolerów Gimbali i autopilotach w modelach RC. Są wielofunkcyjne dzięki prostej komunikacji przez port UART, dzięki czemu można wykorzystać je w wielu dziedzinach począwszy od modeli RC po roboty i kuchenki.

 

 Nowa łączność ułatwia życie wielu ludziom, którzy mogą prowadzić rozmowę telefoniczną nie trzymając telefonu przy uchu a jednocześnie swobodnie prowadzić samochód lub robić zakupy w sklepie dzięki komunikacji bluetooth, która łączy telefon z bezprzewodową słuchawką douszną lub nauszną przez którą prowadzona jest rozmowa. Jest to rewolucyjny wynalazek, który jest wykorzystywany praktycznie wszędzie i czasami nie wyobrażamy sobie życia bez tej komunikacji.

 

 Komunikacja UART jest powszechnie wykorzystywaną komunikacją w wielu dziedzinach na co zwróciłem uwagę powyżej, i dzięki niej możemy podłączyć moduł komunikacji bezprzewodowej bluetooth np. do Arduino.

 

Zacznijmy może od omówienia samego modułu komunikacyjnego, jego cechy szczególne: piny zasilania, odbierania i nadawania danych. Jak pewnie większość z czytelników wie, komunikacja bluetooth odbywa się w dwie strony, lecz należy o tym powiedzieć głośno aby nie było nieporozumień. Prosty przykład: chcąc wysłać jakiś plik koledze za pośrednictwem bluetooth twój smartfon wysyła plik a smartfon kolegi go odbiera i zasada ta działa analogicznie również na odwrót ale tak jak już wspomniałem to pewnie każdy wie. Omówmy sobie może sposób funkcjonowania takiej sieci bezprzewodowej.

 

Po uruchomieniu modułu bluetooth telefon wysyła fale i tworzy dzięki swojemu zasięgowi jakby okrąg, który nazywamy mini siecią. Dzięki temu inne moduły znajdujące się w obszarze tego zasięgu mogą wyszukać uruchomiony moduł. Każdy moduł ma swój własny unikalny adres MAC aby można było rozróżnić każdy z modułów, ponieważ może być ich więcej w takiej mini sieci. Moduły w skrócie wysyłają swoje dane dzięki czemu są widoczne przez drugi moduł, który może nawiązać połączenie. Łączenie się dwóch modułów nazywamy parowaniem, ponieważ łączą się tylko dwa urządzenia, które tworzą parę. W czasie parowania tak w skrócie dwa moduły ustalają kanał przez który będą wymieniać się danymi, ustalają prędkość przesyłu danych i swoje adresy MAC. Po tych czynnościach możliwe jest przesyłanie danych między sparowanymi urządzeniami.

 

W czasie gdy nasze urządzenia się wszystkim zajmują automatycznie to ciut inaczej sytuacja wygląda, gdy chcemy za pomocą smartfona połączyć  się z samym modułem podłączonym do np. Arduino czy kontrolera lotu.

 

Może najpierw przedstawmy takie moduły omówmy ich budowę i sposób działania. Obecnie na rynku dostępnych jest wiele modułów bluetooth, lecz ja zaprezentuje najpopularniejszy z nich a jest to moduł HC-05. Jego brat HC-06 jest również popularny, HC-08 i jak pewnie zauważyliście są to te same moduły. I macie racje, ponieważ sam moduł to jest ta malutka zielona płytka z dużą ilością wyprowadzeń. Lecz całe te moduły HC składają się z dwóch płytek, gdzie zielona mniejsza jest przylutowana do większej niebieskiej.

 

 Z modułu zielonej płytki wyprowadzonych jest tylko kilka padów i są to: zasilanie 3.3V, masa GND, nadawanie sygnału TX, odbiór sygnału RX, przycisk key (24 lub 36 pin w zależności od modelu) i wyjście diody stanu. I tak oto z 34 pinów otrzymujemy 4 najważniejsze wyprowadzenia. I te piny przylutowane są do większej niebieskiej płytki a na niej znajduje się stabilizator napięcia, dzięki czemu możemy podłączyć zasilanie +5V także parę innych elementów elektronicznych filtrujących zasilanie i linię przesyłu danych TX i RX.

  

 Jak już wcześniej wspomniałem port UART jest prosty w obsłudze dzięki właśnie szerokiej i szybkiej komunikacji za pośrednictwem dwóch przewodów. Linia TX czyli nadawcza musi zostać podpięta do linii odbiorczej a więc RX urządzenia pod które chcemy podłączyć moduł a z kolei RX z modułu podłączmy pod TX urządzenia, analogicznie na odwrót.

 WAŻNE: linie przesyłu danych (TX i RX) działają w oparciu o napięcie robocze 3.3V nie można podłączyć ich bezpośrednio pod np. Arduinno! Stwierdzając, iż nie można wykonać takiego połączenia nie oznacza to, że nie jest to wykonalne. Jest, należy tylko zastosować odpowiedni dzielnik napięcia. Jak wykonać taki dzielnik i podłączyć moduł pod Arduino przedstawia schemat poniżej:


 

 Teraz gdy mamy podłączony moduł pod Arduino możemy przejść do wysyłania i odbierania informacji za pomocą bezprzewodowego modułu bluetooth między Arduino a np. telefonem komórkowym wyposażonym w ten moduł.

  • wysyłanie informacji odbywa się w prosty sposób, a mianowicie piszemy kod tak jakbyśmy chcieli wyświetlić te informacje w monitorze portu szeregowego. Do tego służy komenda “Serial.print();” oczywiście w ustawieniach początkowych Setup należy rozpocząć transmisję “Serial.begin(9600);” Ponieważ jak wiemy Arduino po przez port UART komunikuje się również z komputerem po przez przewód USB. Gdy wysyłamy jakieś informacje w monitorze portu szeregowego to miga nam dioda RX, a gdy Arduino wysyła informacje to miga dioda TX.

  • aby wysłać jakieś informacje do Arduino należy wpisać w program następującą frazę “Serial.available;” fraza ta pozwala na odbieranie przez Arduino informacji wysłanych do niego za pośrednictwem portu UART czy to komputera czy modułu bluetooth.

 Teraz jak dowiedzieliśmy się w jaki sposób wysyłać i odbierać różne dane po przez  Arduino. Możemy zadać sobie pytanie ale jak to wgl. wykonać z poziomu telefonu?! Otóż jest parę rozwiązań, które omówię w następnej części.