W dzisiejszym, wysoko zinformatyzowanym świecie telefony i tablety ze stałym dostępem do internetu, sieci lokalnej bądź innych rodzajów łączności bezprzewodowej są niezwykle popularne. Według bieżących statystyk na świecie jest 1.2 miliarda użytkowników globalnej sieci którzy korzystają do tego celu z urządzeń mobilnych, zaś sprzedaż tego typu urządzeń rośnie w tempie dwucyfrowym rok do roku. Jest to ogromny, dosyć mocno eksploatowany rynek, jednak według nas ma on ciągle niewykorzystany potencjał.
Każda osoba korzystająca ze smartfona lub mobilnego tabletu mogłaby korzystać z niego nie tylko do pozyskiwania informacji czy komunikacji, ale również do sterowania innymi urządzeniami elektronicznymi. Dzięki spadającym cenom komponentów elektronicznych takich jak mikroprocesory lub modemy bezprzewodowe możliwe staje się montowania miniaturowych komputerów w coraz szerszej gamie otaczających nas sprzętów. Łatwo wyobrazić sobie możliwość sterowania za pomocą telefonu komórkowego domowym sprzętem AGD/RTV, ale również bardziej zaawansowanymi urządzeniami takimi jak sprzęt pomiarowy czy medyczny. Dzięki łączności bezprzewodowej możliwe staje się monitorowanie interesujących nas zależności z niemal każdego miejsca globu, czy w mniejszej skali z dowolnego miejsca danego budynku.
Największym problemem w popularyzacji tego typu rozwiązań jest wielość różnych standardów komunikacyjnych pomiędzy urządzeniami elektronicznymi. Niemal każdy producent sprzętu elektronicznego czy oprogramowania rozwiązuje problemy komunikacji w nieco inny sposób przez co telefon firmy A nie jest w stanie sterować urządzeniem firmy B. W niektórych przypadkach problem leży po stronie sprzętowej – jedne urządzenia posiadają np. możliwość komunikacji po interfejsie Bluetooth, inne zaś potrafią korzystać tylko z lokalnej sieci WiFi. Często zaś zdarza się, iż urządzenia posiadają odpowiednie komponenty warstwy fizycznej jednak problem tkwi w oprogramowaniu – aplikacja zainstalowania na urządzeniu mobilnym nie potrafi odebrać lub zinterpretować danych wysyłanych przez nadajnik.
Uważamy, że istnieje potrzeba unifikacji sposobów komunikacji urządzeń mobilnych z różnego rodzaju sprzętem funkcjonalnym. Najlepszym rozwiązaniem było by stworzenie uniwersalnego oraz elastycznego zestawu oprogramowania i sprzętu, który mógłby być implementowanych przez producentów urządzeń i software'u, małym nakładem pracy zapewniając kompatybilność z rozwiązaniami obecnymi na rynku.
Aby urządzenie mobilne takie jak smartfon lub tablet ze wspieranym systemem operacyjnym (obecnie iOS, Android i Windows Phone 7) muszą znajdować się w tej samej sieci LAN co serwer z którym urządzenie ma się połączyć. W sieci musi być również możliwe rozsyłanie broadcastów które są podstawą metody wyszukiwania się urządzeń w sieci.
Po włączeniu aplikacji mobilnej, użytkownik aktywuje wyszukiwanie kompatybilnych serwerów interfejsu MMS. W tym celu aplikacja rozsyła pakiety w formacie UDP z metodą SEARCH i innymi parametrami zgodnymi z SSDP ([1] - strona 31) i dodatkowym polem zawierającym nazwę i wersję interfejsu MMS (obecnie 0.1).
Jeśli w aktywnej sieci WiFi znajdują się jakieś urządzenia pracujące w standardzie MMS odpowiadają one pakietem UDP typu unicast pod adres nadawcy z pakietu typu broadcast. Dzięki temu urządzenie wyszukujące dowiaduje się o urządzeniach typu MMS w sieci LAN i poznaje ich adresy IP.
Po zebraniu listy wszystkich dostępnych urządzeń pomiarowych w sieci, korzystając ze standardy WebSockets tworzy połączenie z każdym z serwerów. Od razu po nawiązaniu połączenia typu WebSocket [2], serwer wysyła do urządzenia klienckiego swoją konfigurację (Rys 2.1) w formacie JSON [3]
Aplikacja kliencka parsuje otrzymany plik JSON i generuje na jego podstawie interaktywne GUI dzięki którym można zobaczyć oraz edytować wybrane parametry czujnika w urządzeniu pomiarowym.
Po zaakceptowaniu parametrów czujnika przez użytkownika, aplikacja mobilna wysyła do serwera żądanie rozpoczęcia pomiarów wraz uaktualnionymi parametrami czujników o ile użytkownik je edytował. Serwer odsyła status (Rys 2.2) i o ile jest on oznaczony kodem sukcesu rozpoczyna się proces pomiarowy z ustalonymi wcześniej parametrami.
-------------
1. UPnP™ Device Architecture 1.1, 2008, October 15
2. WebSocket official webpage, Luty, 2013, http://www.websocket.org
3. JSON Introduction, Luty, 2013, http://www.json.org
W projekcie MMS skupiono się nad opracowaniem oprogramowania pozwalającego użytkownikom końcowym (tablet'ów, smartphone'ów) abstrahować od fizycznej (sprzętowej) realizacji systemu (kontrolno-pomiarowego) - realizacja sprzętowa musi być widziana jako 'Black Box' (Rys 3.1). W przypadku elektroników-konstruktorów takiego systemu nie jest możliwe abstrahować od fizycznej realizacji. Ponadto istnieje wiele możliwości konstrukcji i połączeń takiego systemu.
Rys 3.1 Ogólna konfiguracja MMS
W ramach projektu MMS dotyczących fizycznej realizacji skupiono się nad:
CTI-VMAX (Rys 3.2) jest komputerem przemysłowym (ARMPUTER) opartym o procesor ARM9, z wyprowadzonymi na zewnątrz interfejsami takimi jak: Ethernet, USB, I2C, RS232. Ponadto istnieje możliwość rozbudowy funkcjonalności poprzez system płyt nakładkowych - np. można zwiększyć ilość lub rodzaj interfejsów wyprowadzonych na zewnątrz.
Rys 3.2 CTI-VMAX w obudowie wraz z płytą nakładkową ARM SCPOPE v1.0.2
CTI-VMAX został wybrany jako wzór urządzenia M2M ze względu na:
Rys 3.3 Prawy górny róg - CTI-VMAX.\\ Lewy górny róg - nakładka ARM SCOPE v1.0.2.\\ Dół - nakładka ARM SCOPE v1.0.1
Na rynku istnieje wiele tanich i kompaktowych rozwiązań mogących realizować funkcjonalność komputera lub urządzenia M2M. Ponadto dla niektórych rozwiązań istnieje bogaty system nakładek (zwanymi również jako 'Cape', 'Shield' lub 'Mezzanine Card') i gotowych projektów (w tym otwartych). Wartymi wzmianki są takie platformy jak:
Do projektu MMS zostały wybrane platformy:
W celu przystosowania platform BeagleBone oraz Cubieboard do zadań stawianym przed MMS:
Rys 3.4 3D płyty 'przejściówki' dla BealgeBone - widok z góry
Rys 3.5 3D płyty 'przejściówki' dla BealgeBone - widok z dołu
Rys 3.7 3D płyty 'przejściówki' dla Cubieboard - widok z góry
Rys 3.8 3D płyty 'przejściówki' dla Cubieboard - widok z góry
Rys 3.9 Płyty przed montażem. Lewa strona - BeagleBone Cape. Prawa strona - Cubieboard Cape
Płyty zostały zmontowane (Rys. 3.10 - Rys 3.11) i przetestowane elektrycznie w docelowym systemie.
Rys 3.10 Płyty po montażu widok z góry. Prawy górny róg - BegaleBone cape wraz z zainstalowaną nakładką ADC SCOPE v1.0.1. Lewy górny róg - BeagleBone wraz z BeagleBone Cape - stanowiącą przejściówkę z BeagleBone na nakładki CTI-VMAX. Dół obie strony Cubieboard Cape - stanowiącego przejściówkę z Cubieboard na nakładki CTI-VMAX
Rys 3.11 Płyty po montażu widok z boku.
W ramach projeku MMS zostały opracowane, połączone i przetestowane bloki HDL:
Wymiana danych pomiędzy blokiem obsługi interfejsu a blokiem obsługi bufora danych z prztworników (kontrolera SDRAM) została oparata o popularny sposób połączeń wewnątrz-systemowych Wishbone [16]. Na rsunku 3.12 została zaprezentowana ogólna konfiguracja bloków.
Rys 3.12 Konfiguracja bloków HDL. Żółty - interfesjy. Niebieski - kontrolery. Zielony - fizyczne elementy
Sposób działania jest następujący:
Zostały opracowane, stworzone i przetestowane rozwiązania oparte o nowoczesne platformy sprzętowe. Stworzono minimalną bazę sprzętową dla dalszego rozwoju oprogramowania oraz HDL. W dalszych pracach planuje się (o ile fundusze na to by pozwoliły) opracowanie rozwiązań opartych o inne wymieniane platformy. Dałoby to szansę na stworzenie większej bazy rozwiązań sprzętowych oraz zapoznanie (studentów) z nowoczesnymi, tanimi i względnie wydajnymi rozwiązaniami sprzętowymi. Ponadto został opracowany projekt (nie zrealizowany ze względu na duże koszta produkcji i montażu) komputera przemysłowego ARMPUTER-V3 wzorowanego na CTI-VMAX i będącego jego następcą.
--------------------
1. http://www.creotech.pl/pl/oferta/systemy-m2m/cti-arm-vmax
2. http://beagleboard.org/bone
3. http://cubieboard.org/
4. https://www.altera.com/download/software/quartus-ii-we
5. http://www.arduino.cc/
6. http://beagleboard.org/hardware
7. http://beagleboard.org/project
8. http://circuitco.com/support/index.php?title=BeagleBone_Capes
9. http://www.creotech.pl/pl/oferta/systemy-m2m/cti-arm-c3
10. https://groups.google.com/forum/#!categories/cubieboard/add-ons
11. http://www.raspberrypi.org/
12. http://www.raspberrypi.org/phpBB3/viewforum.php?f=15
15. http://www.ti.com/product/am3359
14. http://linux-sunxi.org/A10
15. https://www.sdcard.org/home/
16. http://opencores.org/opencores,wishbone
Wersja klienta na platformę iOS powstawała jako pierwsza i była wzorem na późniejszych implementacji na inne platformy. Aplikacja napisana została w natywnym dla tej platformy języku programowania czyli Objective-C [1], który jest nadzbiorem języka C zapewniając tym samym zarówno szybkość działania jak i dynamiczną obiektowość przyspieszającą pracę na kodem.
Interfejs użytkownika składa się z trzech zasadniczych ekranów:
Rys 4.1 Interfejs użytkownika aplikacji iOS
Każdy z ekranów jest dynamicznie generowany na podstawie danych odebranych z warstwy sieciowej
Ekran lewy pokazuje wszystkie urządzenia znalezione w aktywnej sieci Wi-Fi które współpracują z protokołem MMS (odnalezione przy pomocy protokołu SSDP [2]. Aby uruchomić wyszukiwanie urządzeń należy wykonać gest na urządzeniu tzw. pull-to-refresh. W każdej komórce listy wyświetlona jest nazwa urządzania pobrana z jego konfiguracji oraz jego adres (IP przy sieci LAN i UUID przy sieciach Bluetooth). Dane do wyświetlenia listy pobierane są z bazy danych na urządzeniu obsługiwanej przy użyciu frameworku Core Data.
Ekran środkowy zostaje wyświetlony po wybraniu urządzenia z listy na ekranie lewym. Zawiera on listę aktywnych czujników podłączonych do danego urządzenia wraz z ich parametreami. Niektóre z nich są edytowalne (wyzwalania, częstotliwość próbkowania i wysyłania danych), innych zaś (nazwa, identifikator) nie można zmienić z poziomu aplikacji iOS.
Każda zmiana edytowalnego parametru zapisywana jest w bazie danych na urządzeniu i jeśli użytkownik zdecyduje się na uruchomienie pomiarów, wysyłana jest zgodnie z protokołem MMS do urządzenia, które po zaakceptowaniu (lub nie) nowych parametrów odsyła strukturę danych z polem oznaczającym status operacji ustawienia parametrów. W przypadku sukcesu następuje rozpoczęcie pomiarów zgodnie z nowymi parametrami. Jeśli urzędzenie nie może ustawić żądanych parametrów czujnika, zwracany jest kod błędu z krótkim opisem, który zostaje wyświetlony użytkownkowi.
Ekran prawy zostaje wyświetlony jeśli ustawienie parametrów z poprzedniego kroku zakończone zostanie sukcesem. W takim przypadku wygenerowana zostanie przewijana lista domyślinych wizualizacji wyników danych
Aplikacja na system Android została napisana w języku Java. Przy budowie oprogramowania wykorzystano środowisko Android SDK dostarczające dedykowane biblioteki oraz narzędzia deweloperskie [3]. W celu zapewnienia jak największej kompatybilności między zaprojektowaną aplikacją a urządzeniami mobilnymi z systemem operacyjnym Android, zastosowano wersję biblioteki 2.2 (API 8) [4]. Obsługiwane są bezprzewodowe połączenia sieciowe Wifi oraz Bluetooth między użytkownikiem systemu a modułami pomiarowymi.
Aplikacja posiada interfejs użytkownika zbudowany z następujących ekranów:
Ekrany są generowane dynamicznie na podstawie danych przychodzących od dostępnych urządzeń pomiarowych. Komunikacja odbywa się w standardzie MMS z wykorzystaniem plików JSON.
Po uruchomieniu aplikacji wyświetlany jest ekran główny z dostępnym przyciskiem Search Devices. Gdy użytkownik naciśnie przycisk, rozpoczęte jest wyszukiwanie urządzeń pomiarowych zgodnych ze standardem MMS dostępnych w sieci. Wyszukiwanie dotyczy:
Po zakończeniu wyszukiwania wyświetlana jest lista dostępnych w sieci urządzeń. W przypadku urządzeń pomiarowych dostępnych w sieci Ethernet, wyświetlane są informacje o:
W przypadku urządzeń Bluetooth wyświetlania informacja o:
Dodatkowo, wyświetlane są informacje o statusie skanowania sieci oraz wykrywanych urządzeniach. Na rysunku 4.2 przedstawiono przykładowy ekran główny aplikacji klienta.
Rys 4.2 Uruchomienie aplikacji ELHEP-MMS oraz rozpoczęcie skanowania (przycisk Search Devices)
Wszystkie urządzenia znajdujące się na liście na ekranie głównym są zgodne z protokołem MMS w przypadku sieci Wifi.
W przypadku wyszukiwania urządzeń Bluetooth wyświetlane są wszystkie dostępne w sieci urządzenia. Użytkownik musi wybrać jedno z nich i spróbować nawiązać połączenie. Jeśli połączenie zostanie nawiązane pomyślnie, urządzenie Bluetooth jest zgodne z protokołem MMS.
Na rysunku 4.3 przedstawiono listę dostępnych urządzeń po zakończeniu skanowania sieci.
Rys 4.3 Lista dostępnych urządzeń w standardzie MMS po zakończeniu skanowania sieci
Po wybraniu urządzenia z listy (z ekranu pierwszego), wyświetlane są szczegółowe informacje o urządzeniu pomiarowym. Prócz nazwy czujnika oraz jego adresu, dane opisują dostępne czujniki pomiarowe. Użytkownik ma możliwość ustawienia niektórych parametrów modułu, takich jak np.:
Ekran (ekran drugi) jest konstruowany dynamicznie, na bazie przesłanego przez urządzenie pomiarowe pliku JSON. Po naciśnięciu przycisku Send configuration, konfiguracja nastawiona przez użytkownika przesyłana jest do urządzenia pomiarowego.
W przypadku urządzenia Bluetooth użytkownik najpierw musi nacisnąć przycisk Connect by Bluetooth<.i>. Jeśli połączenie zostanie pomyślnie ustanowione, wyświetlony zostanie ekran taki sam, jak w przypadku urządzeń Wifi. Po skonfigurowaniu urządzenia, dane mogą zostać przesłane poprzez przycisk Send Configuration.
Na rysunku 4.4 przedstawiono przykładowy ekran urządzenia pomiarowego (ekran drugi).
Rys 4.4 Przykładowy ekran konfiguracji urządzenia pomiarowego
Odczytane dane pomiarowe od urządzenia wyświetlane są w polu tekstowym, dostępnym na ekranie pierwszym.
W przypadku komunikacji poprzez sieć Wifi, najpierw wysyłane są pakiety SSDP. Aplikacja następnie oczekuje następnie na pakiety zwrotne.
Wymiana danych realizowana jest na porcie o numerze 1900, przy użyciu transmisji danych UDP.
Jeśli urządzenie pomiarowe prześle pakiet zwrotny, nawiązywane jest połączenie z wykorzystaniem protokołu WebSockets. W tym celu zastosowano bibliotekę AutobahnAndroid [5] z niewielkimi modyfikacjami. Pliki JSON z informacjami o urządzeniach pomiarowych oraz konfiguracji przesyłane są poprzez ten protokół. Do transmisji danych przez WebSockets wykorzystywany jest port 7681 oraz podprotokół elhep-test.
Na rysunku 4.5 przedstawiono schemat obsługi komunikacji z urządzeniami pomiarowymi dostępnymi w sieci Wifi.
Rys 4.5 Algorytm obsługi komunikacji między aplikacją użytkownika a urządzeniami pomiarowymi poprzez połączenie Wifi
W przypadku połączenia Bluetooth obsługa połączenia realizowana jest poprzez funkcje dostępne bezpośrednio w bibliotece Android. Wykorzystywany jest standard RFCOMM. Urządzenia pomiarowe muszą udostępniać usługę Bluetooth o zgodnym z systemem MMS numerze UUID. Informacje o urządzeniu pomiarowym i dostępnych opcjach konfiguracyjnych czujników są zgodne ze standardem MMS i przesyłane przy pomocy plików JSON.
Na rysunku 4.6 przedstawiono schemat obsługi komunikacji z urządzeniami pomiarowymi dostępnymi w sieci Bluetooth.
Rys 4.6 Algorytm obsługi komunikacji między aplikacją użytkownika a urządzeniami pomiarowymi poprzez połączenie Bluetooth
Aplikację Android Client można również uruchomić na komputerze PC. W tym celu należy skorzystać z wirtualnej maszyny, np. poprzez oprogramowanie VirtualBox. Istnieje możliwość komunikacji poprzez następujące interfejsy:
Projekt został wykonany w środowisku Microsoft Visual Studio z wykorzystaniem emulatora Windows Phone Emulator 7.1.
W aplikacji do przechowywania danych lokalnych wykorzystano mechanizm Isolated Storage. W przestrzeni tej zapisywany jest egzemplarz klasy, który miał przechowywać aktualne dane pomiarowe przychodzące z serwera, zawierające dane na temat pomiarów i konfiguracji urządzenia pomiarowego, a także przechowywać dane na temat nowej konfiguracji ustawionej przez użytkownika.
Aplikacja w obecnej wersji wyświetla dane testowe zapisane w egzemplarzu klasy, służącej do przechowywania danych pomiarowych.
Rys 4.7 Uruchomienie aplikacji MMS
Rys 4.8 Odświeżenie listy dostępnych urządzeń
Rys 4.9 Wybór dostępnego urządzenia pomiarowego
Rys 4.10 Widok strony z parametrami pomiaru dla urządzenia Simens C234
Rys 4.11 Przycisk start powoduje wyświetlenie wartości zmierzonych przez urządzenie, oraz wyświetlenie aktualnej konfiguracji urządzenia pomiarowego
----------------
1. About Objective-C, http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/P...
2. Simple Service Discovery Protocol, http://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
3. Android SDK, http://developer.android.com/sdk/index.html
4. Platform Versions, Current Distribution, http://developer.android.com/about/dashboards/index.html
5. Autobahn Android, http://autobahn.ws/android
Podczas prac nad projektem MMS udało się zaprojektować i zrealizować dużą cześć finalnego projektu. Zrealizowano wersje alpha software'u na kilka platform mobilinych i system desktopowy Linux. Przygotowano również platformę sprzętową którą będzie bardzo przydatna podczas prac rozwojowych nad systemem w następnych semestrach. Produkcja i zakup niezbędnych części sprzętowej nie byłby możliwy bez pomocy finansowej z tytułu przyznania Grantu Rektorskiego.
Attachment | Wielkość |
---|---|
device_json_spec.png | 260.79 KB |
device_answer_json.png | 18.41 KB |
Capes_PCB.jpg | 441.32 KB |
Capes_mount1.jpg | 62.89 KB |
Capes_mount2.jpg | 60.82 KB |
HDL_General.JPG | 32.83 KB |
NBB_BTM_3D.png | 128.23 KB |
NBB_TOP_3D.png | 133.49 KB |
NCB_BTM_3D.png | 142.88 KB |
NCB_TOP_3D.png | 126.28 KB |
VMAX_n_ADC_SCOPES.jpg | 1.07 MB |
cubieboard_top.jpg | 93.35 KB |
VMAX_i_ARM_SCOPE.jpg | 373.83 KB |
Hardware_Conf.jpg | 280.34 KB |
2.device_spec-kopia.png | 62.22 KB |
3.measurement_screen-kopia.png | 48.66 KB |
1.main_menu-kopia.png | 39 KB |
img1.png | 33.27 KB |
img2.png | 29.5 KB |
img3.png | 19.64 KB |
img4.png | 24.47 KB |
img5.png | 34 KB |
imgW1.png | 97.97 KB |
imgW2.png | 59.31 KB |
imgW3.png | 74.92 KB |
imgW4.png | 154.31 KB |
imgW5.png | 232.29 KB |