AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE
WYDZIAŁ INFORMATYKI , ELEKTRONIKI I TELEKOMUNIKACJI
KATEDRA ELEKTRONIKI
PRACA DYPLOMOWA
INŻYNIERSKA
BEZPRZEWODOWA SIEĆ KONTROLNO-STERUJĄCA Z INTERFEJSEM BLUETOOTH DLA URZĄDZEŃ MOBILNYCH Z SYSTEMEM ANDROID
CONTROL AND COMMAND WIRELESS NETWORK WITH BLUETOOTH
INTERFACE FOR MOBILE DEVICES WITH ANDROID SYSTEM
Imię i nazwisko: Łukasz Tomaszowicz
Kierunek studiów: Elektronika i Telekomunikacja
Opiekun pracy: dr in ż. Jacek Kołodziej
Kraków, rok 2013
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
2/53
Oświadczam, świadomy odpowiedzialności karnej za poświadczenie nieprawdy,
że niniejszą pracę dyplomową wykonałem osobiście i samodzielnie i że nie korzystałem
ze źródeł innych niż wymienione w pracy.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
3/53
Spis treści 1.Wstęp ........................................................................................................................................ 5
1.1 Cel i zakres pracy ................................................................................................................ 5
1.2 Założenia projektowe ......................................................................................................... 6
2. Charakterystyka warstwy sprzętowej modelu sieci ................................................................. 8
2.1 Moduły kontrolno– sterujące............................................................................................. 9
2.1.1 Blok centralny – mikrokontroler ATmega8L ............................................................... 9
2.1.2 Blok zasilania ............................................................................................................. 11
2.1.3 Przełącznik konfiguracyjny ........................................................................................ 13
2.1.4 Blok komunikacji radiowej ........................................................................................ 13
2.1.5 Wejścia analogowe oraz wyjścia przekaźnikowe ...................................................... 15
2.1.6 Zewnętrzne złącza rozszerzające .............................................................................. 17
2.1.7 Blok serwisowy .......................................................................................................... 19
2.1.8 Projekt płytki drukowanej modułu kontrolno- sterującego ...................................... 20
2.1.9 Fizyczny wygląd modułów kontrolno-sterujących .................................................... 22
2.2 Moduł punktu dostępowego............................................................................................ 22
2.2.1 Blok centralny – mikrokontroler ATmega32L ........................................................... 23
2.2.2 Moduł komunikacji Bluetooth BTM112 .................................................................... 25
2.2.3 Projekt płytki drukowanej punktu dostępowego ...................................................... 26
2.2.4 Fizyczny wygląd punktu dostępowego ...................................................................... 28
2.3 Wykaz wykorzystanych elementów ................................................................................. 29
3. Oprogramowanie modułu kontrolno-sterującego, punktu dostępowego oraz aplikacja dla
systemu Android ........................................................................................................................ 30
3.1 Wspólne fragmenty kodu dla urządzeń kontrolno– sterujących oraz punktu
dostępowego ......................................................................................................................... 30
3.1.1 Komunikacja radiowa 868MHz ................................................................................. 30
3.1.2 Ramki komunikacyjne ............................................................................................... 31
3.1.3 Komendy komunikacyjne pomiędzy urządzeniami podrzędnymi a nadrzędnym ..... 33
3.1.4 Wejścia analogowe ................................................................................................... 34
3.1.5 Wyjścia przekaźnikowe oraz diody statusowe .......................................................... 35
3.1.6 Obsługa magistrali 1-wire ......................................................................................... 36
3.2 Punkt dostępowy ............................................................................................................. 37
3.2.1 Algorytm wyszukiwania nowych i obsługi podłączonych urządzeń .......................... 37
3.2.2 Obsługa komunikacji Bluetooth ................................................................................ 39
3.2.3 Komendy komunikacyjne pomiędzy urządzeniem nadrzędnym a aplikacją Android39
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
4/53
3.2.3 Algorytm działania urządzenia .................................................................................. 41
3.3 Moduły kontrolno- sterujące ........................................................................................... 42
3.3.1 Obsługa przełącznika konfiguracyjnego .................................................................... 42
3.3.2 Algorytm działania urządzenia .................................................................................. 44
3.4 Aplikacja użytkownika dla systemu Android .................................................................... 45
3.4.1 Kilka słów o Androidzie ............................................................................................. 45
3.4.2 Narzędzia niezbędne do pisania oprogramowania ................................................... 47
3.4.3 Koncepcja Aplikacji .................................................................................................... 47
4. Podsumowanie i możliwości dalszego rozwoju projektu ....................................................... 49
Bibliografia ................................................................................................................................. 52
Dodatek A. Spis zawartości płyty DVD ....................................................................................... 53
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
5/53
1.Wstęp
Szybki wzrosty liczby smartfonów, tabletów i innych urządzeń mobilnych,
otwiera nowe możliwości zastosowania elektroniki. Bezpowrotnie minęły czasy, w
których jedynym interfejsem użytkownika systemu mógł być skomplikowany zestaw
przełączników i lampek. Smartfony są dziś powszechnym narzędziem ułatwiającym
pracę, rozrywkę czy edukację, a jako urządzenia w pełni multimedialne są budowane w
oparciu o duże ekrany dotykowe, co sprawia, iż doskonale nadają się do prezentacji
graficznego interfejsu użytkownika zbudowanego systemu. Do bezprzewodowej
komunikacji z innymi urządzeniami można wykorzystać interfejsy bezprzewodowe
WLAN lub Bluetooth. Powoduję to, iż koszt budowy sytemu może zostać znacznie
zmniejszony, gdyż sprzętowo nie jest już wymagany dodatkowy komputer z monitorem
czy dedykowany wyświetlacz. Takim wyświetlaczem może być przecież tablet lub
smartfon.
Oczywiście sam smartfon, podobnie zresztą jak komputer, bez odpowiednich
aplikacji jest bezużyteczny. Analizując udział w rynku poszczególnych mobilnych
systemów operacyjnych okazuje się, iż ponad połowę rynku (50,9% [1]) zajmują
urządzenia pracujące pod kontrolą systemu Android. Dlatego myśląc o napisaniu
aplikacji na urządzenia mobilne w pierwszej kolejności należy skupić swoją uwagę na
aplikacji uruchamianej na tych właśnie urządzeniach.
1.1 Cel i zakres pracy
Celem pracy dyplomowej jest opracowanie i wykonanie prototypu
bezprzewodowej sieci kontrolno-sterującej z interfejsem Bluetooth dla urządzeń
mobilnych pracujących z systemem Android. Do zakresu pracy należy:
• rozpoznanie i analiza postawionego problemu,
• analiza możliwości rozwiązań,
• przygotowanie niezbędnych schematów ideowych elektroniki urządzeń,
• zaprojektowanie obwodów drukowanych urządzeń na podstawie schematów,
• produkcja obwodów drukowanych,
• przygotowanie, wg stworzonego projektu, odpowiedniej liczby urządzeń,
wystarczającej do przetestowania zaproponowanego rozwiązania postawionego
problemu,
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
6/53
• napisanie oprogramowania wbudowanego dla urządzeń, zapewniającego
prawidłowe działanie sieci,
• napisanie oprogramowania dla systemu Android pozwalającego na pełną
kontrolę nad zbudowaną siecią za pomocą urządzenia wyposażonego w interfejs
Bluetooth,
• analiza zastosowanego rozwiązania oraz wnioski.
1.2 Założenia projektowe
Przed przystąpieniem do praktycznej realizacji celu pracy dyplomowej, na
podstawie wstępnej analizy problemu, określone zostały następujące założenie
techniczne dotyczące projektu:
• Sieć kontrolno-sterująca będzie pracować w oparciu o model Master/Slave.
• Urządzeniami typu Slave będą moduły kontrolno-sterujące.
• Urządzeniem nadzorującym prace sieci, typu Master, będzie punkt dostępowy.
• Dostęp do modułów kontrolno-sterujących będzie możliwy tylko za
pośrednictwem punktu dostępowego.
• Komunikacja między punktem dostępowym, a modułami kontrolno-sterującymi
będzie odbywać się tylko drogą radiową na częstotliwości nośnej 868MHz.
• Komunikacja między punktem dostępowym, a urządzeniem mobilnym będzie
odbywać się za pośrednictwem interfejsu Bluetooth (2,4GHz).
• Moduły kontrolno-sterujące zostaną wyposażone między innymi w: 2 wyjścia
przekaźnikowe, 2 wejścia analogowe, interfejs 1-wire.
• W jednej sieci może pracować maksymalnie 8 modułów kontrolno-sterujących,
rozróżnialnych na podstawie unikalnych nastaw przełącznika konfiguracyjnego.
• Wszystkie zaprojektowane urządzenia będą mogły być zasilane ze źródła
napięcia stałego od 7 do 15V.
• Opracowane protokoły transmisyjne powinny zapewniać: możliwość
sprawdzenia poprawności otrzymanej ramki (sumy kontrolne), retransmisję
uszkodzonych ramek (pola sekwencyjne), oraz bezproblemową transmisję
ramek o długości co najmniej 40 bajtów (licząc wraz z nagłówkiem i suma
kontrolną).
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
7/53
• Podczas konfiguracji sieci zmiana adresu urządzenia nie powinna wymagać
restartu urządzenia kontrolno-sterującego.
• Interfejs użytkownika powinien posiadać: możliwość śledzenia aktualnego
stanu wejść analogowych, wyjść przekaźnikowych oraz umożliwiać zmianę ich
stanu.
• Aplikacja użytkownika zostanie napisana dla systemu Android.
• Aplikacja użytkownika powinna posiadać moduł umożliwiający wyszukiwanie
i łączenie do urządzeń bluetooth.
• Zmiana stanu dowolnego wejścia analogowego lub wyjścia przekaźnikowego
powinna być przekazana i zobrazowana na interfejsie użytkownika, w czasie nie
dłuższym niż 3 sekundy od chwili wystąpienia wymuszenia.
• Zmiana stanu dowolnego wyjścia przekaźnikowego powinna nastąpić w czasie
nie dłuższym niż 3 sekundy od momentu wydania polecenia zmiany stanu w
interfejsie użytkownika,
• Rozłącznie lub podłączenie nowego urządzenia nie powinno wymagać
rekonfiguracji istniejącej sieci,
• Rozłączenie lub podłączenie urządzenia do istniejącej sieci następuje
automatycznie, bez ingerencji użytkownika systemu i jest sygnalizowane w
interfejsie użytkownika w czasie nie przekraczającym 3 sekund.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
8/53
2. Charakterystyka warstwy sprzętowej modelu sieci
Realizacja całego projektu opiera się o 3 podstawowe elementy. Są to: moduły
kontrolno-sterujące, moduł punktu dostępowego, oraz urządzenie z systemem
operacyjnym Android. Punkt dostępowy oraz moduł kontrolno-sterujący został
zaprojektowany w programie Altium Designer. Sercem tych urządzeń są popularne
mikrokontrolery z 8-bitowej rodziny firmy Atmel, odpowiednio ATmega32 oraz
Atmega8. Komunikacja pomiędzy omawianymi urządzeniami odbywa drogą radiową
w oparciu o moduły nadawczo-odbiorcze firmy HopeRF - RFM12B [2]. Punkt
dostępowy wyposażony jest dodatkowo w interfejs Bluetooth, umożliwiając
komunikację z urządzeniami kontrolno-sterującymi poprzez dowolne urządzenie
wyposażone w ten interfejs oraz odpowiednie oprogramowanie. W założeniach
projektowych zdefiniowano, iż interfejs użytkownika całości systemu zostanie
utworzony w systemie Android. Dlatego, jako urządzenie sterujące całością systemu
zastosowano tablet Archos 101 G9 16GB [3], który zaopatrzony został w system
Android 2.2. Należy jednak zwrócić uwagę na fakt, iż sprzętowo wymagane jest
jedynie, aby urządzenie nadzorujące pracę sieci wyposażone było w interfejs
komunikacyjny Bluetooth. W związku z tym może to być zarówno tablet, jak i telefon
komórkowy czy nawet komputer, niezależnie od systemu operacyjnego, o ile zostanie
przygotowane oprogramowanie pozwalające na obsługę protokołu komunikacyjnego
omawianego systemu. Oznacza to, że rozwinięcie systemu o obsługę dodatkowych
urządzeń z systemami iOS, Symbian, Windows czy Linux jest stosunkowo proste i nie
wymaga zmian w zaproponowanej strukturze sprzętowej przedstawionej na rysunku
2.1.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
9/53
Rysunek 2.1. Schemat sieci modułów kontrolno-sterujących
2.1 Moduły kontrolno–sterujące Moduły te są elementem znajdującym się najdalej od użytkownika w
hierarchicznej strukturze przedstawianego projektu. Jednak są bardzo ważnym jego
elementem. Na rysunku 2.1 został przedstawiony schemat blokowy urządzenia, który
zostanie omówiony w kolejnych podpunktach tego podrozdziału.
Rysunek 2.2. Schemat blokowy urządzenia kontrolno-sterujące
2.1.1 Blok centralny – mikrokontroler ATmega8L
Najważniejszym elementem urządzenia kontrolno-sterującego jest 8-bitowy
mikrokontroler ATmega8L [4] pozwalający zapisywać w nielotnej pamięci FLASH
program o rozmiarze nie przekraczającym 8kB.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
10/53
Tabela 2.1. Uzupełniająca specyfikacja kontrolera ATmega8 Typ układu scalonego mikrokontroler AVR Organizacja pami ęci Fla sh 8kx8bit Pojemno ść pami ęci EEPROM 512B Pojemno ść pami ęci SRAM 1024B Obudowa TQFP32 Częstotliwo ść taktowania 16MHz Liczba wej ść/wyj ść 23 Liczba kanałów PWM 3 Liczba timerów 8 -bit 2 Liczba timerów 16 -bit 1 Monta ż SMD Napięcie pracy 2.7 ÷ 5.5V
Mikrokontroler ten został wykorzystany, ponieważ oferowane przez niego możliwości
(np. wielkość pamięci Flash, ilość wejść/wyjść, obecność sprzętowego portu
szeregowego) są wystarczające do realizacji zadania określonego przez wymagania
projektowe, a jednocześnie jest on układem tanim i powszechnie dostępnym.
Rysunek 2.3 przedstawia schemat ideowy całego urządzenia. Jest on uproszczony
poprzez przedstawienie niektórych elementów, jako samodzielnych bloków
funkcjonalnych podłączonych do kontrolera. Dla przejrzystości bloki, o których mowa
zaznaczone zostały kolorem zielonym, znajdują one odzwierciedlenie w rysunku 2.2 i
zostaną szerzej umówione na kolejnych stronach niniejszego opracowania. Urządzenie
zawiera złącze ISP pozwalające na programowanie mikrokontrolera.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
11/53
Rysunek 2.3. Schemat ideowy urządzenia kontrolno- sterującego
2.1.2 Blok zasilania
Urządzenie kontrolno-sterujące wymaga zasilania 12V – DC o wydajności
prądowej nie mniejszej niż 200mA. Dlatego w przedstawianym projekcie każde z nich
zostało wyposażone w zewnętrzny zasilacz impulsowy, podłączany bezpośrednio do
sieci energetycznej ~230V – AC, który na wyjściu zapewnia 12V – DC. Aby możliwe
stało się zasilanie innych urządzeń (np. oświetlenia LED) z tego samego zasilacza jego
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
12/53
wydajność prądowa znacznie przekracza wspomniane 200mA i wynosi 1,5A. Blok
zasilania został przedstawiony na rysunku 2.4.
Rysunek 2.4. Schemat ideowy bloku zasilania urządzenia kontrolno-sterujące
Krzemowa dioda prostownicza GL1B (ZAS_D1) na wejściu zabezpiecza urządzenie
przed odwrotną polaryzacją. Dzielnik napięcia, zrealizowany na rezystorach (ZAS:R1
oraz ZAS:R2) pozwala zmierzyć napięcie zasilania na jednym z kanałów ADC
mikrokontrolera, aby możliwe było przekazanie informacji o za wysokim lub zbyt
niskim napięciu do interfejsu użytkownika. Jak łatwo zauważyć stosunek podziału tego
dzielnika wynosi 10/1. Głównym elementem bloku zasilającego jest nieregulowany
stabilizator napięcia LDO (Low-dropout) LD1117 (ZAS:U1) w wariancie
zapewniającym na wyjściu napięcie w zakresie 3,235V do 3,365V o maksymalnej
wydajności prądowej do 800mA [5]. Układ ten posiada wewnętrzne zabezpieczenie
termiczne oraz prądowe, chroniące go przed uszkodzeniem w razie nadmiernego
obciążenia. Na wejściu oraz na wyjściu stabilizatora zastosowane zostały
elektrolityczne kondensatory filtrujące. Poprawne działanie bloku zasilania
sygnalizowane jest zieloną diodą LED (ZAS:D2).
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
13/53
2.1.3 Przełącznik konfiguracyjny
Założenia projektowe wymuszają konieczność zastosowania w omawianym
urządzeniu przełącznika konfiguracyjnego. Przełącznik zapewnia między innymi
możliwość określenia unikalnego, dla danej sieci modułów, adresu urządzenia.
Rysunek 2.5. Schemat ideowy przełącznika konfiguracyjnego
Jak można zaobserwować na rysunku 2.5 przełącznik (DIP:U1) z jednej strony
podłączony jest do masy natomiast z drugiej do linii sygnałowych. Dzięki rezystorom
podciągającym (DIP:R1-R4), w przypadku, gdy przełącznik ma rozwarte styki, linia
sygnałowa znajduje się w stanie logicznej „1”. Jeśli natomiast jeden ze styków
przełącznika zostanie zwarty to odpowiadająca mu linia sygnałowa zmieni stan na
logiczne „0”. Linie sygnałowe są podłączone bezpośrednio do wejść cyfrowych
mikrokontrolera.
2.1.4 Blok komunikacji radiowej
Urządzenie zostało wyposażone w blok komunikacji radiowej, którego
głównym elementem jest wyprodukowany przez firmę HopeRF moduł RFM12B.
Można wybrać układ w jednej z czterech wersji częstotliwości 315, 433, 868 oraz
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
14/53
915MHz. W omawianym projekcie został wykorzystany ten o częstotliwości 868MHz.
Do podstawowych zalet RFM12B zaliczyć należy [2]:
• małe wymiary 16x16x4,2 mm,
• brak konieczności stosowania dodatkowych elementów zewnętrznych,
• interfejs komunikacyjny – SPI,
• możliwość pracy z szybkością maksymalną 115200 bodów,
• minimalne napięcie zasilania 2,2V,
• możliwość zastosowanie tam gdzie wymagane jest zasilanie bateryjne, dzięki
dwóm specjalnym trybom pracy: Sleep oraz Wake-up timer.
Zbadany doświadczalnie zasięg uzyskany na antenach w postaci 8cm odcinków
przewodów wyniósł około 100 metrów w otwartej przestrzeni. Natomiast w badanej
przestrzeni zamkniętej nie stwierdzono problemów z komunikacją. Należy jednak
dodać, iż jako przestrzeń zamknięta rozumieć należy jednorodzinny dom zbudowany w
oparciu o 2 żelbetowe płyty o grubości 12 centymetrów i ściany wykonane z cegły
ceramicznej.
Rysunek 2.6. Blok komunikacji radiowej
Jak zostało pokazane na rysunku 2.6 do komunikacji mikrokontrolera z torem
radiowym zostały wykorzystane 4 linie interfejsu SPI (SDO, SDI, SCK, SEL) oraz linia
przerwania IRQ. Układ zasilany jest napięciem 3,3V, podobnie jak mikrokontroler,
dlatego nie są wymagane dodatkowe elementy dopasowujące poziomy napięć
poszczególnych linii interfejsu SPI.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
15/53
Rysunek 2.7. Wygląd modułu RFM12B w wersji SMD
Rysunek 2.8. Topologia wyprowadzeń modułu RFM12B w wersji SMD
Tabela 2.2 Opis wyprowadzeń modułu RFM12B Nazwa wyprowadzenia Pełniona funkcja nINT/VDI Przerwanie zewnętrzne VDD Zasilanie SDI Dane wejściowe SPI SCK Zegar SPI nSEL Wybór układu SPI SDO Dane wyjściowe SPI nIRQ Żądanie przerwania FSK/DATA/nFFS Dane wejściowe (FSK)/odbiór danych (FSK)/wybór FIFO DCLK/CFIL/FFIT Wyjście zegara/ kondensatory filtrujące (tryb analogowy)/
przerwanie zapełnienia buforu FIFO CLK Wyjście sygnału taktującego dla innego układu nRES Reset GND Masa
2.1.5 Wejścia analogowe oraz wyj ścia przeka źnikowe
Kolejnym blokiem niezbędnym w zaprojektowanym urządzeniu jest moduł
wejść analogowych. Został on zaprojektowany w taki sposób, aby możliwe było
wykrywanie poziomu dołączonej rezystancji. Jest to cecha pożądana z punktu widzenia
możliwości wykorzystania, jako wejść czujek SSWIN (system sygnalizacji napadu i
włamania). Oczywiście do wejść analogowych można podłączyć także zwykłe
przyciski mono lub bistabilne – będą one wykrywane jako zerowa lub nieskończona
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
16/53
rezystancja. W przypadku wykorzystania przycisków przed wykrywaniem drgań jego
styków podczas zmiany stanu zabezpiecza kondensator (IN1C1 oraz IN2C1) włączony
równolegle z zabezpieczającą diodą Zenera (IN1_DZ1 oraz IN2_DZ1). Dioda chroni
pin mikrokontrolera przed dołączeniem do niego zbyt wysokiego potencjału dodatniego
(powyżej 3,6V) i ujemnego (większego niż -0,7V). Urządzenie zostało wyposażone w
dwa identyczne, ale niezależne obwody wejściowe podłączone do dwóch różnych
kanałów przetwornika ADC mikrokontrolera.
Rysunek 2.9. Wejścia analogowe
Urządzenie kontrolno-sterujące zostało wyposażone w dwa przekaźniki (OUT1_PK1
oraz OUT2_PK1), w których cewki są zasilane napięciem 12V. Do jej zasilana
wykorzystano tranzystor typu NPN-BC846 (OUT1_T1 oraz OUT2_T1). Rozłączenie
obwodów indukcyjnych w chwili rozwarcia cewki generuje szpilkę napięciową
związaną z mechanizmem samoindukcji [6]. Aby wyeliminować ewentualne skutki
tego zjawiska została do uzwojeń cewki przekaźnika włączona dioda prostownicza
GL1B (OUT1_D1 oraz OUT2_D1). Istnieje możliwość wybrania wyjściowych styków
przekaźnika jak normalnie otwartych (NO) lub jako normalnie zamkniętych (NC). O
aktualnym stanie każdego z przekaźników informuje odpowiednia dla każdego wyjścia
dioda LED (OUT1_D2 oraz OUT2_D2).
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
17/53
Rysunek 2.10.Wyjścia przekaźnikowe
2.1.6 Zewnętrzne zł ącza rozszerzaj ące
W celu rozszerzenia funkcjonalności prezentowanego urządzenia został
wyprowadzony interfejs 1-wire umożliwiający podłączenie innych niewielkich
urządzeń jak np. termometr cyfrowy.
Rysunek 2.11. Zewnętrzne złącza rozszerzające W celu zaprezentowania takiej możliwości omawiane urządzenie zostało wyposażone
w popularny termometr cyfrowy DS18B20, co nie zostało pokazane na rysunku 2.11,
ponieważ jest to jedynie przykład wykorzystania wyprowadzonego interfejsu. W
stosunkowo prosty sposób można do urządzenia podłączyć także inne, np.
rezystancyjne, czujniki wykorzystując w tym celu interfejs analogowy. Warto dodać, iż
interfejs ten to zwykły dzielnik napięciowy, w którym istnieje możliwość uzależnienia
jednej z rezystancji od mierzonego przez czujnik parametru. Pełne wykorzystanie
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
18/53
spektrum zmian rezystancji takiego czujnika może wymagać zmiany wartości
rezystancji (R_AN_IN) w bloku omawianego interfejsu.
Jak wspomniano, do interfejsu 1-wire, jako przykład zastosowania, dołączono
termometr cyfrowy DS18B20. W programie mikrokontrolera został natomiast
przygotowany odpowiedni zestaw procedur (o czym będzie mowa w kolejnym
rozdziale) pozwalający na obsługę tego urządzenia.
DS18B20 jest cyfrowym czujnikiem temperatury pozwalającym na
zaprogramowanie rozdzielczości pomiaru. Jego podstawowe cechy to [7]:
• „komunikacja za pomocą interfejsu 1-wire,
• każdy odbiornik posiada unikalny 64 bitowy kod umieszczony w wewnętrznej
pamięci ROM układu,
• maksymalnie uproszczony sposób odczytu temperatury,
• nie potrzebuje żadnych zewnętrznych komponentów,
• może być zasilany z linii danych,
• zasilanie od 3V do 5,5V,
• dokładność 0,5°C dla zakresu -10°C ÷ 85°C
• możliwość ustawienia rozdzielczości od 9 do 12 bitów,
• konwersja 12 bitowego słowa – maksymalnie 750ms.
Rysunek 2.12 przedstawia budowę logiczną układu DS18B20. Pamięć ROM 64-bitowa
zawiera unikalny adres układu. Scratchpad (notatnik) zawiera 2 bajtowy rejestr z
wartością temperatury dostarczoną cyfrowo z czujnika. W dodatku scratchpad
zapewnia dostęp do jedno-bajtowego rejestru porównań (TH i TL) oraz do
jednobajtowego rejestru konfiguracyjnego. Rejestr konfiguracyjny pozwala na
ustawienie rozdzielczości konwersji temperatury (9, 10, 11 lub 12 bitów). TH, TL oraz
rejestry konfiguracyjne są typu EEPROM, dlatego ich zawartość nie zmienia się po
wyłączeniu zasilania.”
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
19/53
Rysunek 2.12. Schemat blokowy układu DS18B20 [8]
Rysunek 2.13. Topologia wyprowadzeń układu DS18B20 [8]
2.1.7 Blok serwisowy
W celu monitorowania poprawności wykonywania programu mikrokontrolera
został wprowadzony blok serwisowy. Pozwala on w łatwy sposób zdiagnozować
ewentualne błędy w oprogramowaniu. Wykorzystany został interfejs komunikacyjny
UART mikrokontrolera. Aby możliwe było bezpośrednie podłączenie urządzenia do
komputera za pomocą portu RS-232 wykorzystano konwerter MAX3232 [9], który jest
jednym z wielu wariantów popularnego układu MAX232 [10]. Podstawowa różnica
między układami jest taka, iż MAX3232 pozwala na pracę już od napięcia na poziomie
3,3V, a także wykorzystanie kondensatorów o mniejszej pojemności – 100nF.
Omawiane złącze posiada pin zasilający (3,3 V) umożliwiający zasilenie konwertera
(np. RS232-USB), jeśli taki byłby wymagany. Na rysunku 2.14 został przedstawiony
blok serwisowy urządzenia.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
20/53
Rysunek 2.14. Blok serwisowy urządzenia kontrolno-sterującego
2.1.8 Projekt płytki drukowanej modułu kontrolno- s teruj ącego
Przedstawione powyżej schematy są efektem analizy postawionego problemu,
próby jego rozwiązania, a także opracowania 2 płytek prototypowych. Ostatecznie
wersja płytki została przedstawiona na rysunkach 2.15, 2.16, oraz 2.17. Kształt obrysu
płytki, a także otworów montażowych został zaprojektowany tak, aby urządzenie
mogło zostać umieszczone w standardowej obudowie na szynę DIN - Z102 [11].
Rysunek 2.15. Projekt płytki drukowanej – warstwa TOP
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
21/53
Przedstawiona płytka drukowana została wykonana na podstawie
przygotowanej dokumentacji technicznej w formacie GERBER, przez firmę SATLAND
Prototype z Gdańska [12]. Dwuwarstwowy obwód drukowany został zaprojektowany
w taki sposób, aby możliwe było osadzenie wszystkich elementów SMD tylko na
jednej stronie laminatu. Ma to duże znaczenie z uwagi na koszt seryjnej produkcji
urządzeń elektronicznych. Na potrzeby pracy dyplomowej zostały wykonane 3
identyczne urządzenia tak, aby możliwe stało się stosunkowo łatwe pokazanie
rozwiązania postawionego problemu. Płyta drukowana posiada wymiary 83x48[mm].
Rysunek 2.16. Projekt płytki drukowanej – warstwa BOTTOM
Rysunek 2.17. Projekt płytki drukowanej – warstwa TOP oraz BOTTOM
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
22/53
2.1.9 Fizyczny wygl ąd modułów kontrolno-steruj ących
Na rysunku 2.18 przedstawiony został wygląd zmontowanego urządzenia.
Rysunek 2.18. Moduł kontrolno sterujący – rzeczywisty wygląd urządzenia
2.2 Moduł punktu dostępowego Punkt dostępowy to urządzenie nadzorujące pracę urządzeń kontrolno-
sterujących. Jego schemat blokowy został zamieszczony na rysunku 2.19.
Rysunek 2.19. Schemat blokowy urządzenia kontrolno-sterującego
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
23/53
Jak widać punkt dostępowy zaprojektowany został jako urządzenie nieznacznie
różniące się od przedstawionego już urządzenia kontrolno-sterującego. Podstawowe
różnice w schemacie blokowym to:
- brak bloku serwisowego,
- brak przełącznika konfiguracyjnego,
- dodatkowy blok komunikacyjny – Bluetooth,
- mikrokontroler ATmega32L.
W kolejnych podpunktach niniejszego opracowania postaram się omówić tylko nowe
elementy, ponieważ pozostałe bloki są identyczne, jak w przypadku modułów
kontrolno-sterujących.
2.2.1 Blok centralny – mikrokontroler ATmega32L
Sercem modułu punktu dostępowego jest mikrokontroler ATmega32L [13].
Dzięki zastosowaniu tego układu programista otrzymuje do dyspozycji aż 32kB
nielotnej pamięci Flash. Biorąc pod uwagę zadania, jakie będzie wykonywał punkt
dostępowy, taka ilość pamięci wydaje się być niezbędna. Omawiany mikrokontroler
posiada także 2kB wewnętrznej statycznej pamięci RAM.
Tabela 2.3. Uzupełniająca specyfikacja kontrolera ATmega32L Typ układu scalonego mikrokontroler AVR Organizacja pamięci Flash 8kx8bit Pojemno ść pami ęci EEPROM 1024B Pojemno ść pami ęci SRAM 2048B Obudowa TQFP44 Częstotliwo ść taktowania 16MHz Liczba wej ść/wyj ść 32 Liczba kanałów PWM 4 Liczba timerów 8 -bit 2 Liczba timerów 16 -bit 1 Monta ż SMD Napięcie pracy 2.7 ÷ 5.5V
Dodatkowymi parametrami przemawiającymi za wyborem mikrokontrolera
ATmega32L niewątpliwie były jego dostępność oraz cena (aktualnie poniżej 10 zł). Na
rysunku 2.20 zaprezentowany został schemat ideowy urządzenia, w którym dla
uproszczenia na zielono zaznaczono bloki: zasilania, wejść/wyjść oraz komunikacji
radiowej. Moduł Bluetooth zastał dołączany do punktu dostępowego za pomocą 5-
pinowego złącza, jako dodatkowe urządzenia. Więcej szczegółów znaleźć można w
kolejnym podpunkcie.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
24/53
Rysunek 2.20. Schemat ideowy urządzenia kontrolno- sterującego
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
25/53
2.2.2 Moduł komunikacji Bluetooth BTM112
Do komunikacji punktu dostępowego z urządzeniem mobilnym za pomocą
interfejsu Bluetooth wykorzystany został moduł BTM112. Od strony punktu
dostępowego wymaga on jedynie odpowiedniego podłączenia pinów RX oraz TX
interfejsu UART. Z tego powodu bazując na BTM112 został stworzony mały moduł
Bluetooth, działający jako niezależnie urządzenie, posiadający 5 wyprowadzeń o
następującym znaczeniu:
• ANT – Antena • VCC – Napięcie zasilania (5..15 V) • GND – Masa • RX – Odbiór danych UART • TX – Nadawanie danych UART
Rysunek 2.21 Wygląd BTM112 [14]
Rysunek 2.22 Schemat ideowy modułu Bluetooth
Rysunek 2.23 Wygląd jednowarstwowej płytki drukowanej modułu bluetooth
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
26/53
BTM-112 jest zintegrowanym układem Bluetooth klasy 2 o stosunkowo niewielkim
rozmiarze (25x14.5x2.2mm), pracującym zgodnie ze standardem Bluetooth 2.0 EDR
[15]. Posiada on wyprowadzenia USB oraz UART. Potrafi pracować w trybie SPP
(Serial Port Profile). Dzięki obsłudze komend AT jego odpowiednia konfiguracja jest
prosta. Do poprawnej pracy wymaga napięcia zasilania w przedziale od 3 do 3,6V.
Nadajnik o mocy 2,5mW pozwala uzyskać zasięg do 10 metrów. Na potrzeby
omawianego projektu za pomocą komend AT zostały zmienione następujące
parametry:
• LocalEcho – OFF, • BaudRate - 115200bps, • DeviceName: PD_AGH_BLUETOOTH.
Warto dodać, iż parametry te zostały zmienione za pomocą komputera jeden raz i nie są
ustawiane przez punkt dostępowy przy starcie urządzenia. Ewentualna zmiana modułu
Bluetooth na inny musi zostać poprzedzona odpowiednią jego konfiguracją.
2.2.3 Projekt płytki drukowanej punktu dost ępowego
Na podstawie zaprezentowanych schematów ideowych została przygotowana
kolejna płytka drukowana. Jej wygląd został przedstawiony na rysunkach 2.24-26.
Rysunek 2.24 Projekt płytki drukowanej – warstwa TOP
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
27/53
Rysunek 2.25 Projekt płytki drukowanej – warstwa Bottom
Rysunek 2.26 Projekt płytki drukowanej – warstwy TOP oraz Bottom
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
28/53
2.2.4 Fizyczny wygl ąd punktu dost ępowego
Na rysunku 2.27 przedstawiony został wygląd zmontowanego urządzenia w
obudowie Z-100.
Rysunek 2.27 Punkt dostępowy – rzeczywisty wygląd urządzenia
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
29/53
2.3 Wykaz wykorzystanych elementów
Tabela 2.4 przedstawia pełną listę elementów niezbędnych do produkcji punktu
dostępowego i modułu kontrolno-sterującego.
Tabela 2.4. Zestawienie elementów Nazwa Rodzaj Ilo ść
Punkt dost ępowy
JRC23 Przekaźnik 2
LD1117S33TR Stabilizator 3,3V 1
BTM_MODULE Moduł Bluetooth 1
ATmega32-16AI Mikrokontroler 1
GL1B Dioda prostownicza 3
DZ3V6 Dioda zenera 2
100µF/16V Kondensator elektrolityczny 2
100nF Kondensator mlcc 2
LED_B Dioda LED niebieska 1
LED_R Dioda LED czerwona 1
LED_G Dioda LED zielona 5
BC846 Tranzystor NPN 2
470R Rezystor 5
2k Rezystor 2
4k7 Rezystor 1
10k Rezystor 5
1k1 Rezystor 4
10R Rezystor 2
120R Rezystor 2
RFM12B Moduł radiowy 1
DG381-3.5-2P11 Listwa zaciskowa; 3,5mm; tory:2; 2
DG381-3.5-3P11 Listwa zaciskowa; 3,5mm; tory:3; 2
Moduł kontrolno steruj ący
JRC23 Przekaźnik 2
LD1117S33TR Stabilizator 3,3V 1
DIP_SW_4 Przełącznik konfiguracyjny 1
MAX3232 Układ scalony 1
ATmega8L-8AC Mikrokontroler 1
GL1B Dioda prostownicza 3
DZ3V6 Dioda zenera 3
100µF/16V Kondensator elektrolityczny 2
100nF Kondensator mlcc 8
LED_B Dioda LED niebieska 1
LED_R Dioda LED czerwona 1
LED_G Dioda LED zielona 3
BC846 Tranzystor NPN 2
2k Rezystor 2
10k Rezystor 10
1k1 Rezystor 3
430R Rezystor 1
470R Rezystor 2
270R Rezystor 2
4k7 Rezystor 1
10R Rezystor 2
120R Rezystor 2
RFM12B Moduł radiowy 1
DG381-3.5-2P11 Listwa zaciskowa; 3,5mm; tory:2; 2
DG381-3.5-3P11 Listwa zaciskowa; 3,5mm; tory:3; 2
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
30/53
3. Oprogramowanie modułu kontrolno-sterującego, punktu dostępowego oraz aplikacja dla systemu Android
Kontrolę nad zaprojektowanymi urządzeniami sprawują 8-bitowe
mikrokontrolery AVR firmy Atmel. Do kompilacji napisanego kodu użyto WinAVR
(AVR-GCC dla Windows), natomiast pracę z kodem źródłowym ułatwiło dedykowane
środowisko IDE o nazwie AVR Studio w wersji 4. Do zapisania kodów źródłowych do
procesorów użyto programatora zgodnego z STK200/300. W kolejnych podrozdziałach
omówione zostały zagadnienia związane z oprogramowaniem wspomnianych
urządzeń, a także aplikacji użytkownika działającej w systemie Android.
3.1 Wspólne fragmenty kodu dla urządzeń kontrolno– sterujących
oraz punktu dostępowego
Na podstawie rozdziału drugiego niniejszego opracowania można wysnuć
słuszny wniosek, iż urządzenia są sprzętowo w wysokim stopniu podobne. Oczywistym
jest zatem fakt, że wiele fragmentów kodu lub nawet całe biblioteki mogą być z
powodzeniem wykorzystane w programie zarówno jednego, jak i drugiego urządzenia,
dlatego w pierwszej kolejności omówione zostaną te właśnie fragmenty. Natomiast w
podpunktach 3.2 oraz 3.3 tylko te, które nie zostały omówione z podpunkcie 3.1.
3.1.1 Komunikacja radiowa 868MHz
Jak wcześniej wspomniano, w obu urządzeniach komunikacja radiowa została
oparta o ten sam układ (RFM12B), dlatego została stworzona biblioteka do jego
obsługi. Do komunikacji z radiowym układem nadawczo-odbiorczym niezbędny jest
szeregowy interfejs urządzeń peryferyjnych SPI, dlatego została opracowana funkcja
RFM_write_Cmd , pozwalająca wysłać oraz odebrać 16 bitowe dane.
Do poprawnej inicjalizacji urządzenia wystarczy wywołać funkcję RFM_Init , która
wyśle ciąg instrukcji konfiguracyjnych, w tym np.: częstotliwość pracy bloku
radiowego, szybkość transmisji, wartość bajtów synchronizacji oraz opcje związane z
zarządzeniem energią. Do odbioru danych z RMF12B służy funkcja RFM_Recv,
natomiast do ich wysłania funkcja RMF_Send, która w pierwszej kolejności uaktywnia
nadajnik, następnie wysyła 4 bajtową preambułę (0xAA). W kolejnym kroku wysyłany
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
31/53
jest kod synchronizacji (dla wszystkich urządzeń w projekcie są to bajty 0xD2D4,
ponieważ adresowanie realizowane jest na wyższej warstwie protokołu transmisyjnego)
Następnie wysłany jest bajt zawierający ilość bajtów ramki. Taka sekwencja
(preambuła, kod synchronizacji oraz ilość bajtów) wysyłana jest przed każdą ramką
komunikacyjną. Komunikacja pomiędzy urządzeniami wymaga określania pewnych
podstawowych zasad, według których urządzenia będą się komunikować miedzy sobą.
1. Urządzenie nadrzędne, nadzorujące prace pozostałych urządzeń, to punkt dostępowy.
2. Urządzeniami podrzędnym są moduły kontrolno-sterujące.
3. Tylko urządzenie nadrzędne może zainicjalizować wymianę informacji, czyli żadne
z urządzeń podrzędnych samo z siebie nie wyśle żadnych danych, dopóki nie zostanie o
to „poproszone” odpowiednią komendą.
4. Moduły kontrolno-sterujące nie mogą się komunikować bezpośrednio między sobą.
3.1.2 Ramki komunikacyjne
Przesłanie jakiekolwiek informacji pomiędzy modułem kontrolno-sterującym a
punktem dostępowym i odwrotnie, wymaga stworzenia odpowiedniej ramki
komunikacyjnej. Strukturę dwóch podstawowych typów ramek przedstawiono poniżej
- ramka do przesyłania komend (do modułów kontrolno- sterujących)
0xE1 (SOP)
Adres (0x00..0x08)
Seq (0..255)
Kod komendy
Dane B0
Dane B1
… Dane
Bn CRC16
B1 CRC16
B2 0xE2
(EOP)
- ramki do przesyłania odpowiedzi na komendy (z modułów kontrolno- sterujących) 0xE1
(SOP) Adres
(0x81..0x88) Seq
(0..255) Dane
B0 Dane
B1 …
Dane Bn
CRC16 B1
CRC16 B2
0xE2 (EOP)
Znaki specjalne to:
• 0xE1 – (SOP) początek ramki transmisyjnej,
• 0xE2 – (EOP) koniec ramki transmisyjnej,
• 0xE3 – (ESC) w przypadku, gdy którykolwiek z bajtów ramki równy jest
jednemu ze znaków specjalnych, nadawany jest bajt ESC oraz zanegowany bajt
specjalny.
Znaczenie poszczególnych pól ramki transmisyjnej:
• Dzięki bajtom SOP oraz EOP możliwe jest rozpoznanie startu/końca ramki
danych oraz transmisja dowolnych bajtów danych. Każdy bajt wysłany przed
SOP oraz po EOP jest ignorowany,
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
32/53
• Pole adres zapewnia możliwość określenia do urządzenia pod jakim adresem
jest wysyłana ramka, a także czy jest to zapytanie czy odpowiedź na zapytanie.
Zapytania w polu adres generują bajty z przedziału (0x00..0x08) natomiast
odpowiedzi bajty (0x81..0x88),
• Pole seq służy do identyfikacji par typu pytanie-odpowiedź (ramka odpowiedzi
ma taką samą wartość pola seq). Dzięki temu urządzenie nadrzędne może w
prosty sposób zidentyfikować ramkę, która jest odpowiedzią na ramkę wysłaną.
Ponadto, dzięki polu sekwencyjnemu, istnieje możliwość retransmisji
uszkodzonych ramek. Jeżeli urządzenie nadrzędne (punkt dostępowy) wyśle
zapytanie i w odpowiedzi na nią otrzyma niepoprawną ramkę (np. błędna suma
kontrolna) to może wysłać tą samą ramkę, z taką samą wartością pola seq w
celu retransmisji ostatniej ramki. Jeżeli urządzenie podrzędne rozpozna taką
samą wartość seq, wyśle ponownie dane z bufora nadawczego, lecz nie będzie
po raz drugi wykonywać tej samej instrukcji (np. zmiany stanu wejścia na
przeciwny). Schemat postępowania w przypadku rozpoznania uszkodzonych
ramek w dużym uproszczeniu przedstawia poniższy rysunek. Próba retransmisji
odbywa się trzykrotnie.
Rysunek 3.1 Algorytm postępowania w przypadku uszkodzenia ramki
• Pola CRC pozwalają kontrolować poprawność otrzymanych danych. Do ramki
wysyłanej dodawane są 2 bajty CRC16 przed bajtem EOP natomiast w ramce
odebranej obliczona suma kontrolna porównywana jest z tą odebraną.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
33/53
• Pole kod komendy zawierają wywołania poszczególnych odpowiednich
procedur (pkt 3.1.3) wraz z określonymi w polu dane parametrami.
3.1.3 Komendy komunikacyjne pomi ędzy urz ądzeniami
podrz ędnymi a nadrz ędnym
a) Zmiana stanu wyjść przekaźnikowych kod komendy: ‘a’ we [1B] B0 – wartość wyjścia przekaźnikowego oraz maska zmian b0 – gdy 1 zmieniamy stan wyjścia 1 na taki jak ustawia b4, b1 – gdy 1 zmieniamy stan wyjścia 2 na taki jak ustawia b5, b2..3 – nic,
b4 – wartość wyjścia 1, b5 – wartość wyjścia 2, b6..7 – nic.
wy [1B] B0 – aktualny stan wyjść przekaźnikowych b0 – aktualny stan wyjścia 1, b1 – aktualny stan wyjścia 2, b2..7 – nic. Przykład:
Jeśli istniej potrzeba ustawienia na urządzeniu o adresie 4 wyjścia 2 w stan wysoki,
natomiast wyjście 1 ma pozostać w stanie nie zmienionym, to należy wysłać
następującą ramkę:
0xE1 0x04 0x01 0x61 0x22 0x5D 0xF9 0xE2
0xE1 – znacznik początku ramki 0x04 – adres urządzenia 0x01 – numer sekwencyjny ramki 0x61 – kod komendy ‘a’ 0x22 – ustawienie maski zmiany stanu wyjścia 2 oraz stan wyjścia 2 0x5D – pierwszy bajt sumy kontrolnej CRC16 0xF9 – drugi bajt sumy kontrolnej CRC16 0xE2 – znacznik końca ramki b) Status urządzenia kod komendy: ‘b’ we [0B] – nic wy [9B] B0 – wartość wejścia rezystancyjnego 1,
B1 – wartość wejścia rezystancyjnego 2, B2 – wartość napięcia zasilania, B3 – wartość wejścia analogowego, B4 – aktualny stan wyjść przekaźnikowych,
b0 – aktualny stan wyjścia 1, b1 – aktualny stan wyjścia 2,
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
34/53
b2..7 – nic, B5 – wartość temperatury z czujnika cyfrowego,
b0..6 – całkowita wartość temperatury, b7 – znak (gdy 1 to minus), B6 – wartość temperatury z czujnika cyfrowego, b0..7 – wartość ułamkowa (maksymalnie 99), B7 – 0x00 – bajt rezerwowy, B8 – 0x00 – bajt rezerwowy.
Przykład:
W odpowiedzi na pytanie o status (urządzenie 4, seq 0x02) otrzymano ramkę:
0xE1 0x84 0x02 0x20 0x20 0x5C 0xFF 0x01 ... ... 0x00 0x00 0x00 0xFD 0x99 0xE2
0xE1 – znacznik początku ramki 0x84 – ramka odpowiedzi z adresu 4 0x02 – odpowiedź na ramkę o polu Seq=0x02 0x20 – wartość wejścia rezystancyjnego 1 0x22 – wartość wejścia rezystancyjnego 2 0x5C – napięcia zasilania (92*0.01294)*10=11.9V 0xFF – wartość wejścia analogowego 0x01 – wyjście 1 w stanie 1, wyjścia 2 w stanie 0 0x14 – temperatura, cześć całkowita 20 0x00 – temperatura, cześć ułamkowa 0 0x00 – bajt zarezerwowany 0x00 – bajt zarezerwowany 0xFD – pierwszy bajt sumy kontrolnej CRC16 0x99 – drugi bajt sumy kontrolnej CRC16 0xE2 – znacznik końca ramki c) Reset urządzenia
kod komendy: ‘R’ we [0B] – nic wy [0B] – nic
komentarz: Jedyna komenda, na którą urządzenie kontrolno-sterujące nie odpowiada.
3.1.4 Wejścia analogowe
Obsługa wejść analogowych mikrokontrolera sprowadza się do cyklicznego
pomiaru napięcia za pomocą 8 kanałowego przetwornika ADC. Aby poprawnie
zainicjować przetwornik wystarczy wywołać funkcję o nazwie analogi_init . Jej
zadaniem jest:
• ustawienie odpowiednich pinów jako wejść,
• wybór napięcia odniesienia (AREF),
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
35/53
• ustawienie 8-bitowego wyniku pomiaru,
• ustawienie częstotliwości próbkowania na 125kHz.
Wartość napięcia z poszczególnych kanałów przetwornika ADC odczytywana jest
cyklicznie, w chwilach generacji przerwania pochodzącego od przepełniania licznika
Timer1 , dzięki wywołaniu funkcji get_adc_val(U8 kanal) . Podczas jednego
przerwania odczytywana jest wartość tylko jednego z kanałów, co oznacza, że aby
odczytać wszystkie niezbędne wartości napięć z przetwornika ADC, należy
wygenerować 4 przerwania od Timera1 , ponieważ tylko 4 z 8 kanałów są
wykorzystane.
Timer1 został skonfigurowany tak, aby generować przerwanie co 50ms, co oznacza,
iż każda z odczytanych przez ADC wartości jest automatycznie aktualizowana co
200ms.
3.1.5 Wyjścia przeka źnikowe oraz diody statusowe
Sygnałami wyjściowymi z zaprojektowanych urządzeń są styki przekaźników
(w modelu występują tylko 2 takie wyjścia) oraz diody sygnalizujące status pracy
urządzenia (tylko 2 takie wyjścia). Zatem niezbędne jest wykorzystanie tylko 4 pinów
jako wyjść. Konfiguracja odpowiednich portów odbywa się poprzez wywołanie funkcji
hw_init() , natomiast do samego sterowania przekaźnikami zostały stworzone
specjalne mikro funkcje:
- output_1_on()
- output_2_on()
- output_1_off()
- output_2_off()
Do zmiany stanów diod statusowych wykorzystano stworzone wcześniej makra:
- STA_1_ON()
- STA_2_ON()
- STA_1_OFF()
- STA_2_OFF()
- STA_1_TOGGLE()
- STA_2_TOGGLE()
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
36/53
Diody STA_1 oraz STA_2 są wykorzystane do sygnalizowania transmisji radiowej.
Jeśli dane są aktualnie wysłane do świeci STA_1 (czerwona) natomiast jeśli dane są
odbierane to świeci STA_2 (niebieska).
3.1.6 Obsługa magistrali 1-wire
Obydwa zaprojektowane urządzenia posiadają sprzętową możliwość
podłączenia dowolnych urządzeń pracujących zgodnie z protokołem 1-wire. Aby
pokazać możliwości tego interfejsu został do niego podłączony popularny cyfrowy
termometr DS18B20, natomiast w kodzie źródłowym umieszczono odpowiednie
funkcje do jego obsługi. Oczywistym jest, iż aby z urządzeniem mogły współpracować
inne urządzenia niż DS18B20, konieczne będą drobne zmiany w kodzie źródłowym.
Do wysłania pojedynczego bitu na magistralę 1-wire została stworzona funkcja
write() , natomiast do odczytu bitu funkcja read() . Obie te funkcje zapewniają
odpowiednie czasy trwania impulsów (zgodnie z wymogami 1-wire). Są to funkcje
najniższego, bitowego poziomu. Aby wysłać lub odebrać cały bajty należy użyć
odpowiednio funkcji write_byte() oraz read_byte() . Do prawidłowego
działania komunikacji niezbędna jest również funkcja reset_pulse() , która
sprawdza obecność czujnika temperatury na magistrali. Aby pobrać temperaturę
należy, zgodnie z zaleceniami producenta [8]:
• Wywołać konwersję temperatury wysyłając bajty 0xCC, 0x44 ,
• Wywołać odczyt danych wysyłając bajty 0xCC, 0xBE,
• Odebrać 9 bajtów danych, których znaczenie przedstawia poniższy rysunek.
Rysunek 3.2 Znaczenie bajtów odebranych z czujnika temperatury [8]
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
37/53
Jak widać ostatni bajt to suma kontrolna CRC odpowiedzi. Dzięki niej można nabrać
pewności, iż transmisja nie została zakłócona. Obliczaniem sumy kontrolnej po stronie
mikrokontrolera zajmuje się następujący fragment programu:
for (tmpu8=0; tmpu8 < 8; tmpu8++)
crc = _crc_ibutton_update(crc, tab[tmpu 8]);
Funkcję _crc_ibutton_update można wywołać dzięki dołączeniu pliku
nagłówkowego util/crc16.h . Przed analizą otrzymanych danych sprawdzany jest
bajt CRC, jeśli jest on nieprawidłowy cała ramka jest ignorowana, a próba kolejnej
konwersji i odczytu temperatury następuje za 800ms.
Czas potrzebny na konwersje temperatury przy maksymalnej rozdzielczości
pomiaru to 750ms, natomiast odczyt aktualnej wartości temperatury odbywa się co
1,6s. Wartość odczytanej temperatury jest wielkością ułamkową. Wielkość pliku
wynikowego po kompilacji z obsługą liczb typu float zwiększyła się niemal
dwukrotnie, dlatego zrezygnowano z obsługi liczb zmienno przecinkowych, a wynik
reprezentowany jest przez 2 bajty. W bajcie starszym zapisana jest liczba całkowita
oraz znak (najstarszy bit w bajcie równy 1 oznacza ‘-’). Natomiast w bajcie młodszym
zapamiętana jest ułamkowa część wyniku.
3.2 Punkt dostępowy
3.2.1 Algorytm wyszukiwania nowych i obsługi podł ączonych
urządzeń
Punkt dostępowy jako element nadzorujące pracę urządzeń wykonawczych
kontroluje przepływ informacji w sieci radiowej, według algorytmu przedstawionego
na rysunku 3.3. Dzieli on urządzenia na 2 grupy:
• podłączone,
• nie podłączone.
Aby jedno z urządzeń nie podłączonych mogło być wyszukane i podłączone, muszą
zostać obsłużone wszystkie już podłączone urządzenia. Takie podejście znacznie
ograniczona konieczność oczekiwania na urządzenia nieobecne, a co za tym idzie
przyspiesza komunikację z urządzeniami podłączonymi, ponieważ więcej ramek
obecnych w sieci trafia do urządzeń już podłączonych. Dobrze obrazuje to
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
38/53
przedstawiony na rysunku 3.3 wykres, porównujący zastosowane rozwiązania z
algorytmem odpytywania liniowego, w którym każdemu z urządzeń, niezależnie od
tego czy jest podłączone czy nie, poświęcany jest taki sam czas.
Rysunek 3.3. Diagram blokowy algorytmu obsługi urządzeń podłączonych i nie podłączonych
Prównanie zastosowanego rozwi ązania z standardowym algorytmem liniowego odpytywania urz ądzeń
0
20
40
60
80
100
0 1 2 3 4 5 6 7 8
Ilość podł ączonych urz ądzeń
Ilość
ram
ek tr
afia
jąc
ych
do a
ktua
lnie
po
dłąc
zone
go u
rząd
zeni
a [%
]
Odpytyw anie liniow e
Zastosow ane rozw iązanie
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
39/53
Rysunek 3.4. Porównanie zastosowanego rozwiązania z algorytmem stadardowym
3.2.2 Obsługa komunikacji Bluetooth
Punkt dostępowy wyposażony został w moduł bluetooth potrafiący działać w
trybie SPP, dzięki czemu komunikacja od strony mikrokontrolera sprawdza się do
wysyłania i odbierania danych za pośrednictwem portu UART. Aby skonfigurować
UART należy wywołać fukcję init_uart , która ustawia:
• baudrate (115200 kbps),
• ilość bitów stopu (1 bit),
• włącza nadajnik oraz odbiornik,
• włącza przerwanie od odbioru.
Po takiej inicjalizacji bajty, które są odbierane zostają wpisane do odpowiedniego
bufora, a następnie po wykryciu pełnej ramki przetwarzane.
Model komunikacji opisany dokładnie w punkcie 3.1.2 ma zastosowanie również w
tym miejscu, a jedyna różnica to inne znaki specjalne, czyli:
• 0xD1 – (SOP) początek ramki transmisyjnej,
• 0xD2 – (EOP) koniec ramki transmisyjnej,
• 0xD3 – (ESC) w przypadku, gdy którykolwiek z bajtów ramki równy jest
jednemu ze znaków specjalnych nadawany jest bajt ESC oraz zanegowany bajt
specjalny.
Każdy bajt wysłany przed SOP oraz po EOP będzie ignorowany.
3.2.3 Komendy komunikacyjne pomi ędzy urz ądzeniem nadrz ędnym
a aplikacj ą Android
a)Zmiana stanu wyjść przekaźnikowych na określonym urządzeniu kod komendy: ‘A’ we [2B] B0 – adres urządzenia docelowego B1 – wartość wyjścia przekaźnikowego oraz maska zmian b0 – gdy 1 zmieniamy stan wyjścia 1 na taki jak ustawia b4 b1 – gdy 1 zmieniamy stan wyjścia 2 na taki jak ustawia b5 b2..3 – nic
b4 – wartość wyjścia 1 b5 – wartość wyjścia 2 b6..7 – nic
wy [1B] lub [4B] B0 – aktualny stan wyjść przekaźnikowych
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
40/53
b0 – aktualny stan wyjścia 1 b1 – aktualny stan wyjścia 2 b2..7 – nic B0..B4 = 0xFF, gdy urządzenie docelowe jest niepołączone
Przykład:
Jeśli istniej potrzeba ustawienia na urządzeniu o adresie 4 wyjście 2 w stan wysoki,
natomiast wyjście 1 ma pozostać w stanie nie zmienionym to należy wysłać
następującą ramkę:
0xD1 0x01 0x01 0x41 0x04 0x22 0xF1 0xCA 0xD2 0xD1 – znacznik początku ramki 0x01 – adres urządzenia dostępowego (aktualnie bez znaczenia bo nie obsługuje wielu punktów dostępowych) 0x01 – numer sekwencyjny ramki 0x41 – kod komendy ‘A’ 0x04 – adres urządzenie docelowego 0x22 – ustawienie maski zmiany stanu wyjścia 2 oraz stan wyjścia 2 0xF1 – pierwszy bajt sumy kontrolnej CRC16 0xCA – drugi bajt sumy kontrolnej CRC16 0xD2 – znacznik końca ramki b) Status wszystkich urządzeń podłączonych kod komendy: ‘B’ we [0B] – nic wy [0..(8*n)B] (gdzie n to ilość aktualnie podłączonych urządzeń) B0 – adres urządzenia którego dotyczy następne 7 bajtów danych, B1 – wartość wejścia rezystancyjnego 1,
B2 – wartość wejścia rezystancyjnego 2, B3 – wartość napięcia zasilania, B4 – wartość wejścia analogowego, B5 – aktualny stan wyjść przekaźnikowych,
b0 – aktualny stan wyjścia 1, b1 – aktualny stan wyjścia 2, b2..7 – nic,
B6 – wartość temperatury z czujnika cyfrowego, b0..6 – całkowita wartość temperatury,
b7 – znak (gdy 1 to minus, ‘-’), B7 – wartość temperatury z czujnika cyfrowego, b0..7 – wartość ułamkowa (maksymalnie 99),
Przykład:
W odpowiedzi na pytanie o status otrzymano ramkę:
0xD1 0x81 0x02 0x04 0x20 0x20 0x5C 0xFF ... ... 0x01 0x14 0x00 0xC2 0xA6 0xD2
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
41/53
0xD1 – znacznik początku ramki 0x81 – ramka odpowiedzi z adresu 1 0x02 – odpowiedź na ramkę o polu Seq=0x02 0x04 – adres urządzenia którego dotycz kolejnych 7 bajtów 0x20 – wartość wejścia rezystancyjnego 1 0x20 – wartość wejścia rezystancyjnego 2 0x5C – napięcia zasilania (92*0.01294)*10=11.9V 0xFF – wartość wejścia analogowego 0x01 – wyjście 1 w stanie 1, wyjścia 2 w stanie 0 0x14 – temperatura, cześć całkowita 20 0x00 – temperatura, cześć ułamkowa 0 0xC2 – pierwszy bajt sumy kontrolnej CRC16 0xA6 – drugi bajt sumy kontrolnej CRC16 0xD2 – znacznik końca ramki Dodatkowo powyższa ramka niesie ze sobą informację, iż aktualnie podłączony jest
tylko jeden moduł kontrolno-sterujący (adres 4).
3.2.3 Algorytm działania urz ądzenia
Punkt dostępowy jako urządzenie nadrzędne inicjalizuje komunikację z
urządzeniami kontrolno-sterującymi. W pętli głównej programu cyklicznie sprawdzany
jest bufor nadawczy transmisji radiowej – jeśli są jakieś zapytania do wysłania są one
wysłane i urządzenie oczekuje, przez z góry określony czas na prawidłową odpowiedź.
Jeżeli otrzymanie prawidłowej odpowiedzi jest niemożliwe następuje retransmisja,
która w razie potrzeby może być powtarzana 3-krotnie. Po otrzymaniu prawidłowej
odpowiedzi ponownie sprawdzany jest bufor nadawczy. Urządzenie skonfigurowane
jest tak, aby dane przychodzące na porcie Bluetooth (pochodzące z aplikacji Android)
wywołały przerwanie i zostały zapisane, a następnie w głównej pętli programu
odpowiednio obsłużone.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
42/53
Rysunek 3.5. Diagram algorytmu działania punktu dostępowego
3.3 Moduły kontrolno-sterujące
3.3.1 Obsługa przeł ącznika konfiguracyjnego
Przełącznik konfiguracyjny służy do adresowania urządzeń kontrolno-
sterujących. Jak zostało wspomniane w założeniach projektowych możliwa jest obsługa
maksymalnie 8 tego typu modułów. W związku z tym do adresowania wykorzystane są
3 pary styków przełącznika. Podczas inicjalizacji urządzenia należy wywołać funkcję
dip_get_adr , która zwróci aktualnie ustawioną wartość adresu. Jeden z nich
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
43/53
natomiast został wykorzystany w celu udostępnienia możliwości przełączenia
urządzenia w tryb serwisowy. Cechy odróżniające ten tryb od trybu standardowego to:
• pominięcie sprawdzania sum kontrolnych,
• pominiecie sprawdzania pola sekwencji, a co za tym idzie brak możliwości
retransmisji ramek,
• transmisja informacji serwisowych na porcie UART.
Wszystkie pozostałe funkcje urządzenia w tym trybie pozostają niezmienione. Tryb
serwisowy jest pomocny w przypadku zaistnienia konieczności wysłania ramki bez
pośrednictwa punktu dostępowego. Ręczne obliczanie, dla każdej nowo wysłanej ramki
sumy kontrolnej lub dbanie o prawidłową wartość pola sekwencyjnego, jest na tyle
uciążliwe, iż w większości przypadków diagnozowania urządzenia tryb serwisowy
zostanie włączony. Wprowadzenie urządzenia w tryb serwisowy wymaga:
• ustawienia przełącznika 4 w stan ON,
• odłączenia i podłączenia zasilania urządzenia.
Aby w programie sprawdzić aktualny stan przełącznika serwisowego należy wywołać
makro CHECK_CRC_PIN().
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
44/53
3.3.2 Algorytm działania urz ądzenia
Rysunek 3.5 ilustruje algorytm działania urządzenia kontrolno-sterującego.
Oczywiście, aby nie zmniejszać czytelności diagram ten jest w dużym stopniu
uproszczony.
Rysunek 3.5. Diagram algorytmu działania modułu kontrolno-sterującego
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
45/53
3.4 Aplikacja użytkownika dla systemu Android Stworzona sieć bezprzewodowych modułów kontrolno-sterujących potrzebuje
jeszcze tylko interfejsu, z poziomu którego będzie można nią zarządzać. Nie jest
dobrym pomysłem projektowanie i wykonanie nowego urządzenia, warto skorzystać z
już istniejących np. telefonów komórkowych czy tabletów. Dziś większość tego typu
urządzeń posiada kolorowy ekran dotykowy o dużym rozmiarze co jest ich niewątpliwą
zaletą, a zarazem pozwala je wykorzystać do innych specyficznych, wąskich
zastosowań. Wymagana jest jedynie odpowiednia aplikacja, aby te wąskie
zastosowania mogły być zrealizowane.
Obecnie na rynku istnieje już bardzo dużo mobilnych platform, takich jak: Symbian,
iOS, Windows Mobile, BlackBerry czy Java Mobile Edition. Dlaczego więc
zdecydowano się na platformę Android? – postaram się odpowiedzieć w kolejnym
podpunkcie.
3.4.1 Kilka słów o Androidzie
„Android to stworzona przez firmę Google i zrzeszenie OPEN Handset Alliance
platforma o jawnym kodzie źródłowym, przeznaczona dla urządzeń mobilnych.
Android znajduje się wewnątrz milionów telefonów komórkowych oraz innych
przenośnych urządzeń, co czyni go jedną z głównych platform dla projektantów
aplikacji. Ponadto Android jest pierwszym środowiskiem łączącym następujące cechy
[16]:
• Prawdziwie otwarta, darmowa platforma projektowa, bazująca na
Linuksie oraz jawnym kodzie źródłowym: Twórcy smartfonów lubią ją,
ponieważ mogą wykorzystywać i modyfikować tę platformę bez konieczności
płacenia tantiem. Programiści okazują jej sympatię. ponieważ wiedzą, że
posiada ona „ręce i nogi" oraz nie jest ograniczona wyłącznie do jednego
wydawcy, który mógłby ją przejąć lub wykupić.
• Architektura komponentowa inspirowana internetem: Elementy jednej
aplikacji mogą być wykorzystywane w innej w sposób, którego nie przewidział
sam projektant. Można zawsze wymienić wbudowane składniki na własne,
udoskonalone wersje. W ten sposób zostanie uwolniona nowa forma
kreatywności w świecie urządzeń mobilnych.
• Ogromna ilość nieszablonowych, wbudowanych usług: W zależności od
miejsca przebywania użytkownika usługi lokacyjne mogą wykorzystywać
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
46/53
system GPS lub triangulację za pomocą masztów przekaźnikowych do
przetwarzania różnorodnych informacji o położeniu geograficznym. W pełni
rozwinięta baza danych SQL pozwala na okiełznanie potencjału pamięci
lokalnej. W przypadkach przetwarzania i synchronizowania większych partii
danych. Przeglądarka oraz widoki mapy mogą zostać umieszczone
bezpośrednio wewnątrz aplikacji. Wszystkie te wbudowane funkcje pomagają
zwiększyć funkcjonalność aplikacji przy jednoczesnym obniżeniu kosztów
projektowych.
• Automatyczne zarządzanie cyklem życia aplikacji: Poszczególne programy
są oddzielone od siebie za pomocą wielowarstwowych zabezpieczeń,
zapewniających poziom stabilności niespotykany wcześniej w smartfonach.
Użytkownik nie będzie musiał już zastanawiać się, które aplikacje są aktywne,
lub zamykać jedne programy, aby móc uruchomić inne. Android, jak żaden
inny system, został zoptymalizowany pod kątem urządzeń pobierających mało
energii oraz posiadających niewiele pamięci.
• Grafika i d źwięki wysokiej jakości: Wygładzona, wykorzystująca
antyaliasing, dwuwymiarowa grafika i animacja wektorowa (inspirowana
technologią Flash) została powiązana z trójwymiarową grafiką generowaną
przez środowisko OpenGL, dzięki czemu możliwe stało się tworzenie nowych
rodzajów gier i aplikacji biznesowych. Od samego początku dostępne są kodeki
obsługujące większość standardowych formatów audio i wideo, na przykład
H.264 (AVC) MP3 i AAC.
• Przenośność pomiędzy szeroką gamą współczesnego oraz przyszłego
sprzętu: Wszystkie programy pisane są w języku Java i wykonywane przez
wirtualną maszynę Dalvik, zatem stworzony kod będzie można przenosić na
architektury AR1VI, x86 i inne. Zaimplementowana została obsługa wielu
urządzeń pozwalających na wprowadzanie danych, na przykład klawiatury,
tabliczki dotykowej oraz trackballa. Interfejs użytkownika może zostać
dostosowany do dowolnej rozdzielczości oraz orientacji wyświetlacza.
Android oferuje świeże spojrzenie na sposób, w jaki mobilne aplikacje oddziałują na
użytkowników, a także umożliwiające to techniczne podwaliny. Jednak najlepszym
elementem Androida jest oprogramowanie, które można na niego napisać.” [16]
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
47/53
3.4.2 Narzędzia niezb ędne do pisania oprogramowania
Aby rozpocząć pisanie kodu pod Android dobrze jest wyposażyć komputer w
następujące narzędzia:
a) Platforma Java
Podstawą jest platforma Java. Jest ona wymagana przez wszystkie narzędzia
programistyczne Androida. Samo środowisko uruchomieniowe (ang. Java Rountime
Environment - JRE) jednak nie wystarczy, konieczne jest środowisko JDK,
b) Środowisko IDE – Eclipse
Darmowe środowisko programistyczne platformy Java nie jest niezbędne, możliwe jest
użycie innego IDE, jak np. NetBeans, lub korzystanie wyłącznie z narzędzi wiersza
poleceń – byłoby to jednak niezwykle uciążliwe. W projekcie został wykorzystany
Eclipse wraz z wtyczką przygotowaną przez firmę Google, która znacznie ułatwia
proces programowania,
c) Android SDK
Począwszy od wersji 2.0 pakiet Android SDK został podzielony na dwie części: SDK
Starter Package (Pakiet startowy) oraz SDK Components (składniki). Niezbędne są oba
elementy,
d) Urządzenie do uruchomiania aplikacji
Urządzenie takie może być wirtualne, wystarczy utworzyć urządzenie AVD za pomocą
polecenia android avd. W prezentowanym projekcie do uruchamiania aplikacji nie
służyło urządzenie wirtualne lecz tablet Archos 101 G9 16GB.
3.4.3 Koncepcja Aplikacji
Aplikacja uruchomiona na urządzeniu mobilnym pełni rolę głównie graficznego
interfejsu użytkownika. Jest ona jednak bytem nadrzędnym w stosunku do punktu
dostępowego, dlatego jej dodatkowym zadaniem jest pobranie wszystkich niezbędnych
informacji na temat sieci modułów kontrolno-sterujących i wyświetlenie jej na ekranie
urządzenia mobilnego. To aplikacja inicjalizuje połączenie z punktem dostępowym, a
następnie jako pierwsza wysyła zapytania w postaci ramek oczekując odpowiedzi. Do
prawidłowej obsługi komunikacji Bluetooth niezbędne okazało się opracowanie dwóch
wątków, poza wątkiem głównym. Interfejs użytkownika obsługiwany jest zgodnie z
koncepcją programowania zdarzeniowego. Koncepcję działanie aplikacji użytkownika
dobrze prezentuje rysunek 3.6. Wysoko-poziomowa implementacja stosu bluetooth w
SDK Android zwalnia programistę z konieczności zgłębiana tajników tej komunikacji.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
48/53
Rysunek 3.5. Algorytm działania aplikacji mobilnej
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
49/53
4. Podsumowanie i możliwości dalszego rozwoju projektu
W niniejszej pracy dyplomowej przedstawiony został sposób realizacji
bezprzewodowej sieci modułów kontrolno-sterujących. Zaprojektowane zostały 2
urządzenia będące elementami tej sieci. Oba urządzenia bazują na powszechnie
dostępnych podzespołach co czyni całą sieć rozwiązaniem niskobudżetowym, a przez
to konkurencyjnym. Urządzenia są dostosowane do standardowych obudów na szynę
DIN co ułatwia ich montaż. Wysoka prędkość transmisji pomiędzy modułami
kontrolno-sterującymi i punktem dostępowym, a także odpowiedni algorytm
zarządzania kolejnością obsługi urządzeń przez punkt dostępowy (pkt. 3.2.1), zapewnia
spełnienie rygorystycznych wymagań czasowych postawionych w rozdziale pierwszym
niniejszej pracy inżynierskiej. Wszystkie założenia, o których mowa zostały spełnione:
• Sieć kontrolno-sterująca pracuje w trybie Master/Slave, przy czym Master to
punkt dostępowy a Slave to moduły kontrolno-sterujące.
• Dostęp do modułów kontrolno-sterujących jest możliwy tylko za
pośrednictwem punktu dostępowego dzięki interfejsowi radiowemu o
częstotliwości 868MHz (moduły kontrolno-sterujące nie mogą się
komunikować miedzy sobą).
• Komunikacja między punktem dostępowym, a urządzeniem mobilnym odbywa
się za pośrednictwem interfejsu Bluetooth (2,4GHz).
• Moduły kontrolno-sterujące posiadają: 2 wyjścia przekaźnikowe, 2 wejścia
analogowe, interfejs 1-wire.
• W jednej sieci może pracować do 8 modułów kontrolno-sterujących.
• Oba zaprojektowane urządzenia mogą być zasilane ze źródła napięcia stałego
od 7 do 15V.
• Opracowane protokoły transmisyjne zapewniają: możliwość sprawdzenia
poprawności otrzymanej ramki (sumy kontrolne), retransmisję uszkodzonych
ramek (pola sekwencyjne), oraz bezproblemową transmisję ramek o długości
nie mniejszej niż 40 bajtów (licząc wraz z nagłówkiem i sumą kontrolną).
• Podczas konfiguracji sieci zmiana adresu urządzenia nie wymaga restartu
urządzenia kontrolno-sterującego.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
50/53
• Interfejs użytkownika posiada: możliwość śledzenia aktualnego stanu wejść
analogowych, wyjść przekaźnikowych oraz umożliwia zmianę ich stanu.
• Aplikacja użytkownika współpracuje z systemem Android i posiada moduł
umożliwiający wyszukiwanie i łączenie się do urządzeń Bluetooth.
• Zmiana stanu dowolnego wejścia analogowego lub wyjścia przekaźnikowego
jest przekazana i zobrazowana na interfejsie użytkownika, w czasie nie
dłuższym niż 1 sekunda od chwili wystąpienia wymuszenia.
• Zmiana stanu dowolnego wyjścia przekaźnikowego następuje w czasie nie
dłuższym niż 1 sekunda od momentu wydania polecenia zmiany stanu w
interfejsie użytkownika,
• Rozłącznie lub podłączenie urządzenia nie wymaga rekonfiguracji istniejącej
sieci. Rekonfiguracja sieci następuje automatycznie, bez ingerencji
użytkownika systemu i jest sygnalizowana w interfejsie użytkownika w czasie
nie przekraczającym 1 sekundy.
Chronologia postępowania podczas realizacji pracy dyplomowej:
• Rozpoznanie i analiza postawionego problemu,
• Analiza możliwości rozwiązań,
• Wybranie podzespołów odpowiednich do realizacji zadania,
• Przygotowanie pierwszej wersji schematów ideowych dwóch urządzeń,
• Zaprojektowanie obwodów drukowanych prototypów urządzeń na podstawie
schematów,
• Produkcja obwodów drukowanych,
• Lutowanie urządzeń prototypowych,
• Napisanie wstępnych wersji kodów źródłowych dla obu urządzeń,
• Drobne poprawki w schematach oraz obwodach drukowanych,
• Produkcja obwodów drukowanych,
• Lutowanie urządzeń w wersji poprawionej,
• Napisanie oprogramowania wbudowanego dla urządzeń, zapewniającego
prawidłowe działanie sieci, z uwzględnieniem wszystkich założeń
projektowych,
• Testy oprogramowania urządzeń,
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
51/53
• Napisanie oprogramowania dla systemu Android pozwalającego na pełną
kontrolę nad zbudowaną siecią, za pomocą urządzenia wyposażonego w
interfejs Bluetooth,
• Testy oprogramowania dla systemu Android,
• Analiza zastosowanego rozwiązania oraz wnioski,
• Opracowanie niniejszego dokumentu.
Jest to kompletny, stabilny system, który może zostać rozbudowany. Możliwe
kierunki rozwoju to:
a) dodatkowe interfejsy umożliwiaj ące dostęp do sieci
Do przedstawionego rozwiązania w miejsce modułu Bluetooth można w bardzo prosty
sposób dodać inne interfejsy np.
• LAN • WLAN • ZigBee • GSM
Wystarczy, aby wyjście tych interfejsów wyposażone było w port szeregowy, a
aplikacja obsługująca była zgodna z opisanym protokołem transmisyjnym. Rozbudowa
o dodatkowe interfejsy pozwalające na dostęp do sieci modułów kontrolno-sterujących
sprowadza się więc do stworzenia konwerterów z LAN, WLAN czy innych na interfejs
szeregowy oraz do napisania odpowiedniego oprogramowania.
b) Aplikacje mobilne pod inne niż Android systemy operacyjne
Kolejnym krokiem jaki należy podjąć podczas dalszych pracy nad projektem jest
stworzenie aplikacji mobilnych na inne systemy jak np. iOS, czy Symbian
c) Zwiększenie ilość obsługiwanych urządzeń
Aktualnie jeden punkt dostępowy może obsługiwać do 8 urządzeń kontrolno-
sterujących. W stosunkowo prosty sposób można tę liczbę podwoić - wymagane są
jedynie drobne zmiany w kodach źródłowych urządzeń oraz aplikacji mobilnej.
d) Rozpoznawanie typów urządzeń
Zaproponowane rozwiązanie aktualnie obsługuje jeden typ urządzeń kontrolno-
sterujących, możliwe jest jednak zaprojektowanie innych urządzeń współpracujących z
już istniejącym punktem dostępowym np.:
• zestaw 16 czujników temperatury i wilgotności, • zestaw 8 wejść analogowych i 8 wyjść cyfrowych.
Taka zmiana będzie wymagała sporego nakładu pracy w samą konstrukcję urządzeń, a
także zmiany w aplikacji mobilnej.
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
52/53
Bibliografia
[1] Artykuł – „Android oraz iOS wciąż zwiększają udział w rynku” http://www.chip.pl/news/wydarzenia/trendy/2012/07/android-oraz-ios-wciaz-zwiekszaja-udzial-w-rynku,
[2] Nota katalogowa – RFM12B http://www.hoperf.com/upload/rf/RFM12B.pdf
[3] Instrukcja użytkownika – Archos 101 G9 16GB - https://www.archos.com/manuals/A101_EN_v1.1.htm
[4] Nota katalogowa – Atmega8L http://ww.atmel.com/images/doc2486.pdf
[5] Nota katalogowa – LD1117 http://www.datasheetcatalog.org/datasheet/SGSThomsonMicroelectronics/mXuqtqv.pdf
[6] Artykuł – Samoidukcja http://pl.wikipedia.org/wiki/Samoindukcja
[7] Artykuł – „Obsługa interfejsu 1-Wire na przykładzie DS18B20” http://.jaglarz.com/ja/elektronika/ds18b20.pdf
[8] Nota katalogowa – DS18B20 http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
[9] Nota katalogowa - MAX3232 http://datasheets.maximintegrated.com/en/ds/MAX3222-MAX3241.pdf
[10] Nota katalogowa – MAX232, http://www.ti.com/lit/ds/symlink/max232.pdf [11] Nota katalogowa – Z102
http://www.tme.eu/pl/Document/689c4610812882d5d911f01aeb6be27e/Z-102.pdf [12] Strona producenta –
http://www.prototypy.com/ [13] Nota katalogowa – Atmega32
http://ww.atmel.com/Images/doc2503.pdf [14] Obraz - http://static.tme.eu/katalog_pics/b/b/0/bb01e7cfa538d0e741dd61f44c7fa8f6/btm-112.jpg [15] Nota katalogowa – BTM112
http://sparkfun.com/datasheets/Wireless/Bluetooth/BTM112_wATcommands.pdf [16] książka „Hello, Android. Programowanie na platformę Google dla urządzeń
mobilnych.” Wydanie III, Wydawnictwo Helion, s. 11
Praca dyplomowa - Łukasz Tomaszowicz AGH 2013
53/53
Dodatek A. Spis zawartości płyty DVD
• Kod źródłowy urządzenia kontrolno- sterującego oraz punktu dostępowego, • Kod źródłowy aplikacji dla systemu Android, • Schematy ideowy projektu urządzenia kontrolno- sterującego oraz punktu
dostępowego w postaci plików PNG, • Pliki projektowe (schematy oraz wygląd płytek PCB) z programu Altium
Designer, • Niniejsza praca dyplomowa w formacie zbioru PDF.