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

Lodówka na piwo z Raspberry PI

Numer: Luty/2016

Czy może być coś lepszego niż niewielka, specjalna, oddzielna lodówka na piwo? Takie pytanie mogłoby pewnie przejść przez myśl wielu inżynierom. My już znamy na nie odpowiedź: tak, jest to mała lodówka na piwo, wyposażona w komputer i podłączona do Internetu. Projekt takiego urządzenia, monitorowanego z użyciem Raspberry PI opracował Jamie Bailey z Nashville w USA. To dobry przykład użycia w komputera jednopłytkowego w AGD oraz ...

Domowa elektrownia fotowoltaiczna wspierana przez Raspberry PI

Numer: Luty/2016

Opublikowany przez nas projekt lodówki na piwo pokazuje, jak wykorzystać Raspberry PI do połączenia z serwisem internetowym, który ułatwia prezentowanie danych z urządzeń IoT użytkownikom. W tym projekcie pokazujemy, że można przyjąć zupełnie odwrotne podejście i użyć Raspberry PI do realizacji internetowego panelu użytkownika (HMI). W tej aplikacji służy on do sterowania domową elektrownią słoneczną, która sama w sobie stanowi ...

Sterownik do statywu 360°

Numer: Grudzień/2015

Urządzenie służy do sterowania statywem przytwierdzonym do silnika krokowego. Statyw będzie obracał się zawsze o stały kąt, który można ustawić. Po każdym częściowym obrocie sterownik zatrzymuje statyw i może wyzwolić spust aparatu fotograficznego. Taki proces będzie przebiegał automatycznie aż do pełnego obrotu - 360 stopni. Efektem będzie seria kilku - kilkudziesięciu fotografii prezentujących obiekt z perspektywy okręgu. ...

Pi-Pocket - przenośna konsola do gier z Raspberry Pi

Numer: Grudzień/2015

Zapewne większość czytelników EP pamięta emocje i pierwsze konsole do gier. Ówczesne gry, choć nie zachwycały grafiką, potrafiły wciągnąć na długie godziny. Co prawda, tamtego sprzętu na próżno szukać w sprzedaży, ale współczesna technika i technologia dają możliwość "powrotu" do tamtych lat. Tak właśnie postąpił autor opisywanego projektu, który przygotował nowoczesną wersję konsoli Nintendo Game Boy, która ...

PiTelephone - retro telefon z Raspberry Pi

Numer: Listopad/2016

W Elektronice Praktycznej opisywaliśmy już projekt telefonu, w którym zastosowano Raspberry Pi, ale prezentowany poniżej PiTelephone to zupełnie inna konstrukcja. Widać to już z zewnątrz, bo aparat telefoniczny jest stacjonarny i tarczowy i wygląda, jakby wyprodukowano go w latach 70. XX wieku. W środku znajduje się natomiast Raspberry Pi i szereg dodatkowych komponentów, które zmieniają wybieranie impulsowe na tonowe oraz sterują pracą ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Luty 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym