Zpět
Dálkové ovládání měřicích přístrujů v SRD pásmu
Remote Control of Measurement Devices in SRD Band
Bakalářská práce, ÚREL FEKT VUT v Brně, 2007

Summary: The thesis deals with developement of radiomodems for low rate data communication between computer and device connected via RS-232 standard line. The wireless connection is based on OEM modules by Aurel Wireless, working on SRD band at 868 MHz. The main Atmel AVR microcontroller includes algorithms for Manchester code processing (receiving and transmitting at the speed of 1200 Bd) and implementation of forward error correcting Hamming code (12,8).

Designed system is described in three main chapters: hardware (components selection, circuit diagram design, printed circuit board design), firmware (AVR microcontroller code), and application software (computer program controlling the MASTER modem). PC software is able to control the Elsy SG2000 signal generator and the Yaesu VR-5000 communication receiver. When connected together, zone measurement (i. e. attenuation of environment between generator and receiver as a function of frequency) can be realized. Results of experimental measurements can be found in the attachement of the thesis.

The prototype pair of modems is able to estabilish reliable connection on the distance of up to tens of meters, depending on environment. The PC software can be modified to allow the usage of modems for generic telemetry transfers, if there is no demand on high speed and large data quantity.


Abstrakt: Tato práce se zabývá vývojem radiomodemů pro nízkorychlostní komunikaci mezi počítačem a zařízením, připojeným po lince standardu RS-232. Pro bezdrátový spoj jsou využity OEM moduly firmy Aurel Wireless, pracující v pásmu SRD 868 MHz. Mikroprocesor Atmel AVR, řídící chování modemu, obsahuje mimo jiné algoritmy pro zpracování linkového kódu Manchester o rychlosti 1200 Bd (vysílání, příjem) a implementaci samoopravného Hammingova kódu (12,8).

Navržený systém je popisován ve třech hlavních částech: hardware (výběr součástek, návrh zapojení modemu, návrh desky s plošnými spoji), firmware (obslužný kód pro mikroprocesor AVR na modemu) a software (ovládací program pro PC, obsluhující MASTER modem). Software pro PC umožňuje ovládání signálního generátoru Elsy SG2000 a komunikačního přijímače Yaesu VR-5000. Po připojení těchto dvou přístrojů spolu s počítačem k páru modemů je možné realizovat zónové měření, tj. měření závislosti přenosových vlastností prostředí mezi generátorem a přijímačem v závislosti na kmitočtu. Výsledky experimentálních měření jsou zaneseny v příloze této práce.

Realizovaný pár modemů umožňuje v závislosti na prostředí spolehlivé spojení na vzdálenost řádově desítek metrů. Po úpravě ovládacího programu pro PC mohou být modemy použity pro přenos libovolných telemetrických údajů, není-li vyžadována vysoká rychlost a velké objemy přenášených dat.


Tato webová stránka vznikla převážně konverzí mírně upraveného textového zdroje práce v LaTeXu pomocí TtH v3.77. Tomu odpovídá i její design a kvalita HTML. Originální PDF generovaný pdfCSLaTeXem je přístupný ke stažení spolu s veškerým programovým vybavením. Schéma zapojení a podklady k výrobě a osazení DPS jsou v PDF ve vektorové formě s měřítkem 100%.

Dálkové ovládání měřicích přístrojů v SRD pásmu (PDF, 1.74 MB)
Firmware mikroprocesoru (ZIP, 19 kB) (kompilováno balíkem WinAVR 20060421)
Software pro PC v Borland C++ Builderu (ZIP, 290 kB) (kompilováno C++ Builderem 6)
Knihovna TComPort nutná pro kompilaci SW pro PC



Obsah

1  Úvod
2  Komunikace v ISM pásmech
    2.1  Pásmo SRD
    2.2  Modulační techniky
3  Hardware modemu
4  Firmware modemu
    4.1  Komunikační protokol
    4.2  Linkové kódování Manchester
    4.3  Algoritmy modemu
        4.3.1  Vysílání
        4.3.2  Příjem
        4.3.3  Hammingův kód (12,8)
    4.4  Funkce jednotky MASTER
    4.5  Funkce jednotky SLAVE
5  Ovládací program pro PC
    5.1  Testování spojení
        5.1.1  Výsledky měření dosahu a spolehlivosti
    5.2  Dálkové ovládání přístrojů
        5.2.1  Signální generátor Elsy SG2000
        5.2.2  Komunikační přijímač Yaesu VR-5000
    5.3  Zónová měření
6  Závěr
A  Schéma zapojení
B  Výkresová dokumentace
    B.1  Strana spojů
    B.2  Strana součástek
C  Seznam součástek
D  Algoritmy mikroprocesoru
    D.1  Vysílač
    D.2  Přijímač
    D.3  Hammingův kód (12,8)
E  Grafy zónových měření


Kapitola 1

Úvod

Projekt Dálkové ovládání měřicích přístrojů v SRD pásmu je zaměřen na vývoj univerzální dvojice modulů, které budou umožňovat komunikaci mezi osobním počítačem a inteligentními měřicími přístroji vybavenými sériovým rozhraním standardu RS-232. V dalším textu jsou tyto moduly značeny jako MASTER (řídící modul propojený s osobním počítačem) a SLAVE (řízený modul komunikující s dalším zařízením, např. měřicím přístrojem).

obrazky/koncepce.gif
Obrázek 1.1: Koncepce systému dálkového ovládání měřicích přístrojů
Kapitola 2 otevírá problematiku využití ISM pásem pro přenos telemetrických dat a zmiňuje základní modulační techniky. Následující dvě kapitoly se věnují vyvinutému páru modemů po stránce hardwaru (použité součástky a moduly, zapojení elektroniky) a firmwaru (kód řídícího mikroprocesoru modemu). V kapitole 5 je popsán vytvořený komunikační program pro osobní počítač, který je připojený k MASTER modemu a umožňuje v současné verzi dálkové ovládání několika různých přístrojů připojených k modemu SLAVE. Také umožňuje realizovat jednoduchá zónová měření.
V příloze je obsaženo celkové schéma zapojení modemu, podklady pro výrobu a osazovací plán plošných spojů, výpisy algoritmů zpracování linkového kódu a ukázkové grafy zpracované z experimentálního zónového měření.
Oproti systému popsaném v [1], ze kterého tento projekt volně vychází, byla realizována řada změn. Mezi nejdůležitější patří:


Kapitola 2

Komunikace v ISM pásmech

Přenosová datová rychlost v pásmech ISM je daná modulační metodou a přidělenou šířkou pásma (resp. kmitočtovou roztečí jednotlivých kanálů) a je obecně nízká. Např. modulační metoda AFSK podle standardu V23 nabízí přenosovou rychlost pouze 1200 b/s.
Podle povolovacích podmínek [5] je v současné době prakticky celosvětově podporováno několik bezlicenčních ISM pásem. Jejich výhody a nevýhody z hlediska aplikace shrnuje tab. 2.1. Je zřejmé, že pásmo SRD, zadané pro realizaci projektu, převažuje výhodami nad ostatními zmiňovanými ISM pásmy, zejména svým nízkým provozním využitím.
Tabulka 2.1: Srovnání vlastností bezlicenčních ISM pásem
ISM pásmo výhody nevýhody
150/160 MHz velký dosah i v zastavěné oblasti pásmo vytížené mnoha aplikacemi (ovládání zařízení, zabezpečení v železniční dopravě)
433/450 MHz středně velký dosah i v zastavěné oblasti pásmo vytížené aplikacemi (dálkové ovládání dveří automobilů, garáží apod.)
868 MHz středně velký dosah, v zastavěné oblasti obdobné vlastnosti jako u GSM pásma 900 MHz, málo obsazené pásmo (způsobeno poměrně novým uvolněním pásma – v ČR od roku 2000) menší dostupnost hardware
2400 MHz
(WiFi systémy)
a vyšší pásma
nízká cena, jednoduché připojení k počítači (nejčastěji Ethernet nebo PCI), široký rozsah hardwarové a softwarové podpory menší dosah, pro dosažení většího dosahu nutno použít směrových antén, omezený dosah v zastavěné oblasti, v pásmu 2400 MHz velká hustota provozu

2.1  Pásmo SRD

V ČR bylo pásmo SRD uvolněno teprve v roce 2000 a jeho hlavní určení je pro dálkové ovládání v průmyslových aplikacích, automatizaci (ovládání strojů, jeřábů apod.), alarmech a signalizaci. V celém SRD pásmu je pro tyto aplikace uvolněno 80 kanálů s kmitočtovým rozestupem 25 kHz (to je podstatně více oproti pásmům 150/160 MHz a 433/450 MHz). Nepříliš velké rozšíření a velké množství kanálů v SRD pásmu dává předpoklad výraznému omezení interferencí s jinými uživateli. I v současné době se provoz v tomto pásmu příliš nezvyšuje. Zřejmě je to důsledek výrazné expanze bezdrátové komunikace v pásmu 2400 MHz, které je přístupné nízkou cenou potřebné technologie a velkou softwarovou podporou. Podle standardních licenčních podmínek ITU je pásmo SRD prakticky celosvětově (země ve společenství CEPT) přiděleno pro nezpoplatněný bezdrátový přenos telemetrie (General Telemetry and Telecommand) a výstražnou signalizaci (Alarms). Maximální povolený výkon v tomto pásmu je od 5 do 500 mW EIRP, definováno podle subpásem. Nejvyšší výkon (500 mW EIRP) je povolen v subpásmu CEPT SRD 1i, tj. 869,4 až 869,65 MHz – 10 kanálů, při dodržení podmínky poměru doby klíčování k celkové době provozu maximálně 10% (viz tab. 2.2).
Tabulka 2.2: Rozdělení kanálů v pásmu SRD 868 – 870 MHz
Kanál Kmitočet Max. výkon Klíč. poměr Aplikace
od - do EIRP [mW] TX/RX [%]
[MHz]
0 - 23 868,0125 25 < 1 obecné využití
868,5875
24 - 27 868,6125 10 < 0,1 obecné využití
868,6875
28 - 47 868,7125 25 < 0,1 obecné využití
869,1875
48 - 51 869,2125 10 < 0,1 bezpečnostní alarmy
869,2875
52 - 55 869,3125 10 < 10 domácí automatizace
869,3875
56 - 66 869,4125 500 < 10 obecné využití
869,6500
67 869,6875 25 < 0,1 všeobecné alarmy
68 - 79 869,7125 5 100 obecné využití
869,9875

2.2  Modulační techniky

Mezi nejzákladnější modulační techniky užívané v modemech patří FSK (Frequency Shift Keying), AFSK (Audio Frequency Shift Keying) a FFSK/MSK (Fast Frequency Shift Keying, také známé jako Minimum Frequency Shift Keying).
Modulace FSK je svým principem nejjednodušší. Digitální signál je použit pro přímou modulaci nosné. Její střední frekvence se tak podle příchozích dat. Jednoduchost je vykoupena některými problémy, pro spoje na krátkou vzdálenost je však FSK dobře použitelná. Do FSK modulátoru nesmí přicházet dlouhé řady jedniček ani nul následujících po sobě.
Často používaná je také modulace AFSK. Příchozí data jsou konvertována na audio tóny, jednička je standardně představována frekvencí 1200 Hz, nula frekvencí 2400 Hz. Střední hodnota takto modulovaného signálu bude nulová. Tato technika se využívala v prvních modemech pro telefonní sítě. Její velkou výhodou je vysoká citlivost. Mezi další modulace lze řadit např. MSK, jedná se v podstatě o synchronizovanou verzi FSK. Základní parametry popsaných modulací shrnuje tab. 2.3 převzatá z [4].
Tabulka 2.3: Porovnání základních modulačních technik
Druh modulace Citlivost [dBm] Max. přenosová
rychlost [Bd]
přímá FSK −100 6000
AFSK (V23) −118 1200
FFSK/MSK −115 4800
Bezdrátové moduly Aurel popisované v následující kapitole podporují pouze modulaci OOK (On-Off Keying), tedy základní variantu modulace ASK (Amplitude Shift Keying). Při přítomnosti log. 1 na datovém vstupu vysílá modul nemodulovanou nosnou, pro log. 0 nevysílá. Pro komunikaci je tedy nutné zavést vhodné linkové kódování dat s konstantní střední hodnotou modulovaného signálu.


Kapitola 3

Hardware modemu

Hardware systému dálkového ovládání měřicích přístrojů volně vychází z [1]. Obě jednotky (MASTER a SLAVE) obsahují dvojici bezdrátových modulů firmy Aurel Wireless (pro příjem a vysílání, [9] a [10]), řídící mikroprocesor Atmel AVR, obvody komunikačních rozhraní, podpůrné obvody a napájecí část. Blokové schéma modemu je na obr. 3.1, kompletní schéma zapojení je obsaženo v příloze A.

obrazky/blokschema.gif
Obrázek 3.1: Blokové schéma modemu
Srdcem řídící části je mikroprocesor Atmel typu ATmega8 (IC4). Rodina mikrokontrolérů ATmega disponuje poměrně velkou vnitřní pamětí typu Flash, kterou je možné programovat přímo v aplikaci. Takový způsob programování je označován jako In-System Programming (ISP). Na čipu je dále integrovaná paměť RAM nutná pro běh firmware a paměť EEPROM pro ukládání nastavení při vypnutí napájení. Mikroprocesory disponují až třemi časovači, watchdogem, sběrnicemi I2C a SPI, hodinami reálného času, A/D převodníkem, modulátorem PWM a řadou dalších vylepšení. Navíc jsou běžně dostupné a existují k nim zdarma kvalitní vývojové prostředky, a to jak assembler, tak kompilátor jazyka C.
Pro komunikaci s okolím je využit sériový kanál mikroprocesoru (USART), který je následně přepínán multiplexerem - obvodem typu 4052 (IC5). Obvod 4052 je dvoukanálový analogový obousměrný multiplexer. V závislosti na kombinaci logických úrovní jeho vstupů A a B jsou linky X (TXD) a Y (RXD) propojeny s jedním z maximálně čtyř připojitelných rozhraní.
Dvě z těchto rozhraní využívá dvojitý převodník úrovní RS-232, obvod MAX232 (IC3). Linky RS-232 jsou vyvedeny na standardní konektory. Dále je modem možné připojit přes rozhraní USB (konektor typu B), k čemuž se využívá modul M4 kompatibilní s UMS2 firmy Asix [11]. Čtvrté rozhraní může být osazeno modulem Lantronix XPort (M3) [12]. Jedná se o miniaturní embedded server zabudovaný v krytu konektoru, který umožňuje konverzi sériového kanálu na Ethernetové rozhraní (LAN).
Zapojení modemu dále obsahuje modul Aurel RX-8L50SA70SF (M1) pro příjem a Aurel TX-8LAVSA05 (M2) pro vysílání na kmitočtu 868,3 MHz. Tato dvojice modulů byla zvolena jako náhrada OEM transcieveru SX800 firmy Wood&Douglas, jehož použití bylo původně navrhováno v [2]. Základní parametry modulů Aurel shrnují tab. 3.1 a 3.2.
Tabulka 3.1: Parametry přijímacího modulu Aurel RX-8L50SA70SF
Údaj Min Typ Max Jednotka
Pracovní frekvence 868,3 MHz
Napájecí napětí 4,75 5 5,25
Proudový odběr 7 9 mA
VF citlivost −98 −100 −104 dBm
Impedance antény 50
VF šířka pásma pro −3 dB 600 kHz
MF šířka pásma pro −3 dB 300 kHz
Frekvence na výstupu 3 kHz
VF vyzařování do antény −80 dBm
Doba náběhu po zapnutí 0,2
Tabulka 3.2: Parametry vysílacího modulu Aurel TX-8LAVSA05
Údaj Min Typ Max Jednotka
Pracovní frekvence 868,3 MHz
Napájecí napětí 2,7 3 5
Proudový odběr 20 25 50 mA
VF výstupní výkon (E.R.P.) +4 +5 +7 dBm
Impedance antény 50
Modulační frekvence 3 kHz
Vzhledem k nutnosti využít samostatné moduly pro RX a TX muselo být vyřešeno jejich přepínání do společné antény. K tomu slouží P-MOSFET tranzistory BSS84 (Q1, Q2), které spínají PIN diody BA479G (D1, D2). Odpor rezistoru R2 je spočítán pro optimální proud diodami podle [7], tj. R2 = (Unap − Uf) / If = (5 − 0,8) / 0,01 ≈ 390 Ω. Kromě PIN diod je k tranzistorům připojeno také napájení modulů, zapínají se tedy zároveň s připojením své antény. Modul TX má použité napájecí napětí 5 V v parametrech označeno jako maximální, proto je snižováno dvojicí diod 1N4007 SMD (D3, D4) na hodnotu (Unap − 2Uf) = (5 − 2 ·0,7) ≈ 3,6 V.
Napájení celého zařízení je řešeno lineárním stabilizátorem 78M05 (IC2) v klasickém katalogovém zapojení [8]. Modul XPort vyžaduje napájecí napětí 3,3 V a jeho odběr je poměrně vysoký (dle [12] přibližně 0,2 A), proto je pro něj využitý samostatný stabilizátor LF33AB (IC1).
Modem obsahuje konektory pro připojení napájení v rozsahu 8 až 15 V (J2), ISP programování mikroprocesoru (JP1) a komunikační rozhraní - RS-232 (X1, X2), USB (X3) a LAN (XPort modul M3). U mikroprocesoru je na DPS umístěn spínač S1, realizovaný jako dvě pájecí plošky vedle sebe. Slouží k výběru režimu modemu (MASTER / SLAVE), čímž je umožněno, aby byl ovládací program společný pro oba druhy jednotek. Rozpojením spínače S2 je možné odpojit napájení od stabilizátoru modulu XPort. Na desce jsou dále programovatelné svítivé diody (LED1, LED2, LED3) a diody, indikující aktuální stav přepnutí multiplexeru (LED4, LED5). Žlutá LED1 indikuje testování modemu (příkazem CMD_LPING nebo CMD_WPING), zelená LED2 svítí při příjmu z bezdrátového rozhraní a červená LED3 signalizuje probíhající vysílání. Celkový pohled na konstrukci zachycují fotografie na obr. 3.2, obr. 3.3 a obr. 3.4.

obrazky/foto_modem.jpg
Obrázek 3.2: Fotografie modemu - celkový pohled

obrazky/foto_porty.jpg
Obrázek 3.3: Fotografie modemu - detail rozhraní

obrazky/foto_dps.jpg
Obrázek 3.4: Fotografie modemu - pohled na DPS
Konstrukce je realizována technologií kombinované montáže, většina součástek je použita v provedení SMD a osazena na spodní straně DPS, několik málo dalších součástek a všechny moduly a konektory jsou umístěny na horní straně. Výkresy DPS a rozložení součástek lze nalézt v příloze B.


Kapitola 4

Firmware modemu

Obslužný program mikroprocesoru modemu byl vytvořen v jazyce C. Pro překlad je využit balík WinAVR, tedy kompilátor AVR-GCC s knihovnou AVR Libc. Funkce obsažené v jednotlivých souborech projektu popisuje tab. 4.1. Revize označuje číslo verze souboru v systému Subversion.
Tabulka 4.1: Soubory projektu firmware modemu
Soubor Revize Popis
Makefile 94 Makefile
global.c 93 Globální funkce (čekání, CRC, časovače)
hamming.c 102 Implementace systematického Hammingova kódu (12,8)
main.c 108 Hlavní program, obsluhy chování MASTER a SLAVE jednotek
uart.c 94 Komunikační funkce - rozhraní UART; funkce pro výběr vstupu multiplexeru, odesílání a příjem dat, odesílání a příjem paketů
wireless.c 113 Komunikační funkce - bezdrátové rozhraní; od rev. 110 funkce příjmu a vysílání v Manchester kódu (dříve algoritmy pro zpracování AFSK)
comm.h 95 Hlavičkový soubor popisující strukturu paketu a ID jednotlivých příkazů modemu
global.h 123 Globální definice - přiřazení V/V mikroprocesoru; hlavičkový soubor pro global.c
hamming.h 102 Hlavičkový soubor pro hamming.c
uart.h 93 Hlavičkový soubor pro uart.c
wireless.h 112 Hlavičkový soubor pro wireless.c
modem.ppr Projektový soubor editoru PSPad

4.1  Komunikační protokol

Protože mezi MASTER a SLAVE jednotkou je rádiové prostředí, které může být silně zarušené, bylo nezbytné navrhnout protokol s dostatečnou ochranou proti chybám při přenosu. Jeden paket musí umožňovat zapouzdření přenášených dat, v hlavičce pak nést řadu řídících informací. Celek musí být chráněn kontrolním součtem.
Tabulka 4.2: Struktura komunikačního paketu modemu
Offset Délka Pole Popis
0 1 length Délka paketu
1 1 command Příkaz
2 3 port Identifikace rozhraní (struktura INTERFACE)
5 1 timeout Časový limit čekání na odpověď (v desítkách milisekund)
6 0-64 data[ ] Přenášená data
... 2 crc16 Kontrolní součet typu CRC16
Tabulka 4.3: Struktura INTERFACE pro předání parametrů rozhraní (tučné hodnoty jsou výchozí)
Offset Délka Pole Popis
0 2/8 mux:2 Číslo rozhraní (0 až 3)
1/8 slave:1 Rozhraní na jednotce MASTER/SLAVE
5/8 dummy:5 Nevyužito
1 1 baudrate Rychlost přenosu (2, 4, 9, 14, 19, 28, 38, 57, 76, 115, 230)
2 4/8 databits:4 Počet datových bitů (5, 6, 7, 8)
2/8 stopbits:2 Počet stopbitů (1, 2)
2/8 parity:2 Parita (žádná 0, lichá 1, sudá 2)
Navržená struktura paketu je popsána v tab. 4.2. Pro zjednodušení se používá stejný formát paketu pro komunikaci MASTER jednotky s počítačem a pro rádiovou komunikaci mezi MASTER a SLAVE jednotkami, přestože při komunikaci s počítačem by nebylo zabezpečení paketu kontrolním součtem nezbytné. Liší se pouze prefixy paketů.
Ve starší verzi firmware modemu [3] byla pro komunikaci rádiovým prostředím zvolena modulace AFSK. Při modulaci byly tóny 1200 Hz (log. 0) a 2400 Hz (log. 1) generovány mikroprocesorem, který se staral také o demodulaci. Současná verze firmware pracuje s linkovým kódem Manchester, který je následně vysílán pomocí OOK modulátoru modulu Aurel.
Přestože výrobce RX modulu uvádí dobu náběhu od zapnutí 0,2 sekundy (viz tab. 3.1), bylo měřením zjištěno, že je modul připravený k příjmu již po několika milisekundách. Modul obsahuje výstup digitálního demodulovaného signálu, který je zřejmě připojen na výstup komparátoru. Ten porovnává okamžitou hodnotu signálu s hodnotou vyfiltrovanou dolní propustí. Tento princip vyžaduje pro svou funkci konstantní střední hodnotu signálu, která je zajištěna použitým linkovým kódem Manchester. Protože má dolní propust RX modulu poměrně vysokou časovou konstantu, je nezbytné, aby samotnému datovému přenosu předcházelo vysílání pilotního signálu, ze kterého RX modul získá střední hodnotu signálu pro komparátor.
Komunikace mezi jednotkami probíhá rychlostí 1200 Bd. Aktivování TX modulu je okamžité, před odesláním paketu je vždy vysílán po dobu cca 200 ms pilotní signál (sled log. 1 v kódu Manchester, představovaný tónem 1200 Hz). U modulu RX byla přidána prodleva 15 ms před startem algoritmu zasynchronizování datového toku. Příklad paketu přijatého jednotkou SLAVE ukazuje obr. 4.1.

oscilo/rx_kompletni_paket/PRINT_01.png
Obrázek 4.1: Příklad kompletního paketu (1 = analogový signál - výstup RX TEST, 2 = DATA, 3 = aktivní příjem)
Pro komunikaci MASTER jednotky s řídícím počítačem byla zvolena standardní rychlost 19200 Bd, 8 datových bitů, 1 stopbit, parita žádná. Protože MASTER jednotka nedokáže předvídat, z kterého rozhraní připojeného k multiplexeru přijde požadavek ke zpracování, jsou vstupy multiplexeru přepínány s periodou 20 μs a vyhledávána nízká úroveň na vstupu RXD. Při jejím nalezení se program zastaví na zvoleném vstupu multiplexeru a počká na vzestupnou hranu signálu RXD. Poté aktivuje rozhraní USART mikroprocesoru pro příjem. Tato metoda umožňuje využít jediný hardwarový kanál USARTu mikroprocesoru pro příjem z více rozhraní. Daní za jednoduchost je zahození prvního přijatého znaku, v případě pomalého přepínání multiplexeru i více znaků. Proto struktuře paketu pro komunikaci mezi MASTER jednotkou a počítačem předchází prefix, obsahující několik nul. Výběr vstupu multiplexeru ukazuje obr. 4.2. Pro přepínání vstupu multiplexeru se využívá dvoubitová varianta Grayova kódu (00 → 01 → 11 → 10).

oscilo/prepinani_vstupu_master/PRINT_06.png
Obrázek 4.2: Přepínání RXD signálu MASTER jednotky (1 = RXD, 3 = MUXA, 4 = MUXB)
Jednotky umožňují komunikovat se všemi běžně používanými parametry sériového kanálu. Jelikož byla cílem univerzálnost modemů, přenášejí se komunikační parametry v hlavičce každého paketu. Tím je umožněn rychlý a snadný přístup k více připojeným zařízením s různými komunikačními parametry, který je nutný pro realizaci zónových měření (viz kap. 5.3).
Tab. 4.4 shrnuje příkazy MASTER jednotky modemu, v současné verzi je jedná o povel pro odeslání dat a příkazy pro testování spojení s potvrzením.
Tabulka 4.4: Příkazy modemu
Příkaz ID Popis
CMD_SEND 0x10 Odeslání dat na jednotku, adresát zvolen v hlavičce paketu
CMD_LPING 0x90 Požadavek na odezvu MASTER (lokální)
CMD_WPING 0x91 Požadavek na odezvu SLAVE (vzdálený)
CMD_ACK 0xA0 Potvrzení příkazu, odezva na PING

4.2  Linkové kódování Manchester

Vzhledem k nutnosti stálé střední hodnoty modulačního signálu bylo třeba pro přenos dat využít vhodný linkový kód, zvolen byl kód zřejmě nejběžnější - Manchester. Log. 0 se kóduje jako vzestupná hrana uprostřed bitového intervalu (posloupnost 01), log. 1 jako sestupná hrana (posloupnost 10). Princip modulace je zřejmý z obr. 4.3.
Implementace v modemech dále obsahuje definovanou značku (mark) pro počátek datového toku (posloupnost 11) a pro konec datového toku (posloupnost 00). Tyto dvě značky sice poruší konstantní střední úroveň modulovaného signálu, ale pouze v zanedbatelné míře.

4.3  Algoritmy modemu

V následujících podkapitolách jsou popsány algoritmy pro zpracování linkového kódu Manchester, implementované v mikroprocesoru. Výpis relevantních částí zdrojového kódu přijímače a vysílače lze nalézt v přílohách D.1 a D.2.

4.3.1  Vysílání

Pro kódování signálu se využívá časovač TIMER1 mikroprocesoru v režimu CTC (mode 4) s předděličkou. K jeho naplnění dochází s frekvencí 2400 Hz, tj. s periodou 1 / 2400 ≈ 417 μs.
Přenos paketu začíná přenosem pilotního signálu o délce cca 250 ms, představovaného sledem log. 1, jenž je zakódován na souvislý tón 1200 Hz. Tento signál je nutný pro nastavení střední úrovně signálu komparátoru RX modulu a také pro zachycení synchronizace, jak popisuje následující kapitola. Následuje značka počátku přenosu (11), poté je přenesena datová část paketu. Přenos je zakončen značkou konce přenosu (00).

oscilo/tx_vysilani/PRINT_05.png
Obrázek 4.3: Funkce kodéru Manchester (1 = vstupní data, 2 = výstupní signál)

4.3.2  Příjem

Algoritmus demodulace je - vzhledem k možnosti zkreslení a rušení signálů v rádiovém prostředí - nejkomplikovanější. Oproti starším verzím, které využívaly detekci hrany signálu výstupu RX modulu, provádí současný přijímací algoritmus obnovení synchronizace časování symbolů z pilotního signálu, následované synchronním příjmem. Algoritmus popisovaný v následujících odstavcích je ve formě vývojového diagramu zachycen na obr. 4.4.

obrazky/prijem.gif
Obrázek 4.4: Vývojový diagram algoritmu příjmu kódu Manchester
Obnovení synchronizace pracuje na principu digitálního fázového závěsu (Digital Phase Locked Loop - DPLL). Časovač TIMER1 v režimu CTC se nejdříve nastaví na generování vzorkovací frekvence 9600 Hz, tedy osminásobku symbolové rychlosti. Provádí vzorkování signálu výstupu RX modulu a jeho ukládání do 16-bitového posuvného registru. V registru se vyhledává posloupnost dvou jedniček kódovaných Manchester kódem jako 1010, při násobné vzorkovací frekvenci tedy jako posloupnost 1111000011110000. Pro zvýšení pravděpodobnosti zachycení synchronizace v zarušeném prostředí jsou bity kolem hran ignorovány - viz tab. 4.5. Postup zachycení synchronizace na reálném signálu je vidět na snímku z osciloskopu na obr. 4.5. Svislé čáry ukazují momenty vzorkování signálu procesorem.

oscilo/rx_detekce/PRINT_07.png
Obrázek 4.5: Synchronizace pomocí digitálního fázového závěsu
Po prvním zasynchronizování na dvojici kódovaných jedniček počká mikroprocesor 40 ms a spustí znovu synchronizační algoritmus DPLL. Během čekání se dostatečně ustálí výstup komparátoru TX modulu, druhé zasynchronizování je tedy mnohem méně poznamenáno šumem, způsobujícím náhodné překlápění komparátoru (oblast log. 0 na obr. 4.5). Po druhé synchronizaci počká procesor dvě periody časovače, aby se okamžik vzorkování posunul do středu symbolu, kde lze očekávat nejvyšší pravděpodobnost správného vyhodnocení.
Tabulka 4.5: Obnovení synchronizace pomocí digitálního fázového závěsu
Žádaná posloupnost 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
Maskování (AND) 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1
Porovnáváno s ... 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0
Postačující posloupnost x 1 1 1 x 0 0 0 x 1 1 1 x 0 0 0
Následuje přenastavení frekvence časovače TIMER1 na 2400 Hz, tedy dvojnásobek symbolové rychlosti. Přijímač ve smyčce přečte 16 bitů - vzorkuje s každým druhým přetečením časovače, tedy s efektivním kmitočtem 1200 Hz. Vyhodnocuje se první polovina kódovaného symbolu (vzestupná hrana 01 → log. 0, sestupná hrana 10 → log. 1). Pokud není z 16 přečtených bitů alespoň 14 log. 1, považuje se synchronizace za neplatnou a algoritmus pokračuje znovu od úplného začátku. K tomuto případu může dojít např. při spuštění příjmu během již probíhajícího přenosu - algoritmus se zasynchronizuje na sekvenci dvou log. 1 v datovém toku (ty se vyskytnou s velkou pravděpodobností), ale nenalezne delší sekvenci.
Po nalezení platné sekvence log. 1 je přijímač zasynchronizován na datový tok vysílače (který stále vysílá pilotní sekvenci log. 1) a začne vyhledávat značku počátku (11). Po jejím nalezení provádí příjem dat až po detekci značky konce (00), resp. zaplnění přijímacího bufferu, pokud nebyla značka konce nalezena kvůli poškození.
Při příjmu se vyhodnocuje střed první poloviny kódovaného symbolu (tj. opět vzestupná hrana 01 → log. 0, sestupná hrana 10 → log. 1). Pouze u prvního bitu každého přenášeného slova se kontrolují obě poloviny kódovaného symbolu za účelem detekce značky konce.
Ukázka příjmu je zobrazena na obr. 4.6. První dva symboly (1 a 1, kódované jako dvě sestupné hrany 10 10) patří do pilotní sekvence jedniček pro synchronizaci přijímače. Následuje značka počátku (11) následovaná bitovým tokem (0 1 0 0 0 0 0) v kódu Manchester (01 10 01 01 01 01 01).

oscilo/rx_prijem/PRINT_08.png
Obrázek 4.6: Funkce dekodéru Manchester
Datová slova mohou být dlouhá 8 nebo 12 bitů, v závislosti na tom, zda je aktivní Hammingovo kódování přenášených dat. Všechny smyčky přijímacího algoritmu dále kontrolují, zda nedošlo k vypršení timeoutu časovače.

4.3.3  Hammingův kód (12,8)

Hammingův kód (dále HK) je lineární kód pro opravu jedné chyby v kódovaném datovém slově. Zvolený systematický HK (12,8) kóduje 8-mi bitové slovo na 12-bitové přidáním čtyř kontrolních bitů. V každém slově tedy může být při přenosu poškozen jeden bit, který je algoritmem opraven.
Pro generování HK (12,8) byla využita generující matice G:

G = /
|
|
|
|
|
|
|
|
|
\
1
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
1
0
0
0
0
0
1
0
1
1
0
0
0
1
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
1
0
0
1
1
\
|
|
|
|
|
|
|
|
|
/
Z důvodu rychlosti a paměťové náročnosti výpočtu v mikroprocesoru byla vypočítána look-up tabulka pro všech 28 = 256 možných vstupních hodnot, realizace vychází z [13]. Kód v jazyce C pro generování a opravu HK přizpůsobený překladači AVR-GCC lze nalézt v příloze D.3.
Standardní algoritmus kontroly přijatého slova lineárního kódu, popsaný např. v [14], využívá kontrolní matici H. Po vynásobení matice kontrolovaným slovem získáme vektor, tzv. syndrom. Je-li syndrom nulový, nedošlo při přenosu k chybě. V opačném případě lze ze syndromu určit pozici chyby ve slově.

H = /
|
|
|
|
\
1
1
1
1
0
0
0
0
1
0
0
0
1
0
0
0
1
1
1
0
0
1
0
0
0
1
1
0
1
1
0
1
0
0
1
0
0
0
1
1
1
0
1
1
0
0
0
1
\
|
|
|
|
/
Zvolený algoritmus implementuje jednodušší metodu kontroly, kdy se určení syndromu provede modulo 2 součtem (operace XOR) přijatého HK a HK vypočteného z přijatých dat. Z vypočteného syndromu je opět možné určit pozici případné chyby ve slově a následně ji opravit.
Všechna data přenášená modemem jsou implicitně zabezpečena pomocí HK. Pro účely testování je možné HK zakázat uzemněním pinu PB3 řídícího mikroprocesoru, což lze snadno realizovat propojkou () na ISP konektoru v pozici 4 - 6 (nainstalovaná propojka je vidět na obr. 3.2).
Použitý HK (12,8) zavádí 33% redundanci datového toku (na 8 bitů dat připadají 4 kontrolní bity), čímž snižuje efektivní přenosovou rychlost na 2/3 ·1200 = 800 Bd. Zároveň však umožňuje, aby byl až každý dvanáctý bit přijat chybně.

4.4  Funkce jednotky MASTER

Hlavní obslužný program jednotky MASTER ve smyčce přepíná multiplexer a vyhledává příchozí data od řídícího počítače (viz kap. 4.1). Po zachycení příchozích dat provede jejich příjem, zkontroluje platnost paketu (délka, kontrolní součet) a pokračuje dne zadaného povelu:
Po zpracování příkazu pokračuje hlavní program dalším vyhledáváním příchozích dat od počítače.

4.5  Funkce jednotky SLAVE

Obslužný program jednotky SLAVE aktivuje RX a čeká na přijetí platného paketu z bezdrátového rozhraní. V něm rozeznává následující povely:
Po zpracování příkazu pokračuje hlavní program příjmem z bezdrátového rozhraní a čekáním na další platný paket.


Kapitola 5

Ovládací program pro PC

Program pro ovládání jednotky MASTER z osobního počítače byl vytvořen v prostředí Borland C++ Builder 6.
Současná verze má implementovány funkce dle tab. 4.4, tj. testování spoje pomocí CMD_LPING a CMD_WPING a přenosy dat (CMD_SEND). Software déle umožňuje ovládání signálního generátoru Elsy SG2000 a komunikačního přijímače Yaesu VR-5000. Každé podporované zařízení se ovládá na zvláštní záložce programu. Tyto dva přístroje jsou také použity pro realizaci zónových měření.

5.1  Testování spojení

Obr. 5.1 ukazuje základní okno ovládacího programu. Ve společné horní části se nastavuje, na kterém sériovém portu počítače se nachází MASTER modem. Pro připojení prostřednictvím USB a LAN se využívá ovladačů virtuálních sériových portů.

obrazky/domep_test.png
Obrázek 5.1: Testování spojení
V boxu Parametry paketu lze nastavit obsah datové části paketu, který bude zaslán modemu - jeho délku a obsah. Obsah je také možné vygenerovat automaticky stiskem příslušného tlačítka - velká písmena abecedy, číslice či náhodný ASCII obsah.
Box Jednorázové testy obsahuje tlačítka pro kontrolu spojení mezi počítačem a MASTER modemem (CMD_LPING) a na trase počítač - MASTER modem - SLAVE modem (CMD_WPING). V Kontinuálních testech je možné aktivovat periodické posílání požadavku na odezvu s nastaveným timeoutem intervalu. Poslední verze umožňuje i omezení počtu testovacích paketů, které se mají odeslat. Ovládací program počítá odeslané a přijaté pakety a ukazuje procentuální úspěšnost přenosu.
Pomocí prvků v boxu Přenos dat je možné odeslat paket CMD_SEND, tedy poslat data na vybrané rozhraní MASTER či SLAVE jednotky. Položka Timeout udává dobu, po kterou modemy čekají na odpověď z připojeného zařízení. Je-li nulová, SLAVE pouze potvrdí příjem paketu a na odpověď se nečeká.
Datová část a důležité údaje o přijatých paketech se vypisují ve spodní části okna programu. Jedná se o délku přijatého paketu, identifikátor příkazu a rozhraní.

5.1.1  Výsledky měření dosahu a spolehlivosti

Kmitočet 868 MHz, na kterém modemy komunikují, patří do oblasti decimetrových vln. S tím jsou spjaty vlastnosti šíření signálu mezi modemy. Maximální vzdálenost, na kterou modemy dokáží spolehlivě komunikovat, velmi závisí na prostředí.
V budově ze železobetonové konstrukce (UREL) byla ověřena bezproblémová funkčnost při komunikaci mezi dvěma patry a dvěmi místnostmi přes chodbu. V těchto případech fungovalo spojení vždy. Při umístění modemů na opačné konce chodby o délce cca 30 m se již plně projevily vlastnosti decimetrových vln, zejména únik signálu - modemy byly extrémně citlivé na umístění, posun o 5 cm mnohdy představoval rozdíl mezi 100% spojem a stavem, kdy nebylo možno zachytit synchronizaci. Přesto při pečlivém zvolení polohy bylo možné docílit v budově dosahu cca 30 m při spolehlivé funkci.
Další testy dosahu probíhaly v nezastavěné oblasti. Modemy byly umístěny do referenční výšky 30 cm nad zemí. Výsledky shrnuje tab. 5.1. Vzdálenost modemů byla měřena pomocí přijímače GPS.
Tabulka 5.1: Výsledky testování komunikace na volném prostranství
Velikost Vzdálenost Hammingova Počet Přijatých Úspěšnost
paketu [B]modemů [m] korekce paketů paketů [%]
4 100 vypnuta 300 299 > 99
16 100 vypnuta 200 199 > 99
64 100 vypnuta 100 100 100
16 100 zapnuta 200 199 > 99
64 160 zapnuta - - > 99
4 180 zapnuta 300 292 97
16 180 zapnuta 200 171 85
64 180 zapnuta - 0 0
4 180 vypnuta 300 293 97
16 180 vypnuta 200 161 80
64 180 vypnuta - 0 0
Z tabulky vyplývá, že hranicí pro spolehlivé spojení mezi modemy na volném prostranství je vzdálenost cca 160 m. Vliv Hammingovy korekce není z uvedených měření statisticky průkazný. Bylo by nutné použít řádově vyšší počet testovacích paketů, což by bylo značně časově náročné. Neprůkaznost kladného vlivu Hammingova kódování lze také přičíst tomu, že u ztracených paketů nebyla zachycena synchronizace, případně byly poškozeny shlukovými chybami. Tyto problémy nedokáže použitý HK (12,8) řešit.

5.2  Dálkové ovládání přístrojů

Následující kapitoly popisují možnosti ovládání přístrojů připojených k rozhraní modemu. Současná verze ovládacího programu podporuje většinu příkazů signálního generátoru Elsy SG2000 a veškeré příkazy komunikačního přijímače Yaesu VR-5000. Program lze snadno rozšířit o podporu dalších zařízení, pokud je známý jejich komunikační protokol.

5.2.1  Signální generátor Elsy SG2000

Signální generátor Elsy SG2000 [15] je vysokofrekvenční generátor s kmitočtovým rozsahem 100 kHz až 1 GHz, s možností amplitudové i kmitočtové modulace a výstupní úrovní nastavitelnou v rozsahu −127 dBm až +10 dBm. Ovládací program umožňuje čtení a zápis kmitočtu generátoru (příkazy RFR a SFR), kmitočtového kroku (RST a SST), výstupní úrovně (RLV a SLV) a pásma rozmítání (RSW a SSW). Dále umožňuje deaktivování modulace generátoru (SMO).

obrazky/domep_elsy.png
Obrázek 5.2: Ovládání signálního generátoru Elsy SG2000

5.2.2  Komunikační přijímač Yaesu VR-5000

Yaesu VR-5000 [16] je komunikační přijímač umožňující příjem v kmitočtovém rozsahu 100 kHz až 2600 MHz v režimech CW, SSB (LSB a USB), AM a FM (širokopásmová a úzkopásmová). Ovládací program komunikuje přes modem s přijímačem pomocí rozhraní CAT (Computer Aided Transciever) a podporuje veškeré dokumentované příkazy. Umožňuje tedy nastavení kmitočtu přijímače, režimu demodulace a kmitočtového kroku a čtení statusu přijímače - stavu squelche (otevřen/uzavřen) a údaje S-metru (v rozsahu 0 až 63).
Dokumentace k rozhraní CAT firmy Yaesu je neúplná a obsahuje několik nepřesností. Přijímač má dva oscilátory a směšovače, pomocí kterých realizuje funkci Dual Receive. Tyto režimy jsou značeny jako MAIN VFO a SUB VFO. Pro operace nastavení kmitočtu a módu přijímače jsou rozlišovány různé opkódy rozhraní CAT pro různá VFO. Pro čtení statusu je v návodu [16] uveden pouze opkód pro čtení stavu SUB VFO, aniž by to bylo explicitně uvedeno. Experimentálně bylo zjištěno, že existuje i opkód pro čtení stavu MAIN VFO - jedná se o kód 0xD7.

obrazky/domep_yaesu.png
Obrázek 5.3: Ovládání komunikačního přijímače Yaesu VR-5000

5.3  Zónová měření

S využitím zmíněného generátoru a přijímače je možné realizovat tzv. zónové měření. Koncepci pracoviště pro realizaci zónových měření ukazuje obr. 5.4. K řídícímu osobnímu počítači je připojen modem MASTER spolu s komunikačním přijímačem Yaesu VR-5000. Bezdrátově je MASTER jednotka propojena s modemem SLAVE, ovládajícím generátor Elsy SG2000. Připojení přístrojů k modemům je libovolně nastavitelné v ovládacím programu, je dokonce možné obě zařízení napojit ke stejné jednotce (z hlediska zónových měření to však nemá využití).

obrazky/zonove.gif
Obrázek 5.4: Koncepce pracoviště zónového měření

obrazky/domep_zone.png
Obrázek 5.5: Zónové měření
Ovládací program (obr. 5.5) po spuštění měření provádí krokování kmitočtu v rozsahu přibližně dvou dekád (od 10 MHz do 2000 MHz) se zvoleným krokem. Dále je možné nastavit výstupní výkon signálu generátoru až po +10 dBm. Komunikaci s připojenými zařízeními pro tři kmitočty (10 MHz, 100 MHz a 1000 MHz) a úroveň generátoru +10 dBm zachycuje tab. 5.2. Po inicializaci se nastavují kmitočty přijímače a generátoru a z přijímače se po krátké časové prodlevě odečte signál S-metru.
Tabulka 5.2: Záznam komunikace zónového měření
Směr L C I Příkaz Zařízení Interpretace příkazu
8 0x10 4 SLV1373 generátor nastav úroveň +10 dBm
4 0x10 4 SOK generátor OK
4 0x10 4 SMO generátor vypni modulaci
4 0x10 4 SOK generátor OK
5 0x10 0 00 00 00 00 00 přijímač zapni rozhraní CAT
0 0x10 0 přijímač
5 0x10 0 04 02 00 00 07 přijímač nastav AM pro MAIN VFO
0 0x10 0 přijímač
14 0x10 4 SFR0010000000 generátor nastav frekvenci 10 MHz
4 0x10 4 SOK generátor OK
5 0x10 0 00 0F 42 40 01 přijímač nastav frekvenci 10 MHz
0 0x10 0 přijímač
5 0x10 0 00 00 00 00 D7 přijímač pošli status
1 0x10 0 32 přijímač status: SQ uzavřen, úroveň 50
14 0x10 4 SFR0100000000 generátor nastav frekvenci 100 MHz
4 0x10 4 SOK generátor OK
5 0x10 0 00 98 96 80 01 přijímač nastav frekvenci 100 MHz
0 0x10 0 přijímač
5 0x10 0 00 00 00 00 D7 přijímač pošli status
1 0x10 0 2D přijímač status: SQ uzavřen, úroveň 45
14 0x10 4 SFR1000000000 generátor nastav frekvenci 1 GHz
4 0x10 4 SOK generátor OK
5 0x10 0 05 F5 E1 00 01 přijímač nastav frekvenci 1 GHz
0 0x10 0 přijímač
5 0x10 0 00 00 00 00 D7 přijímač pošli status
1 0x10 0 32 přijímač status: SQ uzavřen, úroveň 50
8 0x10 4 SLV0003 generátor nastav úroveň −127 dBm
4 0x10 4 SOK generátor OK
5 0x10 0 00 00 00 00 80 přijímač vypni rozhraní CAT
0 0x10 0 přijímač
Vysvětlivky: L... délka (length), C... příkaz (command), I... rozhraní (interface)
Informativní výsledky se vypisují během měření do textového pole vpravo. Program po dokončení krokování kmitočtů nastaví generátor vždy na nejnižší možnou výstupní úroveň a výsledky měření zkopíruje ve vhodném formátu (čísla oddělená tabulátory) do schránky. Tyto výsledky je možné přímo vložit do tabulkového procesoru (např. Microsoft Excel) za účelem dalšího zpracování a tvorby grafů.
V příloze E lze nalézt několik grafů realizovaných měření. Graf 1 zobrazuje tři křivky - červená a modrá byly měřeny při aktivním generátoru s výkonem 0 dBm v různých místech, černá představuje elektromagnetické pozadí, získané stejným měřením při vypnutém generátoru (resp. při nejnižší možné výstupní úrovni −127 dBm).
Křivky v grafu 2 zachycují měření provedená pro tři různé výstupní výkony signálního generátoru: −10 dBm, 0 dBm a +10 dBm. Z grafu je patrné, že měření má vypovídací hodnotu od kmitočtu cca 50 MHz do konce rozsahu. Také lze konstatovat, že přestože S-metr přijímače Yaesu VR-5000 není oficiálně nijak kalibrován, je možné údaje odečítat v decibelech. Při změně výkonu generátoru o 10 dB se totiž údaj S-metru (RSSI) zvýší také přibližně o 10 jednotek.
Graf 3 ukazuje výsledek zónového měření s eliminací rušení pozadí. Ta byla provedena odečtením úrovně pozadí od naměřených hodnot. Signál od generátoru umístěného ve stejné místnosti jako přijímač (červená křivka) je logicky silnější než při umístění generátoru do jiné místnosti (modrá křivka).
U všech grafů je patrný přibližně společný počátek na kmitočtu 10 MHz, což lze interpretovat tak, že použité náhražkové antény na takto nízkých kmitočtech prakticky vůbec nefungují, reálných výsledků začínají dosahovat v oblasti od 50 MHz. Všechna měření byla prováděna s 24 logaritmickými kroky na dekádu.


Kapitola 6

Závěr

V rámci této práce byla vypracována koncepce dálkové komunikace s měřicími přístroji. V úvodní části práce jsou řešeny otázky využití bezlicenčních ISM pásem, zejména pak pásma SRD, a je stručně pojednáno o principech modulace používaných pro datově nenáročné telemetrické aplikace.
Bylo navrženo schéma zapojení a desky plošných spojů modemu a realizován prototypový a následně finální pár. Mechanické provedení je přizpůsobeno předpokládanému experimentálnímu a didaktickému využití modemů, desky s plošnými spoji proto nejsou uzavřeny v krabičkách. Do řídících mikroprocesorů byl vytvořen firmware podporující požadované funkce. Rozsah současné verze přesahuje 1000 řádků zdrojového kódu v jazyce C. Dále byl navržen počítačový program pro otestování komunikace mezi modemy a pro dálkové ovládání dvou vybraných přístrojů. Program umožňuje realizaci jednoduchých zónových měření.
Celkové výsledky testování komunikace modemů jsou obsaženy v kap. 5.1.1. Vyplývá z nich, že maximální vzdálenost modemů pro spolehlivou komunikaci v zastavěné oblasti je řádově nízké desítky metrů, na volném prostranství pak maximálně 160 m. Tyto vzdálenosti mohou působit jako poměrně malé, je však třeba brát v úvahu výstupní výkon TX modulů cca 3 mW a poměrně špatnou citlivost RX modulů. Srovnáme-li výsledky se systémem popsaným v [1], kde bylo dosaženo spoje na vzdálenost 800 m (přímá viditelnost) s kvalitním transcieverem Wood&Douglas SX800 (TX výkon o 10 dB vyšší a RX citlivost o více než 10 dB lepší než moduly Aurel), je dosah popisovaných modemů s levnými bezdrátovými moduly Aurel velmi dobrý.
Realizovaná dvojice radiomodemů může nalézt uplatnění i mimo zadanou oblast ovládání měřicích přístrojů za účelem realizace zónových měření. Základní limitující faktory realizovaných modemů jsou tři: nízký VF výkon TX modulů, relativně nízká přenosová rychlost 1200 b/s (resp. 800 b/s při použití zabezpečení přenosu Hammingovým kódem) a vysoká doba přepnutí směru komunikace při poloduplexním provozu ( > 250 ms). Přes tato omezení lze najít řadu dalších možných využití, např. přenos obecně libovolných telemetrických údajů či dálkové ovládání v průmyslové automatizaci.


Literatura

[1]
ŠEBESTA, Jiří; JAKUBOVÁ, Ivana; URBANEC, Tomáš. Implementace nového způsobu komunikace ke stávajícímu systému pro zónové měření. Závěrečná zpráva projektu NBÚ, 2006.
[2]
POVALAČ, Aleš. Dálkové ovládání měřicích přístrojů v SRD pásmu: Semestrální projekt 1 (BB1E). FEKT VUT v Brně, 2006. 8 s.
[3]
POVALAČ, Aleš. Dálkové ovládání měřicích přístrojů v SRD pásmu: Semestrální projekt 2 (BB2E). FEKT VUT v Brně, 2006. 30 s.
[4]
WOOD, Alan. A Summary of Modem Techniques [Online]. Application Note 7000 0019. Wood & Douglas Ltd., Tadley, 2004.
Dostupné na:  < http://www.woodanddouglas.co.uk/products/download/70000019.pdf > .
[5]
Všeobecné oprávnění č. VO-R/10/08.2005-24 k využívání rádiových kmitočtů a k provozování zařízení krátkého dosahu [Online]. Český telekomunikační úřad, 2005.
Dostupné na:  < http://www.ctu.cz/1/download/Opatreni%20obecne%20povahy/VO_R_10_08_2005_24.pdf > .
[6]
ATmega8. 8-bit AVR Microcontroller with 8K In-System Programmable Flash. Data Sheet [Online]. Atmel Corp., 2005.
Dostupné na:  < http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf > .
[7]
Polovodičové spínače pro střídavé signály. Radioamatér, 2006, roč. 7, č. 1, s. 6-8. ISSN 1212-9100.
[8]
L78M00 series. Positive voltage regulators [Online]. STMicroelectronics, 2006.
Dostupné na:  < http://us.st.com/stonline/books/pdf/docs/2146.pdf > .
[9]
RX-8L50SA70SF Receiver. Instruction Manual [Online]. AUR·EL S.p.A., 2002.
Dostupné na:  < http://www.aurelwireless.com/wireless/uk/manuals/650200535_um.pdf > .
[10]
TX-8LAVSA05 Transmitter. Instruction Manual [Online]. AUR·EL S.p.A., 2002.
Dostupné na:  < http://www.aurelwireless.com/wireless/uk/manuals/650200546_um.pdf > .
[11]
UMS2. Sériový modul USB. Uživatelská příručka [Online]. ASIX s.r.o., Praha, 2005.
Dostupné na:  < http://www.asix.cz/download/usb/ums2/ums2_cz.pdf > .
[12]
XPort Data Sheet 910-815E [Online]. Lantronix Inc., 2005.
Dostupné na:  < http://www.lantronix.com/pdf/XPort_DS.pdf > .
[13]
KLEIN, Jack. C Unleashed: Chapter 18 - Digital Signal Processing. Sams Publishing, 2000. ISBN 0672318962.
[14]
Hamming code [Online]. Wikipedia, 2007.
Dostupné na:  < http://en.wikipedia.org/wiki/Hamming_code > .
[15]
Signální Generátor SG2000. ELSY spol. s.r.o., 2002.
[16]
Yaesu VR-5000 All Mode 100kHz - 2600MHz Communications Receiver. Operating Manual. Vertex Standard Co., Ltd., Japan, 2000.

Seznam zkratek


AFSK Audio Frequency Shift Keying
ASK Amplitude Shift Keying
CAT Computer Aided Transciever
CRC Cyclic Redundancy Check
CTC Clear Timer on Compare Match
DPLL Digital Phase Locked Loop
DPS deska s plošnými spoji
EIRP Equivalent Isotropically Radiated Power
FEC Forward Error Correction
FFSK Fast Frequency Shift Keying
FSK Frequency Shift Keying
GPS Global Positioning System
GSM Global System for Mobile Communications
HK Hammingův kód
ID identifikátor
ISM Industrial, Scientific and Medical Bands
ISP In-System Programming
LAN Local Area Network
MUX Multiplexer
OEM Original Equipment Manufacturer
OOK On-Off Keying
RFC Radio Frequency Choke
RX příjem, přijímací
SMD Surface Mounted Device
SMT Surface Mount Technology
SRD Short Range Device
TX vysílání, vysílací
USART Universal Asynchronous Receiver / Transmitter
USB Universal Serial Bus
VF vysokofrekvenční
VFO Variable Frequency Oscillator
V/V vstupy a výstupy


Příloha A

Schéma zapojení



eagle/modem_sch.gif


Příloha B

Výkresová dokumentace

B.1  Strana spojů

Motiv plošného spoje (měřítko 1:1)
eagle/modem_brd_bottom.gif
 
Osazovací plán
eagle/modem_brd_bnames.gif

B.2  Strana součástek





Motiv plošného spoje (měřítko 1:1)
eagle/modem_brd_top.gif
 
Osazovací plán
eagle/modem_brd_tnames.gif


Příloha C

Seznam součástek


C1, C13 10pF C ker. SMD 1206
C2, C3, C4, C5, C7,
C8, C9, C10, C12, C15 100nF C ker. SMD 0805
C6 100μF/16V C elektrolyt.
C11, C16, C17, C18, C19 1μF/16V C tantal. SMCA
C14 10μF/16V C tantal. SMCC
C20, C21 33pF C ker. SMD 0805
D1, D2 BA479G PIN dioda DO34
D3, D4 1N4007 SMD dioda SMD MELF
IC1 LF33AB stabilizátor D-PAK
IC2 78M05 stabilizátor D-PAK
IC3 MAX232 IC DIL16
IC4 ATMEGA8 IC TQFP44
IC5 4052 IC DIL16
J1 ANT anténa 868 MHz
J2 K375A konektor napájecí
JP1 PINHD-2X3 konektor ISP
L1, L2, L3 RFC VF tlumivka
LED1, LED4, LED5 LED žlutá LED 5mm
LED2 LED zelená LED 5mm
LED3 LED červená LED 5mm
M1 RX-8L50SA70SF modul RX Aurel
M2 TX-8LAVSA05 modul TX Aurel
M3 XPORT modul LAN-serial Lantronix
M4 UMS2 modul USB-serial Asix
Q1, Q2 BSS84 tranzistor P-MOSFET SMD
Q3 3.6864MHz krystal HC49-U
R1, R6 4k7 R SMD 1206
R2 390 R SMD 0805
R3, R4, R5, R10, R11 220 R SMD 0805
R7 10k R SMD 1206
R8 4k7 R SMD 0805
R9 10k R SMD 0805
X1, X2 F09H konektor Cannon 9 samice
X3 USB konektor USB-B


Příloha D

Algoritmy mikroprocesoru

D.1  Vysílač (TX v4)

#define wtx(x)                 { if (x) PORTC |= _BV(PC2); else PORTC &= ~_BV(PC2); }
void wstep(void)               { loop_until_bit_is_set(TIFR, OCF1A); TIFR = _BV(OCF1A); }
void wireless_tx_rising(void)  { wstep(); wtx(0); wstep(); wtx(1); }
void wireless_tx_falling(void) { wstep(); wtx(1); wstep(); wtx(0); }

void wireless_hw_tx(unsigned int *tx_buffer, unsigned char tx_length)
{
    int i, j;
    
    tx_enable();
    
    OCR1A = TIMER1_LOAD - 1;                // 2400Hz
    TCCR1B = _BV(WGM12) | TIMER1_PRESCAL;   // Mode 4 - CTC
    TCNT1 = 0;
    TIFR = _BV(OCF1A);
    
    // nosna 250ms (cca 200 jednicek)
    for (i = 0; i < 200; i++) {
        wireless_tx_falling();
    }
    
    // mark pocatku (11)
    wstep();
    wtx(1);
    wstep();
    
    // data
    for (i = 0; i < tx_length; i++, tx_buffer++) {
        for (j = (is_hamming() ? 11 : 7); j >= 0; j--) {
            if (*tx_buffer & (1 << j))
                wireless_tx_falling();
            else
                wireless_tx_rising();
            
        }
    }
    wstep();
    
    // mark konce (00)
    wtx(0);
    wstep();
    wstep();
}

D.2  Přijímač (RX v6)

#define wrx()                  (bit_is_set(PIND, PD2))
void wstep(void)               { loop_until_bit_is_set(TIFR, OCF1A); TIFR = _BV(OCF1A); }

signed char wireless_hw_rx(unsigned int *rx_buffer, unsigned char timeout)
{
    int i, j;
    unsigned int rx_bits;
    
    rx_enable();
    delay(15);                              // nahozeni RX - 15ms dle datasheetu TDA5200
    
    TCCR1B = _BV(WGM12) | TIMER1_PRESCAL;   // Mode 4 - CTC
    TCNT1 = 0;
    TIFR = _BV(OCF1A);
    
    // nastaveni hlavniho timeoutu
    TIMER2_set_timeout(timeout);
    
    do {
        // vyhledavat jednicku, po nalezeni zarovnat a prepnout casovani
        OCR1A = (TIMER1_LOAD / 4) - 1;      // 9600Hz
        
        rx_bits = 0;
        j = 0;
        do {
            wstep();
            rx_bits <<= 1;
            if (wrx()) rx_bits |= 1;
            
            if ((timeout) && (!TIMER2_get_timeout()))
                return ERR_TIMEOUT;
        } while ((rx_bits & 0b0111011101110111) 
                         != 0b0111000001110000);
        
        // po 40ms se ustali nosna, vyhledavani opakovat
        delay(40);
        
        rx_bits = 0;
        j = 0;
        do {
            wstep();
            rx_bits <<= 1;
            if (wrx()) rx_bits |= 1;
            
            if ((timeout) && (!TIMER2_get_timeout()))
                return ERR_TIMEOUT;
        } while ((rx_bits & 0b0111011101110111) 
                         != 0b0111000001110000);
        
        wstep();
        wstep();
        wstep();
        OCR1A = TIMER1_LOAD - 1;            // 2400Hz
        wstep();
        
        // zachycena synchronizace, nacteni 16 bitu,
        // pokud nebylo aspon 14 jednicek, tak znova
        j = 0;
        for (i = 0; i < 16; i++) {
            wstep();
            if (wrx()) j++;
            wstep();
            
            if ((timeout) && (!TIMER2_get_timeout()))
                return ERR_TIMEOUT;
        }
    } while (j < 14);
    
    // od zachyceni nosne po prvni bajt maximalne 250ms, spis min
    TIMER2_set_timeout(25);
    
    // vyhledavat mark pocatku (11)
    rx_bits = 0;
    do {
        wstep();
        rx_bits <<= 1;
        if (wrx()) rx_bits |= 1;
        
        if (!TIMER2_get_timeout())
            return ERR_TIMEOUT;
        
    } while ((rx_bits & 0b11) != 0b11);
    
    // prijem po mark konce (00) nebo konec bufferu
    for (i = 0; i < BUFFER_SIZE; i++) {
        rx_bits = 0;
        for (j = 0; j < (is_hamming() ? 12 : 8); j++) {
            wstep();
            rx_bits <<= 1;
            if (wrx()) rx_bits |= 1;
            wstep();
            
            if ((j == 0) && (!(rx_bits & 0x0001)) && (!wrx()))
                return i;
        }
        *rx_buffer++ = rx_bits;
    }
    
    return i;
}

D.3  Hammingův kód (12,8)

const unsigned char PROGMEM hamming[256] = {
    0x00,  0x03,  0x05,  0x06,  0x06,  0x05,  0x03,  0x00,
    0x07,  0x04,  0x02,  0x01,  0x01,  0x02,  0x04,  0x07,
    0x09,  0x0A,  0x0C,  0x0F,  0x0F,  0x0C,  0x0A,  0x09,
    0x0E,  0x0D,  0x0B,  0x08,  0x08,  0x0B,  0x0D,  0x0E,
    0x0A,  0x09,  0x0F,  0x0C,  0x0C,  0x0F,  0x09,  0x0A,
    0x0D,  0x0E,  0x08,  0x0B,  0x0B,  0x08,  0x0E,  0x0D,
    0x03,  0x00,  0x06,  0x05,  0x05,  0x06,  0x00,  0x03,
    0x04,  0x07,  0x01,  0x02,  0x02,  0x01,  0x07,  0x04,
    0x0B,  0x08,  0x0E,  0x0D,  0x0D,  0x0E,  0x08,  0x0B,
    0x0C,  0x0F,  0x09,  0x0A,  0x0A,  0x09,  0x0F,  0x0C,
    0x02,  0x01,  0x07,  0x04,  0x04,  0x07,  0x01,  0x02,
    0x05,  0x06,  0x00,  0x03,  0x03,  0x00,  0x06,  0x05,
    0x01,  0x02,  0x04,  0x07,  0x07,  0x04,  0x02,  0x01,
    0x06,  0x05,  0x03,  0x00,  0x00,  0x03,  0x05,  0x06,
    0x08,  0x0B,  0x0D,  0x0E,  0x0E,  0x0D,  0x0B,  0x08,
    
    ...
    
    0x0A,  0x09,  0x0F,  0x0C,  0x0C,  0x0F,  0x09,  0x0A,
    0x04,  0x07,  0x01,  0x02,  0x02,  0x01,  0x07,  0x04,
    0x03,  0x00,  0x06,  0x05,  0x05,  0x06,  0x00,  0x03,
};

const unsigned char PROGMEM corrections[16] = {
    0x00,   /* nulovy vysledek -> prenos bez chyby  */
    0x00,   /*  C1 je Hamminguv bit, ne datovy bit  */
    0x00,   /*  C2 je Hamminguv bit, ne datovy bit  */
    0x01,   /*  C3 je datovy bit D0                 */
    0x00,   /*  C4 je Hamminguv bit, ne datovy bit  */
    0x02,   /*  C5 je datovy bit D1                 */
    0x04,   /*  C6 je datovy bit D2                 */
    0x08,   /*  C7 je datovy bit D3                 */
    0x00,   /*  C8 je Hamminguv bit, ne datovy bit  */
    0x10,   /*  C9 je datovy bit D4                 */
    0x20,   /* C10 je datovy bit D5                 */
    0x40,   /* C11 je datovy bit D6                 */
    0x80,   /* C12 je datovy bit D7                 */
};

unsigned char hamming_get(unsigned char c)
{
    return pgm_read_byte(&hamming[c]);
}

void hamming_correct(unsigned char *c, unsigned char ham)
{
    unsigned char cor;
    
    ham &= 0x0f;
    cor = pgm_read_byte(&hamming[*c]) ^ ham;
    *c ^= pgm_read_byte(&corrections[cor]);
}


Příloha E

Grafy zónových měření

obrazky/meas_mistnosti.gif
obrazky/meas_urovne.gif
obrazky/meas_zonove.gif