Hımérı alkalmazás készítése



Hasonló dokumentumok
Broadcast alkalmazás készítése

Mote-mote rádiós kommunikáció

Beágyazott információs rendszerek 4. házi feladat

operációs rendszer A TinyOS - Bevezető - [ Beágyazott Információs Rendszerek Tervezése ]

Használati utasítás. Légcsatornázható klímaberendezés

A TinyOS. operációs rendszer. (bevezető) Beágyazott Információs Rendszerek.

WilarmRead program Használati Útmutató

Szerelési és kezelési útmutató

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

ÜZEMBEHELYEZİI LEÍRÁS Figyelem! A konfigurációs mód eltér a 433MHz-es verziótól!

ÜZEMBEHELYEZİI LEÍRÁS

Adat mentés. A program segítség file-ok, mappák mentésében. Mentési csomagokat állíthatunk össze.

CAN alapú járműves adatokat megjelenítő szoftver fejlesztése

QuickSend. , és SMS küldés program. Felhasználói kézikönyv. Program dokumentáció 2008 JMGM Magyarország Informatikai Kft.

LCD kezelési útmutató 4.1 verzióhoz

Chat felhasználói segédlet

Számítástechnikai és kereskedelmi Kft. tel: 62/ fax: 62/ Jövedelem bavallás

ENG Systems Hungary Kft tel/fax: ENG. ENG PrRP Editor. Presenter Control Remote Pack program editor.

ZL 90 Vezérlés Amiko és FrogJ motorokhoz

The modular mitmót system. DPY kijelző kártya C API

2 - ELEKTROMOS BEKÖTÉSEK

Absztrakt feltöltése az ITDK 2013 konferenciára

Digitális, analóg bemenetek, hıszenzorok olvasása, relék vezérlése, a PICPLC16, PICPLC8 áramkörrel, és IBM PC-n futó kezelı programmal

A nyomtatókkal kapcsolatos beállításokat a Vezérlőpulton, a Nyomtatók mappában végezhetjük el. Nyomtató telepítését a Nyomtató hozzáadása ikonra

ASM-ACRS/IP kártyás beléptetı rendszer Felhasználói útmutató

EÖRDÖGH TRADE MIKROELEKTRONIKAI és KERESKEDELMI KFT. ecolux DIMMER. Elektronikus feszültség dimmelı. Ver: 09/1

Dinnyeválogató v2.0. Típus: Dinnyeválogató v2.0 Program: Dinnye2 Gyártási év: 2011 Sorozatszám:

Forgalom nyilvántartó program Kezelési útmutató

VHR-23 Regisztráló műszer Felhasználói leírás

Internet Bank használati útmutató

LG Glofa GM7 PLC és IMO kijelzı egység összekötése

A számítógépes adatgyűjtő program használata

Objektumorientált programozás C# nyelven

SP-PROG (SP-PROG-BT) Univerzális USB (Bluetooth/USB) Programozó

Programkezelıi leírás,

FLEXY Szárnyaskapu vezérlés

Szoftveres jelfeldolgozás mágneses tér szondával

"Eseményekre imm/connection Server scriptek futtatása

PMU Kezdı lépések. 1-0 Egy bit ki/be kapcsolása, érintı mezı (touch tag), funkció billentyő mezı (function key tag), lámpa mezı (lamp tag)

Hálózati adminisztráció Linux (Ubuntu 9.04) 9. gyakorlat

SPS PRO sorozatú szünetmentes áramforrmásrok 500VA-1200VA és 800VA-1500VA sorozatok Felhasználói kézikönyv

OMRON PLC és IMO kijelzı egység összekötése

PC kártya és a szoftver telepítése, indítása után ( ID, jelszó : admin, admin)

MODELL: MP-4-13 A modul bekötésének vázlata

RhT Léghőmérséklet és légnedvesség távadó

CAD-CAM-CAE Példatár

TMS370 EEPROM PROGRAMOZÓ Felhasználói kézikönyv

ZL180. Mőszaki leírás:

009SMA. SMA programozása: SMA leírás. CAME Leírás SMA. CAME Hungaria Kft

Bevezetés a mikrovezérlők programozásába: MAX6958: Hétszegmenses LED kijelző vezérlő

Az MSP430 mikrovezérlők digitális I/O programozása

felhasználói kézikönyv HU - magyar

A virtuális környezetet menedzselő program. Első lépésként egy új virtuális gépet hozzunk létre a Create a New Virtual Machine menüponttal.

Digitális Esonic MQ-U400N diktafon

Kezelési leírás a FEC01/06 típusú programozható és távműködtethető lángeffekt vezérlő készülékhez

6. Alkalom. Kép ClipArt WordArt Szimbólum Körlevél. K é p

Apache, MySQL, PHP/Perl NetWare-n

Az RSVP szolgáltatást az R1 és R3 routereken fogjuk engedélyezni.

Thermo1 Graph. Felhasználói segédlet

vialan OS-103 vonalfordító készülék kezelési útmutató

FASTNET FTR 250 PVR. Kiegészítés a PVR (felvétel - lejátszás) funkció használatához.

GSM átjelzı berendezés ( ) Mőszaki Leírás

A megfelelőségi nyilatkozat letölthető a honlapról

Telepítési Kézikönyv

SR mini PLC Modbus illesztő modul. Modul beállítása Bemeneti pontok kiosztása főmodul esetén Bemeneti pontok címkiosztása kiegészítő modul esetében

M+P SECURITY Vagyonvédelmi és Szolgáltató KFT

BACCARA G75 Ablakos öntözés vezérlő

Mőszaki Leírás. GSM átjelzı berendezés ( ) RGE-01 VERZIÓ 4

Kondenzátor töltése és kisütése egyenáramú körben

Bemutatás. Elrendezés. Leírás. Műszaki adatok. Funkciók

SLS-500-MBUS-MODBUS átalakító. Magyar nyelvű használati utasítás

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

HT2110 ID kártyás beléptetı rendszer

ÁVF oktatási és közösségi portál

PT1 Légnyomás távadó Felhasználói kézikönyv. v1.0 Előzetes

Beállítási utasítás CAME típusú FLY-E Automatika szárnyasajtó meghajtásához

SA-GSMALL GSM ipari GSM átjelző. Telepítési leírás. Dokumentum verzió szám:

ZBX-8. BX-P tolókapu hajtás vezérlés

Belépés a rendszerbe. Gyors menü

USB HID 1. Bevezetés. 2. A Hardver

TachoSafe DownloadTOOL

Intelligens kamera alkalmazás fejlesztése

7 SZÍNES KAPUTELEFON RENDSZER HASZNÁLATI ÚTMUTATÓ. Beltéri egység. Kültéri egység. Köszönjük, hogy termékünket választotta!

Gprs Input Output modul

Webcasting Editor Felhasználói kézikönyv és bemutató. A kapott Url -el valamint a kiadott felhasználónév jelszó párossal belépünk:

A Component-Base Architechture for Power-Efficient Media Access Control in Wireless Sensor Networks

Irányítástechnika Elıadás. PLC rendszerek konfigurálása

NOBO GSM Z3 modul használati útmutató

INFO DIAG DIAGNOSZTIKAI MŰSZER

PDF DOKUMENTUMOK LÉTREHOZÁSA

TORLIFT II GARÁZSKAPU NYITÓ szerelési és üzemeltetési útmutató

ELTE SAP Excellence Center Oktatóanyag 1

Készletinformációs rendszer

Raiffeisen Mobil Banking

Határréteg mechanizmus vizsgálata nyílt vízi és nádas vízi jellegzónák között. Kiss Melinda

Csak tömegmérı mérleg

SMS küldő központ Leírás

Tanúsítványkérelem készítése, tanúsítvány telepítése Microsoft Internet Information szerveren

2 - ELEKTROMOS BEKÖTÉSEK

Átírás:

Hımérı alkalmazás készítése Feladatunk egy olyan alkalmazás készítése, amely a TelosB mote-okon található Sensirion SHT11 hımérséklet és páratartalom érzékelı szenzor segítségével másodpercenként méri a környezet hımérsékletét, majd a TelosB mote-on található rádió segítségével továbbítja az adatokat a számítógéphez csatlakoztatott basestation mote felé. A basestation mote a beérkezı adatok a soros port-on keresztül továbbítja a számítógépnek, ahol az adatokat a net.tinyos.tools.listen.java alkalmazás segítségével jelenítjük meg. A feladat elkészítésének lépései: 1. lépés: Hozzunk létre egy teljesen üres mappát, és nevezzük el Homero-nek. Ebbe a mappába hozzunk létre egy HomeroC.nc file-t. Ez a file fogja tartalmazni az alkalmazásunk konfigurációját. A konfiguráció tartalmazza azokat a komponenseket, illetve az összekapcsolásukat, amelyek az alkalmazásunkhoz szükségesek. A HomeroC.nc file-be írjuk be az alábbi kódot: configuration HomeroC implementation components MainC; components LedsC; components HomeroP; HomeroP.Boot-> MainC; HomeroP.Leds -> LedsC; A MainC komponens biztosítja a Boot interface-t, a LedsC komponens biztosítja a Leds interface-t, a HomeroP komponens, pedig az általunk készített alkalmazást tartalmazza. Ez a konfigurációnak nincsenek külsı interface kapcsolatai, mivel önálló egység, ezért a felsı blokk üres (nincs benne provides vagy uses interface). 2. lépés: A HomeroP komonenst már használtuk, és látjuk hogy hogyan kötöttük össze más komponensekkel, de még nem írtuk meg. Hozzuk létre a HomeroP.nc file-t, mely majd az alkalmazásunkat fogja tartalmazni. A file nevében található P jelzi, hogy ez a modul egy úgynevezett private modul, tehát ezt a modul-t ne használja más alkalmazás. A HomeroP.nc file-ba írjuk be az alábbi kódot: module HomeroP uses interface Boot; uses interface Leds; implementation event void Boot.booted() call Leds.led0On();

Látható, hogy a HomeroP modul használja, a Boot, illetve a Leds interface-eket, melyeket a HomeroC.nc file-ban már össze is kötöttünk az ıket biztosító MainC, illetve LedsC komponensekkel. A felhasznált két interface a (TOSROOT)/tos/interfaces mappában található. Ha ebben a mappában a Boot.nc file-t megnyitjuk, akkor láthatjuk, hogy a booted() even-et tartalmazza, mely azt jelzi, hogy a rendszer megfelelıen elindult. Ha ez bekövetkezett, akkor a Leds interface-ben található led0on() parancs segítségével bekapcsoljuk a TelsoB mote-on található 0-ás (piros) led-et. 3. lépés: Hozzunk létre egy Makefile file-t, mely ez elıbbiekben elkészített alkalmazás fordításához szükséges. A Makefile-nak a következı két sort kell tartalmazza: COMPONENT=HomeroC include $(MAKERULES) Az elsı sor megadja konfigurációs file nevét, amely az alkalmazás komponenst tartalmazza. A második sor, pedig meghívja a TinyOS build rendszerét, mely segítésével lefordítható az alkalmazásunk. 4. lépés: Fordítsuk le az alkalmazásunkat, majd töltsük fel a TelosB mote-ra. Az alkalmazás fordítása és felprogramozása az alábbi módon történik: make telosb install A felprogramozás után a mote-on fel fog kapcsolódni a 0-ás, azaz a piros színő led. 5. lépés: Mivel a feladatunk az, hogy másodpercenként vegyünk mintát a mote-on található hımérséklet és páratartalom szenzorról, ezért szükségünk van az alkalmazásunkban egy TimerMilliC() komponensre is. Egészítsük ki a HomeroC konfigurációnkat ezzel a komponenssel és kössük hozzá az alkalmazásunkat megvalósító HomeroP modulhoz. components new TimerMilliC(); HomeroP.Timer -> TimerMilliC; A TimerMilliC komponens egy generikus komponens, ezért szükséges a komponens megadásánál a new parancs. Ez azt jelenti, hogy a különbözı helyeken megadott new TimerMilliC komponens különbözı lesz, azaz külön lehet állítani benne a periódust. Ezzel szemben a nem generikus komponensekbıl, mint például a LedsC komponensbıl, mindig csak egy van, függetlenül attól, hogy hány másik komponensben szerepel. A TimerMilliC komponens biztosítja a Timer interface-t.

6. lépés: A HomeroP modulunkat is ki kell egészíteni az alábbiaknak megfelelıen. uses interface Timer<TMilli>; event void Boot.booted() call Leds.led0On(); call Timer.startPeriodic(1000); event void Timer.fired() call Leds.led1Toggle(); Természetesen az elsı sort (uses interface ) a modul elsı blokkjába kell beleírni, ahol fel vannak sorolva a modul által használt interface-ek. A többi részt a modul implementációjába írjuk. A HomeroP modul használja a Timer interface-t, mely az elıbbi interface-ekkel ellentétben a (TOSROOT)/tos/lib/timer mappában található. Ha megnyitjuk a Timer.nc file-t akkor láthatjuk, hogy számos különbözı parancsot tartalmaz a timer kezeléséhez, ezek közül nekünk most a startperiodic(uint32_t dt) parancsra van szükségünk, mely segítségével egy periodikus timer-t tudunk elindítani. Mivel másodpercenként szeretnénk mérést végezni, ezért a milliszekundumban megadható periódusidıt 1000-re állítjuk. A Timer.nc file tartalmaz még egy fired() event-et, annak jelzésére, hogy a beállított idızítés lejárt. Ebben az event-ben a Leds interface által biztosított led1toggle() parancs segítségével villogtatjuk az 1-es (zöld) led-et, hogy megfigyelhessük a timer mőködését. 7.lépés: A 4. lépésnek megfelelıen programozzuk fel a TelosB mote-ot, és vizsgáljuk meg, hogy helyesen mőködik-e az alkalmazásunk. Azt kell tapasztalnunk, hogy a 0-as LED folyamatosan ég, míg az 1-es LED másodpercenként villog. 8. lépés: Egészítsük ki az alkalmazásunkat, azzal a komponenssel, amely segítségével ki tudjuk olvasni a hımérséklet és páratartalom szenzorról a hımérséklet értékeket. Ehhez a következı képen kell kiegészíteni HomeroC konfigurációnkat: components new SensirionSht11C(); HomeroP.Read -> SensirionSht11C.Temperature; A SensirionSht11 szenzorról a SensirionSht11C generikus komponens segítségével tudjuk kiolvasni a hımérséklet értékeket. Ez a komponens a (TOSROOT)/tos/platforms /telosa/chips/sht11 mappában található. Ha megnyitjuk a SensirionSht11C.nc file-t, akkor láthatjuk, hogy két Read interface-t biztosít, melyeket Temperature-nek és Humidity-nek neveztek el, hogy meg lehessen különböztetni ezeket az interface-eket. A HomeroC konfigurációban ezért a korábbiakkal ellentétben meg kell adni azt, hogy a komponens melyik interface-ét szeretnénk az alkalmazásunkhoz, azaz a HomeroP modulhoz kötni. Ezt a komponensnév.interfacenév formában adhatjuk meg. 9. lépés: A HomeroP modult is ki kell egészíteni az alábbi formában: uses interface Read<uint16_t>;

event void Timer.fired() call Leds.led1Toggle(); call Read.read(); event void Read.readDone(error_t result, uint16_t val) call Leds.led2Toggle(); A HomeroP modul használja a Read interface-et, amely a (TOSROOT)/tos/interfaces mappában található. Ha megnyitjuk a Read.nc file-t akkor láthatjuk, hogy tartalmaz egy read() parancsot, illetve egy readdone( error_t result, uint16_t val ) event-et. A read() parancs segítségével tudunk elindítani az adatok kiolvasását a szenzorról. Mivel másodpercenként szeretnénk ezt megtenni, így ezt a parancsot a fired() event-ben kell meghívni. Az adatok kiolvasásának végét a readdone() event jelzi. Ebben az event-ben a result a kiolvasás eredményét, míg val a kiolvasott értéket tartalmazza. Annak érdekében, hogy láthassuk, az egyes kiolvasások megtörténtét, a led2toggle() parancs segítségével minden kiolvasáskor villogtassuk a 2-es (kék) LED-et. 10. lépés: Programozzuk fel az alkalmazásunkat, és vizsgáljuk meg a mőködését. Azt kell tapasztalunk, hogy az 2-es LED egy kis késéssel villog az 1-es LED-hez képest, mert egy kis idı telik el a read() parancs és a readdone() event között.

11. lépés: A mért értékeket a rádió segítségével szeretnénk elküldeni a basestation mote felé. Ennek elsı lépéseként be kell kapcsolni a rádiót. A rádió bekapcsolásához az ActiveMessageC komponenssel kell kiegészíteni a HomeroC konfigurációnkat, mely a SplitControl interface-et biztosítja. components ActiveMessageC; HomeroP.SplitControl-> ActiveMessageC; 12. lépés: A SplitControl interface-et felhasználva egészítsük ki úgy a HomeroP modult, hogy a mote elindulása után kapcsolja be a rádiót: uses interface SplitControl; event void Boot.booted() call SplitControl.start(); event void SplitControl.startDone(error_t error) call Leds.led0On(); call Timer.startPeriodic(1000); event void SplitControl.stopDone(error_t error) A SplitControl interface a (TOSROOT)/tos/interfaces mappában található. Ha megnyitjuk a SplitControl.nc file-t akkor találunk két parancsot a start() és a stop() parancsot, illetve két event-et, a startdone(error_t error) és a stopdone(error_t error) event-et. A parancsok segítségével lehet elindítani, illetve leállítani a rádiót, míg az event-ek jelzik a rádió elindulását, illetve leállását. Ebben az alkalmazásban csak elindítani szeretnénk a rádiót, megállítani nem, viszont mivel az adott interface összes even-tjét meg kell valósítani, ezért kell megadni a HomeroP modulban a stopdone() event-et is. A rádió elindítását a booted() event-ben végezzük, és ha elindult a rádió, azaz startdone() event generálódott, csak akkor indítjuk csak el a timer-t. 13. lépés: Programozzuk fel az alkalmazásunkat és nézzük meg a mőködését. Ugyan úgy kell mıködnie, mint elıbb, csak most már a rádió is be van kapcsolva. 14. lépés: A rádió elindítása után még szükségünk van egy komponensre, amely segítségével lehetıség van a rádión keresztül történı adatküldésre. Ez a komponens az AMSenderC komponens. Egészítsük ki ezzel is a HomeroC konfigurációnkat. components new AMSenderC(0x11); HomeroP.AMSend->AMSenderC; Az AMSenderC komponens is egy generikus komponens, paraméterként az elküldendı csomag AM_TYPE értékét várja. Ebben az alkalmazásban ez most 0x11. Ez az AMSenderC komponens biztosítja az AMSend interface-t. 15. lépés: Az AMSend interface-t felhasználva egészítsük ki úgy a HomeroP modult, hogy a mért hımérséklet értéket elküldje a rádión keresztül.

uses interface AMSend;

message_t mesresults; event void Read.readDone(error_t result, uint16_t val) uint16_t *payload; payload=call AMSend.getPayload(&mesResults,2); *payload=val; call AMSend.send(AM_BROADCAST_ADDR,&mesResults,2); event void AMSend.sendDone(message_t* msg, error_t error) call Leds.led2Toggle(); Az AMSend interface a (TOSROOT)/tos/interfaces mappában található. Ha megnyitjuk az AMSend.nc file-t, akkor megtaláljuk a getpayload(message_t* msg, uint8_t len) parancsot, amivel a kommunikációhoz használt message_t struktúra adat területét tudjuk elérni. Az üzenet elküldése a send(am_addr_t addr, message_t* msg, uint8_t len) parancs használható. Az üzenet elküldését, pedig a senddone(message_t* msg, error_t error) even-t jelzi. Az alkalmazásunkban a másodpercenként mért hımérséklet adatokat szeretnénk elküldeni, így elsı lépésben deklarálunk egy mesresults nevő message_t típusú változót, majd a readdone event-ben a getpayload parancs segítségével kapunk egy mutatót ennek a struktúrának az adatterületére (payload). Ennek a mutatónak a segítségével a message_t struktúra adatterületére betöltjük az aktuális hımérséklet értéket. Az így feltöltött message_t struktúrát, a send() parancs segítségével küldjük el. Ebben a parancsban az AM_BROADCAST_ADDR változó azt jelenti, hogy broadcast-olva, azaz mindenkinek küldje el a csomagot. Végül, pedig a senddone() event jelzi, az üzenet elküldését, és ezt a led2toggle() parancs segítségével a 2- es led (kék) villogatásával jelezzük a TelosB mote-on. 16. lépés: Az elkészült alkalmazást programozzuk fel a TelosB mote-ra. 17.lépés: Egy másik TelosB mote-ra pedig programozzuk fel a (TOSROOT)/apps /BaseStation mappában található basestation alkalmazást.

18. lépés: A basestation mote-ot hagyjuk a számítógéphez csatlakoztatva, és gépeljük be a következı parancsot: java net.tinyos.tools.listen comm serial@/dev/ttyusb0:telosb Ennek az alkalmazásnak a segítségével lehetıség van a soros port-on érkezı csomagok megjelenítésére. Ha helyesen mőködik az elkészült alkalmazás, akkor a képernyın az alábbihoz hasonló soroknak kell megjelenjen. 00 FF FF 00 01 02 00 11 A9 1A 00 FF FF 00 01 02 00 11 B0 1A 00 FF FF 00 01 02 00 11 B9 1A 00 FF FF 00 01 02 00 11 C1 1A 00 FF FF 00 01 02 00 11 C7 1A 00 FF FF 00 01 02 00 11 C9 1A 00 FF FF 00 01 02 00 11 C7 1A 00 FF FF 00 01 02 00 11 C2 1A 00 FF FF 00 01 02 00 11 C1 1A 00 FF FF 00 01 02 00 11 BE 1A 00 FF FF 00 01 02 00 11 BE 1A Az fent látható sorok mindegyike, egy a rádión elküldött és a soros port-on beolvasott csomag tartalmát mutatják. A byte-ok jelentése a következı: - Az elsı mezı (00) jelzi, hogy a megérkezett csomag egy AM csomag. - A második két mezı (FF FF) a cél címét jelöli, amely most azért FF FF mert broadcast-olva küldtük el az üzentet. - A harmadik két mezı (00 01) a forrás címét jelöli. - A negyedik mezı (02) a csomagban található adatmezı hossza. - Az ötödik mezı (00) a group-ot jelöli. - A hatodik mezı (06) az elküldött csomag AM_TYPE-ját jelöli. - Az utolsó két mezı pedig a mért hımérséklet érték.