Kurs Arduino #17: Obsługa Bluetooth

Kurs Arduino #17: Obsługa Bluetooth

Cześć,
w tej części kursu przedstawimy jak komunikować się z Arduino po przez Bluetooth. Gorąco zapraszamy :)

Spis treści:

  1. Co to jest Bluetooth
  2. Różnica pomiędzy HC-05 i HC-06
  3. Komunikacja Arduino – PC
  4. Komunikacja Arduino – Android
  5. Podstawowe funkcje
  6. Przykładowy program #1:  Sterowanie światłem

 

Co będziemy potrzebować ?

  • Arduino
  • Moduł Bluetooth HC-05 albo HC-06
  • 2x rezystor 10k ohm
  • rezystor 220ohmów
  • dioda LED

 

1. Co to jest Bluetooth ?

Bluetooth to technologia bezprzewodowej komunikacji, obejmująca krótki obszar. Dzisiaj Bluetooth możemy głownie spotkać w telefonach, tabletach, komputerach, ale także przy peryferiach komputerowych typu mysz i klawiatura, ale te z kolei są już coraz żadziej produkowane. Standard tej technologii jest opisany w IEEE 802.15.1. Technologia korzysta z fal radiowych w paśmie ISM 2,4 GHz. Urządzenia korzystające z Bluetooth łączą się z sobą w picosieci. Gdzie jest może być jedno urządzenie typu Master oraz do 7 urządzeń typu Slave. Urządzenie typu Master może sterować pracą urządzeń Slave, ale nigdy na odwrót. Tak samo dwa urządzenia Slave nie mogą komunikować się ze sobą. Picosieci mogą być również łączone ze sobą przy pomocy węzła bridge (urządzenie Slave).

Zasięg:

Zasięg urządzenia determinowany jest przez klasy mocy:

  • klasa 1 (100 mW) – zasięg ok. 100 m
  • klasa 2 (2,5 mW) – zasięg ok. 10 m – najczęściej stosowana klasa
  • klasa 3 (1 mW) – zasięg ok. 1m

Nie mniej jednak zasięg w dużej mierze jest uzależniony od warunków atmosferycznych oraz uformowania obszaru, czy to jest otwarty teren czy np. mieszkanie.

Wersje standardu i przepustowość:

  • Bluetooth 1.0 ? 21 kb/s
  • Bluetooth 1.1 ? 124 kb/s
  • Bluetooth 1.2 ? 328 kb/s
  • Bluetooth 2.0 + EDR ? wprowadzenie Enhanced Data Rate zwiększyło transfer teoretyczny do 2,1 Mb/s (około 3 Mb/s wliczając narzut protokołu)
  • Bluetooth 3.0 + HS (High Speed) ? 24 Mb/s (3 MB/s)
  • Bluetooth 3.1 + HS (High Speed) ? 40 Mb/s (5 MB/s)
  • Bluetooth 4.0 + LE (Low Energy) ? 1 Mb/s znacząco ograniczono pobór energii (np. praca czujnika temperatury, przez wiele miesięcy na baterii pastylkowej), kosztem obniżonego transferu oraz zwiększono realny zasięg działania do 100 m
  • Bluetooth 4.1 – standard opracowany do zastosowania w tzw. „internecie rzeczy” (urządzenia typu „wearable”), umożliwiający bezpośrednią łączność przedmiotów z internetem
  • Bluetooth 4.2 – w stosunku do poprzednich wersji: szybszy transfer, wyższy poziom bezpieczeństwa, nawiązanie łączności z przedmiotami – łatwiejsze

To tak w dużym skrócie przedstawiliśmy zasadę działania i specyfikację Bluetooth. Więcej o tej technologii można poczytać na Wikipedii czy też innych „mądrych książkach”.

2. Różnica pomiędzy HC-05 i HC-06

W tej części kursu skupimy się na modułach HC-05 oraz HC-06. Niby są to dwa podobne modele, ale mają znaczne różnice.

HC-05 HC-06
HC05 HC06
Tryb: Master i Slave Tryb: tylko Slave

Pierwsza rzecz to taka, że wyprowadzenia są trochę inaczej ułożone w obu modelach. Tyczy to się w szczególności pinów KEY, LED1 i LED2. Wyprowadzenia odpowiedzialne za zasilanie i komunikację UART są w tych samych miejscach. No dobra to może nie jest jakaś mocna różnica, ale kolejna różnica ma już większe znaczenie. HC-05 jest w stanie obsługiwać tryby Master i Slave, gdzie HC-06 potrafi tylko obsługiwać tryb Slave. Do większości zastosowań z Arduino, model HC-06 jest wystarczający, ale gdybyśmy chcieli stworzyć pomiędzy dwoma Arduino bezprzewodową komunikację to będziemy jednak potrzebować modułu HC-05, który to będzie pełnić funkcję Master’a, ponieważ jak z teorii wiemy, nie można połączyć dwóch urządzeń typu Slave.

Kupując moduł Bluetooth HC-05 albo HC-06 zazwyczaj kupujemy go już osadzonego na większej płytce. Ze względu na to, że sam moduł jest przystosowany do zasilania 3,3V to musimy się upewnić, że dostanie on dokładnie tyle, a nie więcej. Jeżeli jesteś w stanie zlokalizować ten układ zaznaczony na obrazku niżej to dobrze, bo to jest regulator napięcia LDO 3,3V w obudowie SOT-23, którego zadaniem jest obniżenie napięcia zasilającego z 5V na 3,3V.

P60528-223127

W większości przypadków Arduino Uno ma na pinach poziomy napięć 5V. Moduł Bluetooth HC-xx toleruje te poziomy, ale zalecanym jest aby obniżyć je do poziomów 3,3V przy pomocy rezystorów 10k ohm albo bufora 4050D