52
SZAKDOLGOZAT Mércse Péter Debrecen 2015

Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

SZAKDOLGOZAT

Mércse Péter

Debrecen 2015

Page 2: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

Debreceni Egyetem Informatikai Kar

Okosotthon vezérlés megvalósítása FPGA segítségével

Témavezető: Készítette: Dr. Oniga István Mércse Péter egyetemi docens Mérnök informatikus BSc.

Debercen 2015

Page 3: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

1

Tartalomjegyzék 1. Bevezetés ........................................................................................................................ 3 2. Felhasznált eszközök bemutatása .................................................................................... 4

2. 1. NEXYS 2 ................................................................................................................ 4 2. 2. Bluetooth interfész – PmodBT2 ............................................................................... 5 2. 3. Hőmérséklet szenzor - PmodTMP ............................................................................ 6 2. 4. X10-es eszközök ...................................................................................................... 8 2. 5. Infravörös adó és vevő áramkör ............................................................................. 10 2. 6. RGB áramkör ........................................................................................................ 11

3. Megvalósítás ................................................................................................................. 13 3. 1. UART interfész ..................................................................................................... 13 3. 2. Adatküldő és Adatfogadó modul ............................................................................ 15

3. 2. 1. Adatfogadó modul .......................................................................................... 16 3. 2. 2. Adatküldő modul ............................................................................................ 17

3. 3. Szoba modul .......................................................................................................... 19 3. 3. 1. Adatértelmező modul ...................................................................................... 19 3. 3. 2. Hőmérséklet modul ......................................................................................... 21 3. 3. 3. Hőmérő modul ................................................................................................ 23 3. 3. 4. Hőmérséklet lekérdező modul ......................................................................... 24 3. 3. 5. Hőmérsékletszabályozó modul ........................................................................ 26 3. 3. 6. RGB modul .................................................................................................... 28 3. 3. 7. Távvezérlő modul ........................................................................................... 29 3. 3. 8. Világítás modul .............................................................................................. 34

3. 4. X10 modul ............................................................................................................. 34 3. 4. 1. X10 küldő modul ............................................................................................ 35

4. A felhasználói interfész ................................................................................................. 37

Page 4: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

2

4. 1. Első lépések ........................................................................................................... 37 4. 2. Az adott elemek megérintésével kiváltott események ............................................. 39

5. Összefoglalás ................................................................................................................ 45 6. Irodalomjegyzék ........................................................................................................... 46 7. Ábrajegyzék .................................................................................................................. 47 8. Függelék ....................................................................................................................... 48

A. Felhasznált szoftverek listája ..................................................................................... 48 B. Felhasznált eszközök listája ....................................................................................... 48 C. Nexys 2 I/O port kiosztás .......................................................................................... 49 D. Blokkdiagram ............................................................................................................ 50

9. Köszönetnyílvánítás ...................................................................................................... 50

Page 5: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

3

1. Bevezetés A témaválasztásom fő szempontja az FPGA programozás iránti érdeklődésem volt.

Először erről a dologról a Digitális technika tárgyam előadásán hallottam, ahol azonnal felkeltette az érdeklődésem. Számtalan lehetőséget láttam meg ebben a programozható eszközben és szerettem volna készíteni egy összetettebb projektet. Fontosnak tartottam valamilyen vezeték nélküli technológia felhasználását is, mivel ez napjainkban egyre inkább elkerülhetetlen az információcsere szempontjából. Egy korábbi projekt keretében, már volt szerencsém megismerkedni a Bluetooth kommunikáció használatával, így erre esett a választás. A Bluetooth a mai napig széles körben használ vezeték nélküli szabvány, rövid hatótávolságú adatcsere folytatására. Emellett szerettem volna valamilyen okos eszközt felhasználni, amellyel felhasználóbaráttá tehetem a vezérlését az elkészült eszköznek. Mindenképpen mobil platformot tartottam szem előtt és az Android operációs rendszerre esett a választás a fejlesztés egyszerűsége miatt. Az alkalmazások elkészítéséhez a Google ingyenesen biztosítja az Android Studio fejlesztői környezetét, amely nagymértékben megkönnyíti a fejlesztést.

A szakdolgozat célja egy olyan eszköz kifejlesztése volt, amely egy okosotthon bizonyos funkcióinak vezérlését látja el. Az eszköz képes egy adott helyiség hőmérsékletének megállapítására, a kívánt hőmérséklet megadása után egy fűtésszabályozó egység ki és bekapcsolására, így egy adott tűréshatáron belül képes a helyiségben a megadott hőmérsékletet tartani. Rendelkezik egy világítást vezérlő egységgel is, amellyel a szobában lévő lámpa ki és bekapcsolását, illetve fényerejét szabályozhatjuk, továbbá a világításon belül egy hangulatfény beállítását is lehetővé teszi, amely egy általunk tetszőlegesen kikevert színben képes világítani. A világításszabályozás mellett, rendelkezik távvezérlő funkcióval, amellyel egy egyszerű tanítási folyamat után helyettesíthetjük a helyiségben lévő szórakoztató elektronikai eszközök távirányítóinak funkcióját. Az eszköz teljes irányítását egy Android alapú okostelefonnal, Bluetooth kapcsolaton keresztül valósíthatjuk meg.

Page 6: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

4

2. Felhasznált eszközök bemutatása 2. 1. NEXYS 2

A projekt a Digilent cég Nexys 2 fejlesztői kártyájára készült el, melynek a lelke egy Spartan 3E-500 FPGA chip.

2.1. ábra: Digilent - NEXYS 2 [1]

Az eszközön található: egy RS232 sorosport (csak Rx, Tx lábak) egy 8 bites VGA port egy USB 2.0-ás, csatlakozó áramellátás, illetve konfigurálás szempontjából 8 darab kapcsoló 4 darab nyomógomb (+1 reset gomb) 8 darab LED 4 darab hétszegmenses kijelző egy PS/2 szabványt támogató csatlakozó egy 50 MHz-es órajelforrás 75 darab I/O port, amelyből 43 darab nagy sebességű (100 MHz)

Page 7: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

5

16 MByte SDRAM 16 Mbyte Flash ROM

2.2. ábra: Digilent - NEXYS 2 Blokkdiagram [1]

2. 2. Bluetooth interfész – PmodBT2

A Bluetooth kapcsolatért a Digilent cég PmodBT2 periféria modulja felelős, amely egy egyszerű UART interfészen keresztül kommunikál a hozzá kapcsolódott eszközzel.

2.3. ábra: Digilent - PmodBT2 [2]

A modul rendelkezik egy 12 tűs tüskesorral (2.ábra: J1), amelyből 2-2 a VCC és GND lábaknak felel meg, egy az RST invertált reset bemenetnek, egy a STATUS kimenetnek, amely magas logikai értékkel jelzi, amennyiben a Bluetooth kapcsolat felépült. Ezen felül 4

Page 8: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

6

tüske az UART interfész RTS, CTS, illetve a küldésért felelős RXD és a fogadásért felelős TXD lábaknak felel meg és 2 db tüske nincs bekötve. Továbbá található rajta 4 darab Jumper, amelyből az első a gyári visszaállításért, a második az automata felderítésért és párosításért, a harmadik az automatikus kapcsolódásért, illetve az utolsó 9600 Baud Rate beállításáért felelős. A lenti ábrán J2 névvel ellátott csatlakozó a Firmware frissitésére szolgál.

2.4. ábra: Digilent - PmodBT2 - blokkdiagram [2]

2. 3. Hőmérséklet szenzor - PmodTMP

A hőmérséklet mérésére szintén egy, a Digilent cég által gyártott, PmodTMP modult használtam fel.

2.5. ábra: Digilent - PmodTMP [3]

Az eszközön található egy 6 pin-es tüskesor, illetve egy 6 pin-es foglalat, amely nem került felhasználásra.

Page 9: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

7

A tüskesor lábkiosztása a következő: VCC – tápfeszültség, 2,7 – 5,5 V-os tartomány GND – föld potenciál CLK – órajel bemenet IO – egy szabadon felhasználható I/O port DQ – adat be-, illetve kimenet RST – invertált reset bemenet

A hőmérséklet megállapításához a Dallas Semiconductor cég DS1626 típusszámú szenzora felel, amely -55 °C-tól +125 °C-ig terjedő tartományban képes +/- 0,5 °C-os pontossággal hőmérséklet adatokat szolgáltatni. A szenzor „3-wire” kommunikáció [4] elvén működik, amely az invertált reset (RST), az órajel (CLK) és az adat (DQ) szálakat foglalja magában.

Adat küldésnél az RST szálat magas állapotba kell állítanunk, majd minden órajel felfutáskor érvényes adatok kell biztosítanunk a DQ adat vonalon. Az adatátvitel egy bájtos parancsok küldését foglalja magában és az átvitel mindig a legkisebb helyi értékű bittel kezdődik.

2.6. ábra: 51h parancs a DQ vonalon [4]

A projekt során két parancs küldésére volt szükség, amelyek a következőek: START_CONVERT_T – Ezt a parancsot, csak egyszer kell kiadnunk és

elkezdődik a hőmérséklet átalakítása 12 bites formátumra, amelyből az első 8 bit az előjeles egész hőmérsékletet adja meg Celsius fokban, az ezt követő 4 bit pedig a törtrész adja meg 0,0625 °C-os pontossággal. Értéke hexadecimálisan x51.

READ_TEMPERATURE – értéke hexadecimálisan xAA, elküldése után válaszként érkezik a 12 bites hőmérséklet érték

Page 10: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

8

Adat fogadása során az RST szálat szintén magas állapotban kell tartanunk, és a küldés után a DQ szálat magas impedanciára kell állítanunk. Az olvasás során az órajel alacsony állapotában lesz érvényes adat a DQ vonalon.

2.7. ábra: AAh parancs és a hőmérséklet érték a DQ vonalon [4]

2. 4. X10-es eszközök

A projekt során a világítás vezérléséért a Marmitek cég által gyártott XM10-es vezérlő és LM12-es lámpa modul felel.

2.8. ábra: XM10 és LM12-es modulok [5]

Az LM12-es modulon található két darab, egyenként 16 állású forgó kapcsoló. Az első kapcsolóval a HOUSE kód értékét adhatjuk meg A-tól P-ig, a másodikkal pedig a UNIT kódot 1-től 16-ig. Ezek a kódok az eszköz egyedi címét képezik a hálózatban. Ha több ilyen eszközt használunk, akkor az azonos címmel rendelkező modulokat egyszerre vezérelhetjük, de segítségükkel 256 darab egyedi címet oszthatunk ki a saját villamos hálózatunkban.

Page 11: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

9

Ezek az eszközök az X10-es protokoll [6] szerint kommunikálnak a villamos hálózaton keresztül. Ennek a kommunikációnak a lényege, hogy az eszközök a szinusz hullám „0” átmenetének detektálása után (Zero Crossing) logikai ’1’-es küldésénél három darab 120 kHz-es impulzust ültet a hálózati frekvenciára, logikai ’0’-nál pedig semmit. A szakdolgozatban, a kommunikáció „fizikai rétegéről” nem kerül részletes leírás, mert ez nem kapcsolódik szorosan a dolgozat témájához.

Az XM10-es eszköz négy darab porttal rendelkezik: Transmit Input – amely a küldésre szánt adatot fogadja Receive Output – amelyen az elküldött adat a küldés után megjelenik

ellenőrzésre használható Zero Crossing Output – a hálózati frekvenciának megfelelő négyszögjel

olvasható róla Ground – föld potenciál

Adatküldésnél a Zero Crossing kimeneten lévő, jelen esetben 50 Hz-es órajelet kell figyelnünk. Az órajel felfutó és lefutó éle után 1 ms-ig kell biztosítanunk a küldésre szánt informáci értékét a Transmit Input vonalon, majd ezt követően az alacsony szintnek megfelelő értékre kell állítanunk a kimenetet. Az adatküldés, mindig a „Start” kóddal kezdődik, majd ez követi a „House” kód és a „Function” kód. A „Start” kód az b1110 értéket fogalja magában, amely két órajel alatt kerül elküldésre. A „House” kód egy 4 bites érték, amely egy adott eszközt azonosít. A „Function” kód pedig egy 5 bites érték, amely a legkisebb helyi értékű bittől függően, két információt is magában foglal. Ha ez a bit 0, akkor egy eszköz további azonosításáért felelős információt szolgál, viszont ha 1-es értéket vesz fel, abban az esetben egy parancsot jelent. Ennek az összesen 9 bit hosszúságú értéknek a küldése esetén, a Zero Crossing Output felfutó élét követően 1 ms-ig az értéket, majd lefutó élre, 1 ms-ig, az érték negáltját kell a kimenetre küldenünk.

Page 12: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

10

2. 5. Infravörös adó és vevő áramkör Ezek a modulok felelősek a tanítható infravörös távirányító funkció működéséért. A

vevő modul értelmezi egy távirányító által kibocsátott infravörös adatokat. A modul tartalmaz egy TSOP34838-as [7] infravörös vevőt és egy kondenzátort, amely párhuzamosan van bekötve a modul tápfeszültségéért felelős vonalaival.

A panel a lábkiosztása felülről nézve, balról jobbra a következő: 1 – 3 – NC, nincs bekötve 4 – OUT, a TSOP34838 kimenete 5 – GND, földpotenciál 6 – VCC, tápfeszültség, + 2,5 – 5,5 V-os tartomány

2.9. ábra: Infravörös vevő- (felül) és adó- (alul) modulo

Az adó áramkör egy PNP tranzisztorból és 3 db infravörös LED-ből épül fel. A diódák soros kapcsolásban vannak egymással, így nincs szükség előtét ellenállásra. Ez az áramkör korábban egy infravörös távirányítóban működött és ez alapján lett átültetve erre a panelre.

A panel lábkiosztása felülről nézve, balról jobbra a következő: 1 – IN, a tranzisztor bázisához kapcsolódik 2 – GND, fold potenciál 3 – VCC, tápfeszültség, a diódák soros kapcsolása miatt 5V

Page 13: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

11

2. 6. RGB áramkör Ezt a panelt az RGB modul bemutatásáért készítettem el. Található rajta 4 db RGB

LED amelyek egymástól elkülönítve vezérelhetők a modulon található tüskesor segítségével. Ezeknek a diódáknak a meghajtását 12 db NPN tranzisztor végzi, amelynek a típusa (H945) [8], az előtét ellenállások értéke pedig a kék LED előtt 150 Ohm, a zöld és piros előtt pedig 330 Ohm-osak, így 3,3, illetve 5 V-os feszültségről is működik az áramkör. A kapcsolás egy egyszerű NPN tranzisztoros LED meghajtó áramkörön alapul, ahol a pozitív tápfeszültség és a dioda anódja közé bekerül egy előtét ellenállás, amely a megfelelő tápfeszülég biztosításáért felelős. Erre azért van szükség, mert a LED-ek csak bizonyos feszültségtartományon belül képesek fényt kibocsátani, ha túl alacsony ez az érték, akkor nem világít, ellenben, ha túl magas, akkor tönkremegy a dioda. A áramkör folytatásaként a LED katódja a tranzisztor kollektorával van összekötve, és az NPN félvezető emittere a föld potenciállal. Az áramkör vezérlését a tranzisztor bázisával végezzük, ha magas állapotba húzzuk, akkor kinyit a tranzisztor és világít a dióda, illetve ha alacsonyra, akkor nem világít.

2.10. ábra: RGB tesztpanel

A modult az FPGA panelhez egy 2x5 tüskés és egy 2x6 tüskés csatolófelület segítségével illeszthetjük.

Page 14: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

12

2.11 ábra: RGB tesztpanel lábkiosztás

A panel lábkiosztása a fenti ábra szerint a következő: 1, 12, 13 – az első LED piros, kék zöld sorrendben 2, 3, 14 – a második LED kék, zöld, piros sorrendben 4, 6, 15 – a harmadik LED piros, zöld, kék sorrendben 7, 17, 18 – a negyedik LED zöld, kék, piros sorrendben 8, 9, 20, 21 – NC, jelenleg nincs használva 5, 10, 16, 21 – GND 11, 22 – VCC, +3,3 – 5V tartományban

A LED-ek sorszáma a panelt felülről nézve, ha a tüskesor felénk néz balról indul. A tranzisztorok PWM jel által vezéreltek, amely a LED-ek fényerő szabályozását teszi lehetővé.

Page 15: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

13

3. Megvalósítás 3. 1. UART interfész

Az UART adatátvitel lényege, hogy a kommunikáció során hiányzik a szinkronizálásért felelős órajel, ezért a küldő és a fogadó modulnak azonos jelváltási sebességgel kell dolgozniuk az információ megfelelő áramlásának biztosítása érdekében. Ezt a sebességet baud/s-ban adják meg, amely az adott kommunikációs vonal maximális jelváltásának számát határozza meg másodpercenként. Ez a szabvány annyira ismert, hogy a működésének részletes leírására nem térnék ki.

Az UART modul az adatok küldését és fogadását teszi lehetővé. Három komponensből áll, a fogadásért felelős Rx modulból, a küldést megvalósító Tx modulból és megfelelő jelváltási sebesség előállításáért felelős BaudGen modulból. A jelváltási sebessége 9600 baud másodpercenként. A csomag felépítése 1 startbit, 8 adatbit, 1 stopbit és nincs paritásbit beállítva.

Az adatküldést egy állapotgép valósítja meg, amelynek 4 állapota van. (idle, StartS, DataS, StopS) Az „idle” állapotban várakozik az elkündendő csomagra, amelyet a TxDataSend vonal magas állapotba kerülése jelez. Ha ez bekövetkezik, a TxDataIn bemeneten lévő 8 bites adatot eltárolja, elindítja a BaudGen modult és „StartS” állapotba kerül. A BaudGen modul a küldés megfelelő ütemét biztosítja, illetve az eltárol információ shift-eléséért felelős. A kimenete magas állapotba kerülése esetén (röviden, tick) a soron következő információ egységet helyezi az UART modul a TxOut kimenetre (a továbbiakban csak kimenet). A „StartS” állapotban egy jelváltásnyi időre 0 állapotba kerül a kimenetre, majd ezt követően a modul „DataS” állapotba kerül. Ebben az állapotban, minden egyes „tick” esetén a bemenetről érkező információ következő bitje kerül a kimenetre. A nyolcadik adatbit után a „StopS” állapot következik, majd egy baud-nyi idő elteltével modul a TxDataSendDone kimenet magas állapotába húzásával, jelzi a küldés befejezését és vissztér „idle” állapotba.

Az adatfogadást szintén egy állapotgép vezérli, melynek az állapotai megegyeznek a küldés modulnál felsoroltakkal. A BaudGen modul itt a bemenet megfelelő ütemű mintavételezését szolgálja. Az „idle” állapotban az RxIn bemenet figyelése zajlik. Ez a vonal az UART szabványnak megfelelően, alaphelyzetben magas állapotban van. A Start jel

Page 16: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

14

megérkezése esetén, amelyet a bemenet alacsony állapotba kerülése jelez „StartS” állapotba kerülünk. Ebben az állapotban egy segéd számláló segítségével megvárjuk a Start jel közepét, elindítjuk a BaudGen modult majd „DataS” állapotba ugrunk. Erre azért van szükség, hogy a mintát a beérkező információ közepéről vegyük, amely stabilabb értéket szolgáltat, így kisebb a hiba lehetősége. Ezt követően minden egyes „tick” esetén mintát veszünk a bemenetről és egy 8 bites shift regiszterbe tároljuk. Az utolsó bit megérkezése után „StopS” állapotba kerülünk és az RxDataValid magas állapotba húzásával jelezzük a RxDataOut kimeneten található érvényes értéket.

3.1. ábra: UART modul RTL vázlat

Az UART modul be- és kimenetei: Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet RxIn – az UART interfész Rx vonalának felel meg TxDataIn – 8 bites bemenet, a küldeni kívánt bájtot fogadja TxDataSend – egy órajelig tartó magas állapotba húzásával a TxDataIn bemeneten

található 1 bájtnyi információ küldését kérelmezi az UART modultól

Page 17: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

15

Kimenetek RxDataOut – a beérkező 1 bájtnyi információt továbbításáért felelős kimenet RxDataValid – egy órajelig tartó magas állapotba kerülésével az RxDataOut

kimeneten érvényes csomag jelenik meg TxOut – az UART interfész Tx vonalának felel meg TxDataSendDone – egy órajelig tartó magas állapotba kerül, ha az 1 bájtnyi csomag

elküldével végzett 3. 2. Adatküldő és Adatfogadó modul

Az adatküldő és adafogadó modulok egy 4 bájt hosszúságú csomag segítségével cserélnek információt a bluetooth kommunikáció során. A fix csomaghossz mellett a kommunikáció könnyebb értelmezhetősége miatt döntöttem, viszont így néhány esetben fölöslegesen sok felhasználatlan terület született. A csomag felépítése a következő:

3.2. ábra: A csomag felépítése

Az első bájt első 3 bitje az adott helyiség kódját tartalmazza 0-tól 7-ig, így jelenleg maximum 8 szoba vezérlésére alkalmas az eszköz. Az ezt követő 5 bit a parancs kódját tartalmazza, amelyeke a következők:

1. b00001 – az aktuális hőmérséklet lekérdezése 2. b00010 – a beállított hőmérséklet lekérdezése 3. b00011 – a hőmérséklet beállítása 4. b00100 – a hangulatfény beállítása 5. b00101 – a beállított hangulatfény színkomponenseinek lekérdezése

Page 18: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

16

6. b00110 – világítás be 7. b00111 – világítás ki 8. b01000 – fényerő növelése 9. b01001 – fényerő csökkentése 10. b01010 – távirányító megadott gombjának lenyomása 11. b01011 – távirányító megadott gombjának tanítása

A második bájttól kezdve, a parancsnak megfelelő adatok helyezkednek el. A hőmérséklet értékek lekérdezése, illetve beállítása esetén a 2. bájt tartalmazza az

előjeles egészrészt Celsius fokban, a 3. bájt első 4 bitje a törtrészt és a további bitek 0 értékűek.

A hangulatfény esetén az adatmezőben a színkomponensek teltségét adhatjuk meg, illetve kérdezhetjük le. A 2. bájt a piros, a 3. bájt a zöld és a 4. bájt a kék színösszetevő értékét tartalmazza 0-255 értéktartományon belül.

A világítás szabályozása esetén az adatmezők nem kerültek felhasználásra, így az értékük 0.

A távirányító esetén a 2. bájt alsó 3 bitje tartalmazza a lenyomott, vagy tanítani kívánt gomb értékét, így 8 darab gomb áll rendelkezésünkre.

3. 2. 1. Adatfogadó modul Az adatfogadó modul egy egyszerű 32 bites shift regisztert tartalmaz, amely az UART

modultól érkező bájtokat fogadja. A DataValidIn magas állapotba kerülésével a DataIn bemeneten található 8 bites információt tárolja a shift regiszterben. A negyedik bájt beérkezése után a kimenetén megjelenik egy 4 bájt hosszúságú csomag, amelyet a DataValidOut magas állapota jelez..

Page 19: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

17

3.3. ábra: Adatfogadó modul RTL vázlat

Az Adatfogadó modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet DataIn – 8 bites adat bemenet, az UART modultól DataValidIn – egy órajelig magas állapotba kerül, ha érvényes adatbemenet található

a DataIn bemeneten Kimenetek

DataOut – a negyedik bájt beérkezése után, ezen a kimeneten jelenik meg a csomag DataValidOut – egy órajelig magas állapotba kerül, ha érvényes érték található a

DataOut kimeneten 3. 2. 2. Adatküldő modul

Az adatküldő modul szintén egy 32 bites shift regisztert tartalmaz, amelyet a DataIn bemeneten található 4 bájtnyi információ tölt fel a DataValidIn bemenet magas állapotba kerülésével. A feltöltés után, a DataOut kimeneten megjelenik az első bájtnyi információ, amelyet az UART modulnak továbbít. Az UART modul a DataValidOut kimenet magas állapotba kerülése esetén elkezdi a küldést, majd a ByteSent bemenet magas állapotba

Page 20: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

18

húzásával jelzi, hogy a küldés végetért. Ezt követően küldésre kerül a soron következő csomag. A negyedik bájt kiküldése után nem kerül magas állapotba a DataValidOut kimenetet, így az UART modul befejezi a működését és ezzel együtt az adatküldés is leáll a következő DataValidIn érkezéséig.

3.4. ábra: Adatküldő modul RTL vázlat

Az Adatküldő modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet DataIn – 32 bites adat bemenet DataValidIn – egy órajelig magas állapotba kerül, ha érvényes adatbemenet található

a DataIn bemeneten ByteSent – magas állapotba kerül, ha az UART modul befejezte az előző bájt küldését

Kimenetek DataOut – 8 bites adat kimenet az UART modul számára DataValidOut – egy órajelig magas állapotba kerül, ha érvényes érték található a

DataOut kimeneten

Page 21: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

19

3. 3. Szoba modul

A szoba modul foglalja össze az egy helyiségben található vezérelhető eszközöket. Ide tartoznak a az adatértelmező- , a hőmérséklet- , a világítás- , a távirányító és az adat küldő modulok.

3.5. ábra: Szoba modul RTL vázlat

3. 3. 1. Adatértelmező modul

Az Adatértelmező modul az Adatfogadó modultól kapott 4 bájtos csomagot értelmezi, majd ezt követően a megfelelő eszköznek továbbítja. Rendelkezik egy 3 bites paraméterrel, amellyel a szoba indexét adhatjuk meg. A DataValidFromDataReceiveModule bemenet magas állapotba kerülésével a DataFromDataReceiveModule porton lévő 32 bites érték felső 3 bitjét összehasonlítja a helyiség indexével. Amennyiben ez megegyezik, a következő 5 bites parancsnak megfelelően dönt, hogy melyik eszköznek továbbítsa a kérelmet, illetve az adatot tartalmazó további bájtokat, amennyiben szükséges.

Page 22: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

20

3.6. ábra: Adatértelmező modul RTL vázlat

Az Adatértelmező modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet DataFromRoomModule – 32 bites adat bemenet DataValidFromRoomModule – egy órajelig magas állapotba kerül, ha érvényes érték

szerepel a DataFromRoomModule bemeneten SendFrameDoneFromXm10Module

Kimenetek BtnSelToRcModule – távirányítón megfelelő nyomogómbjának címe EnableToModulesOut – az egyes szoba modulokat engedélyező kimenet KeyCodeToX10ModuleOut – az X10-es modul Key parancsát szolgáltató kimenet SaveOrPushReqToRcModule – a távirányító tanítását, vagy vezérlését szolgáló 2 bites

kiemenet

Page 23: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

21

SetOrGetToRGBModule – az RGB modul beállítását, illetve olvasását vezérlő kimenet

SetOrGetToTemperatureModule – a hőmérséklet modul beállítását, illetve olvasását vezérlő kimenet

SetRGBToRGBModule – az RGB színkomponenseket tartalmazó 24 bites kiemenet SetTempToTemperatureModule – a 12 bites hőmérséklet értéket tartalmazó kimenet UnitCodeToX10ModuleOut – az X10-es modul Unit kódját szolgáltató kimenet SendReqToX10Module – küldés kérelmezése az X10-es modulhoz

Az egyes ki és bemeneti portok részletezése az almodulok kifejtése során kerül bemutatásra.

3. 3. 2. Hőmérséklet modul A hőmérséklet modul egy összefoglaló modul. Biztosítja a hőmérő szenzorral való

kapcsolatot, kérés esetén kiolvassa az aktuális és a beállított hőmérséklet, illetve tartalmazza a termosztát egységet.

3.7. ábra: Hőmérséklet modul RTL vázlat

Page 24: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

22

A Hőmérséklet modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet SetOrGet – 2 bites bemenet

o b00 - tétlen o egy órajelig b01 a hőmérséklet beállításának a kérelmét jelzi o egy órajelig b10 a beállított hőmérséklet lekérdezésének a kérelmét jelzi o egy órajelig b11 az aktuális hőmérséklet lekérdezésének a kérelmét jelzi

SetTempIn – a SetOrGet bemenet b01 értéke esetén az ide érkező hőmérséklet értéket fogja beállítani a felső 8 bit előjeles egész Celsius fokban, az alsó 4 bit pedig a tört részt tartalmazza

Kimenetek GetTempOut – a felső 2 bit b01 esetén a további 12 bit az aktuális hőmérsékletet

tartalmazza, b10 esetén pedig a beállított hőmérsékletet. Az ábrázolása megegyezik a SetTempIn-nél leírtakkal.

GetTempValidOut – egy órajelig tartó magas állapotba kerül, ha a GetTempOut kimeneten érvényes érték található

Page 25: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

23

3. 3. 3. Hőmérő modul A hőmérő modul a PmodTMP modullal áll közvetlen kapcsolatban, és a Temp_req

bemeneti vonal magas állapotba kerülésével kérelmezi az aktuális hőmérséklet értéket. A 2.3-as fejezetben leírtak alapján működik a modul, amelyet egy 5 állapotú állapotgép vezérel. (START_S, LOAD_S, TX_S, RX_S, STOP_S) A START_S állapotban figyeli a Temp_req vonalat, ha ez magas állapotba kerül, akkor a Rst_TMP vonalon lévő értéket invertálja, így ezzel kibillenti a hőmérő modult a reset állapotából. Ezt követően LOAD_S állapotba kerül, ahol először betölti a START_CONVERT_T parancsnak megfelelő x”51” értékű csomagot egy 8 bites regiszterbe és a TX_S állapotba ugorva megindul az egy bájt hosszúságú parancs küldése a DQ_TMP kimeneten. A küldést egy shift regiszter segítségével végzi, amely a Clk_TMP vonalon lévő órajel minden felfutó élénél a következő bit értékét helyezi a DQ_TMP kimenetre. Ha ezzel végzett STOP_S állapotba kerül, ahonnan vissaztér a START_S állapotba és a folyamat megismétlődik a 8 bites READ_TEMPERATURE parancs küldésével. Ha ezzel is végzett, akkor RX_S állapotba kerül és a DQ_TMP vonalat magas impedanciájú állapotba húzza, ami lehetővé teszi, hogy adatot fogadjon a korábban kimenetként használt vonalon. Ebben az állapotban a Clk_TMP órajel minden alacsony állapotában a DQ_TMP vonalon lévő értéket egy 12 bites shift regiszter segítségével tárol. Ha az utolsó érték is megérkezett, akko STOP_S állapotba kerül és a Temp_out kimenetre helyezi az aktuális hőmérséklet értéket amelyet a Temp_done kimenet magas állapotba húzásával jelez. Miután az megtörtént újra START_S állapotban várja a következő Temp_req jel érkezését.

Page 26: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

24

3.8. ábra: Hőmérő modul RTL vázlat

A Hőmérő modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet Temp_req – az aktuális hőmérséklet lekérdezését jelző bemenet

Kimenetek Temp_out – az aktuális hőmérséklet értéke, a felső 8 bit előjeles egész Celsius

fokban, az alsó 4 bit pedig a tört részt tartalmazza. Temp_done – érvényes érték található a Temp_out kimeneten Clk_TMP – a PmodTMP modul Clk vonala RST_TMP – invertált Reset kimenet a PmodTMP modulhoz DQ_TMP – a PmodTMP DQ jelzésű be- és kimeneti vonala

3. 3. 4. Hőmérséklet lekérdező modul

Ez a modul felelős a beállított, illetve az aktuális hőmérséklet értékek tárolásáér és kérelem esetén, a kimenetén megjelenik az aktuális hőmérséklet értéke. A modulhoz másodpercenként frissülő érték érkezik a hőmérő modultól a CurrTempIn bemeneten, amelyet a CurrTempUpdateIn bemenet magas állapota jelez. Az aktuális hőmérséklet, illetve a

Page 27: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

25

beállított hőmérséklet lekérdezése a CurrTempReq és SetTempReq bemenetek magas állapotba húzásával lehetséges. Ez a két szignál soha nem érkezhet egyszerre, mert a soros kommunikáció során, egy csomagban, csak az egyik érték lekérdezésére van lehetőség. A lekérdezés után a TempOut kimeneten megjelenik egy 14 bites érték, amely felső két bitje egy fejléc, amely a kérelem típusát jelképezi a maradék 12 bit pedig a hőméréklet értéke. A korábban beállított érték esetén a fejléc b10 értéket vesz fel, az aktuális hőmérsékletnél pedig b01-et. A kívánt hőmérséklet beállítása során a SetTempIn bemenetre a 12 bites hőmérséklet érték kerül és a SetTempUpdateIn vonalat magas állapotba húzásával eltárolja az értéket.

3.9. ábra: Hőmérséklet lekérdező modul RTL vázlat

A Hőmérséklet lekérdező modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet SetTempIn – a beállított hőmérsékletet fogadó bemenet SetTempUpdateIn – új beállított hőmsékletet jelző bemenet CurrTempIn – az aktuális hőmérsékletet fogadó bemenet, amely másodpercenként

frissül

Page 28: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

26

CurrTempUpdateIn – új aktuális hőmérsékletet jelző bemenet CurrTempReq – az aktuális hőmérséklet lekérdezését jelző bemenet SetTempReq – a beállított hőmérséklet lekérdezését jelző bemenet

Kimenetek TempOut – a felső 2 bit b01 esetén a további 12 bit az aktuális hőmérsékletet

tartalmazza, b10 esetén pedig a beállított hőmérsékletet. Az ábrázolása megegyezik a SetTempIn-nél leírtakkal.

TempValidOut – egy órajelig tartó magas állapotba kerül, ha a TempOut kimeneten érvényes érték található

3. 3. 5. Hőmérsékletszabályozó modul

Ebben a modulban találjuk a termosztát funkciót ellátó egységet. Amennyiben új hőmérséklet értéket állítunk be, frissíti az előzőleg tároltat és a másodpercenként frissülő aktuális hőmérséklettel összehasonlítja. Ha a hőmérséklet 0.5 °C-kal a beállított érték alá csökken a kimenetén a fűtés szabályozó egység vezérlő jele magas állapotba kerül, így a fűtés bekapcsol, illetve ha a helyiség hőmérséklete 0.5 °C-kal a kívánt hőmérséklet fölé emelkedik a vezérlő jel alacsony jelszintet vesz fel, ezzel a fűtés kikapcsol.

A CurrTempIn bemeneten érkezik az aktuális hőmérséklet, amelyet a CurrTempValidIn magas állapota jelez a modulnak. A SetTempIn bemenet a beállított hőmérséklet értéket szolgáltatja, amely a SetTempValidIn magas állapotba kerülésével frissül. A beállított érték alap helyzetben 15.0 °C-ra van állítva, de ez az érték tetszőlegesen választható. A StateOut kimenet a termosztát állípotát szimbolizálja, amely logikai egyes esetén bekapcsolt, illetve logikai 0 esetén kikapcsolt állapotot jelent.

Page 29: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

27

3.10. ábra: Hőmérsékletszabályozó modul RTL vázlat

A Hőmérsékletszabályozó modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet SetTempIn – a beállított hőmérsékletet fogadó bemenet SetTempValidIn – új beállított hőmsékletet jelző bemenet CurrTempIn – az aktuális hőmérsékletet fogadó bemenet, amely másodpercenként

frissül CurrTempValidIn – új aktuális hőmérsékletet jelző bemenet

Kimenetek StateOut – a termosztát állapottát jeleníti meg

Page 30: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

28

3. 3. 6. RGB modul Az RGB modul egy hangulatvilágítást vezérlő modul, amellyel a helyiségben

tetszőlegesen kikeverhetjük a világítás színét. A meghajtott áramkör alapja egy RGB led, amely egy piros, egy zöld és egy kék ledből áll, amelyeknek a fényerejét PWM szabályozással állíthatjuk be 0-tól 255-ig tartó tartományon belül.

3.11. ábra: RGB modul RTL vázlat

Az RGB modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet SetOrGet – 2 bites bemenet

o b00 - tétlen o egy órajelig b01 a színkomponensek beállításának a kérelmét jelzi o egy órajelig b10 a beállított színkomponensek lekérdezésének a kérelmét jelzi

SetRGBIn – a SetOrGet bemenet b01 értéke esetén az ide érkező RGB értéket fogja beállítani, az első bájt a piros, a második a zöld és a harmadik bájt a kék komponens értékét tartalmazza

Kimenetek

Page 31: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

29

GetRGBOut – a SetOrGet bemenet b10 értéke esetén itt fog megjelenni a három színösszetevő értéke piros, zöld és kék sorrendben.

GetRGBValid – egy órajelig tartó magas állapotba kerül, ha a GetRGBOut kimeneten érvényes érték található

RGBPwmOut – az RGB ledet meghajtó áramkör PWM jelét szolgáltatja 3. 3. 7. Távvezérlő modul

A távvezérlésért felelős modul 3 komponensből áll, a Távvezérlő értelmező modul, a Távvezérlő memória modul és a Távvezérlő modulból, amelyhez tartozik egy infravörös led meghajtó almodul is. Ezzel a modullal lehetőségünk van egy általunk használt Samsung márkájú, infravörös távirányító gombjai által generált jeleknek a lemásolására, így helyettesíthetjük egy Androidos okostelefonnal, vagy tablettel a vezérlőt. A modul jelenleg 8 nyomógomb elmentésére alkalmas, ami véleményem szerint elég a mindennapi használathoz és kényelmes használatot tesz lehetővé. 3. 3. 7. 1. Távvezérlő értelmező modul

Az értelmező modul feladata a beérkező infravörös jelek felismerése és tárolása. A távirányító által generált infravörös fény digitalizálását egy áramkör biztosítja, amely egy TSOP34838-as infravörös vevőt tartalmaz, amely alap esetben magas logikai szinten tartja a kimenetét.

3.12. ábra: Infravörös vevő áramkör

A Samsung szabvány [9] esetén a Start jel egy 4,5 ms-ig tartó alacsony, majd 4,5 ms-ig tartó magas állapotból áll és ezt követi 32 bitnyi adat rész. A digitális nullát 0,56 ms-ig alacsony, majd 0,56 ms-ig tartó magas állapot, illetve a digitális egyet 0,56 ms-ig tartó alacsony, majd 1,69 ms-ig tartó magas állapot reprezentálja.

Page 32: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

30

Az értelmező alapja egy állapotgép és két számláló, amelyből az egyik a jelváltások között eltelt idő mérésére a másik pedig a beérkező bitek számolására szolgál. Alap esetben az állapotgép tétlen állapotban van és várja a Start bit érkezését. Az alacsony állapotba kerülés esetén elindít egy számláló és átvált a magas állapot várásának figyelésére. Amennyiben ez bekövetkezik, megvizsgálja, hogy a számláló értéke megegyezik –e a szabványban foglaltaknak. Ha igen, akkor nullázza számlálót és az alacsony állapot figyelésére vált. Ha ez is bekövetkezik, akkor itt is ellenőrzi a szabványban leírtakat, amennyiben egyezést talál ismét a magas állapot várásának figyelésére vált és elindítja a beérkező bitek számolásáért felelős számlálót és egy 32 bites shift regiszterben tárolja a beérkező biteket. Ha a számláló értéke elérte a 32-t kiteszi a kimenetére a beolvasott 32 bitnyi információt egy, egy órajelig tartó érvényes adat jel kíséretében, visszatér tétlen állapotba és minden regiszterét nullázza. Amennyiben két jelváltás között nem a szabványnak megfelelő idő telik el, az állapotgép tétlen állapotba kerül.

3.13. ábra: Távvezérlő értelmező RTL vázlat

A Távvezérlő értelmező modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet IrReceiverIn – az infravörös vevő áramkörtől érkező adatbemenet

Page 33: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

31

Kimenetek DataOut – a felismert távvezérlő gombjának 4 bájtos értéke DataValidOut – egy órajelig magas értéket vesz fel érvényes DataOut esetén

3. 3. 7. 2. Távvezérlő memória modul A memória modul 8 darab 32 bit hosszúságú adatot képes eltárolni és olvasásra a

kimenetére helyezni. Ezek a 4 bájt hosszúságú csomagok a nyomógombok adatait tárolják.

3.14. ábra: Távvezérlő memória modul RTL vázlat

A Távvezérlő memória modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet BtnSel – cím bemenet, a nyomógomb kiválasztását teszi lehetővé DataIn – az értelmező modultól érkező nyomógomb 32 bites értéke

Page 34: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

32

SaveOrPushReq o egy órajelig b01 a BtnSel által megadott nyomógomb megnyomását

eredményezi (olvasás) o egy órajelig b10 a BtnSel által megadott nyomógombhoz a DataIn bemeneten

található értéket rendeli (írás) Kimenetek

DataOut – olvasási kérelem esetén itt jelenik meg a nyomógomb értéke DataValidOut - egy órajelig tartó magas állapotba kerül, ha a DataOut kimeneten

érvényes érték található SavedBtn – 8 bites kimenet, a már elmentett nyomógombnak megfelelő indexű helyén

1-es értéket vesz fel, a szabad helyek 0 értékűek SavedBtnValid - egy órajelig tartó magas állapotba kerül, ha a SavedBtn kimeneten

érvényes érték található 3. 3. 7. 3. Távvezérlő modul

A Távvezérlő modul felelős a vezérelni kívánt eszköz irányításáért. A DataSend bemenetének magas állapotba húzásával beolvassa a DataIn vonalon található 32 bites adatot. Ebben a 4 bájtos csomagban található a korábban beprogramozott távvezérlőgombnak megfelelő információ. Az egység alapja egy állapotgép, amelynek 6 állapota van. (idle, SendLeader, ReadData, Send1, Send0, StopS). Az idle állapotban várja, hogy a DataSend vonal magas állapotba kerüljön. Ha es bekövetkezik, akkor eltárolja egy 32 bites shift regiszterben a DataIn bemeneten található értéket, a BusyOut kimenetet magas állapotba állítja és a SendLeader állapotba kerül. Ekkor a Távvezérlő értelmező modulnál leírt szabvány szerinti Start jel küldése megy végbe, amely a kimeneten egy 4,5 ms-ig tartó alacsony, majd 4,5 ms-ig tartó magas állapotból áll. Ezt követően a ReadData állapotba fut be. Itt egy 32 bitnek megfelelő shiftelés megy végbe és a az adott értéknek megfelelően Send1, vagy Send0 állapotban végrehajtódik az információ elküldése. A Send0 állapotban 0,56 ms-ig alacsony, majd 0,56 ms-ig tartó magas, illetve a Send1 állapotban 0,56 ms-ig tartó alacsony, majd 1,69 ms-ig tartó magas állapotba kerül a kimenet. Ha a shiftelés végetért a StopS állapotba kerül, ahol a Stop jel küldése megy végbe és ezt köüvetően visszatér az idle állapotba.

Page 35: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

33

Az infravörös adó áramkör vezérlését, a vevő áramkörnél használt TSOP34838-as modul adatlapja szerint készítettem. Ennek a lényege, hogy a kimeneten lévő diódát, a logikai egyes állapotban bizonyos frekvenciával villogtatni kell. Ez a frekvencia érték jelen esetben 38 kHz-es, így, amikor a shiftelés során magas érték küldése következik, akkor az IrLedOut kimeneten egy 38 kHz-es négyszög jel jelenik meg, ha alacsony bitnek megfelelő, akkor pedig logikai 0 állapotba kerül a kimenet.

3.15. ábra: Távvezérlő modul RTL vázlat

A Távvezérlő modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet DataIn – a megnyomni kívánt nyomógomb 4 bájtos értéke DataSend – egy órajelig tartó magas állapotba állításával, a DataIn bemeneten lévő

értéket beolvassa Kimenetek

IrLedOut – az infravörös adó áramkör vezérléséért felelős kimenet BusyOut – amíg a küldés folyamatban van 1-es értéket vesz fel

Page 36: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

34

3. 3. 8. Világítás modul A világítás modul vezérli a helyiségben lévő fényforrás ki- és bekapcsolását, illetve fényerejének beállítását. Ez a Marmitek cég LM12-es eszköze segítségével valósult meg, amely az X10-es protokoll segítségével fogadja a parancsokat az épület villamos hálozatán keresztül 3. 4. X10 modul A X10-es modul feladata az XM10-es eszköz segítségével az épületben lévő X10-es protokollt használó modulok vezérlése. A külső rendszer a következő módon épül fel. Android eszköz -> Bluetooth kommunikáció -> FPGA -> Illesztő áramkör -> XM10 -> Villamos hálózat -> LM12

Az Androidos eszköz felel a grafikus interfészért és a vezeték nélküli távvezérlésért, ezekkel a következő fejezetben kerül kifejtésre. Az FPGA feladata egy illesztő áramkör segítségével kommunikálni az XM10-es eszközzel. Ebben az illesztő modulban egy egyszerű szintillesztő kapcsolás megvalósítása található.

Az ábrákon a „Start” kód illetve a „House” kód első két bitjének a küldése látható. A lenti ábrán megfigyelhető, hogy a Zero Crossing jel felfutása esetén megindul a csomag küldése. A mérést a National Instrument SignalExpress programja segítségével, egy USB-6008-as [10] eszköz felhasználásával végeztem.

3.16. ábra: XM10 Tx és ZeroCrossing vonala a Start kód küldése közben

Page 37: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

35

3. 4. 1. X10 küldő modul

Ez a modul felelős az X10-es protokollnak megfelelően előállítani a küldésre szánt csomagot és továbbítani az XM10-es eszköznek. A Zero Crossing bemeneten érkező hálózati frekvenciának megfelelő órajel egy szinkronizáló egységen megy keresztül, amely a két eszköz eltérő órajel tartománya miatt szükséges. Fel- illetve lefutó órajel esetén az FPGA panel órajelének megfelelően előállít két szignált. A „HouseCodeIn” és „UnitCodeIn” bemeneteken várja a vezérelni kívánt eszköz címét és a „KeyCodeIn” bemeneten a végrehajtani kívánt parancsot. A „SendReq” bemenet egy órajelig tartó magas állapotba húzásával megindul a küldés a „TxToXm10Out” kimeneten keresztül. A küldés egy shift regiszter segítségével valósul meg, amelyet a Zero Crossing lefutó éle vezérel. Felfutó él esetén az aktuális MSB bit értékének kerül a kimenetre és nem történik shiftelés, illetve a lefutó él detektálásánál a legnagyobb helyi értékű bit negáltja kerül elküldésre és eggyel balra shiftelődik a regiszter. A csomag elküldése után egy órajelig a „SendFrameDone” kimenet magas állapotba kerül, amellyel az adat értelmező modulnak visszajelez a küldés végrehajtásáról. Ezt követően tétlen állapotba kerül az újabb küldési kérelemig.

3.17. ábra: X10 küldő modul RTL vázlat

Page 38: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

36

Az X10 küldő modul be- és kimenetei Bemenetek

Clk – órajelforrás bemenet (jelen esetben 50 MHz) Rst – szinkron reset bemenet Ce – szinkron engedélyező bemenet HouseCodeIn – a cím első 4 bitjét fogadó bemenet UnitCodeIn – a cím második 4+1 bitjét fogadó bemenet KeyCodeIn – a végrehajtásra szánt parancs 4+1 bites kódját fogadja SendReq – küldés kérelmezése ZeroCrossingIn – az XM10-es modul Zero Crossing jelét fogadja

Kimenetek TxToXm10Out – az XM10-es modulnak szánt adat kimenet SendFrameDone – a csomag el lett küldve

Page 39: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

37

4. A felhasználói interfész Ebben a fejezetben a vezérlésért felelős interfész kerül bemutatásra, amely egy

Android alapú okos eszközre készített alkalmazás segítségével valósul meg. A vezérlendő eszköz Bluetooth kommunkáció segítségével tartja a kapcsolatot az alkalmazást futtató telefonnal. A dolgozatban nem szeretnék kitérni az alkalmazás megvalósításának részleteire, mert a választott témámban nem az Android alapú programozást tartom fő szempontnak. Az elkészül alkalmazást a Google által biztosított ingyenes Android Studio programmal készítettem. 4. 1. Első lépések

Az alkalmazás megnyitása után egy ajtó fogad bennünket és a jobb felső sarokban egy Bluetooth ikont láthatunk.

4.1. ábra: A Bluetooth kapcsolódás folyamata

Az ikonra koppintva az elérhető eszközök listája jelenik meg. Amennyiben nincs

bekapcsolva a Bluetooth az eszközünkön, egy bekapcsolást kérelmező ablak fogad bennünket, majd a bekapcsolást követően szintén megjelenik az elérhető eszközök listája. Jelen esetben két elérhető eszköz látható, nekünk az RN42 – 1515 nevűhöz kell kapcsolódnunk, amely a dolgozat elején említett Digilent - PmodBT2 periféria modulja. A kapcsolódás állapotáról egy

Page 40: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

38

kis buborékban (Android specifikusan, Toast ablakban) információt kapunk. Amennyiben sikeres, akkor ezt a „Sikeres kapcsolódás!” üzenet jelzi számunkra. Problémát jelenthet, ha a kiválasztott eszköz nincs párosítva az eszközünkkel. Egyelőre ezt a funkciót csak a telefonunk beállítások menüjében tehetjük meg, az alkalmazás csak üzenetben értesít bennünket, hogy az eszköz nincs párosítva. A sikeres kapcsolódás után az ajtóra kattintva beléphetünk a szobákat tartalmazó kezelő felületre.

4.2. ábra: A felhasználói felület

Ezen a felületen elérhetjük az adott helységben támogatott összes funkciót a különböző elemekre való koppintással. A szobák között egyszerűen válthatunk, ha a kijelzőn vízszintesen végighúzzuk az ujjunkat. Jelenleg 4 szobát támogat az alkalmazás.

Page 41: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

39

4. 2. Az adott elemek megérintésével kiváltott események Ebben az alfejezetben a felhasználói felület en található vezérlőelemek megérintésével

kapcsolatos események részletes léeírása kerül bemutatásra.

4.3. ábra: Hőmérséklet lekérdezése

A bekeretezett elem (a 4.2-es ábrán 1-es számmal jelölt) megérintésével, a telefon lekérdezi az aktuális hőmérséklet és az értéké megjeleníti az érintés helyén tizedes pontossággal. A hőmérséklet lekérdezése jelenleg csak manuálisan támogatott, így csak akkor frissül az érték, ha újra megérintjük azt.

Page 42: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

40

4.4. ábra: Hőmérséklet beállítása

A bekeretezett elem (a 4.2-es ábrán 2-es számmal jelölt) megérintésével a beállítani kívánt hőmérséklet ablaka jelenik meg, ezen az ablakon a + és a – gombok segítségével növelhetjük, illetve csökkenthetjük a kívánt hőmérsékletet tizedes pontossággal, majd a Beállít gomb megnyomásával rögzítésre kerül a hőmérséklet érték és frissül a kijelzőn a tárolt érték.

4.5. ábra: Világítás be-, és kikapcsolása

Page 43: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

41

A bekeretezett gomb (a 4.2-es ábrán 3-as számmal jelölt) megnyomásával a helyiség világításának be-, illetve kikapcsolását vezérelhetjük. A gomb ikonja visszajelzést ad az adott állapotról, sárga színnel jelzi, ha bekapcsoltuk, illetve fehér színre változik, ha kikapcsoltuk a világítást.

4.6. ábra: Fényerő szabályozás

A bekeretezett két gomb (a 4.2-es ábrán 5-ös és 6-os számmal jelölt) megnyomásával a helyiség világításának fényerejét állíthatjuk. A felső gomb a fényerő növelését, az alsó a fényerő csökkentését teszi lehetővé.

Page 44: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

42

4.7. ábra: Hangulatfény beállítása

Az bekeretezett terület (a 4.2-es ábrán 7-es számmal jelölt) megérintésére egy felugró ablak jelenik meg, amely a hangulatfény beállítását teszi lehetővé. A három csúszka segítségével 0-tól 255-ig állíthatjuk be az egyes színkomponensek értékeit.

4.8. ábra: Hangulatfény beállításának rögzítése

A beállítás alatt a felugró ablak kerete az aktuálisan kikevert színt jeleníti meg, majd az Ok gomb megnyomására a főképernyő keretét is átszínezi az adott szobában a kiválasztott értékűre.

Page 45: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

43

4.9. ábra: Távirányító felület

A bekeretezett gomb (a 4.2-es ábrán 4-es számmal jelölt) megnyomásával a távirányító képernyőre ugrunk. Ez az ablak 8 gombot és egy tanítás kapcsolót tartalmaz. A gombokkal a tanítás során beprogramozott funkciókat érhetjük el. Az egyes gombokon található feliratok általános útmutatást adnak, hogy melyik gombot mire érdemes beállítanunk, viszont nem kötelező ezt követnünk.

A tanítás elkezdéséhez először át kell billentenünk a kijelző felső részén található Tanítás kapcsolót.

Page 46: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

44

4.10. ábra: Távirányító programozása

Ezt követően a kijelző alsó harmadában lévő, az ábrán bekeretezett sávban információt kapunk a folyamat lépéseiről. Első lépésként a „Kattints a programozni kívánt gombra!” felirat jelenik meg. Ekkor ki kell választanunk a kijelzőn, hogy melyik gombot szeretnénk beprogramozni. A megnyomása után a „Nyomd meg a távirányítón a választott gombot!” üzenet fogad. Ebben az esetben az eredeti távirányítón kell megnyomnunk a másolandó gombot és ezzel be is programoztuk az első gombot. A programozás sikerességéről szintén kapunk visszajelzést az információs sávban. Ha több funkciót is szeretnénk beállítani, akkor ennek a folyamatnak az ismétlésével megtehetjük. A programozás befejezéséhez csak vissza kell billentenünk a Tanítás kapcsolót és már használhatjuk is a telefonunkat az eredeti távirányító helyett. Jelen állapotában csak a Samsung szabványnak megfelelő távirányítókat képes felismerni az eszköz, de szeretném kiterjeszteni, több gyártó által használt protokoll támogatására.

Page 47: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

45

5. Összefoglalás A kitűzött célom egy olyan projekt megvalósítása volt, amely FPGA alapú legyen,

tartalmazzon legalább három vezérelhető modult a korábban felsoroltakból és vezeték nélküli kapcsolaton kommunikáljon. Jelenleg az eszköz képes egy “helyiségben” a hőmérséklet szenzor által mért adatok olvasására 0,1 °C-os pontossággal, ugyan ekkora pontossággal rögzíthető a kívánt hőmérséklet és 0,5 °C-os tartományon belül ki, illetve bekapcsol egy LED-et a fejlesztői kártyán, amely a fűtés állapotát szimbolizálja az adott “helyiségben”. Képes négy darab különböző címre (A1, A2, A3, A4) beállított LM12-es világítás modulra csatlakoztatott hagyományos izzószálas fényforrás be- és kikapcsolására, illetve fényerejük szabályozására. Ezen felül egy teszt panelon négy különböző RGB dióda színének tetszőleges beállítására, az egyes színkomponensek 0-255 tartományon belüli értékek megadásának lehetőségével. A távirányító funkciója képes egy Samsung szabványt használó infravörös távvezérlő 8 különböző gombjának a szerepét helyettesíteni. A hőmérséklet és távvezérlő funkciók egyszerűen bővíthetők a megfelelő modulok sokszorosítását követően. Jelenleg csak egy hőmérő szenzorral és egy infravörös adó-vevő áramkörrel rendelkezem, így ezeknek a funkcióknak a több “helyiséges” tesztlésére nem volt lehetőségem. Végezetül a teljes irányítást egy Android operációs rendszerrel rendelkező eszközre telepített alkalmazás segítségével végezhetjük Bluetooth kapcsolaton keresztül.

Az elkészült eszközt még több irányból szeretném fejleszteni. Ezeknek a funkcióknak a listáját szinte a végtelelnségig lehetne sorolni, de szeretnék egy pár, a közeljövőben megvalósítható módosítást felsorolni. A Bluetooth modult 2.0-ról az alacsonyabb fogyasztású 4.0-ra fogom cserélni. Szeretném a hőmérő modulban használt szenzorokat a jelenlegi DS1626-os típusról a DS18B20 típusra cserélni, amely csak 1 vonalat használ a jelenlegi három helyett a kommunikáció során és egy relatív páratartalom mérővel kiegészíteni. A távirányító modult szeretném univerzálissá tenni és a felhasználó felületét testreszabhatóvá fejleszteni. Ki szeretném bővíteni az eszközt statisztikai adatok rögzítése szempontjából egy SD kártya olvasóval, amely így a több felhasználós lehetőséget is rejti magában. Végezetül el szeretném készíteni más mobilplatformra is a vezérlésért felelős alkalmazást.

Page 48: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

46

6. Irodalomjegyzék [1] Digilent - Nexys™2 Spartan-3E FPGA Board: [link]

http://www.digilentinc.com/Products/Detail.cfm?NavTop=2&NavSub=451&Prod=NEXYS2&CFID=21060470&CFTOKEN=11c9fb43a4d2c0e7-1C17B4F8-5056-0201-0208DCA376C82561

[2] Digilent - PmodBT2 - Bluetooth Interface: [link] http://www.digilentinc.com/Products/Detail.cfm?Prod=PMOD-BT2

[3] Digilent - PmodTMP - Thermometer/thermostat: [link] https://www.digilentinc.com/Products/Detail.cfm?NavPath=2,398,1122&Prod=PMOD-TMP

[4] Maxim - DS1626 High-Precision 3-Wire Digital Thermometer and Thermostat: [link/pdf] http://datasheets.maximintegrated.com/en/ds/DS1626-DS1726.pdf

[5] Marmitek – XM10 / LM12: [link] http://www.haibrain.com/xm10-ttlcmos-interface-u-plug-p-682.html http://www.haibrain.com/lm12g-lamp-dimmer-module-plug-in-on-off-dim-g-plug-p-110.html

[6] X10 protokoll leírása az XM10-es eszköz dokumentációjában: [link/pdf] http://www.haibrain.com/documents/downloads/09714/handleidingen/XM10%20EN.pdf

[7] Vishay – TSOP34838: [link/pdf] http://www.vishay.com/docs/82489/tsop322.pdf

[8] H945 NPN tranzisztor: [link/pdf] http://www.huashan.com.cn/products%20catalog/english/to92/H945_en.pdf

[9] Samsung IR Waveforms: [link] http://www.techdesign.be/projects/011/011_waves.htm

[10] National Instruments – USB 6008: [link] http://sine.ni.com/nips/cds/view/p/lang/hu/nid/201986

Page 49: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

47

7. Ábrajegyzék 2.1. ábra: Digilent - NEXYS 2 [1] .......................................................................................... 4 2.2. ábra: Digilent - NEXYS 2 Blokkdiagram [1] ................................................................... 5 2.3. ábra: Digilent - PmodBT2 [2] .......................................................................................... 5 2.4. ábra: Digilent - PmodBT2 - blokkdiagram [2] ................................................................. 6 2.5. ábra: Digilent - PmodTMP [3] ......................................................................................... 6 2.6. ábra: 51h parancs a DQ vonalon [4] ................................................................................ 7 2.7. ábra: AAh parancs és a hőmérséklet érték a DQ vonalon [4] ........................................... 8 2.8. ábra: XM10 és LM12-es modulok [5].............................................................................. 8 2.9. ábra: Infravörös vevő- (felül) és adó- (alul) modulo ....................................................... 10 2.10. ábra: RGB tesztpanel ................................................................................................... 11 2.11 ábra: RGB tesztpanel lábkiosztás .................................................................................. 12 3.1. ábra: UART modul RTL vázlat ..................................................................................... 14 3.2. ábra: A csomag felépítése .............................................................................................. 15 3.3. ábra: Adatfogadó modul RTL vázlat .............................................................................. 17 3.4. ábra: Adatküldő modul RTL vázlat ............................................................................... 18 3.5. ábra: Szoba modul RTL vázlat ...................................................................................... 19 3.6. ábra: Adatértelmező modul RTL vázlat ......................................................................... 20 3.7. ábra: Hőmérséklet modul RTL vázlat ............................................................................ 21 3.8. ábra: Hőmérő modul RTL vázlat ................................................................................... 24 3.9. ábra: Hőmérséklet lekérdező modul RTL vázlat ............................................................ 25 3.10. ábra: Hőmérsékletszabályozó modul RTL vázlat ......................................................... 27 3.11. ábra: RGB modul RTL vázlat ...................................................................................... 28 3.12. ábra: Infravörös vevő áramkör ..................................................................................... 29 3.13. ábra: Távvezérlő értelmező RTL vázlat ....................................................................... 30 3.14. ábra: Távvezérlő memória modul RTL vázlat .............................................................. 31 3.15. ábra: Távvezérlő modul RTL vázlat............................................................................. 33 3.16. ábra: XM10 Tx és ZeroCrossing vonala a Start kód küldése közben ............................ 34 3.17. ábra: X10 küldő modul RTL vázlat ............................................................................. 35 4.1. ábra: A Bluetooth kapcsolódás folyamata ...................................................................... 37

Page 50: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

48

4.2. ábra: A felhasználói felület ............................................................................................ 38 4.3. ábra: Hőmérséklet lekérdezése ...................................................................................... 39 4.4. ábra: Hőmérséklet beállítása .......................................................................................... 40 4.5. ábra: Világítás be-, és kikapcsolása ............................................................................... 40 4.6. ábra: Fényerő szabályozás ............................................................................................. 41 4.7. ábra: Hangulatfény beállítása ........................................................................................ 42 4.8. ábra: Hangulatfény beállításának rögzítése .................................................................... 42 4.9. ábra: Távirányító felület ................................................................................................ 43 4.10. ábra: Távirányító programozása .................................................................................. 44 8.1 ábra: Prototípus blokkdiagram ........................................................................................ 50

8. Függelék

A. Felhasznált szoftverek listája A. 1. Microsoft Windows 7 Ultimate operációs rendszer A. 2. Xilinx ISE Design Suite 14.7 A. 3. National Instruments SignalExpress 2011 A. 4. Realterm A. 5. Microsoft Word A. 6. Google Android Studio

B. Felhasznált eszközök listája B. 1. Digilent Nexys 2 B. 2. Digilent PmodBT2 B. 3. Digilent PmodTMP B. 4. National Instruments USB6008 B. 5. Sony Xperia L

Page 51: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

49

C. Nexys 2 I/O port kiosztás JA - 3,3V - PmodBT2 Bluetooth interfész 3,3V

JA1 – NC JA2 – PmodBT2-Rxd JA3 – PmodBT2-Txd JA4 – NC

JA7 – NC JA8 – PmodBT2-Rst JA9 – NC JA10 – NC

JB - 3,3V JB1 – PmodTMP-Rst JB2 – PmodTMP-DQ JB3 – NC JB4 – PmodTMP-Clk

JB7 – NC JB8 – XM10-Tx JB9 – NC JB10 – XM10-Zero Crossing

JC - 3,3V/5V JC1 – RGB0 vezérlő R0 PWM kimenet JC2 – RGB1 vezérlő B1 PWM kimenet JC3 – RGB1 vezérlő G1 PWM kimenet JC4 – RGB2 vezérlő R2 PWM kimenet

JC7 – RGB0 vezérlő B0 PWM kimenet JC8 – RGB0 vezérlő G0 PWM kimenet JC9 – RGB1 vezérlő R1 PWM kimenet JC10 – RGB2 vezérlő B2 PWM kimenet

JD - 3,3V/5V JD1 – RGB2 vezérlő G2 PWM kimenet JD2 – RGB3 vezérlő G3 PWM kimenet JD3 – az infra led vezérlőáramkörhöz tartózó kimenet JD4 – az infra-vevő áramkörtől érkező bemenet

Page 52: Szakdolgozat Peter Mercse - shrek.unideb.hushrek.unideb.hu/~onigai/Szakdolgozatok/2015-2016... · 'heuhfhql (j\hwhp ,qirupdwlndl .du 2nrvrwwkrq yh]puopv phjydoyvtwivd )3*$ vhjtwvpjpyho

50

JD7 – RGB3 vezérlő B3 PWM kimenet JD8 – RGB3 vezérlő R3 PWM kimenet JD9 – NC JD10 – NC

D. Blokkdiagram

8.1 ábra: Prototípus blokkdiagram

9. Köszönetnyílvánítás Ezúton szeretnék köszönetet mondani témavezetőmnek Dr. Oniga Istvánnak, aki

megismerette velem az FPGA programozásban rejlő lehetőségeket és akinek segítsége nélkül nem sikerlült volna ekkora mennyiségű szakmai tudást szereznem ebben a témakörben. Szeretném megköszönni Dr. Végh Jánosnak, hogy részt vehettem a C-GEP projektben az egyetemi éveim alatt.