wersja mobilna | kontakt z nami

Termometr z interfejsem Bluetooth

Numer: Listopad/2015

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.

Pobierz PDFMateriały dodatkowe

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

Pozostałe artykuły

Raspberry TOR Router

Numer: Czerwiec/2017

Korzystanie z sieci TOR nie jest specjalnie trudne, ale wymaga nieco zachodu. W praktyce każde urządzenie, na którym chcemy puścić ruch sieciowy poprzez szereg anonimowych routerów musi mieć zainstalowane odpowiednie oprogramowanie. Da się to jednak obejść w całkiem łatwy sposób - wystarczy tylko posiadać taki komputerek, jak Raspberry Pi.

Restarter do routera sterowany za pomocą SMS

Numer: Czerwiec/2016

Nikogo nie trzeba przekonywać o tym, jak bardzo jesteśmy uzależnieni od Internetu. Nie trzeba też przekonywać, jak irytujące mogą być niespodziewane przerwy w dostępie. Wiele z takich awarii można łatwo usunąć poprzez zrestartowanie routera lub modemu. Oczywiście, o ile mamy do niego łatwy dostęp. Jeśli nie, to idealnym rozwiązaniem będzie prezentowane urządzenie. Może służyć do zdalnego włączania, wyłączania lub restartowania ...

Automat do gier z Raspberry Pi

Numer: Czerwiec/2016

Miniaturowe komputery mają obecnie moce obliczeniowe znacznie przewyższające możliwości pełnowymiarowych komputerów z przed kilku-kilkunastu lat. Dotyczy to także specjalizowanych komputerów do gier wideo. Z całą pewnością wielu starszych czytelników EP miło wspomina czas spędzony w salonach gier, gdy królowały Pacman i Galaxians. Takie zamiłowanie do starych gier sprawiło, że na świecie opracowano bardzo wiele projektów, ...

Kot z dostępem do Internetu

Numer: Maj/2017

Choć prima aprilis już minął, publikujemy opis projektu, który na pierwszy rzut oka będzie wydawał się żartem. I fakt ? opisywany w nim projekt powstał jako żart, ale mamy wrażenie, że sama idea jest godna zastanowienia i może być podstawą do opracowania bardziej sensownych i przydanych rozwiązań. Dlatego prezentujemy "Kota IoT", na którego pomysł wpadł Jeremy Wall z Kalifornii.

Raspberry PI jako koparka bitcoinów

Numer: Maj/2016

Kryptowaluty coraz odważniej wkraczają do naszego życia. Bitcoin - najbardziej popularna z nich nie tylko została niedawno oficjalnie uznana w Europie za walutę, a nie towar, co ułatwia transakcje, ale też bywa akceptowana przez rosnącą liczbę firm. Pod pewnymi względami przypomina też złoto - jego zasoby są ograniczone i trzeba je wydobywać. Tyle, że zamiast przesiewać grunt na Alasce czy kopać kilofem pod ziemią, można to ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Czerwiec 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym