AVT-5197.pdf

(1520 KB) Pobierz
Projekty
Pilot z WiFi
Zdalne sterowanie sprzętem
RTV przez WiFi
Dodatkowe
materiały na CD
Jak większość
niekonwencjonalnych projektów
opisywanych na łamach EP,
tak i  ten powstał napędzany
przez potrzebę dnia codziennego.
Powyższe zdanie jest elokwentną
wymówką dla lenistwa autora...
Sytuacja, która doprowadziła
do powstania prototypu
prawdopodobnie zdarza się
jednak często w  wielu domach,
a  czy zaszkodzi niewielkie
poprawienie sobie komfortu
życia?
Rekomendacje:
pomysłowe, praktyczne
urządzenie, które przyda się
w  każdym domu.
W mieszkaniu, w którym w jednym po-
koju znajduje się bliżej nieokreślony sprzęt
RTV (w przypadku autora był to zestaw au-
dio), a drugi pokój to sypialnia, wynikła po-
trzeba sterowania sprzętu. Tuż po przebudze-
niu, kiedy nie trzeba iść do pracy, miło jest
posłuchać np. ulubionej stacji radiowej bądź
nagrania. Jednak, aby móc to zrobić, należy
WSTAĆ z łóżka, włączyć sprzęt, po czym do
niego wrócić. Cały urok wolnego dnia znika!
Oczywiście powyższy opis zawiera nieco
przesady, jednak nie od dziś znane są wszel-
kiego rodzaju „przedłużacze” pilotów IR
mające za zadanie pomóc w tego typu sytu-
acjach. Kilka takich konstrukcji pojawiło się
na łamach różnych czasopism. Najczęściej,
aby ominąć przeszkodę na drodze wiązki
podczerwieni nadajnika (np. ścianę pokoju),
urządzenia te wykorzystują fale radiowe.
W niektórych konstrukcjach użytkownik np.
do sterowania tunerem radiowym używa pi-
lota służącego do jego kontroli, celując w od-
biornik „przedłużacza”, który z kolei wysy-
ła odebrany rozkaz do swojego nadajnika,
umieszczonego przy sterowanym sprzęcie
( rys. 1 ).
Po głębszym zastanowieniu urządze-
nie takie nie rozwiązuje jednak problemu
lenistwa autora, bo zawsze przed pójściem
spać można zapomnieć o pilocie i zostawić
go w innym pokoju. Kolejnym krokiem było
zatem znalezienie czegoś, co leniwy bohater
zawsze ma przy sobie np. PDA lub telefon
komórkowy z interfejsem Wi-Fi, który mógł-
by znaleźć zastosowanie jako pilot. Jeśli tak
jest, to w mieszkaniu znajduje się zapewne
Access Point sieci bezprzewodowej, który
można użyć jako tor radiowy. Brakuje nam
AVT–5197
W ofercie AVT:
AVT–5197A – płytka drukowana
PODSTAWOWE PARAMETRY
• zasilanie 6...12 VDC
• płytka o wymiarach 65×28 mm
• mikrokontroler ATmega8, moduły Tibbo EM1000 i WM1000
• połączenie pomiędzy PDA/telefonem przez sieć WiFi
• sterowanie za pomocą wbudowanego serwera Web
PROJEKTY POKREWNE wymienione artykuły są w całości dostępne na CD
Tytuł artykułu
Nr EP/EdW
Kit
4-kanałowe radiowe zdalne sterowanie RFM1 z interfejsem MODBUS
EP 8-9/2008 AVT-5143
Bezprzewodowy regulator głośności
EdW 8/2006 AVT-2795
Radiowy przedłużacz pilotów
EP 2/2004
AVT-559
„Przedłużacz” pilota RC5
EP 12/2002 AVT-1359
Radiowy pilot do PC
EP 12/2001 AVT-5032
26
ELEKTRONIKA PRAKTYCZNA 8/2009
 
Pilot z WiFi
Rys. 1. Schemat działania tradycyjnego przedłużacza pilotów
Płytka pilota zawiera blok zasilania zbu-
dowany w oparciu o regulator liniowy LDO
LD1117-3V3. Zasila on kompletny system,
a więc blok pilota, moduł EM1000 oraz mo-
duł Wi-Fi WA1000.
Moduł EM1000 dostarczany jest bez obu-
dowy, z wyprowadzonymi pinami ( fot.   5 ).
Koniecznie zatem było umieszczenie na płyt-
ce pilota złącz o odpowiednim rastrze.
Do programowania modułu używany
jest jego interfejs Ethernet, co wymusiło
umieszczenie na płytce pilota złącza RJ45
z wbudowanym transformatorem separują-
cym (J1). Do gniazd, w których umieszczony
ma być EM1000 doprowadzono linie UART
mikrokontrolera (J1) tak, aby możliwe było
jego połączenie z UART0 modułu oraz pod-
łączono dwie linie statusowe: SG ( Status
Green ) i SR ( Status Red ) do wbudowanych
w złącze J1 sygnalizacyjnych diod LED. Po-
nadto, do EM1000 doprowadzono zasilanie
oraz podciągnięto linie MD ( Mode Selection
Pin ) do zasilania układu. Moduł nie wymaga
zewnętrznego sygnału resetu. Pełny rozkład
wyprowadzeń modułu EM1000 pokazano na
rys.   6 , a schemat montażowy płytki bazowej
na rys.   7 .
Rys. 2. Idea zastosowania pilota zdalnego sterowania z interfejsem Wi-Fi
tylko pilota podczerwieni, który byłby w sta-
nie podłączyć się do sieci Wi-Fi...
• programowalny moduł Tibbo EM1000.
• moduł WA1000; jest to moduł Wi-Fi z in-
terfejsem SPI współpracujący z EM1000.
Układ nadajnika podczerwieni zrealizo-
wano z zastosowaniem mikrokontrolera. Jego
schemat ideowy przedstawiono na rys. 4 .
Głównym elementem nadajnika jest mi-
krokontroler AVR – ATmega8. Pracuje on
w  podstawowej koni guracji zewnętrznym
rezonatorem kwarcowym 8 MHz. Linia zeru-
jąca mikrokontrolera podłączona jest poprzez
rezystor 10 kV do linii zasilania. Ze względu
na pozostałe elementy systemu (w szczegól-
ności moduł EM1000) wybrano napięcie za-
silające o wartości 3,3 V.
Na schemacie pokazano złą-
cze SV1, do którego jest podłą-
czony interfejs ISP umożliwiający
programowanie pamięci Flash
mikrokontrolera. Rozkład wypro-
wadzeń odpowiada popularnemu
programatorowi STK200/300.
Za nadawanie sygnałów-roz-
kazów sterujących odpowiedzialny
jest tranzystor kluczujący diodę
podczerwieni. Baza tranzystora
sterowana jest za pośrednictwem
wyprowadzenia PC0. Interfejsem
komunikacyjnym bloku pilota jest
UART (wyprowadzenia PD0 i PD1).
Architektura sprzętowa
Koncepcję systemu wraz z pilotem opi-
sanym w niniejszym artykule przedstawiono
na rys. 2 .
Część sprzętową pilota podzielono na
trzy bloki ( rys. 3 ):
• nadajnik podczerwieni zdolny nadawać
komendy IR w standardzie zgodnym z ob-
sługiwanym urządzeniem (w tym projek-
cie jest nim jednostka sterująca zestawem
muzycznym Technics ST-CH540),
Blok Pilota Podczerwieni
Budowa pilota sprowadziła się do wyko-
nania nadajnika podczerwieni, zdolnego do
WykAZ eLeMeNtÓW
rezystory (0603)
R1: 100 V
R7, R9: 220 V
R6: 330 V
R2...R5, R8: 10 k V
kondensatory (0603)
C2, C3: 15 pF
C1, C4: 100 nF
C5, C6: 4,7 M F/16 V (EUC-6032/28)
Półprzewodniki
IC1: ATMega8-AI
IC2: LD1117-33CV (3,3 V)
T1: BC847
IRLED1: L-934F3C
LED3: dioda LED
Inne
Q1: kwarc 8 MHz
X1: złącze AK500/2
SV1...SV8: gniazdo goldpin 2,54 mm
J1: złącze 0569564-1
Rys. 3. Architektura sprzętowa urządzenia
27
ELEKTRONIKA PRAKTYCZNA 8/2009
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Projekty
Rys. 5. Moduł EM1000
Ramka danych ( rys.   9 ) składa się z pre-
ambuły, którą tworzy ciągła fala nośna nada-
wana przez czas 4 ms. Następnie nośna jest
wyłączana na 1,6 ms, po czym następuje
nadanie komendy kodowanej w  sposób
przedstawiony na rys. 8.
Komenda składa się z 48 bitów, z których
32 jest tzw. kodem grupy, a kolejnych 16 bi-
tów to kod rozkazu. Na końcu ramki przesyła-
ny jest znak kończący transmisję, którym jest
fala nośna włączona na czas 400 Ms. Przed
nadaniem kolejnej ramki należy odczekać
minimum 76 ms. Ponieważ czas nadawania
symbolu reprezentującego wartość 0 różni
się o symbolu 1, to długość ramki (w sensie
czasu) zależy od nadawanej komendy.
O ile sama implementacja protokołu nie
nastręcza wielu problemów, o  tyle dotar-
cie do właściwych kodów komend stanowi
już spore wyzwanie (być może jest tylko
w przypadku kodowania stosowanego przez
Technics). Można go rozwiązać w  dwoja-
ki sposób: zbudować odbiornik i dekoder
komend lub przechwytywać ramki oscy-
loskopem, mozolnie odczytywać i dekodo-
wać wyświetlony przebieg. W konkretnym
przypadku zestawu audio, który miał być
kontrolowany przy pomocy pilota, zawiodły
też różnego rodzaju internetowe publikacje
kodów komend. Najszybszą metodą okazał
Rys. 4. Schemat ideowy bloku zasilania i pilota IR
nadawania komend zgodnych z  formatem
transmisji stosowanym przez irmę Technics.
Zarówno generator fali nośnej sygnału
podczerwieni, jak i samo kluczowanie sygna-
łu nośnej, realizowane są przez mikrokon-
troler. Częstotliwość fali nośnej (prostokąt
o wypełnieniu 50%) wynosi 32 kHz. Modu-
lację sygnału można porównać do modulacji
OOK, czyli On-Off Keying, często stosowanej
w systemach radiowych pracujących w pa-
śmie ISM. Polega ona na reprezentacji prze-
syłanej informacji bitowej poprzez obecność
lub brak fali nośnej. Na rys.   8 przedstawiono
sposób kodowania „zera” i „jedynki”.
28
ELEKTRONIKA PRAKTYCZNA 8/2009
Pilot z WiFi
Rys. 10. Algorytm działania programu
modułu pilota
Do nadawania właściwych komend
podczernieni zastosowano maszynę stanów
napędzaną przerwaniem Timera 1. Przerwa-
nie to występuje co najmniejszy, wymagany
przez protokół czas, a więc co 400 Ms. Maszy-
na ma dziewięc stanów, które zgrupowano
w typ wyliczeniowy:
typedef enum technicsState_tag
{
TS_IDLE = 1,
TS_INIT,
TS_SEND_PREAMBLE_ON,
TS_SEND_PREAMBLE_OFF,
TS_SEND_GROUP,
TS_SEND_CODE,
TS_SEND_ONE,
TS_SEND_ZERO,
TS_SEND_STOP
} technicsState_t;
Tuż po starcie urządzenia maszyna po-
zostaje w stanie TS_IDLE, a każdorazowa
zmiana wartości stanu na TS_INIT powoduje
rozpoczęcie sekwencji maszyny. Do sterowa-
nia pilotem zastosowano komunikację szere-
Rys. 6. Wyprowadzenia modułu EM1000
Tab. 1 Zestawienie komend zaimplementowanych w module pilota
Lp.
Funkcja
Kod grupy
Kod rozkazu
1.
On/Off
0x40040538
0xBC81
2.
Volume +
0x40040538
0x0401
3.
Volume –
0x40040538
0x8481
4.
Tuner: Stacja 1
0x40040538
0x0835
5.
Tuner: Stacja 2
0x40040538
0x88B5
6.
Tuner: Stacja 3
0x40040538
0x4875
staniem kompilatora AVRGCC. Generator
fali nośnej używa Timera 0, w przerwaniu
którego naprzemiennie zmieniany jest stan
wyprowadzenia PORTC.0 sterującego tran-
zystorem kluczującym diodę podczerwieni.
Za kluczowanie fali nośnej odpowiedzialne
są dwie funkcje: carrierOn() carrierOff() .
Ich wywołanie powoduje odpowiednio włą-
czenie lub wyłączenie przerwania Timera 0.
Rys. 7. Schemat montażowy płytki pilota
się oscyloskopowy reverse engineering , ale
tylko dlatego, iż zgodnie z założeniami po-
trzebna była kontrola włączania/wyłączania
zestawu, zmiana głośności oraz przełączanie
pomiędzy trzema stacjami radiowymi – jest
to niewiele prostych komend, na których
rozpoznanie nie trzeba poświęcić zbyt wie-
le czasu. Zestawienie kodów tych komend
umieszczono w  tab.   1 .
Firmware mikrokontrolera napisano zo-
stał w środowisku AVR Studio z wykorzy-
Rys. 8. Kodowanie zera i jedynki w standardzie Technics
Rys. 9. Ramka danych przyjęta w standardzie Technics
29
ELEKTRONIKA PRAKTYCZNA 8/2009
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Projekty
na typy znakowe, konwersji czasu czy kalku-
lacji sum typu md5 sha1 . Moduł wspiera
też największą liczbę obiektów w środowi-
sku TIDE. Z ciekawszych można wymienić
obiekt fd. (fl ash disk) dostarczający bardzo
wygodnego API do dostępu do wewnętrznej
pamięci Flash. Obiekt lcd. (Display) – API
do obsługi grai cznych wyświetlaczy ciekło-
krystalicznych. Obiekt kp. (Keypad) zdolny
obsługiwać klawiaturę macierzową. Jednak
najbardziej nas interesującym obiektem jest
wln. (Wi-Fi) dostarczający podobnej funk-
cjonalności jak znany obiekt net. Jednak
operującej na interfejsie bezprzewodowym.
Aby można było go użyć należy do porty SPI
modułu EM1000 dołączyć moduł WA1000
( rys. 11 ).
Moduł ten dostarcza funkcjonalności
interfejsu bezprzewodowego 802.11b. Jest
List. 1. Główna pętla programu modułu pilota
while(1)
{
switch(IRdata)
{
case ‘1’:
sendIRcommand(GROUP_TUNER, CH1);
break;
case ‘2’:
sendIRcommand(GROUP_TUNER, CH2);
break;
case ‘3’:
sendIRcommand(GROUP_TUNER, CH3);
break;
case ‘+’:
sendIRcommand(GROUP_AMP, CODE_VOL_UP);
break;
case ‘-’:
sendIRcommand(GROUP_AMP, CODE_VOL_DOWN);
break;
case ‘o’:
sendIRcommand(GROUP_CTRL, ON_OFF);
break;
default:
break;
}
IRdata = 0;
_delay_ms(TRANSMISSION_DELAY);
}
List. 2. Linie odpowiedzialne za nadanie adresów MAC, IP, Gateway oraz maski podsieci
wln.mac=”0.0.102.103.104.2”
‘<--------- replace with random MAC (see „Setting MAC Address”)
wln.ip=”192.168.1.93”
‘<--------- select an IP address which is compatible with your network
wln.gatewayip=”192.168.1.1”
‘<--------- this too
wln.netmask=”255.255.255.0”
‘<--------- and this
nej dostrzeżemy ponadto kontroler warstwy
sprzętowej (PHY) i rmy Davicom (DM9000A-
EP), zewnętrzny oscylator kwarcowy oraz
zewnętrzną pamięć nielotną typu EEPROM
(2  kB). Sercem modułu jest mikrokontro-
ler (prawdopodobnie jest on oparty o rdzeń
’51 lub ’51 chodź producent nie podaje
wprost tej informacji) taktowany zegarem
aż 88 MHz. Posiada jeden port Ethernetowy
z funkcją Auto-MDIX (rozpoznawanie typu
podłączonego kabla: prosty czy skrosowa-
ny), 4 szybkie porty szeregowe, 512 kB Flash,
z której pierwsze 64 kB są zarezerwowane na
obraz systemu operacyjnego natomiast reszta
przeznaczona jest na aplikacje użytkownika
(z  której również mamy programowy do-
stęp do pamięci fl ash). Moduł wyposażony
jest też w zegar czasu rzeczywistego (RTC)
oraz 54 linie GPIO. Część z nich posiada kil-
ka funkcji w zależności od bloku, z jakim są
połączone. Moduł posiada też specjalne linie
szybkiego interfejsu SPI służącego do komu-
nikacji z układami peryferyjnymi (jak np.
moduł Wi-Fi). Pośród linii znajdziemy też
wejścia przerwań zewnętrznych, oraz kilka
linii sygnalizacyjnych (część z nich opisana
jest wcześniej). Do programowania modułu
i debugowania kodu nie są wymagane żadne
dodatkowe narzędzia (np. JTAG) ponieważ
cała komunikacja ze środowiskiem develo-
perskim TIDE odbywa się poprzez połącze-
nie Ethernetowe.
Od strony programowej moduł wspie-
ra wszystkie typy danych: typy całkowite
o rozmiarach od jednego do czterech bajtów,
typ Real (4 bajty), typ łańcucha znakowego
(string), tablice oraz struktury/typy dei nio-
wane przez użytkownika. System operacyjny
(TiOS) dostarcza wiele procedur systemo-
wych min konwersji typów numerycznych
montowany na stosie na module EM1000 któ-
ry dodatkowo dostarcza dla niego zasilanie.
WA1000 wyposażony jest w antenę typu chip ,
jak również posiada złącze typu I-PEX MHF
służące do podłączenia zewnętrznej anteny.
List. 3. Uruchomienie modułu WA1000
romfi le.open(“wln_fwar.bin”)
x=wln.boot(romfi le.offset)
gową z użyciem UARTa, który w przerwaniu
oczekuje na nadchodzące znaki i przepisuje
je do zmiennej globalnej: unsigned char IR-
data = 0;
Na rys. 10 przedstawiono algorytm progra-
mu, a na list.   1 kod głównej pętli programu.
Pętla, co czas zdei niowany przez stałą
TRANSMISSION_DELAY (80  ms), spraw-
dza zawartość zmiennej globalnej IRdata.
W przypadku, gdy UART odebrał znak roz-
poznawany przez instrukcję switch , nastę-
puje wywołanie funkcji sendIRcommand()
z właściwymi kodami grupy i rozkazu. Funk-
cja ta tworzy kopię argumentów i zmienia
stan maszyny na TS_INIT, co rozpoczyna
proces generowania komendy przez diodę
poczerwieni.
Na tym etapie możliwe było przetesto-
wanie układu pilota z dowolnym kompute-
rem wyposażonym z port szeregowy. Kolej-
nym krokiem było wyposażenie urządzenia
w interfejs WLAN.
Oprogramowanie modułu EM1000
– TIBBO BASIC
Dysponując już wszystkimi elementami
sprzętowymi systemu można było przystąpić
do ostatniej części projektu: stworzenia i rm-
ware’u dla modułu EM1000.
Podstawowy kod źródłowy zawarto
w jednym pliku TIBBO Basic oraz w kilku
prostych plikach .html implementujących
interfejs użytkownika. Działanie programu
sprowadza się do przypisaniu odpowiednich
adresów MAC, IP, Gateway oraz maski pod-
sieci ( list. 2 ).
Kolejnym krokiem jest uruchomienie
samego modułu bezprzewodowego. Kod
źródłowy programu odpowiedzialnego za
współpracę z modułem Wi-Fi pokazano na
list. 3 . Przy pomocy metody romi le.open
uzyskujemy wskaźnik na obszar pamięci
typu ROM. W tym przypadku był to plik
binarny dołączony do projektu. Plik ten za-
wiera obraz i rmware dla modułu WA1000.
Następna metoda ( wln.boot ) rozpoczyna
właściwy proces transmisji kodu do modułu
WA1000. Dopiero po tych czynnościach mo-
duł uaktywnia swój interfejs radiowy.
Jeśli poprzednie operacje przebiegły pra-
widłowo możemy przystąpić do próby po-
EM1000+WA1000
Jako baza do implementacji interfejsu
bezprzewodowego posłużył programowalny
moduł EM1000. Jest to najsilniejsza plat-
forma programowalna i rmy Tibbo. Moduł
z założenia jest przeznaczony do zaawan-
sowanych aplikacji sieciowych i nie jest do-
starczany z jakąkolwiek preprogramowaną
aplikacją (jak ma to miejsce w przypadku
prostszych modułów). Aplikację musimy
stworzyć sami.
Właściwie cały moduł zamyka się w jed-
nym chipie (ASIC). Na jego płytce drukowa-
Rys. 11. Wygląd modułu WA1000
30
ELEKTRONIKA PRAKTYCZNA 8/2009
Zgłoś jeśli naruszono regulamin