Jak napisać aplikację mobilną poprzez... UART (2)

Jak napisać aplikację mobilną poprzez... UART (2)

W trakcie procesu tworzenia urządzeń elektronicznych projektanci napotykają szereg, zdawałoby się, nierozwiązywalnych problemów, z którymi muszą sobie sprawnie poradzić. Wracającym niezwykle często, niczym bumerang kłopotem, jest zorganizowanie interfejsu użytkownika HMI (Human Machine Interface). Wymagania są niejednokrotnie sprzeczne: wysoki poziom estetyki, ergonomia użytkowania i elastyczność funkcjonalna w opozycji do minimalnych kosztów oraz krótkiego czasu wdrożenia. Skłania to do poszukiwania nowych rozwiązań będących optymalnym kompromisem rozcinającym ten węzeł gordyjski.

W pierwszej części artykułu zaprezentowany został projekt modułu BBMobile z interfejsem BLE (Bluetooth Low Energy). Przyjmuje on przez port szeregowy UART kod JSON (JavaScript Object Notation) i na jego podstawie buduje aplikację działającą na urządzeniu mobilnym – tablecie, smartfonie. Wspomnieliśmy też o składni samego JSON-a, tworząc dwa proste, przykładowe interfejsy użytkownika.

Pora na szczegółowe przedstawienie kontrolek oraz omówienie procesu projektowania i testowania aplikacji mobilnych budowanych poprzez UART. Zrobimy to, przechodząc pełny proces tworzenia projektu o roboczej nazwie REMOTE SWITCH. Finalnie będzie on umożliwiał bezprzewodowe sterowanie dowolnym urządzeniem elektrycznym z dowolnego urządzenia mobilnego, korzystając z technologii BLE.

Wybór i przygotowanie urządzenia mobilnego

Z modułem BBMobile współpracują wszystkie urządzenia mobilne z systemem Android wyposażone w Bluetooth od wersji 4.0. Jest to najnowsza odsłona dobrze znanego interfejsu radiowego, używanego niegdyś głównie w bezprzewodowych systemach audio. Rewolucyjne wręcz zmiany, które rozpoczęły się z chwilą wprowadzenia w 2010 roku Bluetooth Low Energy, z każdą nową wersją rozszerzają możliwości standardu.

Po pobraniu, zainstalowaniu i uruchomieniu aplikacji BBMobile wszystko jest gotowe do zestawienia połączenia z modułem. Dotknięcie guzika START rozpocznie skanowanie w poszukiwaniu dostępnych kompatybilnych urządzeń BLE. W systemach Android od wersji 6.0 wzwyż konieczne jest uprzednie włączenie systemowej usługi lokalizacji, aby możliwe było korzystanie z Bluetooth LE. W przeciwnym wypadku podczas skanowania nie będą widoczne żadne urządzenia, z którymi można by zestawić połączenie. Wyniki skanowania przedstawiane są w postaci listy, z której wybieramy interesujące nas urządzenie.

Mały zestaw dewelopera

Do portu szeregowego modułu BBMobile (piny 18 – TxD, 19 – RxD, 20 – Gnd) podłączamy konwerter USB ↔ UART. Na komputerze PC instalujemy niezbędne dla niego sterowniki. Po tej operacji w systemie pojawią się wirtualne porty COM, których numery można sprawdzić, otwierając menadżera urządzeń, jak pokazuje rysunek 1.

Rysunek 1. Wirtualne porty COM, których numery są widoczne w menadżerze urządzeń

Następnie instalujemy i uruchamiamy dowolny program terminalu. Dobrym wyborem jest niezwykle funkcjonalny TeraTerm, który można pobrać z witryny Tera Term Open Source Project.

Rysunek 2. Parametry transmisji

W menu Setup → Serial Port ustawiamy parametry transmisji, jak pokazuje rysunek 2, a w Setup → Terminal parametry samego terminalu jak na rysunku 3.

Rysunek 3. Konfiguracja terminalu

Oczywiście wybrany numer portu COM musi odpowiadać istniejącemu w systemie i skojarzonemu z konwerterem USB ↔ UART. Teraz włączamy zasilanie modułu i na ekranie spodziewamy się powitania, dzięki któremu już wiemy, że kolejne komunikaty wysyłane przez moduł będą do nas docierać bez zakłóceń. Pozostaje jeszcze sprawdzić komunikację od terminalu do modułu. Wpisujemy zatem komendę: <hello i naciskamy Enter. Jeśli ekran terminalu wygląda teraz tak, jak ten z rysunku 4, to mamy pewność, że komunikacja z modułem działa prawidłowo w obie strony.

Rysunek 4. Efekt poprawnej komunikacji z modułem

Teraz, gdy połączenie BLE nie jest jeszcze zestawione, możemy skonfigurować kilka funkcji modułu. Komendy dostępne w trybie bezpołączeniowym zawiera tabela 1.

Komenda <name pozwala zmienić domyślną nazwę modułu na dowolną inną o maksymalnej długości 25 znaków. Wpisując <name,EP_BLE_device, sprawimy, że od tej chwili podczas skanowania na liście dostępnych urządzeń pojawi się nasza nazwa: EP_BLE_device. Bardzo przydatną funkcją jest możliwość ustawienia kodu dostępu do modułu. PIN może zawierać od jednej do dziesięciu cyfr, których wpisanie będzie wymagane do otwarcia połączenia. Po wpisaniu do UART-a komendy <pin,123 i naciśnięciu Enter moduł jest zabezpieczony kodem ‘123’. Rysunek 5 pokazuje przebieg komunikacji podczas przeprowadzanej zmiany powyższych parametrów. Ostatnia komenda <pin,0 usuwa zabezpieczenie kodem pin (każdy numer zaczynający się od zera wyłącza ochronę).

Rysunek 5. Przebieg komunikacji podczas zmiany parametrów

Zestawianie połączenia BLE

Gdy w aplikacji BBMobile dotkniemy guzika START znajdującego się w prawym górnym rogu ekranu, rozpocznie się proces skanowania w poszukiwaniu kompatybilnych urządzeń Bluetooth Low Energy. Rysunek 6 pokazuje zrzut ekranu smartfona z wynikiem skanowania.

Rysunek 6. Zrzut ekranu smartfona z wynikiem skanowania dostępnych urządzeń Bluetooth

Na liście pojawił się również nasz moduł EP_BLE_device. Jeśli nie jest on zabezpieczony kodem PIN, to po jego wybraniu z listy połączenie BLE zostaje zestawione i możliwe jest przesłanie kodu JSON budującego interfejs aplikacji. Jak pokazuje rysunek 7, jeśli kod zabezpieczający został ustawiony, to na ekranie urządzenia mobilnego zobaczymy prośbę o jego podanie.

Rysunek 7. Prośba o podanie kodu zabezpieczającego

Po wpisaniu błędnego PIN-u otwarcie połączenia z modułem BBMobile nie będzie możliwe, a ekran wypełni komunikat jak ten, pokazany na rysunku 8. W tym przypadku pozostaje naciśnięcie guzika STOP w prawym górnym rogu ekranu aplikacji. Po wprowadzeniu poprawnego kodu zabezpieczającego połączenie jest zestawiane i moduł BBMobile oczekuje na przesłanie przez UART struktury aplikacji w postaci kodu JSON.

Rysunek 8. Efekt działania aplikacji po wpisaniu błędnego kodu zabezpieczającego

Kolejny etap

Mamy uruchomioną komunikację z modułem. Kolejnym etapem będzie poznanie kontrolek, które są podstawowym budulcem aplikacji. Po wyświetleniu na ekranie interfejsu przesłanego w postaci kodu JSON pozwalają prezentować informacje przesłane do portu UART oraz przyjmować i przekazywać do mikrokontrolera dane wprowadzane przez użytkownika, ale o tym w kolejnej części artykułu.

Mariusz Żądło
iram@poczta.onet.pl

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik październik 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje październik 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna październik 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich październik 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów