Top Banner
3.1.2010 RAPORTTI RFM12B LANGATON LÄHETIN/VASTAANOTIN MODULI SULAUTETUISSA JÄRJESTELMISSÄ 0278116 Hans Baumgartner
20

RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

May 22, 2018

Download

Documents

lexuyen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

3.1.2010

RAPORTTI

RFM12B LANGATON LÄHETIN/VASTAANOTIN –MODULI

SULAUTETUISSA JÄRJESTELMISSÄ

0278116 Hans Baumgartner

Page 2: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

1

SISÄLTÖ

KÄYTETYT MERKINNÄT JA LYHENTEET ................................................................... 2

1. JOHDANTO .................................................................................................................. 3

2. LYHYEN KANTAMAN LANGATON TIEDONSIIRTO ........................................... 4

2.1 Langattomat tiedonsiirtotekniikat .......................................................................... 4

2.2 Tiedonsiirtonopeudet ............................................................................................. 5

2.3 Tekniikoiden kustannukset .................................................................................... 5

2.4 Käyttökohteet ......................................................................................................... 6

3. RFM12B ........................................................................................................................ 7

3.1 Modulaatio ............................................................................................................. 8

3.2 Lähetysteho ............................................................................................................ 8

3.3 Ajurit ...................................................................................................................... 9

3.4 Tietoliikenneprotokolla .......................................................................................... 9

4. Testaus ......................................................................................................................... 11

4.1 Lähetin ................................................................................................................. 11

4.2 Vastaanotin .......................................................................................................... 12

5. YHTEENVETO ........................................................................................................... 14

LÄHTEET ........................................................................................................................... 15

Page 3: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

2

KÄYTETYT MERKINNÄT JA LYHENTEET

Fc kantoaaltotaajuus

FSK Frequency Shift Keying

IEEE Institute of Electrical and Electronics Engineers

IrDA Infrared Data Association

ISM Industrial, Scientific and Medical

ISP In-System Programming

PC Personal Computer

RF Radio Frequency

WLAN Wireless Local Area Network

Page 4: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

3

1. JOHDANTO

Langattoman tiedonsiirron avulla voidaan kasvattaa sulautettujen järjestelmien

sovelluskohteiden määrää sekä laajennettavuutta. Lyhyen kantaman langattomalla

tiedonsiirrolla voidaan yhdistää eri laitteita toisiinsa sekä lähettää langattomasti

esimerkiksi mittausdataa. Seminaarityössä on tarkasteltu langattoman lyhyen kantaman

tiedonsiirron käyttökohteita ja toimintaa yleisesti sekä perehdytty tarkemmin Hope

Microelectronics Co., Ltd. RFM12B -moduulin ominaisuuksiin. Kaksi RFM12B-moduulia

on lisäksi implementoitu AVR-mikrokontrollereiden avulla testiympäristöön.

Page 5: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

4

2. LYHYEN KANTAMAN LANGATON TIEDONSIIRTO

Lyhyen kantaman langattoman tiedonsiirron avulla voidaan yhdistää laitteita ja

mittausantureita toisiinsa. Käytettävät moduulit toimivat tavallisesti lisenssivapailla

kantoaaltotaajuuksilla, alhaisilla lähetystehoilla, joten radiolaitteiden käyttö ei vaadi

erityisiä lupia. Usein moduulit käyttävät hajaspektritekniikoita, kuten taajuushyppelyä,

jolloin todennäköisyys, että kaksi laitetta toimivat samaan aikaan samalla taajuudella on

pieni. Lisäksi, koska lähetystehot ovat pieniä, eivät vastaanottimet häiriinny mahdollisesti

muista samalla taajuudella toimivista vastaavista laitteista, mikäli laitteiden välinen

etäisyys on riittävä.

Mikäli samanlaisia laitteita joudutaan käyttämään samalla alueella, voidaan laitteiden

kantoaaltotaajuutta muuttaa tai käyttää protokollaa, joka erottelee datavirrasta kullekin

laitteelle kuuluvan datan. Lisäksi osa valmiista protokollista määrittelee, kuinka samalla

alueella sijaitsevat laitteet kommunikoivat keskenään [1].

2.1 Langattomat tiedonsiirtotekniikat

Lyhyen kantaman langattomia RF-tekniikoita (Radio Frequency) on useita eri

käyttötarkoituksiin. Esimerkiksi kodinelektroniikassa yleisesti käytössä olevia tekniikoita

ovat WLAN (Wireless Local Area Network) ja Bluetooth. Myös IrDA (Infrared Data

Association) eli infrapuna voidaan laskea kuuluvaksi lyhyen kantaman langattomaksi

tekniikaksi. Radiotaajuuksiin perustuva tiedonsiirto tosin on syrjäyttänyt monissa laitteissa

infrapunaan perustuvan linkin. RF-taajuudet eivät vaadi näköyhteyttä, jolloin niiden

luotettavuus on parempi. Infrapunan näköyhteyteen perustuva linkki tosin suojaa

tehokkaasti salakuuntelulta ja samalla taajuudella toimivat laitteet eivät häiritse toisiaan.

Myös teollisuudessa käytetään kodinelektroniikasta tuttuja tekniikoita WLAN:a,

Bluetooth:a ja infrapunaa. Lisäksi teollisuuden kenttälaitteissa käytetään erityisesti

teollisuusympäristöön suunniteltuja tekniikoita kuten ZigBee, Wireless Profibus ja

Wireless HART sekä standardoimattomia radiopiirejä [2].

Page 6: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

5

Standardoimattomalla radiopiirillä tarkoitetaan piiriä, jonka yhteensopivuus on rajoittunut

jopa laitevalmistajatasolle [2]. Lähemmän tarkastelun kohteena oleva RFM12B-moduuli

voidaan laskea kuuluvaksi standardoimattomiin piireihin. Kyseinen piiri ei oletusarvoisesti

tue mitään kaupallisesti saatavilla olevaa protokollaa, joten kyseinen moduuli pystyy

keskustelemaan vain saman valmistajan moduuleiden kanssa.

2.2 Tiedonsiirtonopeudet

Kodinelektroniikassa käytettävät protokollat kykenevät parhaimmillaan jopa 54 Mbit/s

nopeuksin (WLAN) [3]. Tavallisesti teollisuudessa siirrettävä data on kuitenkin hitaasti

päivittyvää ohjaus- tai oloarvotietoa, joka ei vaadi suurta tiedonsiirtonopeutta. Suurempia

nopeuksia tarvitaan vain erityiskohteissa kuten videokuvan siirrossa tai erittäin nopeassa

säädössä.

Muiden langattomien tekniikoiden nopeudet jäävätkin huomattavasti WLAN:n nopeudesta.

Esimerkiksi Wireless HART kykenee 250 kbit/s nopeuteen ja Bluetooth lyhytaikaisesti

parhaimmillaan 3 Mbit/s nopeuteen. Lähemmin tarkasteltava RFM12B kykenee ilman

ulkoisia komponentteja tiedonsiirtonopeuteen 115.2 kbit/s, joka riittää moniin

yksinkertaisiin sovelluksiin.

Tiedonsiirtonopeuksia tarkasteltaessa on hyvä ottaa huomioon, että useimmiten

tarkoitetaan fyysisen kerroksen bittinopeutta, joka sisältää usein huomattavankin määrän

otsikkotietoja. Hyötydatan siirtonopeus on siis fyysisen kerroksen siirtonopeutta pienempi.

2.3 Tekniikoiden kustannukset

Radiomoduuleiden hinnat vaihtelevat huomattavasti. Yleisesti käytössä, niin

kodinelektroniikassa, kuin teollisuudessakin olevia WLAN-laitteita on hyvin saatavilla.

Tekniikan monimutkaisuus rajoittaa kuitenkin WLAN-tekniikan käytön valmiisiin

laitteisiin. WLAN:n vaatima TCP/IP-protokollapino on erittäin raskas eikä tavallisesti

mahdu yksinkertaiseen mikrokontrolleriin. Osa WLAN-moduleista hoitaa

Page 7: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

6

verkkoprotokollat rautatasolla tai omalla prosessorillaan, jolloin protokollapinon

implementoinnista ei tarvitse huolehtia.

Muista langattomista tekniikoista esimerkiksi Bluetooth-moduulit maksava noin 10 euroa

(lynx-dev.com) ja ZigBee 15 euroa (sparkfun.com). Lähemmin tarkasteltava RFM12B-

moduuli maksaa alle 5 euroa (lynx-dev.com).

2.4 Käyttökohteet

Langattomat radiomoduulit laajentavat huomattavasti sulautettujen järjestelmien

käyttökohteita ja monipuolisuutta. Yksinkertaisia esimerkkejä langattomien lähettimien

käytöstä ovat esimerkiksi langaton lämpömittari tai periaatteessa mikä tahansa anturi,

johon on liitetty langaton lähetin. Langattomuus pienentää anturin asennuskustannuksia,

kun kaapeleita ei tarvita. Lisäksi joissain sovelluksissa langattomuus on ainoa tapa

toteuttaa mittaus, sillä mittari voi olla liikkuva tai kaapeleita on mahdotonta jälkikäteen

asentaa esimerkiksi suljettuun säiliöön.

Tarkasteltava RFM12B on suunniteltu tulevan langattomaksi ohjausyksiköksi

satamanosturin etäisyysmittariin. Laitteessa ultraäänitoimiset etäisyysmittarit kirjoittavat

nosturin ja nostettavan kontin välisen etäisyyden kohdetta kuvaavan videokameran kuvan

päälle. Kuva lähetetään langattomasti ohjauskoppiin, josta voidaan langattomasti ohjata

mm. etäisyysanturin offset-arvoa, hälytyksiä ja näkyykö etäisyys ylipäänsä näytöllä.

Kyseisessä kohteessa käytetään langatonta tekniikkaa, sillä nosturille tulee ainoastaan

sähköt. Tarvittavalle video- ja ohjaussignaalille olisi ilman langatonta tekniikkaa pitänyt

vetää omat johdotukset, joka olisi ollut erittäin kallista, sillä nosturin liikerata on yli 20

metriä ja kaapeleilta vaaditaan suurta rasituksen- ja säänkestävyyttä.

Page 8: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

7

3. RFM12B

RFM12B on edullinen, ISM-taajuusalueella (Industrial, Scientific and Medical) toimiva

lähetin-vastaanotin. Käytettävät taajuusalueet ovat 433, 868 ja 915 MHz:a. Käytettävä

taajuusalue voidaan valita täysin ohjelmallisesti. Moduulin tärkeimmät ominaisuudet on

listattu alla.

- edullinen, hinta alle 5 € yksittäni ostettuna

- ei vaadi ulkoisia komponentteja, antennin lisäksi

- datanopeus jopa 256 kbit/s, sisäisellä demodulaattorilla 115.2 kbit/s

- automaattinen antennin viritys

- SPI-väylä

- 2.2 – 3.8 V toimintajännite

- matala tehonkulutus, enintään 26 mA lähetysmoodissa, 15 mA

vastaanottomoodissa

- standby-virta alle 0.3 µA

- tukee pientä pakettikokoa, 3 tavua

Kuva 1 Lähetinyksikkö. RFM21B-moduuli merkitty punaisella ympyrällä.

Page 9: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

8

3.1 Modulaatio

RFM12B moduloi lähetettävän signaalin FSK-modulaatiolla (Frequency Shift Keying).

FSK on taajuusmodulaatiotekniikka, jossa digitaalisen signaalin bitit esitetään eri

kantoaaltotaajuuksina. Kuvassa 2 on esitetty FSK-modulaation periaate.

Kuva 2 FSK-modulaation periaate [4]

Kuvasta 2 voidaan havaita 0- ja 1-bittejä kuvattavan eri kantoaaltotaajuuksilla. RFM12B-

modulilla voidaan ohjelmallisesti määrittää kilohertseinä kyseinen taajuusdeviaatio välillä

15 – 240 kHz:ä. Deviaation kasvattaminen tekee bittien havaitsemisen helpommaksi, mutta

kasvattaa tarvittavaa kaistanleveyttä. Deviaation suuruuden lisäksi voidaan valita

deviaation polariteetti eli kuvaako korkeampi taajuus ykköstä vai nollaa.

3.2 Lähetysteho

Lähetysteho voidaan valita ohjelmallisesti välillä -21 – 0 dBm. Yksikkö dBm kuvaa

lähetystehoa suhteessa 1 mW lähetystehoon. 0 dBm on absoluuttisena tehona 1 mW ja -21

dBm 0.008 mW.

Page 10: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

9

Moduulin tehoa testattiin Lappeenrannan Pesuparkki Oy:ssa, jonka toimitilat ovat metalli-

ja betoniseinäisiä. 0 dBm lähetysteholla kiinteistön sisällä olevan lähettimen lähettämä

datasignaali pystyttiin vastaanottamaan virheettömästi koko kiinteistön alueella. Lähetin

toimii siis erinomaisesti myös sisätiloissa teollisuusympäristössä ainakin kymmeniä

metrejä.

Saatavilla on myös tehokkaampia 500 mW lähetin-vastaanottimia. Kyseisille moduuleille

luvataan jopa 3 km kantosädettä. Viestintävirasto tosin rajoittaa ISM-taajuuksien

lähetystehoja huomattavasti, joten tehokkaiden lähettimien käyttö jää henkilökohtaisen

harkinnan ja riskinottokyvyn varaan. [5]

3.3 Ajurit

RFM12B-moduulille on saatavilla ilmaiset ajurikoodit suoraan AVR- ja PIC-

mikrokontrollereille. Hyvin kommentoitu esimerkkikoodi on myös helppo portata muille

prosessoreille, sillä moduulin vaatimat alustukset ovat selkeitä ja suoraviivaisia. Valmiit

esimerkkikoodit ovat yhdessä .c-lähdekooditiedostossa, joten koodien käyttö sellaisenaan

ajureina omiin sovelluksiin ei onnistu. Ajurikoodit olisi hyvä lajitella omiin .h- ja .c-

tiedostoihinsa, jolloin koodien uudelleenkäyttö on huomattavasti joustavampaa.

Vastaanottimen esimerkkikoodi on toteutettu pollaavana, joskin moduuli tukee myös

keskeytykseen perustuvaa vastaanottoa. Kyseisistä puutteista johtuen esimerkkiajurit eivät

ole täysin valmiita, vaan vaativat omaa työtä. Seminaarityöhön kuuluvassa

implementoinnissa onkin hieman siistitty esimerkkiajureita ja siirretty lähetinpään koodit

omiin .h- ja .c-tiedostoihinsa. Vastaanotin tosin on edelleen toteutettu pollaavana, eikä

keskeytykseen perustuvana.

3.4 Tietoliikenneprotokolla

Testiympäristössä käytetty moduuli ei sisältänyt minkäänlaista tietoliikenneprotokollaa.

Lähetetty paketti sisältää ainoastaan siirrettävät tavut eikä lainkaan otsikkotietoa.

Yksinkertaisessa sovelluksessa ei protokollaa välttämättä tarvita, mutta esimerkiksi

jonkinlainen virheentarkistus on hyvä olla aina.

Page 11: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

10

Mikäli useampi moduuleja halutaan käyttää samalla alueella, jolloin moduulit kuulevat

toistensa liikenteen on jonkinlainen tietoliikenneprotokolla välttämätön. Jokaiselle

laitteelle voidaan asettaa esimerkiksi osoite, jonka perusteella päätetään tarvitseeko

vastaanotettuun dataan reagoida. IEEE määrittelee myös avoimia tietoliikennestandardeja

joita voidaan käyttää tietoliikenteen suunnittelussa.

RFM12B-moduulilla voidaan myös ohjelmallisesti muuttaa kantoaaltotaajuutta

kantoaaltotaajuuden ympäristössä. Esimerkiksi 868 MHz kantoaaltotaajuutta voidaan

säätää yhtälön (1) mukaan

Fc = 860 + F*0.005Mhz, (1)

jossa 36≤F≤3903

Yhtälön (1) parametri F määritellään 12-bittisenä kokonaislukuna RFM12B-moduulin

rekisterissä 0xA6.

Muuttamalla kantoaaltotaajuutta voivat samalla kuuluvuusalueella olevat laitteet toimia

toisistaan häiriintymättä. Esimerkiksi 868 MHz keskikantoaaltotaajuus voi vaihdella välillä

860.18 - 879.515 MHz. Mikäli kaistanleveys on 500 kHz, voi samalla alueella

kommunikoida 40 eri laitetta.

Laitteet voivat toimia myös samalla kantoaaltotaajuudella eri aikaikkunoissa, mutta tällöin

laitteet täytyy suunnitella toimimaan yhdessä.

Page 12: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

11

4. TESTAUS

RFM12B-moduuleita testattiin AVR-mikrokontrollereiden ja PC-tietokoneen avulla.

Lähetinyksikkö muodostui RF-modulista sekä Arduino kehitysalusta. Vastaanottimena

toimi STK500-kehitysalusta sekä PC-tietokone.

4.1 Lähetin

Lähetin muodostuu Arduino-kehitysympäristöstä sekä RFM12B-moduulista, kuva 1.

Arduino käyttää ATmega328p-mikroprosessoria ja sitä voidaan ohjelmoida, joko

ohjelmointikaapelin avulla tai Arduinon omalla ohjelmointikielellä usb-väylällä.

Testauksessa käytettiin ensimmäistä vaihtoehtoa ja käytettynä ohjelmointilaitteena oli

AVR ISP-mk2.

Lähettimen koodi on esitetty alla.

#include <avr/io.h>

#include "rfm12b.h"

int main(void) {

volatile unsigned int i,j;

for(i=0;i<1000;i++)for(j=0;j<123;j++);

rfm12b_portInit();

rfm12b_init();

rfm12b_writeCmd(0x0000);

rfm12b_send(0xAA); // PREAMBLE

rfm12b_send(0xAA);

rfm12b_send(0xAA);

rfm12b_send(0x2D); // SYNC

rfm12b_send(0xD4);

for(i=0; i<1; i++) {

rfm12b_send(0x30+i);

}

rfm12b_send(0xAA); // DUMMY BYTES

Page 13: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

12

rfm12b_send(0xAA);

rfm12b_send(0xAA);

return 0;

}

Koodissa alustetaan RF-modulin portit ja itse moduli. Alustuksessa rfm12b_init()

määritellään mm. käytettävä kantoaaltotaajuus, lähetysteho sekä lähetysnopeus. Ennen

varsinaisen hyötydatan lähetystä lähetetään kolmen tavun preamble

rfm12b_send(0xAA) sekä sykronointitavut 0x2D ja 0xD4. Näiden tavujen avulla

vastaanotin huomaan, että dataa on tulossa ja valmistautuu vastaanottamaan dataa.

Dataosio koostuu 16 tavusta, jotka ovat ascii-merkit 0x30-0x46. Lopussa olevat 0xAA

tavut eivät ole välttämättömiä.

Lähetin lähettää uuden paketin aina käynnistyttyään ja lopettaa toimintansa tämän jälkeen.

Uusi paketti voidaan lähettää painamalla Arduino-kehitysalustan reset-painiketta.

4.2 Vastaanotin

Vastaanotin muodostuu STK500-kehitysalustasta sekä PC-tietokoneesta. STK500-

kehitysalustassa oleva ATtiny2313-mikroprosessori on liitetty RFM12B-moduuliin, kuva

3.

Kuva 3 Vastaanotin

Page 14: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

13

Mikrokontrolleri lähettää vastaanotetut tavut sarjaportin välityksellä PC-tietokoneelle.

Havaitessaan tulevaa liikennettä sarjaportissa, PC-tietokoneen sovellus kirjoittaa näytölle

tekstin ”hello, world” sekä soittaa äänimerkin, kuva 4.

Kuva 4 Moduulin toimintaa havainnollistava Windows-ohjelma

Kuvan 4 sovellus on toteutettu Microsoft Visual Studio 2008 –ohjelmistolla, C++/CLI-

ohjelmointikielellä (Common Language Infrastructure). Sovellus kirjoittaa tekstin näytölle

vastaanotettuaan sarjaportista minkä tahansa tavun.

Vastaanottavan AVR-mikrokontrollerin koodi on kopioitu lähes suoraan

esimerkkikoodeista, joten siinä ei ole erillisiä ajuritiedostoja, vaan kaikki toiminnallisuus

on toteutettu yhdessä .c-tiedostossa. Koodi on melko pitkä ja sekava, joten se on raportin

liitteenä. Lisäksi mikrokontrollerin ohjelma on pollaava, joten se soveltuu melko huonosti

mihinkään todelliseen käyttöön.

Page 15: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

14

5. YHTEENVETO

Seminaarityössä perehdyttiin Hope Microelectronics RFM12B -langattomaan

tiedonsiirtomoduuliin. Raportissa käytiin läpi yleisesti langatonta tiedonsiirtoa

sulautetuissa järjestelmissä ja testattiin käytännön laitteessa tutkittua RFM12B-moduulia.

Raportissa on selostettu RFM12B-moduulin ominaisuuksia ja toimintaa. Lisäksi raportissa

on esitetty moduulin liittäminen AVR-mikrokontrolleriin sekä liitteenä tarvittavat

ohjelmistokoodit.

Page 16: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

15

LÄHTEET

[1] ZigBee, Wikipedia, viitattu 16.11.2009

[2] Kaupallisten lyhyen kantaman radiotekniikoiden kartoitus ja soveltuvuus

analyysi metallisorvin ohjauksessa käytettävään point-to-point yhteyteen,

kandidaatintyö, Niskanen, V., 2009

[3] WLAN, Wikipedia, viitattu 16.11.2009

[4] FSK, Wikipedia, viitattu 16.11.2009

[5] Määräys 15 (15 Z/2009 M), Viestintävirasto,

http://www.ficora.fi/attachments/suomiry/5l1x1FIIk/Viestintavirasto15Z2009

M.pdf,

viitattu 3.1.2010

Lisätietoa:

RFM12B datalehti, Hope Microelectronics Co. Ltd.

RFM12B programming guide, Hope Microelectronics Co. Ltd.

RFM12B and AVR – quick start,

http://zenburn.net/~goroux/rfm12b/rfm12b_and_avr%20quick_start.pdf,

16.11.2009

Page 17: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

LIITE

#define SCK 7 // SPI clock

#define SDO 5 // SPI Data output (RFM12B side)

#define SDI 6 // SPI Data input (RFM12B side)

#define CS 4 // SPI SS (chip select)

#define NIRQ 2 // (PORTD)

#define HI(x) PORTB |= (1<<(x))

#define LO(x) PORTB &= ~(1<<(x))

#define WAIT_NIRQ_LOW() while(PIND&(1<<NIRQ))

#define LED 6

#define LED_OFF() PORTD &= ~(1<<LED)

#define LED_ON() PORTD |= (1<<LED)

#define BAUDRATE 25 // 19200 at 8MHz

#include <avr/io.h>

void rsInit(unsigned char baud) {

UBRRL = baud;

UCSRC = (1<<UCSZ0) | (1<<UCSZ1); // 8N1

UCSRB = (1<<RXEN) | (1<<TXEN); // enable tx and rx

}

void rsSend(unsigned char data) {

while( !(UCSRA & (1<<UDRE)));

UDR = data;

}

unsigned char rsRecv() {

while( !(UCSRA & (1<<RXC)));

return UDR;

}

void portInit() {

Page 18: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

HI(CS);

HI(SDI);

LO(SCK);

DDRB = (1<<CS) | (1<<SDI) | (1<<SCK);

DDRD = (1<<LED);

}

unsigned int writeCmd(unsigned int cmd) {

unsigned char i;

unsigned int recv;

recv = 0;

LO(SCK);

LO(CS);

for(i=0; i<16; i++) {

if(cmd&0x8000) {

HI(SDI);

}

else {

LO(SDI);

}

HI(SCK);

recv<<=1;

if( PINB&(1<<SDO) ) {

recv|=0x0001;

}

LO(SCK);

cmd<<=1;

}

HI(CS);

return recv;

}

void FIFOReset() {

writeCmd(0xCA81);

writeCmd(0xCA83);

}

Page 19: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

void waitForData() {

unsigned int status;

while(1) {

status = writeCmd(0x0000);

if ( (status&0x8000) ) {

return;

}

}

}

void rfInit() {

writeCmd(0x80E7); //EL,EF,868band,12.0pF

writeCmd(0x8299); //er,!ebb,ET,ES,EX,!eb,!ew,DC

writeCmd(0xA640); //freq select

writeCmd(0xC647); //4.8kbps

writeCmd(0x94A0); //VDI,FAST,134kHz,0dBm,-103dBm

writeCmd(0xC2AC); //AL,!ml,DIG,DQD4

writeCmd(0xCA81); //FIFO8,SYNC,!ff,DR

writeCmd(0xCED4); //SYNC=2DD4;

writeCmd(0xC483); //@PWR,NO RSTRIC,!st,!fi,OE,EN

writeCmd(0x9850); //!mp,90kHz,MAX OUT

writeCmd(0xCC17); //!OB1,!OB0, LPX,!ddy,DDIT,BW0

writeCmd(0xE000); //NOT USE

writeCmd(0xC800); //NOT USE

writeCmd(0xC040); //1.66MHz,2.2V

}

/*

unsigned char rfRecv() {

unsigned int data;

writeCmd(0x0000);

data = writeCmd(0xB000);

return (data&0x00FF);

}

*/

unsigned char rfRecv() {

Page 20: RFM12B LANGATON LÄHETIN/VASTAANOTIN …hasseb.fi/reports/rfm12b langaton lähetin-vastaanotin.pdfRFM12B datalehti, Hope Microelectronics Co. Ltd. RFM12B programming guide, Hope Microelectronics

unsigned int data;

while(1) {

data = writeCmd(0x0000);

if ( (data&0x8000) ) {

data = writeCmd(0xB000);

return (data&0x00FF);

}

}

}

int main(void) {

unsigned char data, i;

LED_ON();

portInit();

rfInit();

rsInit(BAUDRATE);

FIFOReset();

while(1) {

waitForData();

for (i=0; i<16; i++) {

data = rfRecv();

rsSend(data);

}

FIFOReset();

}

return 0;

}