Termometr z interfejsem Bluetooth

Termometr z interfejsem Bluetooth
Pobierz PDF Download icon

Dostępność modułów Bluetooth pozwala na budowanie urządzeń, dla których interfejsem użytkownika może być smartfon lub tablet. Publikujemy przykład takiego użytecznego projektu - termometru wyświetlającego wynik pomiaru na ekranie urządzenia pracującego pod kontrolą Androida. Można je wykonać dosłownie w pół godziny korzystając z gotowych, dostępnych w handlu podzespołów.

W budowie urządzenia zastosowano moduł Bluetooth typu BT222. Może on komunikować się z systemem nadrzędnym za pośrednictwem różnych interfejsów, ale ze względu na łatwość obsługi oraz implementacji oprogramowania do tego celu jest polecany UART. Do poprawnej komunikacji za pośrednictwem UART nie jest wymagana obsługa sygnałów RTS i CTS, ale wtedy należy wprowadzić niewielkie opóźnienia czasowe pomiędzy bajtami danych wysyłanymi do modułu.

Fotografia 1. Połączenie modułu Bluetooth z płytką Arduino

Listing 1. Konfiguracja

Należy bardzo ostrożnie zmieniać parametry komunikacji interfejsu UART, ponieważ niewłaściwe ustawienie może zablokować dostęp do modułu, a nie ma sposobu na przywrócenie ustawień bez poprawnej komunikacji z modułem. Uwaga! Moduł wymaga zasilania napięciem 3,3 V i nie toleruje napięcia 5 V na wejściach, więc przy współpracy z typowym Arduino musi być wyposażony w translator poziomu napięcia.

Arduino i BTM222

Płytka Arduino ma sprzętowy interfejs szeregowy UART, ale jest on połączony z konwerterem USB i dlatego bardzo przydaje się w czasie uruchamiania programów. Z tego powodu do komunikacji z modułem Bluetooth zostanie wykorzystany UART wykonany programowo.

Rysunek 2. Schemat ideowy połączeń modułu Bluetooth z płytką Arduino

Listing 2. Pętla główna oraz odczyt z interfejsów szeregowych

Podzespoły należy połączyć, jak na fotografii 1 lub według schematu z rysunku 2. Po dołączeniu interfejsu USB dioda CONN na płytce AVT1635 powinna migać. Już teraz moduł Bluetooth będzie widziany przez inne urządzenia jako Serial Adapter (rysunek 3) i można go sparować np. ze smartfonem podając w trakcie tej operacji PIN 1234.

Program testowy

Pierwszy program posłuży do sprawdzenia poprawności połączeń i komunikacji z płytką AVT1635. Na początku dołączana jest biblioteka SoftwareSerial.h, deklarowane są zmienne, dwa bufory i dwa znaczniki odebranych komunikatów. Ostatecznie w sekcji setup() program uruchamia dwa interfejsy szeregowe, jeden programowy do komunikacji z modułem Bluetooth, drugi sprzętowy do śledzenia przebiegu programu i komunikatów z i do modułu (listing 1).

Rysunek 3. Monitor szeregowy i komendy testowe

Listing 3. Funkcja wysyłania do BTM222

W pętli głównej program sprawdza czy zostały odebrane jakieś dane i umieszcza je w buforach - listing 2, funkcje baseReceive() i blueReceive(). W przypadku komunikacji po USB pierwsze wystąpienie znaku nowej linii n jest traktowane jako koniec komunikatu, co naturalnie pokrywa się z wciśnięciem klawisza ENTER na klawiaturze, natomiast moduł BTM222 każdy komunikat poprzedza i kończy znakiem nowej linii, dlatego odebranie komunikatu następuje po drugim znaku nowej linii (blueComplete >=2).

Ważną funkcją jest blueSend(), która odpowiada za wysyłanie komunikatów do modułu (listing 3). Po wysłaniu każdego znaku wstawiona jest przerwa delay(50). Dodatkowo, znak nowej linii n jest zamieniany na znak r, ponieważ moduł BTM222 wymaga, aby każda komenda zakończona była najpierw właśnie tym znakiem.

Rysunek 4. Sparowany moduł BTM222

Listing 4. Zmienna statusu połączenia oraz konfiguracja sterowania diodą LED

Po zaprogramowaniu płytki Arduino należy uruchomić dostępny w pasku narzędzi monitor szeregowy, ustawić prędkość komunikacji na 19200, a obok ustawić "nowa linia", jak na rysunku 4. Teraz w pasku wyślij należy wpisać AT i przycisnąć Enter, a moduł powinien odpowiedzieć OK. Tak można wysłać każdą z komend modułu BTM222 np. ATB?, która powoduje odesłanie sprzętowego identyfikatora układu.

Wykrywanie połączenia

Na każdy odebrany komunikat moduł BTM222 odpowiada OK lub ERROR. Ponadto, może wysłać jeden z komunikatów CONNECT lub DISCONNECT, które sygnalizują nawiązanie i zakończenie połączenia. Teraz program zostanie rozbudowany o funkcje wykrywające te zdarzenia.

Na początku jednak zostanie dodana nowa zmienna, która będzie przechowywała informacje o stanie połączenia oraz będzie decydowała o zaświeceniu diody LED znajdującej się na płytce Arduino (listing 4). Pętlę główną zmodyfikujemy, tak jak pokazano na listingu 5.

Rysunek 5. Monitor szeregowy i komunikaty o połączeniu

Listing 5. Wykrywanie komunikatów o połączeniu i sterowanie diodą LED

Po skompilowaniu zaprogramowaniu płytki należy uruchomić monitor szeregowy i połączyć się z modułem Bluetooth za pomocą dołączonej aplikacji. Temperatura jeszcze nie jest wskazywana, ale dioda LED reaguje prawidłowo - zaświeca się przy nawiązaniu połączenia i gaśnie po zamknięciu aplikacji a urządzenie wysyła komunikaty podobne do tych z rysunku 5.

Pomiar temperatury

Do pomiaru temperatury zastosowano czujnik LM35, który ma wyjście analogowe. Napięcie na wyjściu jest proporcjonalne do temperatury i wynosi 10 mV/°C. Takie rozwiązanie jest łatwe w realizacji i daje zakres pomiarowy od ok. 2 do 110°C. Najpierw zostaną dodane odpowiednie zmienne i skonfigurowane wyprowadzenia, ponieważ czujnik będzie zasilany z wyprowadzeń Arduino. Sposób skonfigurowania czujnika temperatury zaprezentowano na listingu 6.

Rysunek 6. Okno wyboru urządzenia

Listing 6. Konfigurowanie czujnika temperatury

Teraz w pętli głównej zostanie dodany fragment, który odpowiada za pomiar temperatury oraz jej zapis w postaci ramki "xx,x°C". Informacja ta będzie wysyłana do USB oraz, jeśli połączenie będzie aktywne (blueStatus == 1), to ramka będzie wysyłana także do modułu Bluetooth i w efekcie wartość temperatury będzie wyświetlana w oknie aplikacji (listing 7).

Aplikacja

Aplikację wykonano za pomocą Android Studio na podstawie projektu Arduino-Android-Sensors opisanego na stronie https://github.com/HarryGoodwin/Arduino-Android-Sensors. Po uruchomieniu aplikacji jest wyświetlane okno z wyborem urządzenia Bluetooth. Należy wybrać Serial Adapter, a aplikacja połączy się z modułem i zacznie wyświetlać temperaturę (rysunek 6 i 7).

Rysunek 7. Okno wyświetlania temperatury

Listing 7. Pomiar temperatury

Pełne źródła wszystkich programów i oraz aplikacji dostępne są w materiałach dodatkowych do artykułu.

KS

Artykuł ukazał się w
Elektronika Praktyczna
listopad 2015
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
KIT do tego projektu
Minimoduł Bluetooth z BTM222, AVT1635
Minimoduł Bluetooth z BTM222, AVT1635
Układ jest łatwym w użyciu modułem umożliwiającym zastosowanie łączności Bluetooth w każdym systemie z interfejsem UART. Zaprojektowany i zbudowany...
Zobacz w sklepie

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów