ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra měření
DIPLOMOVÁ PRÁCE
OVLÁDÁNÍ OSVĚTLOVAČŮ POMOCÍ ROZHRANÍ ZIGBEE
Vedoucí práce: Ing. Jan Fischer, Csc. Praha 2009
Zpracoval: Bc. Roman Táborský
ii
Čestné prohlášení autora práce Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o dodržování etických principů při přípravě vysokoškolských závěrečných prací. V Praze dne …………………………..
…..……………………………. Podpis autora práce
iii
Poděkování Rád bych poděkoval všem, kteří mi jakýmkoli způsobem pomáhali při vzniku této diplomové práce. Děkuji celému vývojovému týmu STMicroelectronics a vedoucímu mé práce Ing. Janu Fisherovi, Csc. za trpělivé vedení a cenné rady během realizace. Dále děkuji rodičům za trpělivost a podporu.
iv
Abstrakt Práce se zabývá návrhem a realizací malé bezdrátové sítě interiérových osvětlovačů založené na standardu Zigbee PRO. Síť obsahuje tři typy zařízení. Prvním je RGB lampa, osvětlovač s nastavitelnou barvou generovaného světla pomocí RGB LED. Takových osvětlovačů může být v síti několik. Druhým je dálkové ovládání umožňující nastavení barev jednotlivých RGB lamp a posledním je USB ovladač, kterým je možno do ZigBee sítě připojit osobní počítač. Pro osobní počítač je vytvořena jednoduchá aplikace umožňující taktéž nastavení RGB lamp. Každé zařízení je řízené jedním mikrokontrolérem z rodiny STM32. V práci je řešena problematika hardwarového návrhu a vytvoření aplikačního softwarového vybavení každého zařízení.
Abstract This Diploma thesis deals with design and realization a non-large network of interior lights system based on Zigbee PRO standard. The network includes three devices types. The first is RGB lamp. This is an illuminator with possibility of generating multicolor light by using RGB LEDs. There can be several of this one in network. The second is remote control enabling setting of RGB lamps separately. Like the last one is USB controller. Through this node it is possible to connect a PC to the ZigBee network. There is created simple application for PC which enabling setting RGB lamps too. All of devices are controlled by one microcontroller of STM32 family. The work accomplishes hardware design and implementation. Each of devices must include functional software equipment.
v
Obsah 1 2
Úvod ................................................................................................................................................ 1 Teoretický rozbor ............................................................................................................................ 2 2.1 STM32 - Jádro ARM Cortex™-M3 ........................................................................................... 2 2.1.1 Zpětný pohled na jádra ARM ........................................................................................... 3 2.1.2 Cortex Procesor a Cortex CPU ......................................................................................... 3 2.1.3 Cortex CPU....................................................................................................................... 3 2.1.4 Cortex Procesor ............................................................................................................... 4 2.2 Podstata ZigBee®...................................................................................................................... 5 2.2.1 Základní charakteristika ZigBee aplikací .......................................................................... 6 2.2.2 Standard IEEE 802.15.4.................................................................................................... 7 2.2.3 Prostředky k ZigBee konektivitě ...................................................................................... 7 2.2.4 Typy zařízení v ZigBee sítích ............................................................................................ 7 2.2.5 Topologie ZigBee sítí........................................................................................................ 8 2.2.6 Adresování a směrování v sítích ZigBee .......................................................................... 9 2.2.7 ZigBee stack ................................................................................................................... 11 2.3 Světlo a barvy ........................................................................................................................ 12 2.3.1 Fotometrické veličiny .................................................................................................... 12 2.3.2 Základní barevné systémy ............................................................................................. 13 2.4 Návrh hardwaru..................................................................................................................... 15 2.4.1 Podstata návrhu RGB lampy .......................................................................................... 15 2.4.2 Hardware vysoce svítivé RGB lampy ............................................................................. 20 2.4.3 Dálkové ovládání ........................................................................................................... 23 2.4.4 Časovací jednotka .......................................................................................................... 25 2.4.5 USB zařízení ................................................................................................................... 26 3 Hardwarové funkční bloky ............................................................................................................ 26 3.1 Společné komponenty ........................................................................................................... 27 3.1.1 Mikrokontrolér STM32F101CB ...................................................................................... 27 3.1.2 ZigBee modul SPZB260 .................................................................................................. 28 3.1.3 Sběrnice SPI ................................................................................................................... 29 3.2 RGB lampa ............................................................................................................................. 29 3.2.1 Napájecí zdroj řídicí části ............................................................................................... 29 3.2.2 Zdroje proudu – drivery LED .......................................................................................... 30 3.2.3 Chlazení tepelných zdrojů ............................................................................................. 34 3.2.4 Manuální nastavování jasu a barvy ............................................................................... 37 3.2.5 Finální konstrukce.......................................................................................................... 37 3.3 Dálkové ovládání ................................................................................................................... 38 3.3.1 Napájecí zdroj ................................................................................................................ 38 3.3.2 Technologie s S-TOUCHTM .............................................................................................. 39 3.3.3 Sběrnice I2C .................................................................................................................... 41 3.3.4 Zapojení STMPE821 ....................................................................................................... 42 3.3.5 Návrh motivu na DPS pro S-TOUCHTM ........................................................................... 42 3.3.6 Krycí panel ..................................................................................................................... 44 3.3.7 Kalibrace STMPE821 ...................................................................................................... 45 vi
3.3.8 Finální konstrukce.......................................................................................................... 47 3.4 Časovací jednotka .................................................................................................................. 48 3.5 USB ovladač ........................................................................................................................... 49 4 Softwarové vybavení ..................................................................................................................... 49 4.1 Využití produktů firmy KEILTM ................................................................................................ 50 4.1.1 Vývojové prostředí μVision 4.0...................................................................................... 50 4.2 Využití produktů firmy Raisonance ....................................................................................... 54 4.2.1 RLink .............................................................................................................................. 54 4.2.2 Vývojové prostředí Ride7 .............................................................................................. 54 4.3 EZSP sériový protokol pro SPI ................................................................................................ 56 4.3.1 Formát protokolu .......................................................................................................... 56 4.4 EmberZNet® Pro - ZigBee software ........................................................................................ 57 4.5 Základ společného softwarového vybavení .......................................................................... 57 4.5.1 Nastavení sériového rozhraní USART ............................................................................ 57 4.5.2 Nastavení sériového rozhraní SPI .................................................................................. 58 4.5.3 Nastavení systému přerušení NVIC ............................................................................... 59 4.6 ZigBee software ..................................................................................................................... 60 4.6.1 Definice Endpointů a Callbacků ..................................................................................... 60 4.6.2 Endpointy, Clustery a Profily ......................................................................................... 61 4.6.3 Stanovení programové smyčky ..................................................................................... 62 4.6.4 Nastavení sítě a vyžadované řízení ................................................................................ 62 4.6.5 Obsluha zpráv ................................................................................................................ 64 4.6.6 Housekeeping Tasks ...................................................................................................... 67 4.6.7 Konfigurace ZigBee sítě ................................................................................................. 67 4.7 Software RGB lampy .............................................................................................................. 68 4.7.1 Inicializace systému hodin ............................................................................................. 68 4.7.2 Nastavení analogově číslicového převodníku ............................................................... 70 4.7.3 Nastavení timeru pro generování PWM........................................................................ 71 4.7.4 Systémový timer ............................................................................................................ 75 4.7.5 Manuální nastavení barvy a jasu ................................................................................... 76 4.7.6 Inicializace RGB lampy ................................................................................................... 77 4.7.7 applicationTick() RGB lampy .......................................................................................... 77 4.7.8 Akceptované clustery a zprávy ...................................................................................... 78 4.8 Software dálkového ovládání ................................................................................................ 79 4.8.1 Inicializace systému hodin ............................................................................................. 79 4.8.2 Nastavení sběrnice I2C ................................................................................................... 80 4.8.3 Zpracování dat ze senzorů ............................................................................................. 81 4.8.4 Ovládání pomocí Wheel a Slider senzoru ...................................................................... 86 4.8.5 Inicializace dálkového ovládání ..................................................................................... 86 4.8.6 applicationTick() dálkového ovládání ............................................................................ 86 4.8.7 Akceptované zprávy a clustery ...................................................................................... 87 4.9 Software USB ovladače.......................................................................................................... 88 4.9.1 Inicializace systému hodin ............................................................................................. 88 4.9.2 Použití periferie USB ...................................................................................................... 89 4.9.3 Inicializace softwaru USB ovladače ............................................................................... 89 vii
4.9.4 applicationTick() USB ovladače ..................................................................................... 89 4.9.5 Akceptované zprávy a clustery ...................................................................................... 90 4.10 Počítačová aplikace ZigBeeLightConfigurator ....................................................................... 91 4.10.1 Ovladač pro Virtual COM port ....................................................................................... 91 4.10.2 ZigBeeLightConfigurator ................................................................................................ 91 4.11 Použití, ovládání, funkce a sestavení systému osvětlovačů .................................................. 95 5 Závěr a zhodnocení........................................................................................................................ 96 6 Literatura ....................................................................................................................................... 98 7 Přílohy.......................................................................................................................................... 100 7.1 Elektrická schémata ............................................................................................................. 100 7.2 Desky plošných spojů .......................................................................................................... 103 7.2.1 Dálkové ovládání ......................................................................................................... 103 7.2.2 RGB lampa ................................................................................................................... 104 7.3 Návrh krabičky pro dálkové ovládání .................................................................................. 105 7.4 Obsah přiloženého CD ......................................................................................................... 106
viii
Seznam obrázků Obr. 2.1.1 Blokové schéma interní struktury jádra ARM Cortex-M3 ...................................................... 2 Obr. 2.1.2 Vývoj jádra ARM ..................................................................................................................... 3 Obr. 2.1.3 Nesetříděná a setříděná paměť.............................................................................................. 4 Obr. 2.2.1 ZigBee architektura ................................................................................................................ 6 Obr. 2.2.2 Stromová topologie ................................................................................................................ 9 Obr. 2.2.3 Star ......................................................................................................................................... 9 Obr. 2.2.4 Full mesh ................................................................................................................................ 9 Obr. 2.2.5 Hybrid ..................................................................................................................................... 9 Obr. 2.3.1 Barevné spektrum a vlnové délky barev .............................................................................. 12 Obr. 2.3.2 K definici jasu........................................................................................................................ 13 Obr. 2.3.3 Model RGB............................................................................................................................ 14 Obr. 2.3.4 Jednotková RGB krychle ....................................................................................................... 14 Obr. 2.3.5 Chromatický diagram s vyznačeným názorným gamutem................................................... 15 Obr. 2.4.1 Blokové schéma RGB lampy ................................................................................................. 15 Obr. 2.4.2 Závislost střídy a střední hodnoty ........................................................................................ 17 Obr. 2.4.3 Obecné zapojení pro řízení PWM ......................................................................................... 17 Obr. 2.4.4 Blokové schéma interní struktury STP04CM05 .................................................................... 18 Obr. 2.4.5 Princip regulace výkonu barev na referenční desce STEVAL-ILL009V5 ................................ 19 Obr. 2.4.6 Význam proměnných pro výpočet PWM.............................................................................. 20 Obr. 2.4.7 Blokové schéma dálkového ovládání ................................................................................... 23 Obr. 2.4.8 Blokové schéma časovací jednotky ...................................................................................... 25 Obr. 3.1.1 Průběh přenosu dat po SPI mezi STM32 a SPZB260 ............................................................ 29 Obr. 3.2.1 Zapojení zdroje L5980 .......................................................................................................... 30 Obr. 3.2.2 Zapojení zdroje ST1S10 ........................................................................................................ 31 Obr. 3.2.3 Zpětná vazba – bez LED ........................................................................................................ 31 Obr. 3.2.4 Zpětná vazba – s LED ............................................................................................................ 31 Obr. 3.2.5 Průběh řídicího signálu a výstupního proudu....................................................................... 32 Obr. 3.2.6 Max proud diodou ................................................................................................................ 32 Obr. 3.2.7 Trvání úrovně log. 0 v PWM signálu s maximální střední hodnotou.................................... 33 Obr. 3.2.8 Trvání nulového proudu po úrovni log. 0 v PWM signálu .................................................... 33 Obr. 3.2.9 Časové zpoždění startu ST1S10 ............................................................................................ 34 Obr. 3.2.10 Náhradní tepelný obvod RGB modul - chladič ................................................................... 35 Obr. 3.2.11 Závislost rezistivity NTC termistoru na teplotě .................................................................. 36 Obr. 3.2.12 Zapojení termistoru pro měření teploty ............................................................................ 36 Obr. 3.2.13 Zapojení potenciometrů pro nastavování barvy a jasu ...................................................... 37 Obr. 3.2.14 Fotografie RGB lampy......................................................................................................... 38 Obr. 3.3.1 Zapojení zdroje L6920 .......................................................................................................... 39 Obr. 3.3.2 Princip vyhodnocení dotyku kapacitním snímačem ............................................................. 40 Obr. 3.3.3 Nastavení oblasti měřené kapacity ...................................................................................... 41 Obr. 3.3.4 Zapojení STMPE821 .............................................................................................................. 42 Obr. 3.3.5 Řešení návrhu DPS dálkového ovládání ............................................................................... 43 Obr. 3.3.6 Button senzor ....................................................................................................................... 43 Obr. 3.3.7 Wheel senzor ........................................................................................................................ 44 ix
Obr. 3.3.8 Vliv pohybu prstu na měřenou kapacitanci – Wheel senzor ................................................ 44 Obr. 3.3.9 Slider senzor ......................................................................................................................... 44 Obr. 3.3.10 Vliv pohybu prstu na měřenou kapacitanci – Slider senzor ............................................... 44 Obr. 3.3.11 Nastavení rozsahu pro měření kapacitance ....................................................................... 46 Obr. 3.3.12 Fotografie dálkové ovládání ............................................................................................... 47 Obr. 3.4.1 Zapojení rozšiřujícího konektoru Primer2 ............................................................................ 48 Obr. 3.4.2 Primer2 ................................................................................................................................. 48 Obr. 3.4.3 Blokový návrh rozšiřujícího modulu ..................................................................................... 48 Obr. 3.4.4 Blokové řešení návrhu časovací jednotky ............................................................................ 49 Obr. 3.5.1 Fotografie USB ovladače (STEVAL-IFS013V1) ....................................................................... 49 Obr. 4.1.1 Příklad souborového manažeru μVision .............................................................................. 51 Obr. 4.1.2 Dialogové okno k nastavení projektu ................................................................................... 52 Obr. 4.1.3 Nastavení paměťového prostoru ......................................................................................... 53 Obr. 4.3.1 Formát rámce zprávy EZSP protokolu .................................................................................. 56 Obr. 4.6.1 Zkladní úkoly aplikačního softwaru ...................................................................................... 60 Obr. 4.6.2 Programová smyčka pro aplikace na EmberZNet................................................................. 62 Obr. 4.6.3 Postup zpracování zpráv....................................................................................................... 64 Obr. 4.6.4 Toplogie navržené sítě.......................................................................................................... 68 Obr. 4.7.1 Blokové schéma obvodu hodin mikrokontorlérů STM32 ..................................................... 69 Obr. 4.7.2 Vývojový diagram měření ADC1 ........................................................................................... 71 Obr. 4.7.3 Blokové schéma časovače TIM2 ........................................................................................... 72 Obr. 4.7.4 Nastavení časové základny TIM2.......................................................................................... 73 Obr. 4.7.5 Vývojový diagram postupného nastavení kanálu TIM2 generujících PWM ......................... 75 Obr. 4.7.6 Rozdělení barevného spektra na rozlišení ADC převodníku ................................................ 76 Obr. 4.7.7 Dosažené barvy RGB modelu ............................................................................................... 77 Obr. 4.7.8 Vývojový diagram inicializační procedury RGB lampy .......................................................... 77 Obr. 4.7.9 Vývojový diagram procedury applicationTick() RGB lampy ................................................. 78 Obr. 4.7.10 Vývojový diagram pro zpracování zpráv v RGB lampě ....................................................... 79 Obr. 4.8.1 Základní algoritmus zpracování dat z Wheel senzoru .......................................................... 83 Obr. 4.8.2 Vývoj konečné hodnoty pro určení barvy ............................................................................ 83 Obr. 4.8.3 Algoritmus k určení barvy, hodnoty (0 4095) ..................................................................... 84 Obr. 4.8.4 Algoritmus základního zpracování dat ze Slider senzoru ..................................................... 85 Obr. 4.8.5 Algoritmus k určení jasu, hodnoty (0 4095) ........................................................................ 85 Obr. 4.8.6 Inicializační procedura dálkového ovládání ......................................................................... 86 Obr. 4.8.7 Vývojový diagram applicationTick() dálkového ovládání ..................................................... 87 Obr. 4.8.8 Zpracování příchozích zpráv v dálkovém ovládání ............................................................... 88 Obr. 4.9.1 Vývojový diagram applicationTick() USB ovladače ............................................................... 90 Obr. 4.9.2 Zpracování příchozích zpráv v USB ovladači......................................................................... 90 Obr. 4.10.1 GUI programu ZigBeeLightConfigurator ............................................................................. 92 Obr. 4.10.2 Vývojový diagram obsluhy sériové linky ZigBeeLightConfiguratorem ............................... 93 Obr. 4.10.3 Organizace dat v rámcích vysílaných ZigBeeLightConfiguratorem .................................... 93 Obr. 7.1.1 Schéma zapojení dálkového ovládání ................................................................................ 100 Obr. 7.1.2 Schéma zapojení RGB lampy – řídicí část ........................................................................... 101 Obr. 7.1.3 Schéma zapojení RGB lampy – výkonová část ................................................................... 102 Obr. 7.2.1 Vrstva TOP dálkového ovládání .......................................................................................... 103 x
Obr. 7.2.2 Vrstva BOTTOM dálkového olvádání .................................................................................. 103 Obr. 7.2.3 Osazovací výkres (pouze TOP, v BOTTOM nejsou žádné součástky) ................................. 103 Obr. 7.2.4 Vrstva TOP RGB lampy........................................................................................................ 104 Obr. 7.2.5 Vrstva BOTTOM RGB lampy ............................................................................................... 104 Obr. 7.2.6 Osazovací výkres (pouze TOP, v BOTTOM nejsou žádné součástky) ................................. 104 Obr. 7.3.1 Výkres krycí krabičky pro dálkové ovládání........................................................................ 105
xi
Seznam tabulek Tab. 2.1.1 Paměťový prostor jádra Cortex-M3........................................................................................ 4 Tab. 2.1.2 Systém priorit přerušení ......................................................................................................... 5 Tab. 2.4.1 Elektrické vlastnosti RGB modulu ......................................................................................... 17 Tab. 3.2.1 Naměřené hodnoty proudu jednotlivých kanálů ................................................................. 34 Tab. 3.2.2 Určení maximální teploty RGB modulu ................................................................................ 37 Tab. 3.3.1 Hodnoty po kalibraci STMPE821 na dálkovém ovládání ...................................................... 47 Tab. 3.4.1 Komponenty Primer2 potřebné pro časovací jednotku ....................................................... 48 Tab. 3.4.2 Použité vodiče konektoru na Primer2 pro rozšiřující modul ................................................ 48 Tab. 4.3.1 Přehled rámců EZSP protokolu ............................................................................................. 57 Tab. 4.5.1 Nastavení UART .................................................................................................................... 58 Tab. 4.5.2 Nastavení SPI rozhraní .......................................................................................................... 58 Tab. 4.5.3 Nastavení přerušení pro externí signál HOST_INT z SPZB260 .............................................. 59 Tab. 4.5.4 Nastavení NVIC pro systémový timer, SPI timer, USART1, externí přerušení od tlačítka .... 59 Tab. 4.6.1 Vyžadované globální endpointy ........................................................................................... 60 Tab. 4.6.2 Vyžadované základní funkce................................................................................................. 61 Tab. 4.6.3 Definice parametrů pro ZDO domovního osvětlovače ......................................................... 61 Tab. 4.6.4 Definice clusterů a jejich význam ......................................................................................... 61 Tab. 4.6.5 Nastavení parametrů užité sítě ZigBee................................................................................. 63 Tab. 4.6.6 Typy zpráv sítích ZigBee ........................................................................................................ 64 Tab. 4.7.1 Použité periferie a odpovídající sběrnice hodin ................................................................... 68 Tab. 4.7.2 Postup a princip nastavení sběrnic hodin............................................................................. 69 Tab. 4.7.3 Nastavení kanálů ADC1......................................................................................................... 70 Tab. 4.7.4 Tabulka použitých kanálu ADC1 ........................................................................................... 70 Tab. 4.7.5 Nastavení časové základny TIM2 .......................................................................................... 72 Tab. 4.7.6 Nastavení OC časovače ......................................................................................................... 74 Tab. 4.7.7 Použité GPIO pro kanály PWM ............................................................................................. 75 Tab. 4.7.8 Nastavení časové základny systémového časovače ............................................................. 76 Tab. 4.7.9 Nastavení OC systémového časovače .................................................................................. 76 Tab. 4.8.1 Použité periferie a odpovídající sběrnice hodin ................................................................... 80 Tab. 4.8.2 Nastavení periferi SPI ........................................................................................................... 80 Tab. 4.8.3 Průběh dat a událostí na sběrnici I2C ................................................................................... 80 Tab. 4.8.4 Nastavení registrů STMPE821 .............................................................................................. 81 Tab. 4.9.1 Použité periferie v USB ovladači a příslušné sběrnice hodin ................................................ 88 Tab. 4.9.2 Nastavení hodinového systému v mikrokontroléru USB ovladače ...................................... 89 Tab. 4.10.1 Tabulka klíčových znaků zpráv mezi ZigBeeLightConfigurator a USB ovladačem .............. 92 Tab. 4.10.2 Nastavení sériového portu v ZigBeeLightConfiguratoru .................................................... 93
xii
1 Úvod Trend současné moderní civilizace se velice často zabývá problematikou ulehčení fyzické
nebo
duševní
námahy
právě
člověku.
Toto
může
být
spojeno
jak
s pracovním, domácím nebo prostředím na veřejném prostranství. Řešení problematiky v zásadě spočívá aplikací jisté formy automatizační nebo výpočetní techniky. Jako příklad může být uvedeno zavádění centrálních domovních systémů určených k zamykání dveří, regulaci interní teploty nebo také aplikace na řízené domovní osvětlení. Každý z uvedených příkladů slouží k jiné podstatě věci, ale přesto mají alespoň jednu věc společnou a to sice předávání informace z různých a různě vzdálených míst. K předávání informací jsou běžně používány metalické spoje. Aplikované centrální řídicí systémy zajisté prochází vývojem, jehož výsledkem je plynulý přechod na bezdrátové předávání informací. Tato práce se zabývá návrhem a realizací jednoduchého řídicího systému interiérových osvětlovačů, který bude užívat k přenosu informace bezdrátovou síť ZigBee®. Pojem interiérové osvětlovače je jistě široký. Zde se jedná o zdroje barevného světla, jehož barvu bude možno prostřednictvím ZigBee sítě řídit. Barevné světlo bude generováno výkonovým RGGB LED modulem. Možnost řízení barev bude umožněno primárně dálkovým ovládáním. Pro návrh uživatelských ovládacích elementů by mělo být využito kapacitní technologie S-TOUCHTM, která nachází stále většího uplatnění a to jak v zařízeních průmyslových, tak pro domácnost. Další variantou nastavování barev světla osvětlovače bude prostřednictvím osobního počítače a příslušného navrženého USB zařízení, jenž tvoří rozhraní mezi sběrnicí USB a sítí ZigBee. Do PC bude vytvořena aplikace, která bude schopná s USB zařízením komunikovat. Posledním ovládacím zařízením by měl být časovací prvek, jehož schopnosti spočívají v časovém nastavení osvětlovačů. Patřičné připojení a práci v síti ZigBee, zmíněných funkčních jednotek, budou zajišťovat komunikační moduly ZigBee označeném SPZB260 ve spolupráci s mikrokontroléry rodiny STM32 s jádrem ARM CortexTM-M3. Zprovoznění sítě bude možné až po implementování patřičného softwarového vybavení, které musí řešit jak požadavky na obsluhu hardwarové vrstvy, tak aplikování síťového softwaru.
1
2 Teoretický rozbor Kapitola teoretického rozboru se bude zabývat předními vytyčenými požadavky zadání, se kterými se bylo nutno během vývoje seznámit. První část obsahuje popis jádra mikrokontrolérů STM32. Druhá část je věnována záležitostem spojeným se ZigBee sítěmi. Třetí část se zabývá podstatou barev a v poslední části je objasněna teorie návrhu jednotlivých zařízení.
2.1 STM32 - Jádro ARM Cortex™-M3 ARM
Cortex
je
nová
generace
interní
struktury jader
pro
jednočipové
mikrokontroléry. Jádra této technologie jsou podle zaměření rozděleny do profilů A, R, M. Profil A je navržen pro high-end aplikace, R aplikacím pracujícím se systémy reálného času a profil M je modifikace jádra pro cenově nenáročné mikropočítačové aplikace. Jádro každého mikrokontroléru STM32 je založeno na profilu typu M a proto se nazývá Cortex™-M3[4]. Hlavní výhodou jádra je jeho standardizované řešení. Standardizace řešení vychází ze zkušeností například s jádrem ARM7 či ARM9, kde výrobci mohou řešit části jádra, jako ošetření přerušení a další, po svém. Jádro Cortex je navrženo k podpoře 32-bitové instrukční sady ARM Thumb-2, která vychází z kombinace ARM 32-bitové a Thumb 16-bitové instrukční sady pro jádra ARM9 a ARM7. Výsledkem je výkonná instrukční sada redukovaného datového objemu[4].
Obr. 2.1.1 Blokové schéma interní struktury jádra ARM Cortex-M3
2
2.1.1 Zpětný pohled na jádra ARM Na obr. 2.1.2 podle [4] je zachycen vývoj jádra ARM. Společnost ARM® počala verze svých standardů jader pojmenovávat podle revidovaných verzí tzn. ARMv6, ARMv7 atd.. Cortex-M3 vychází z ARMv7 M.
Obr. 2.1.2 Vývoj jádra ARM
2.1.2 Cortex Procesor a Cortex CPU V dalším textu budou ve spojení s jádrem ARM zmiňovány dva výrazy a to, Cortex procesor a Cortex CPU. Tyto výrazy slouží k rozlišení kompletního Cortex embedded jádra a interního RISC CPU. Následující sekce se věnují klíčovým vlastnostem Cortex CPU a systémovým periferiiím Cortex procesoru.
2.1.3 Cortex CPU Centrálním blokem Cortex procesoru je 32.bitové RISC CPU. Toto CPU je založené na kombinaci programovacího modelu ARM7 a ARM9, ale obsahuje bohatší instrukční sadu s podporou matematických funkcí pro čísla typu integer. Dále umí lépe manipulovat s daty, konkrétně jejich zarovnávání v paměťovém prostoru a poskytuje větší výkon v real-time operacích. Cortex CPU může vykonávat více instrukcí v jediném cyklu. Stejně jako u ARM7 a ARM9 CPU je toho dosaženo tříúrovňovým pipeline. Během vykonávání jedné instrukce je druhá dekódována a třetí se načítá z paměti. Cortex CPU má načítací a ukládací „politiku“ architektury. Kvůli výkonu zpracování dat na základě instrukcí musí být operandy načteny do souboru pracovních registrů. Po uložení do těchto registrů může být teprve vykonána datová operace. Výsledek je poté uložen zpět do paměťového prostoru, mimo oblast pracovních registrů. Cortex-M3 CPU má soubor obsahující 16 32-bitových pracovních registrů, značených od R0 až R15. Posledním xPSR je speciálním stavovým registrem. R0 až R12 jsou standardní 3
pracovní registry. R13 je užitý jako Stack pointer, R14 zastupuje Link register a R15 Program counter. Cortex-M3 procesor je standardizované jádro pro mikrokontroléry. Standardizace je tedy aplikována i na paměťový prostor. Navzdory četnému počtu interních sběrnic je adresový prostor mapován lineárně do 4GB rozsahu. Rozdělení je patrné z tabulky tab. 2.1.1. Rozsah hodnot
Objem(MB)
Určení
0x00000000 – 0x1FFFFFFF 500 Paměť programu 0x20000000 – 0x3FFFFFFF 500 SRAM 0x40000000 – 0x5FFFFFFF 500 Periferie 0x60000000 – 0x9FFFFFFF 1000 Externí RAM 0xA0000000 – 0xDFFFFFFF 1000 Externí zařízení 0xE0000000 – 0xE003FFFF 0,2 Interní sběrnice pro periferie 0xE0040000 – 0xE00FFFFF 0,7 Externí sběrnice pro periferie 0xE01FFFFF – 0xFFFFFFFF 500 Volitelné dle výrobce Tab. 2.1.1 Paměťový prostor jádra Cortex-M3
Cortex CPU má adresovací mód pro data velikosti 32b, 16b a 1B a je schopný vytvořit jejich „nesetříděné“ uspořádání v paměti a v takovém stavu je i návratně z paměti získat. Tento princip zaručuje efektivnější uspořádání kódu. Názorně to zobrazuje obr. 2.1.3 podle [4].
Obr. 2.1.3 Nesetříděná a setříděná paměť
2.1.4 Cortex Procesor Cortex-M3 procesor má Harvardskou architekturu s oddělenou datovou sběrnicí a sběrnicí pro přenos instrukcí. První se nazývá Dcode a druhá jmenovaná Icode. Obě dvě mohou přistupovat ke kódu a k datům v rozsahu 0x00000000 – 0x1FFFFFFF. Tyto sběrnice jsou propojené s okolními interními periferiemi pomocí souboru vysokorychlostních sběrnic. Tento systém se nazývá matice sběrnic („Bus matrix“), která dovoluje vytvoření několika paralelních cest pro přenos dat.
4
Klíčová vlastnost jádra je přerušovací systém NVIC (Nested Vector Interrupt Controller), který poskytuje standardizovanou strukturu přerušovacího systému. NVIC je schopný ovládat až 240 zdrojů přerušení s možností individuální nastavení priority až o 16 úrovních. Princip nastavení úrovně priority je patrné z tabulky tab. 2.1.2. Názvy v hlavičkách tabulky jsou uvedeny doslova, protože se užívají i v ostatních literaturách nebo zdrojových kódech.
PRIGROUP 4 3 2 1 0
011 100 101 110 111
Binary point (group.sub) 4.0 3.1 2.2 1.3 0.4
gggg gggs ggss gsss ssss
Preempting Priority (Group priority) Bitů Úrovní 4 16 3 8 2 4 1 2 0 0
Sub-priority Bitů 0 1 2 3 4
Úrovní 0 2 4 8 16
Tab. 2.1.2 Systém priorit přerušení
Podle tří bitů sloupce PRIGROUP je možné rozdělit čtyřbitový výběr sloupce Binary point na skupiny (group) a podskupiny (sub). Podle tohoto rozdělení je poskytnut relevantní počet úrovní priorit a podpriorit. V aplikačním programu je potom možné nastavit skupiny s nízkou nebo vysokou prioritou. Ke každé skupině definovat podskupinu, kde je také možné nastavit další úrovně priorit. Tento model je vhodný zvláště do aplikací s potřebou obsluhy velkého množství přerušení.
2.2 Podstata ZigBee® ZigBee® Alliance je aliance společností, které se snaží vyvinout stabilní, cenově nenáročné, nízkopříkonové řešení pro bezdrátově propojené monitorovací a řídicí systémy založené na globálním standardu. ZigBee Alliance v současné době zastřešuje skupinu společností jako Ember, ST Microelectronics, Philips, Schneider Electric, Siemens a další. Jednotlivé vývojové aktivity jsou prováděny specializovanými skupinami. Jako například skupina, zabývající se pouze řešením síťového zabezpečení, návrhem aplikačních profilů atd. Pokud chce nějaká společnost nabízet své vlastní produkty na bázi Zigbee technologie, musí se stát členem ZigBee Alliance. Společnost Ember je členem již od založení ZigBee Alliance a její produkty tvoří základní platformu pro testování a certifikaci všech vydaných revizí standardu. Protože ZigBee se vydala směrem vývoje jednotného standardu s podporou kooperace jednotlivých zařízení, je standard navržen od fyzické vrstvy po aplikační, jak zobrazuje obr. 2.2.1 podle [5]. Pro fyzickou a MAC vrstvu byl přijat standard IEEE 802.15.4. 5
Obr. 2.2.1 ZigBee architektura
Ember poskytuje standardní síťové API (Application Programming Interface) založené na ZigBee specifikaci pro tři různé platformy (EM2420, EM250, EM260). Společnost ST Microelectronics přejímá řešení Ember na své produkty. Jeden z nich, který je také využíván pro tuto práci je síťový procesor SN260 osazený na komunikačním modulu SPZB260.
2.2.1 Základní charakteristika ZigBee aplikací ZigBee se zamýšlí především nad cenově nenákladným a nízkoodběrovým řešením konečných produktů. Cílem je vnést tuto technologii do systémů domácí automatizace, senzorových sítí, automatizace budov, hlídání osobního zdraví a další. Hlavní rysy Zigbee sítí Nízký odběr – součástky jsou standardně schopné pracovat v bateriové aplikaci i několik let Nízká přenosová rychlost – maximální teoretická rychlost je pro pásmo 2,4GHz 250kb/s Malé nebo rozlehlé sítě – zigBee síť je schopná spravovat teoreticky až 65535 zařízení Dosah – typická zařízení poskytují dosah v jednotkách až desítkách metrů. To je odvozeno od prostředí a použitých nastavení fyzické vrstvy. Jednoduchá instalace a start sítě – ZigBee standard podporuje síťové topologie a jednoduché protokoly k vytváření a připojování sítě na základě automatizovaných mechanizmů.
6
2.2.2 Standard IEEE 802.15.4 Vrstva přístupu k médiu MAC (Medium Access Control) a fyzická vrstva jsou založeny na standardu IEEE 802.15.4. Tento standard je navržen pro pásmo 2,4GHz s přenosovou rychlostí 250kb/s, s rychlostmi 40kb/s v pásmu 900MHz a 20kb/s v pásmu 868MHz. Poslední dvě zmíněná pásma jsou užívána ve Spojených státech amerických. ZigBee vychází z verze standardu 802.15.4–2003. Poslední aktualizace na 802.15.4 – 2006 ještě není v ZigBee zanesena. Nezahrnutou částí standardu 802.15.4 je funkce takzvaných beacon sítí, sítí s garantovanými časovými sloty. MAC vrstva je užita k základním úkonům spojeným s obsluhou zpráv a řízením sítě. V MAC vrstvě jsou zahrnuty mechanizmy pro vytváření a připojování se k síti. IEEE 802.15.4 využívá pro přístup k médiu modifikovanou metodu vícenásobného přístupu s nasloucháním nosné CSMA-CA (Carrier Sense Multiple Access with Collision Avoidance). Více o CSMA-CA na [www.ieee.org].
2.2.3 Prostředky k ZigBee konektivitě Vyřešení konektivity na základě ZigBee vyžaduje implementaci ZigBee radiového systému a asociovaného mikrokontroléru. To může být obsaženo buď v jediné součástce, nebo odděleně. A samozřejmě uživatelskou aplikaci nad ZigBee stackem podle modelu z obr. 2.2.1. Řešením pro ZigBee síťové aplikace většinou bývají podpůrné produkty od vývojových firem, které obsahují základní funkční hardwarovou část a potřebné počáteční softwarové vybavení. Současně jsou dodávány i kvalitní dokumentace, takže návrh ZigBee sítí se stává jednodušším. Stejně tak tomu bude i v této práci, kde jsou využity vzorové aplikace k pochopení obvyklých softwarových konstrukcí. Jak bylo řečeno v kapitole 2.2 bude využit komunikační modul SPZB260.
2.2.4 Typy zařízení v ZigBee sítích Zigbee standard definuje tři typy zařízení a to koordinátor (coordinator), směrovač (router) a koncové zařízení (end device). 2.2.4.1 Koordinátor ZigBee koordinátor (ZC) je zodpovědný za tvoření sítě. Je pověřen výběrem rádiového kanálu a určením extended PAN ID. Po vytvoření sítě koordinátor pracuje jako směrovač (2.2.4.2). V některých aplikacích má koordinátor další funkce vyžadující jedinečnou zodpovědnost a to funkce věrnostního centra (Trust center) nebo síťového manažera. 7
2.2.4.2 Směrovače Zigbee směrovače (ZR) poskytují adresní informace obsažených prvků v síti. Mimo to mohou pracovat jako koncová zařízení, to znamená, že mohou být také zdroji nebo příjemci dat. S rozdílem koncových zařízení nejsou směrovače určeny k práci v režimu spánku a měly by být přítomny po celou dobu funkce sítě. 2.2.4.3 Koncová zařízení ZigBee koncová zaření (ZED) jsou koncovými uzly sítě. Komunikují pouze s jejich rodiči, nemohou zasílat zprávy jiným zařízením, než právě rodičům. ZED se dále rozdělují na tři podskupiny. Sleepy – ZED jsou součástí sítě, ale v tomto režimu nepřijímají povely od nadřazených nódů. Je zachována jejich osobní činnost, například průběžně ukládat data z A/Č převodníku a tato data po časovém úseku poslat do nadřazeného prvku (ZR, ZC). Non-sleepy – Klasické aktivní ZED v síti, které je stále připraveno na příjem povelu od ZR nebo ZC. Mobile – Mobile ZED je modifikací Sleepy ZED navrženo společností Ember. Mobile ZED je uzpůsobené k rychlému přepnutí na jiného rodiče (ZR nebo ZC) a tedy volný pohyb v síti. Tento typ ZED není ve ZigBee stacku EmberZNet podporován.
2.2.5 Topologie ZigBee sítí ZigBee podporuje různé variace síťové topologie. Je třeba uvážit, že vlastní topologie by měla vycházet z aplikace, kde bude nasazena, dále také z vlastností individuálních prvků a očekávaném množství dat, které bude mezi prvky přenášeno. V této kapitole jsou popsány základní topologie sítí podporované standardem ZigBee. Návrh topologie pro aplikaci není striktně dán, mohou být využity i hybridy těchto topologií, nebo jejich kombinace. ZigBee standard definuje pro všechny typy sítí složení prvků v počtu jeden koordinátor, n směrovačů a n koncových zařízení v rámci jedné sítě. 2.2.5.1 Strom (Tree) Stromová topologie je patrná z obr. 2.2.2. Tato topologie je určená především k přiřazování adres, protože poskytuje výhody k aplikaci metod na vyhledávání spojů mezi vždy jedním níže a jedním výše postaveným prvkem v topologii. EmberZNet tuto topologii nedoporučuje ani ji jako koncovou podobu sítě nepodporuje [5], vždy užívá typ mesh.
8
E
E
E
E R
R
C
R
E
E E
C
Koordinátor (Coordinator)
R
Směrovač (Router)
E
Koncové zařízení (End device)
E
E
Obr. 2.2.2 Stromová topologie
2.2.5.2 Síť (Mesh) Sítě typu mesh podporují bezpečnost rádiového přenosu a to v takovém smyslu, že pokud prvek A nemůže poslat zprávu přímo prvku B, v této síti může být doručena zpráva prostřednictvím dalších síťových prvků. EmberZNet podporuje tři typy sítě mesh a to hvězdicový (star) z obr. 2.2.3, plnohodnotnou mesh (full mesh) z obr. 2.2.4 a hybridní mesh z obr. 2.2.5 E E
E
E
E
C
E
E E
R
C E
R
C
R
R
E E
E
E
E
R
R
R R
R
Koordinátor (Coordinator)
R
Směrovač (Router) Koncové zařízení (End device)
E
R
E
C
R
E E
E E
Obr. 2.2.3 Star
Obr. 2.2.4 Full mesh
Obr. 2.2.5 Hybrid
Základní topologie je star. Tato topologie se využívá na krátké vzdálenosti v malých sítích. Full mesh je nejméně citlivá na chyby při doručování, či ztrátě paketů. Díky množství užitých směrovačů, lze zvětšovat dosah sítě. Hybridní topologie je využívána na delší vzdálenosti, většinou se jedná o propojené dílčí sítě s větším počtem centrálních vyhodnocovacích bodů.
2.2.6 Adresování a směrování v sítích ZigBee ZigBee standard poskytuje několik mechanizmů směrování zpráv. Užitý mechanizmus by měl opět vyplývat z požadavků na aplikaci, především očekávanou datovou vytíženost sítě. Typy směrování, které budou popsány, jsou směrování ve stromové topologii (dále „tree routing“), směrování pomocí tabulky adres (dále „table routing“), směrování do všech vybraných zařízení (dále „multicast routing“), směrování do všech zařízení (dále „broadcast routing“) a spousta jednomu (dále „many-to-one“ nebo „source routing“). ZigBee dále
9
rozlišuje dva druhy adresování a to přímé (direct) nebo nepřímé (indirect). Oba typy jsou využívány v metodách směrování. 2.2.6.1 Tree routing Tree routing je založen na postupném získávání adres od uzlů, které se zrovna připojily k síti. Pro tuto metodu je známa a musí být známa struktura sítě. Uzel A, který se zrovna připojuje, vysílá zprávu k nadřazenému uzlu B. Obsahem zprávy bývají síťové adresní údaje A. Nadřazený uzel B si adresní informace uloží do směrovací tabulky a tím je vytvořen spoj mezi A a B. Ve stromové struktuře má obvykle každý uzel vytvořenou směrovací tabulku. 2.2.6.2 Table routing Table routing je odvozen od AODV (Ad-hoc On Demand Distance Vector) protokolu směrování. Uzel může posílat zprávu typu unicast (jednomu jinému uzlu) metodou table routing a to tak, že si předem vyžádá nalezení cesty. Žádost je definována v APS části nastavení zprávy. Tuto cestu si může uložit do své tabulky adres a uchovat tak spojení. 2.2.6.3 Multicast Multicast směrování poskytuje adresování zpráv vybrané skupině uzlů v síti od jediného uzlu. Základem tohoto mechanizmu je nastavená stejná identifikační skupina „Multicast_group“. Uzly, které tuto skupinu nemají nastavenou nebo přijmou zprávu s parametrem jiné identifikační skupiny, tuto zprávu ignorují. 2.2.6.4 Broadcast Broadcast směrování zajišťuje doručení zprávy do všech uzlů ve stejné síti. Většinou se využívá k rozeslání pokynu spánku pro ZED. Aby bylo zajištěno doručení je broadcastová zpráva vysílána vždy třikrát, to ale může vést k degradaci výkonu sítě. 2.2.6.5 Many-to-one Many-to-one routing je jednoduchý mechanizmus získání spojů mezi centrálním bodem a okolními uzly nacházejícími se na následující úrovni v topologii sítě. Použití mechanizmu table routing je svázáno s velikostí směrovací tabulky a rozlehlé tabulky jsou v ZigBee zařízeních nežádoucí. Many-to-one routing využívá centrální prvek sítě, který posílá požadavek na prohledání spojů a vytvoření jednoduché směrovací tabulky v každém směrovači, s uloženou adresou k centrálnímu prvku. 10
V současné chvíli ale centrální prvek nemá informace o ostatních uzlech, pokud jim chce zasílat data, nejprve vysílá požadavek route record a návratovou hodnotu ukládá do tabulky route record table.
2.2.7 ZigBee stack ZigBee standard poskytuje definice několika separátních stacků. Jejich rozdělení je následující. Zigbee 2004 – první vytvořený stack z roku 2004, který se již nepoužívá a ani není podporován. ZigBee 2006 – stack vytvořený v roce 2006 a známý jako ZigBee stack ZigBee 2007 – poslední vydaný stack v roce 2007. Je nazvaný ZigBee PRO stack a je zpětně kompatibilní i s verzí ZigBee stack.
V praxi první nastavení ZigBee PRO stacku iniciuje koordinátor, který k adresování používá stochastické metody, aby došlo k zabránění omezení spojenými se stromovou topologií viz 2.2.6.1. Základní rozdíly a vylepšení proti předchůdci je například nastavení úrovně prostupu multicast zprávy, many-to-one směrování, řešení konfliktů s PANID (identifikátor sítě), asymetrické spojení dvou uzlů či dvě úrovně zabezpečení (standardní a vysoká). V síťovém procesoru SN260 je implementován stack ZigBee PRO. 2.2.7.1 ZigBee profily Kvůli kooperaci a kompatibilitě jednotlivých zařízení jsou navrhnuty takzvané Aplikační profily. Aplikační profil specifikuje vlastnosti aplikačního software. Certifikované Aplikační profily pro ZigBee PRO stack jsou následující. Home Automation (HA) – Definované zařízení pro malé domácí instalace. Commercial Building Automation (CBA) – Definované zařízení pro velké komerční sítě. Advanced Metering Initiative (AMI) – Jednotky pro odečety a spolupráci s domácími zařízeními. Telecom Application (TA) – Bezdrátová aplikace uvnitř telekomunikačních sítí. Wireless Sensor Network Applications (WSN) – Sítě snímacích senzorů. Personal Home Health Care (PHHC) – Monitorování osobního zdraví člověka v domácím prostředí.
11
2.3 Světlo a barvy Barva je vjem způsobený odrazem světla. Světlo dopadá na různé věci, které mají různé vlastnosti. Každý materiál má schopnost část světelných paprsků pohltit a odráží určitou část světla, která se již jeví jako jedna nebo více barev. Světlo je definováno jako elektromagnetické vlnění o různé vlnové délce. Toto vlnění dopadá na tělesa, která obsahují určité pigmenty schopné část vlnění pohlcovat. Odražené vlnové spektrum je zbytkové světlo, které vnímáme již jako určitou konkrétní barvu. Tato barva je odvozena od dominantní odražené frekvence. Bílá barva například odrazí téměř všechno světlo, a proto tvoří bílý vjem. Různé barvy o různých vlnových délkách tedy vznikají ze základních barev základních vlnových délek. Vlnové délky základních spektrálních barev červené, zelené a modré je možno odečíst z obr. 2.3.1 dle [6] a taktéž celé viditelné spektrum, složené ze jmenovaných základních barev.
Obr. 2.3.1 Barevné spektrum a vlnové délky barev
2.3.1 Fotometrické veličiny Důležitým faktorem pro tvorbu barvy je, že lidské oko vnímá mimo barev také jas, resp. svítivost, která odpovídá intenzitě světla. A platí úměra, čím vyšší intenzita světla, tím je zdroj jasnější. Další vlastností barvy se uvádí sytost, která vyjadřuje šířku frekvenčního spektra barvy. Čím užší spektrum barva má, tím je sytější neboli čistší. Světlost barvy je určena poměrem obsahu achromatických složek obsažených ve světle s určitou dominantní frekvencí. 2.3.1.1 Definice základních fotometrických veličin Svítivost vyjadřuje schopnost bodového zdroje vyvolat v daném bodě zrakový vjem. Její jednotkou je kandela. A je definována dle rovnice 12
(2.1)
Světelný tok vysílaný bodovým zdrojem o svítivosti I do prostorového úhlu dΩ v daném směru je definován vztahem (2.2). Jeho jednotkou je lumen.
(2.2)
Jas je zavedený výraz pro plošné zdroje světla. Definovaný podle [7] takto, pokud uvažujeme plošku S na povrchu světelného zdroje, ze které vychází paprsek pod úhlem V v závislosti k normále, pak jasem Lv je nazýván světelný tok vystupující z plošky v tomto směru a navíc vztaženou na jednotkovou velikost plošky viditelnou z daného směru a na jednotkový prostorový úhel. Vysvětluje obr. 2.3.2 dle [7]
Obr. 2.3.2 K definici jasu
(2.3)
Osvětlení je definováno jako světelný tok dopadající na plochu. Jednotkou je lux. (2.4)
Světelná účinnost definovaná jako poměr světelného toku φ a odpovídajícího zářivého toku φe. Zářivý tok udává množství energie nesené zářením v daném směru za 1 sekundu. Jednotkou světelné účinnosti je lumen na watt. (2.5)
2.3.2 Základní barevné systémy Barvy vnímané, rozeznatelné a viditelné lidským okem je možno vytvořit dle spousty postupů. Stavebním prvkem je míchání základních barev daného barevného modelu. Základní 13
a nejznámější barevné modely jsou RGB z obr. 2.3.3 dle [6] a k němu doplňkový CMY. Model CMY, složený z modrozelené (C-Cyan), purpurové (M-Magenta) a žluté (Y-Yellow) je využíván pro filmové materiály nebo pro barevné tiskárny, kdy se barvy odečítají od bílého pozadí. Tento model spadá do kategorie subtraktivního skládání. Systém RGB vychází ze základních spektrálních barev červené (R-Red), zelené (G-Green) a modré (B-Blue). Těmto barvám jsou normou stanoveny vlnové délky. Pro červenou je stanovena λč = 700 nm , pro zelenou λM = 546,1 nm a modrá λM = 435,8 nm dle [8]. Systém RGB vychází se ze skutečnosti, že podkladem nebo výchozí barvou je barva černá, či žádná. Kategorie RGB modelu barev se nazývá aditivní. Tento model bude využit pro algoritmické podklady v RGB lampě.
Obr. 2.3.3 Model RGB
Obr. 2.3.4 Jednotková RGB krychle
Ve skutečnosti mohou být ale veliké rozdíly mezi tím, jaká barva se chce zobrazovat a jaká se opravdu zobrazuje. Chromatický diagram z je množina všech barev rozlišitelných lidským okem, sestavená úřadem (CIE) (International Commission on Illumination) v roce 1931. V tomto diagramu není brán ohled na jas, proto je diagram dvou rozměrný. K matematické definici barevného prostoru, jehož je možno dosáhnout, určuje gamut [9]. Gamutem je dosažitelná oblast barev v určitém barvovém prostoru. Jinak řečeno, jedná se o podmnožinu barev z CIE chromatického diagramu. Lze říci, že chromatický diagram je gamutem lidského vidění. Vnější hranice jsou tvořeny monochromatickými spektrálními barvami, směrem dovnitř jsou barvy viditelné lidským okem. Pro různá technická zařízení, která užívají k reprezentaci barev systém RGB, je gamut vyjadřován pomocí pomyslného trojúhelníku uvnitř chromatického diagramu, jak je znázorněno na obr. 2.3.5.dle [8]. Tento trojúhelník má své vrcholy právě v bodech barev červené, zelené a modré. To znamená, že žádná barva mimo tento trojúhelník nemůže být nikdy pomocí použitých základních barev dosažena, v našem případě zobrazena. Jinak 14
řečeno, pomocí RGB barev nelze vytvořit zelenější zelenou, než je základní zelená "G" barva. Tuto skutečnost musíme uvažovat i u RGB lampy.
Ohraničení dostupných barev
Obr. 2.3.5 Chromatický diagram s vyznačeným názorným gamutem
2.4 Návrh hardwaru 2.4.1 Podstata návrhu RGB lampy Základní funkcí tohoto prvku bude osvětlování interiérových prostor. Zde je uvažováno osvětlení místnosti či její části primárně za tmy či šera. Pro toto osvětlení bude využita jedna barva ze spektra barev. Z tohoto vyplývá, že lampa musí být schopna generovat jednotlivé barvy z barevného spektra v požadované kvalitě. Další ze základních funkcí je možnost připojení do vlastní bezdrátové sítě ZigBee. RGB lampa jako celek bude obsahovat řídící mikrokontrolér. Koncepčně by RGB lampa měla následovat vývojovou desku firmy STMicroelectronics STEVAL-ILL009V5. Externí napájení +12V JTAG
Zdroj napětí +3,3V
Teplotní senzor
ZigBee modul SPZB260
SPI
Řídicí mikropočítač STM32F101CB
4 kanály PWM
4x zdroj proudu ST1S10
Ovládací prvky
Obr. 2.4.1 Blokové schéma RGB lampy
15
Vysoce svítivý RGB modul (4xLED)
2.4.1.1 Zdroj barevného spektra Touto komponentou lampy budou generovány jednotlivé barvy barevného spektra. Pro generaci barvy bude využita metoda aditivního míchání barev, viz předchozí kapitola 2.3.2. Světelný zdroj tedy musí obsahovat minimálně tři základní barvy R, G a B, které lze jednotlivě řídit. K takovýmto účelům se standardně používají výrobky na bázi polovodičových přechodů. Polovodičový přechod, dále již P-N přechod, generuje pásmo spektra na základě jeho chemického složení. Pokud budou umístěné zdroje, jednotlivé P-N přechody dostatečně blízko sebe se správnými vlnovými délkami, lze ho využít pro získání barevného spektra. Zdroj světla se tak stává bodovým zdrojem světla, tedy nedojde k separaci jednotlivých barevných složek, které jsou pro lidské oko jednoduše rozeznatelné. Pro funkci bodového zdroje barevného světla, byl vybrán vysoce svítivý RGGB modul od firmy OSRAM, s označením LEATBA2A. Tento modul obsahuje všechny potřebné barvy pro aplikaci RGB barevného systému. Vzhledem k tomu, že lidské oko je nejcitlivější na vnímání zelené barvy, obsahuje modul 2krát barvu zelenou. Každá z barev je reprezentována vysoce svítivou LED. Vlnové délky jednotlivých barev obsažené na modulu přesně neodpovídají normovaným hodnotám z kapitoly 2.3.2. Nicméně, zadání práce nepožaduje výslednou parametrizaci dosaženého gamutu. 2.4.1.2 Řízení barev Pro generování barvy je třeba správně řídit jednotlivé barevné složky použitého světelného zdroje. Řízením je myšleno regulování výkonu. Pro návrh řízení je třeba znát parametry řízeného objektu. V tomto případě se jedná o vysoce svítivý LED RGGB modul. Na vývojové desce STEVAL-ILL009V5, která by měla sloužit jako referenční bod pro návrh desky RGB lampy, je využito řízení pulzní šířkovou modulací (dále PWM). Regulace výkonu pomocí PWM patří mezi nejúčinnější metody. Navíc je svoji podstatou určena pro digitální techniku. Základní princip vyplývá z obr. 2.4.2. Signál PWM nese informaci o přenášené hodnotě v podobě buď logické 0, nebo logické 1. Konečný výkon je určen střídou, tedy poměrem části periody logické 0 a logické 1. Lze tedy bez problémů regulovat výkon na řízené součástce v rozmezí 0% až 100%. Signál takových parametrů lze obvykle získat z časovacích jednotek řídících mikrokontrolérů, nebo je lze tvořit softwarovým způsobem, kdy je střída počítána
16
implementovaným softwarem a v závislosti na výsledku přiřazený výstupní pin nastaven do požadované hodnoty. Potom se jedná o takzvanou softwarovou PWM.
P0S_100%
thigh/tlow
P0S_0% tlow
I0
thigh
t
Obr. 2.4.2 Závislost střídy a střední hodnoty
Při řízení výkonu pomocí PWM je důležité znát především výkonové parametry řízených jednotek, aby bylo možné určit a rozhodnout o konkrétním způsobu a použití řídicích součástek. Univerzální blokové schéma z obr. 2.4.3 zachycuje základní metodiku návrhu. UZ1 Z1
UZ2
US1
Zdroj
PWM1
M
S1
UZN ZN
Z2 US2
USN SN
S2
USx - napětí na spínacím prvku
PWM2 PWMN
I1
I2
M - řídicí mikrokontrolér Z - zátěž S - spínací prvek
IN
UZx - napětí na zátěži Ix - spínaný proud
Obr. 2.4.3 Obecné zapojení pro řízení PWM
Pro konkrétní návrh řešení regulace výkonu RGB barev je již nutné znát parametry světelných zdrojů. V tomto případě se jedná o vysoce svítivé LED RGB modulu. Modul obsahuje 4 takové LED, jejichž parametry pro návrh, shrnuje tab. 2.4.1. Typ Červená Zelená Zelená Modrá suma
UF (V) IF (mA) 3,4 750 700 4,0 700 4,0 700 2850
P (W) 2,55 5,6 2,8 10,95
Tab. 2.4.1 Elektrické vlastnosti RGB modulu
17
Kde UF
napětí na LED v propustném směru
IF
proudu LED v propustném směru
P
výkon LED při proudu IF a napětí UF
2.4.1.3 Referenční demo deska STEVAL-ILL009V5 Řídicí deska RGB lampy by měla koncepčně vycházet z vývojové desky STEVALILL009V5, kde jsou pro řízení výkonového RGB modulu využity spínací prvky STP04CM05. Blokové schéma interní struktury STP04CM05 zobrazuje obr. 2.4.4 podle [1].
Obr. 2.4.4 Blokové schéma interní struktury STP04CM05
Je patrné, že obsahuje 4 spínací kanály. Každý kanál má stanovenou proudovou hranicí v běžném provozu stanovenou na 400mA. Pokud je třeba regulovat světelný zdroj v podobě RGB modulu, kde každá barva vyžaduje pro plný výkon 700mA, jeden kanál není schopen takový výkon přenést a musí se řadiče STP04CM05 uspořádat v jisté konfiguraci. Tato konfigurace vychází z obr. 2.4.5 podle [1]. Jedná se o paralelní zapojení radičů, kterým jsou docíleny výkonové požadavky.
18
Obr. 2.4.5 Princip regulace výkonu barev na referenční desce STEVAL-ILL009V5
Potřebný proud každé z barev 700mA je rozdělen vždy do dvou kanálů. Žádný z kanálu není přetěžován, protože je vystaven proudu maximálně 350mA. Řešení tohoto typu má limitní použití pro řízení zdrojů světla přesahující hranici 800mA na barvu. V tomto případě lze nalézt další omezení vývojové desky STEVAL-ILL009V5. Potřebné napětí, či proud pro světelný modul dodává jeden spínaný zdroj. Jedná se o step – down konvertor s maximálním výstupním proudem 3A. Tedy pro výkonnější zdroje barev světla, kde hodnota proudu překračuje 750mA pro jednu barvu, je konfigurace z obr. 2.4.5 nedostačující. Základní funkce obvodu je následující. Řídící jednotka, mikrokontrolér, posílá stavová data přes sériové rozhranní SPI (Serial Peripheral Interface) (kapitola 4.5.2) do posuvného registru STP04CM05. Data jsou posouvána bit po bitu do dalšího řadiče v sérii. Když jsou všechna data pro řadiče poslána, vstupním pinem LE (latch) je povolen zápis dat záchytného registru. Následně se v závislosti na datech LED rozsvítí či zhasnou. Zde je užita jistá modifikace softwarové PWM. Při generování nějakého barevného prostoru je také rozhodující parametr počet dosažených barev neboli rozlišení barev z kapitoly 2.3.2. Podle tohoto parametru je mimo jiné určována kvalita a možné použití zdroje barev. V případě, který je zde rozebírán, je počet barev přímo odvozen dle následujících rovnic převzatých z [1]. Pro přiblížení představy výpočtu je přiložen obr. 2.4.6 také z [1]. Rovnice (2.6) určující čas přenosu jednoho bitu prostřednictvím SPI rozhraní. Rovnice (2.7) udává potřebný čas přenosu všech bitů zprávy a rovnice (2.8) je potom výsledným určením počtu úrovní barvy, které je systém schopný generovat.
19
(2.6)
(2.7)
(2.8)
Obr. 2.4.6 Význam proměnných pro výpočet PWM
Metoda softwarové PWM by také mohla narazit na jistá omezení. Použití tohoto principu vyžaduje neustálou výpočetní pozornost řídícím mikrokontrolérem a dodržování striktních časů pro zápis a vyslání dat. To znamená návrat programu do stejného místa v dané okamžiky. Při vykonávání složitějších struktur programů či obsluze množiny přerušení by předešlé nemuselo být dodrženo. A to jak periodicky, či náhodně.
2.4.2 Hardware vysoce svítivé RGB lampy Metoda regulace výkonu barev, užitá v řídicí desce RGB lampy, by se měla zabývat a pokusit se eliminovat omezení diskutované u referenční desky STEVAL-ILL009V5. Hlavní
20
podstatou tedy je navrhnout nový způsob řízení výkonu s ohledem na přizpůsobení se jiným zdrojům světla s jinými parametry. 2.4.2.1 Napájení desky Očekává se, že RGB lampa bude sloužit pro dlouhodobější užití. Tím je myšleno, že bude spuštěna řádově hodiny od zapnutí. Vzhledem k odebíranému výkonu, primárně daného sumou z tab. 2.4.1 musí být užito napájení z distribuované rozvodné sítě. Vzhledem k bezpečnosti a problematice této práce, bude jako napájení sloužit zakoupený síťový adaptér. Výstupní výkon adaptéru je 24W, což bezpečně pokrývá maximální potřeby RGB modulu. Zde je uvažována zanedbatelná spotřeba ostatních komponent řídicího desky. Výstupní napětí adaptéru je UVÝSTmax = +12V a maximální výstupní proud IVÝSTmax = 2A. Jedná se o spínaný zdroj určený pro standardní užití v domácnostech. Toto řešení je dostatečně kompaktní a univerzální, navíc cenově nenáročné. 2.4.2.2 Spínací prvky Pro tento případ odpadly možnosti použití shodných spínacích prvků jako na referenční desce. Použití například samotných spínacích MOSFET tranzistorů, by vyžadovalo pro výkonnější světelný zdroj, výkonově odpovídající společný napájecí zdroj pro modul barev. Řešení vyhovující požadavkům užívá moderní spínané step-down konvertory firmy STMicroelectornics s označením ST1S10. Konvertory budou pracovat jako zdroje proudu a plně nahrazovat jakékoli spínací prvky společně s napájecím zdrojem. Spínaný zdroj ST1S10 je schopný zastat současně funkci spínače, jelikož má vyvedený řídicí pin označený „INHIBIT“. Tento řídicí pin slouží k povolení nebo potlačení operačního stavu zdroje. Operačním stavem je myšlena konverze vstupní elektrické energie do výstupního nastaveného proudu. Potlačení naopak říká, že zdroj nepřevádí či nedodává žádný proud. Operační stav se odvíjí od logické úrovně na vstupu INHIBIT. Úroveň log. 1 uvede konvertor do operačního stavu, log. 0 ho vypne. Tedy po přivedení PWM signálu na vstup INHIBIT, bude ovládána střední hodnota proudu v rozmezí 0%-100%. Výkon je proudu úměrný to znamená, že je navržena regulace výkonu podle požadavků. Konvertory budou použity v podobě čtyř samostatných budičů LED. Každý konvertor pro jednu barvu. Výstupní proud je jednoduše nastavitelný volbou externích součástek. To je využito pro získání univerzální regulace do IVÝSTmax = 3A na jedinou barvu použitého světelného zdroje. Hranice IVÝSTmax = 3A je dána dle [10] maximálním výstupním proudem při 21
dostatečné elektrické energii dodané na jeho vstup. Při konfiguraci obvodu na IVÝSTmax by bylo opět vhodné přehodnotit výkon napájecího adaptéru na výkonnější. Vstupní operační napětí konvertorů je stanoveno v rozsahu (2,5–18)V dle [10]. Rozsah tedy plně vyhovuje parametrům napájecího adaptéru. Výhodou jsou jistě i četné ochranné obvody a systémy užité v interní struktuře konvertoru. 2.4.2.3 ZigBee konektivita Vzhledem k tomu, že RGB lampa musí být nějakým způsobem připojitelná do bezdrátové sítě ZigBee, musí obsahovat takový prostředek, který to umožní. V současné době by existovalo spoustu variant, jak to provést. Příkladem jsou například koncové vývojové kity, které poskytují úplnou softwarovou i hardwarovou podporu řešení ZigBee. Dalším příkladem mohou být hotové funkční moduly, předpřipravené k začlenění do uživatelské aplikace. Jeden takový bude užit i pro zajištění konektivity do ZigBee sítě u RGB lampy. Podklady pro zpracování předurčují použití komunikačního modulu SPZB260 od firmy STMicroelectronics. Modul poskytuje kompletní řešení fyzické vrstvy (PHYsical layer) a vrstvy přístupu k médiu (MAC) sítě ZigBee. Modul sám o sobě nic nevykonává, potřebuje nadřazený řídicí mikrokontrolér, se kterým komunikuje prostřednictvím sběrnice SPI. ZigBee modul vyžaduje pro svou práci dodané napětí +3,3V s maximálním odběrem 40mA dle [11]. Napěťové úrovně signálových vodičů jsou také stanoveny maximálně na UMAX = +3,3V. ZigBee modul je možno nastavit do různých pracovních režimů, jako hluboký spánek (deep sleep) nebo odpojení napájení periferiím, které ho nepotřebují (power down). V těchto režimech je odběr proudu řádově do jednotek μA. Nízký odběr je využíván hlavně u bateriových aplikací, kde délka provozu hraje zásadní existenční roli. 2.4.2.4 Řídicí mikrokontrolér Požadavkem pro návrh je využít ve zpracování mikrokontroléry z rodiny STM32 respektive STM32F. Druhů jednotlivých modifikací mikrokontrolérů z rodiny STM32F existuje několik desítek. Výběr ujasní sumace potřebných periferií a vlastností z předchozích kapitol. Řízení barev bude zprostředkováno PWM signálem ze čtyř různých kanálů. K tomuto účelu bude využita periferie čítače/časovače, kterou mikrokontroléry STM32 obsahují standardně, v 16ti bitovém rozlišení na kanál. Další jednotky čítače/časovače by mohly být využity pro systémové účely, jako generování přerušení, nulování systému watchdog, atd.. Další potřebnou periferií je rozhraní SPI pro komunikaci se ZigBee modulem. Měření 22
pracovní teploty RGB modulu vyžaduje 1 kanál analogově číslicového převodníku. Manuální nastavování barvy a jasu pomocí potenciometrů spotřebuje další dva nezávislé měřicí kanály A/Č převodníku. Nejblíže vyjmenovaným podmínkám odpovídá mikrokontrolér s označením STM32F101RB. 2.4.2.5 Napájení řídicí části Do řídicí části RGB lampy patří samozřejmě zvolený jednočipový mikrokontrolér a ZigBee modul. Oba mají shodné napájecí napětí a to UNAP = +3,3V. Pro řídicí část bude tedy vhodný zdroj s možností nastavení nebo s fixní hodnotou výstupního napětí UVÝST = +3,3V. Maximální proudový odběr je dán součtem maximálních vstupních proudů mikrokontroléru a ZigBee modulu. Vzhledem k budoucímu užití několika signalizačních LED, které odebírají cca 10mA, je možné naddimenzovat parametr výstupního proudu na IVÝST
= 150mA.
Výstupní napětí bude regulováno z napětí UVÝST = +12V adaptéru. Rozsah vstupního napětí musí zahrnovat zmíněnou úroveň. Z předešlých podmínek byl za vhodný zdroj vybrán stepdown konvertor L5980.
2.4.3 Dálkové ovládání Dálkové ovládání bude sloužit k nastavování 1 až cca 10 RGB lamp prostřednictvím sdílené sítě ZigBee. Nastavením je primárně myšlena řízená regulace jasu, deterministické nastavení barvy, případně pokyny pro vypnutí či zapnutí použitých RGB lamp. Jako nastavovací elementy by měly být navrženy prvky vhodné pro užití metody kapacitních snímačů dotyku. Blokové schéma vystihuje obr. 2.4.7. JTAG
Ovládací prvky Wheel
ZigBee modul
Slider
SPI
Buttons Další pokyny
SPZB260
8 měřicích kanálů
Řídicí mikropočítač STM32F101CB
I2C S-TOUCH STMPE821
Zdroj napětí +3,3V
Obr. 2.4.7 Blokové schéma dálkového ovládání
23
2.4.3.1 Kapacitní snímače dotyku Kapacitní snímače dotyku jsou nabízeny v podobě integrovaných obvodů. Jejich princip spočívá v měření kapacity na vstupech obvodu. Těchto vstupů může mít obvod v řádech jednotek. Vstupy se zásadně připojují vodivou cestou na plochy definovaných rozměrů. Připojením je možná detekce změny kapacity ve větší míře a hlavně deterministicky. Změnu kapacity vyvolává externí objekt, který se přibližuje či se dotýká. Vytvořenou plochu lze nazývat kapacitní senzor. V této práci bude využito tří typů senzorů. Pro ovládání jasu bude využito způsobu imaginárního posuvného rezistoru („Slider“), kde jezdec je tvořen prstem uživatele a odporová dráha speciálním motivem na DPS. Motiv se skládá ze tří dílčích ploch a využívá tři měřicí vstupy kapacitního snímače. Výsledkem použití by mělo být periodické získávání hodnot 0 – X, kde X představuje dosažitelné rozlišení poloh objektu na senzoru vzhledem k jeho velikosti. Očekává se 23 až 24 úrovní. Pro řízení barev bude využito kruhového senzoru („Wheel“), který pracuje na obdobném principu. Je složen taktéž z tří dílčích ploch. Výhodou kruhového senzoru je teoreticky nekonečné získávání hodnot bez přerušení. Přerušením je myšleno vzdálení řídicího objektu na vzdálenost, kdy kapacitní snímač vyhodnotí, že není v okolí žádný řídicí objekt. Kruhový senzor by měl dosáhnout rozlišení poloh objektu na senzoru mezi 25 - 26. Pro vypnutí a zapnutí slouží kapacitní senzory podoby kruhové plochy jistého průměru. Budou užity dva. Každý z nich využívá jednoho měřicího kanálu kapacitního snímače. Senzor podoby kruhu je vhodné užít k nahrazení tlačítka. Z předešlého je patrné, že musí být vybrán kapacitní snímač s alespoň osmi měřicími kanály. Tomu odpovídá STMPE821, který je opět vyráběn firmou STMicroelectronics. Kapacitní snímač STMPE1208S, který měl být aplikován podle požadavků zadání, obsahuje 12 měřicích kanálů a nebyl by plně využit. Funkce obou je shodná. Napájecí napětí vychází z [12] a je stanoveno na UNAP = (2,7 3,3)V. Kapacitní snímač potřebuje ke své činnosti nadřazený mikrokontrolér. Komunikace mezi nimi bude probíhat po sériovém rozhraní I2C (Inter-Integrated Circuit) viz kapitola 4.8.2. 2.4.3.2 ZigBee konektivita Připojení do bezdrátové sítě ZigBee bude zajišťovat opět ZigBee modul SPZB260. Stejný modul jako v RGB lampě. Jednak je užití požadavkem zadání a jednak po správné konfiguraci vyhovuje i pro zařízení s nízkým odběrem proudu, což je nutná podmínka pro realizaci dálkového ovládání s dlouhou dobou výdrže.
24
2.4.3.3 Řídicí mikrokontrolér Jako řídicí mikrokontrolér bude využit opět mikrokontrolér z rodiny STM32F. Ke komunikaci s kapacitním snímačem musí obsahovat I2C rozhraní a opět SPI pro ZigBee modul. Dálkové ovládání je koncipováno jako bateriové zařízení. Tato podmínka vyžaduje mikrokontrolér s podporou úsporných módů. Účel splní mikrokontrolér shodný s typem z RGB lampy, tedy STM32F101CB. 2.4.3.4 Napájecí zdroj Dálkové ovládání bude napájené primárními bateriemi. S ohledem na kompaktnost a nabízenou kapacitu v závislosti na velikosti, jsou vybrány dvě baterie velikosti AA. Tyto v sériovém spojení a nabité poskytují napětí buď UVÝST = 3,0V, to se týká alkalické verze. UVÝST = +2,4V poskytnou nabíjecí akumulátory například typu NiCd a NiMh. Užívání dálkového zařízení také způsobí pokles napětí baterií. Mikrokontrolér pracuje od napětí +2V [13], kapacitní snímač od +2,7V. Z uvedeného rozsahu napájecích napětí, zvláště kapacitního snímače, je patrné, že napětí akumulátorů by se mohlo lehce dostat pod úroveň povoleného rozsahu. Problém řeší step-up konvertor, který je schopen ze vstupního napětí UVST = (0,6 5,5)V poskytnout na výstupu napětí UVÝST = +3,3V. Maximální výstupní proud IOUTmax =500mA plně pokrývá proudové potřeby dálkového ovládání.
2.4.4 Časovací jednotka Časovací jednotka bude využívána k časově závislým nastavením v síti. Primární úkol je dle nastaveného času uživatelem, provést odpovídající operaci například vypnutí RGB lampy, nebo nastavit barvu. Základní hardwarová koncepce je patrná z obr. 2.4.8. JTAG
ZigBee modul
SPI
Ovládací prvky
SPZB260
Řídicí mikropočítač STM32Fxx
LCD displej
Zdroj napětí +3,3V
Obr. 2.4.8 Blokové schéma časovací jednotky
25
Pro komunikaci s uživatelem by měla obsahovat zobrazovač v podobě LCD displeje. Možnosti nastavení poskytují jednoduché ovládací prvky, buď v podobě mechanického joysticku, tlačítek nebo řešení s využitím kapacitního snímače dotyku. Možnost připojení k síti standardně zajistí ZigBee modul SPZB260. K napájení bude opět vhodnější užít bateriové články. Na hardwarový model, popsaný výše téměř dokonale pasuje využití vývojového modulu Raisonance označený Primer2. Podrobná dokumentace je dostupná na internetových stránkách http://www.stm32circle.com/resources/stm32primer2.php. Primer2 však neobsahuje ZigBee modul, ale je přizpůsobený k hardwarovému rozšíření, mimo jiné i o periferie komunikující po sběrnici SPI. Návrhem modulu DPS pro osazení Zigbee modulu a s přizpůsobením výstupnímu konektoru na Primer2, bude relativně prostou cestou dosažena kompletní hardwarová koncepce.
2.4.5 USB zařízení Připojená zařízení do ZigBee sítě by mělo být možné ovládat i běžným PC (osobní počítač, či notebook). Z počítače budou posílána data do USB zařízení, které je zpracuje. Standardizované připojení k počítači zajistí užití sběrnice USB. Zařízení by mělo být konstrukčně velice jednoduché a rozměrově kompaktní. Pro připojení k USB sběrnici musí deska obsahovat USB konektor typu „A“. Konektivitu k síti ZigBee klasicky vyřeší ZigBee modul SPZB260. Zařízení bude opět obsahovat řídící mikrokontrolér z rodiny STM32F, který obsahuje periferie SPI a USB. Potřebné napájení součástek je UNAPmax = +3,3V. Sběrnice USB sama poskytuje napájecí napětí UNAP = +5V a umožní odebrání dostačeného proudu. Při použití vhodného lineárního regulátoru napětí, lze snadnou cestou získat potřebné napájecí napájení použitých komponent. Předešlé informace dovolují použít jako USB zařízení vývojovou desku označenou STEVAL-IFS013V2. Funkční modul je předurčen pro práci se sítí ZigBee a obsahuje všechny potřebné komponenty[14].
3 Hardwarové funkční bloky Tato kapitola se zabývá konkrétním řešením hardwarové části jednotlivých zařízení, vyvíjených pro systém inteligentního domovního osvětlovače. Popisuje jednotlivé komponenty, objasňuje jejich použití, případně vysvětluje funkci použitých periferií.
26
3.1 Společné komponenty V této podkapitole jsou rozebrány komponenty společné pro všechny navržené zařízení pro Inteligentní domovní osvětlovač.
3.1.1 Mikrokontrolér STM32F101CB Zvolený mikrokontrolér STM32F101CB kategoricky spadá do řady, označované STM©, „access line“. Tyto mikrokontrolér y disponují výkonným jádrem ARM Cortex™-M3 a rozmanitou nabídkou dostupných periferii. Pro naše zařízení bude vyhovovat pouzdro v 48pinovém provedení s následujícími rysy. Základní rysy: 32-bitové jádro ARM Cortex™-M3 harvardské architektury s RISC instrukční sadou maximální frekvence 36MHz dosažitelná násobičkou PLL externího nebo interního zdroje hodin. výpočetní výkon 1.25 MIPS/MHz Napájecí napětí UNAP = 3,3V, v interní struktuře obsahuje regulátor napětí pro jádro Cortex-M3. spotřeba cca 0,5mA/MHz. Při užití interního RC oscilátoru a Sleep módu je možné snížení odběru pod 500μA a to v případě běhu všech periferií. S neaktivními periferiemi spotřeba ještě klesá. násobení a hardwarové dělení v 2 7 cyklech [4] 12-bitový 10-kanálový A/Č převodník s externím napájením a rozsahem vstupního napětí (0 3,6)V. 3x 16-bitová jednotka čítače/časovače s 16-bitovou předděličkou. Jednotky je možné konfigurovat v módu zachytávání vstupních signálů do záchytných registrů (input capture), generování výstupních signálů podle nastavených komparačních registrů (output compare) či PWM módu pro generování PWM signálů. Každá z jednotek obsluhuje 4 kanály. 2x periferie sériové sběrnice SPI o maximální rychlosti 18Mb/s v plně duplexní komunikaci. 2x periferie sériové sběrnice I2C podporující standardní rychlostní mód do fMAX = 100kHz, i rychlý mód do fMAX = 400kHz v plně duplexní komunikaci. 3x rozhraní USART podporující 4,5Mb/s rychlost v plně duplexním režimu 128KB Flash paměti programu 27
16KB SRAM paměti dat 37 I/O pinů na 4 portech A,B,C,D implementované SWJ rozhraní (Serial Wire JTAG). Tímto je umožněno snadné ladění programu, jako krokování, breakpointy, atd..
3.1.2 ZigBee modul SPZB260 ZigBee modul je koncová modulová jednotka určená k zjednodušení vývoje aplikačního hardware pro síťová ZigBee zařízení. Základní rysy: UNAP = 3,3V Æ 3,3-voltová logika Maximálně odebírá cca 40mA a minimum proudu je stanoveno hranicí cca 1μA Je osazen 16-bitovým jednoúčelovým síťovým ZigBee® mikrokontrolérem s jádrem XAP2B od firmy STMicroelectronics® SN260. implementovaný EmberZNet™ ZigBee® stack verze ZigBee-PRO obsahuje 2,4GHz přijímač/vysílač (transceiver) se vstupně/výstupními úrovněmi signálu podle IEEE 802.15.4. citlivost přijímače a výstupní výkon lze nastavovat v hodnotách daných rozsahem dle [15]. To částečně umožňuje řešení problémů s dosahem sítě mezi jednotlivými zařízeními. Filtrovací mechanismus přijímače bezpečně ignoruje vysílání zařízení na bázi Bluetooth či IEEE 802.11g a zaručuje tak s nimi bezkolizní koexistenci. Modul poskytuje fyzickou vrstvu (PHY) a vrstvu přístupu k médiu (MAC) pro standard IEEE 802.15.4 ZigBee. komunikace s nadřazeným systémem (řídicí mikrokontrolér) přes rozhraní SPI do rychlosti 5Mb/s. výstup HOST_INT pro generování přerušovacího signálu do nadřazeného systému vyvedené rozhraní SIF (Serial Interface) mimo jiné, pro přehrání verze stacku, zaručuje snadný přechod na jeho novější verze. Jako hodinový signál slouží osazený 24MHz krystalový oscilátor. Tento module je dostupný ve stavu osazené DPS velikosti 25x13x3mm..
28
3.1.3 Sběrnice SPI Sběrnice SPI se využívá pro komunikaci se ZigBee modulem. Používá se poloduplexní přenos. To však nic nemění na hardwarové konfiguraci, která musí být navržena pro plně duplexní přenos. To znamená, že využívá k přenosu dat 4 vodiče. Dva řídicí signály, synchronizační signál hodinového signálu (CLK) a signál pro výběr zařízení na sběrnici. Dále vodič pro přenos dat od nadřazeného mikrokontroléru k ZigBee modulu (MOSI), vodič pro přenos dat z modulu do mikrokontroléru (MISO). Příklad poloduplexního přenosu dvou bytů je patrný zobr. 3.1.1 podle [11]
Obr. 3.1.1 Průběh přenosu dat po SPI mezi STM32 a SPZB260
Z obrázku je také patrné, že jako doprovodný signál slouží nHOST_INT. Tento signál je řízen ZigBee modulem a generováním logické „0“ uvozuje přítomnost nových dat na sběrnici. Mezi vyslaným příkazem mikrokontrolérem a odpovědí se vyžaduje předepsaná čekací doba [11]. Stejně tak přesné definice časových intervalů spojených se sběrnicí SPI je uvedeno v [11].
3.2 RGB lampa Tato podkapitola se zabývá zapojeními použitými v návrhu řídicí desky RGB lampy a uvedenými výpočty konkretizuje použité komponenty pro sestavení.
3.2.1 Napájecí zdroj řídicí části Jak bylo uvedeno v kapitole 2.4.1 základní stavební prvek zdroje je step-down konvertor L5980. Jedná se o spínaný zdroj s rozsahem vstupního napětí Vvstupní = (2,9 18)V. Zvládá dodat do obvodu proud o maximální hodnotě 700mA. Výstupní napětí je závislé na volbě externích součástek v podobě zpětnovazebního děliče napětí a lze navolit od 0,6V do Vvstupní..
29
U1 8 3 2 6 C3
10uF/25V
68nF
OUT
SY NCH FSW
7 9 4
C2
L1
VCC INH
GND EXPPAD COMP
VIN
FB
D2 STPS2L40UF
5
C1
R2 4.99K L5980 R5 3K9
R3 100K
VCC
1
R4 180R C5 10nF
C6 150pF
22uF/25V C4 3.3nF
R6 1.1K
Obr. 3.2.1 Zapojení zdroje L5980
Základní frekvence spínání činí 250KHz, kterou je možno zvednout až na 1MHz. Konvertor obsahuje ochranu proti přehřátí a přetížení. V RGB lampě je využit v konfiguraci převodu vstupního napětí +12V na +3,3V se základní pracovní frekvencí. Zapojení je vychází z [4] a je zobrazeno na obr. 3.2.1.
3.2.2 Zdroje proudu – drivery LED Podle kapitoly 2.4.2.2 slouží k napájení vysoce svítivého RGB modulu čtveřice spínaných step-down konvertorů ST1S10. Rozsah vstupního napětí konvertorů je (2,5 18)V. Výstupní napětí je opět dáno hodnotami externích součástek, které umožňují volit mezi 0,8V až 85% z Uvstupní. ST1S10 je schopný dodat výstupní proud 3A. Základní frekvence spínání činí 900kHz. Interní architektura obsahuje ochranné obvody proti přehřátí, zkratu výstupních svorek a proudovému přetížení. Pro
buzení
vysoce
svítivých
LED
jsou
zdroje
navrženy
jako
zdroje
proudu.V porovnání s předchozím řešením na vývojovém modulu STEVAL- ILL009V5 se společným zdrojem napětí 4V, má řešení separátních zdrojů proudu jisté výhody. Každá LED potřebuje k plnému výkonu proud 700mA a napětí pro dané barvy, dle tab. 2.4.1, která jsou různá. Pro dosažení správného napětí musí být potom zařazeny do série s LED odpovídající rezistory, které zapříčiňují další výkonové ztráty v podobě tepla. Při použití zdrojů proudu definovaný proud způsobí pouze potřebné napětí na P-N přechodech LED a ztráty elektrické energie zapříčiňuje výhradně spínací tranzistor FET uvnitř zdroje ST1S10. Další výhoda je možnost konfigurace pro výkonnější zátěže. V porovnání se STEVAL- ILL009V5 by ji deska RGB lampy výkonově 4x předčila. Schéma zapojení je patrné z obr. 3.2.2.
30
U2 6
PWM_R1
2 1 R7 13K
L2
VIN_SW INH Vin_a
AGND SYNC PGND EPAD
VIN
SW VFB
3.3uF
7
Anode
3
4 5 8 9
ST1S10PHR
+ C7
C8 C9 10uF/25V 100nF
C10 100nF
10uF
D5 TS822
R10
R11
8k2 1%
2k2 1%
Cathode R8 R
R9 0R5
Obr. 3.2.2 Zapojení zdroje ST1S10
Základní funkce obvodu je následující. Konvertor U2 má vyvedený „řídicí“ pin označený INH. Na tento pin je přímo přiveden PWM signál z řídicího mikrokontroléru. V závislosti na stavu úrovně tohoto signálu, zdroj konvertuje (log. „1“) či nekonvertuje (log. „0“). Tím je dosažena procentuální hodnota výstupního proudu 700mA LED odpovídající střídě vstupního PWM signálu. LED je připojená mezi návěští „Anode“ a „Cathode“. Zdroj musí mít zavedenou zpětnou vazbu k snímání požadované výstupní hodnoty. K tomu je určen vstup VFB. Hodnota 800mV na vstupu VFB je rozhodující pro řídící logiku, zda dodávat více nebo nedodávat elektrickou energii na výstup. Když je hodnota napětí pod 800mV dodává, když nad 800mV nedodává. Aby bylo na zpětnovazební vstup přivedeno správné napětí odpovídající proudu 700mA, slouží snímací rezistor R9 společně s děličem z R10 a R11. Jako referenční napětí děliče slouží výstup napěťové reference D5. R8 není zapojen. Princip soustavy uvedených součástek je patrný z následujících obrázků a objasnění hodnot součástek určují vztahy (3.1) a (3.2).
R1 8k2
2,5V
UD5
R2 2k2
R1 8k2
UFB ≈ 0,45V 2,5V
UD5
UFB ≈ 0,8V
R2 2k2
cathode ILED = 0A
anode
ILED = 0,7A
US
0V
US ≈ 0,35V
RSNÍMACÍ 0R5
RSNÍMACÍ 0R5
Obr. 3.2.3 Zpětná vazba – bez LED
Obr. 3.2.4 Zpětná vazba – s LED
31
Pro zpětnovazební napětí bez připojené diody je UFB dáno vztahem.
(3.1)
Pro zpětnovazební napětí s připojenou diodou je UFB dáno vztahem. (3.2)
3.2.2.1 Dosažené hodnoty s použitým zapojením Následující obrázky zachycují chování systému řízení vysoce svítivých LED. Pro demonstrační účely jsou zobrazeny hodnoty z jednoho budicího kanálu. Je využit kanál červené LED. Měření probíhalo na 4-kanálovém digitálním osciloskopu Tektronix TDS5104B se zapnutou akvizicí. To způsobuje zobrazení signálů v barevném podání se závislostí na četnost výskytu úrovně signálu v daném místě a čase.
Obr. 3.2.5 Průběh řídicího signálu a výstupního proudu
Obr. 3.2.6 Max proud diodou
Základní průběh vstupního PWM signálu do INH pinu řízeného zdroje proudu a výstupní průběh proudu LED diodou je patrný z obr. 3.2.5. Jako triggerovací vstup je použit signál PWM na kanálu 4. Kanál 2 je proud měřený proudovou sondou na přívodním vodiči k anodě LED. Kurzory jsou nastavené k zachycení frekvence vstupního signálu.
32
Obr. 3.2.7 Trvání úrovně log. 0 v PWM signálu s maximální střední hodnotou
Obr. 3.2.8 Trvání nulového proudu po úrovni log. 0 v PWM signálu
Obrázek obr. 3.2.6 zachycuje maximální hodnotu proudu, kterou je zdroj schopný dodat v aktuální konfiguraci podle schématu z obr. 3.2.2. Maximální hodnota činí 800mA, což je v pořádku, protože povolená hodnota je 2000mA dle [17]. Jako střední hodnota proudu je očekáván ISTŘ =700mA. Střední hodnota proudu označená v popiscích Mean(C2) činí 615mA. Střední hodnota proudu byla změřena ještě automatickým multitimetrem FLUKE189, který ukazoval 682mA. Rozdíl je způsobený nejspíše tím, že přívodní vodič k LED je řádově průměru 1mm. Otvor měřicí proudové sondy přibližně 5mm a vzduchová mezera pravděpodobně způsobuje útlum citlivosti na měřený signál. Z obr. 3.2.6 jsou dále patrné periodické „výpadky“ proudu. Ty jsou způsobené vlastnostmi jednotky čítače/časovače ve spojení se zpožděním startu konvertoru. Délka úrovně log. 0 je patrná z obr. 3.2.7. Časový výpadek proudu zobrazuje obr. 3.2.8. Další odchylky od požadovaných 700mA mohou být způsobeny tolerancemi hodnot zpětnovazebních rezistorů, popřípadě idealizací výpočtu, kdy není uvažován vstupní proud vstupu zpětné vazby a další. obr. 3.2.9 zachycuje čas, který potřebuje ST1S10 k přechodu z neaktivního do aktivního režimu. Potřebný čas je Δt = 303,8μs. Tím je také určena maximální frekvence signálu PWM, kterou popisuje rovnice (3.3). Tato rovnice vychází z hodnot zobrazovaných na obr. 3.2.9.
(3.3)
33
Obr. 3.2.9 Časové zpoždění startu ST1S10
3.2.2.2 Vlastnosti všech kanálů Aby nedošlo ke zničení jednotlivých LED, byly testovány a měřeny všechny výkonové kanály. Výsledky zobrazuje tab. 3.2.1. Zdroj na DPS Barva LED Výstupní proud IVÝST (mA) U2 Červená 682 U3 Zelená 1 676 U4 Zelená 2 679 U5 Modrá 688 Tab. 3.2.1 Naměřené hodnoty proudu jednotlivých kanálů
Dokonalé nastavení výstupního proudu by bylo reálné při použití nastavovacího trimeru místo dvou pevných rezistorů ve zpětné vazbě. Ovšem pokud je diskutováno společně s tím o ceně, řešení dvojicí rezistorů je i přes uvedené vlastnosti přijatelnější.
3.2.3 Chlazení tepelných zdrojů Na řídicí desce RGB lampy existují dva zdroje tepelné energie. První minoritní je složen ze čtyř zdrojů ST1S10, na jejichž interních spínacích tranzistorech vzniká tepelná energie úměrná spínanému proudu. Odvod tepla ze zdrojů je zajištěn teplovodivou ploškou umístěnou zespod jejich pouzder. Plošky mají potenciál země. Odvod tepla z plošky je zprostředkován pájeným spojem do rozlité vrstvy mědi na plošném spoji. Druhý, majoritní, zdroj tepla je vysoce svítivý RGB modul. Základní nosná destička modulu je z hlediska dobré tepelné vodivosti vyrobena z materiálu na bázi hliníku a je přizpůsobena k uchycení na chladicí těleso. Volba z následujícího náhradního tepelného obvodu. 34
chladícího
elementu
vychází
TJ
RthJ-C
TC
RthC-A
TA
Obr. 3.2.10 Náhradní tepelný obvod RGB modul - chladič
Kde TJ
teplota spoje polovodičového čipu LED (°C)
TC
teplota spoje základní destičky modulu a chladiče (°C)
TA
teplota okolí kolem chladiče (°C)
RthJ-C teplotní odpor mezi čipem LED a základní destičkou (°C/W) RthC-A teplotní odpor chladiče (°C/W) Pro správný návrh potřebného chladiče jsou rozhodující celkové teplotní ztráty, které bude muset chladič pojmout. Celkové ztráty na RGB LED modulu při maximálním výkonu jsou dány následující rovnicí.
(3.4)
Kde PTOT
celkové výkonové ztráty (W)
I
hodnota konstantního proudu jednotlivých LED v propustném směru (A)
VfRED úbytek napětí na zelené diodě při proudu I (V) VfBLUE úbytek napětí na zelené diodě při proudu I (V) VfGREEN
úbytek napětí na zelené diodě při proudu I (V)
Volba chladiče spočívá ve stanovení velikosti jeho maximálního teplotního odporu RthC-A. To lze spočítat ze vztahu (3.5). Použité proměnné odpovídají popisu z náhradního schématu obr. 3.2.10.
(3.5)
Pro aplikaci RGB lampy jsou použity pro výpočet následující hodnoty, založené na katalogových údajích v [17]. TJ = 80°C, TC = 50°C, TA = 30°C, RthJ-C = 5 °C/W a PTOT = 12W. Po dosazení hodnot vychází, že teplotní odpor chladiče nesmí být větší než cca 3°C/W. Tomuto požadavku vyhovuje chladič podoby válcového žebrovaného profilu s označením SK
35
569 od firmy Fischer elektronik. Teplotní odpor je pro výšku válce 37,5 mm podle charakteristiky z [18] mezi (1,3– 1,6)°C/W . 3.2.3.1 Teplotní ochrana RGB LED modulu RGB LED modul obsahuje pro měření teploty integrovaný NTC termistor. Kontakty termistoru jsou vyvedeny piny 5 a 6 připojovacího konektoru. Termistor je v návrhu zapojen s rezistorem R37, tak že tvoří odporový dělič a výstupní napětí je funkcí teploty. Použité zapojení je na obr. 3.2.12. Průběh rezistivity udává obr. 3.2.11 dle [17] a popisuje ho matematicky rovnice (3.6). Matematický popis křivky je důležitým při určování převodních hodnot z teploty na přesný odpor RNTC.
VCC J3 R37 47k AD_TEMP_SENSE
G1_Cathode G1_Anode B1_Anode B1_Cathode G2_Cathode G2_Anode R1_Anode R1_Cathode
RGGB modul
1 2 3 4 5 6 7 8 9 10
NTC
CON10
Obr. 3.2.11 Závislost rezistivity NTC termistoru na teplotě
Obr. 3.2.12 Zapojení termistoru pro měření teploty
(3.6)
Kde RT
výsledná rezistivita NTC v Ω při požadované teplotě T v K
RN
tabulková hodnota rezistivity v Ω dle [17] vztažená k teplotě TN v K
B
konstanta materiálu užitého v NTC podle [17]
Výstup z odporového děliče je přiveden na vstup A/Č převodníku. Měřené napětí je funkcí teploty. Rezistor je vybrán z hodnotou R37 = 47000Ω. Podle (3.7) lze určit napětí, které je měřeno A/Č převodníkem. Rozsah převodníku je 12bitů. V tabulce jsou vyneseny základní transformační hodnoty k určení maximální pracovní teploty. Pro výpočet RNTC je využito vztahu z [17].
36
(3.7)
Podle tabulky tab. 3.2.2 určení maximální teploty rgb modulu, konkrétně prvního a posledního sloupce, je v softwarovém vybavení nastavena hranice bezpečné teploty. RNTC (Ω)
Teplota (°C) 72 80
Napětí na A/Č (mV)
Výsledek převodu A/Č převodníku
1621 115 1171 80 Tab. 3.2.2 Určení maximální teploty RGB modulu
137 100
3.2.4 Manuální nastavování jasu a barvy Pro manuální nastavení jasu a barvy je užito dvou shodných potenciometrů o hodnotách RPOT = 10kΩ. Jsou zapojené opět, jako děliče napětí viz obr. 3.2.13. Jezdci přivádí na separátní měřicí vstupy A/Č převodníku napětí (0 3,3)V, z kterého je softwarovou metodou vyhodnocena odpovídající proměnná jasu či barvy. VCC
VCC
R31 POT R32 56R
R33 POT R34
AD_COLOR_SENSE
56R
C25 10nF
SETTING COLOR
AD_BRIGHTNESS_SENSE C26 10nF
SETTING BRIGHTNESS
Obr. 3.2.13 Zapojení potenciometrů pro nastavování barvy a jasu
3.2.5 Finální konstrukce RGB lampa se skládá z komponent popsaných v předešlé kapitole. Soustava komponent je sestavena následujícím způsobem. Všechny elektronické součástky, vyjma RGB LED modulu, jsou osazeny na dvouvrstvé DPS. Pro RGB LED modul je ve středu řídicí desky vyfrézován obdélníkový otvor, kterým je RGB modul volně průchozí. Ve čtvercovém uspořádání kolem otvoru pro LED modul jsou rozmístěny otvory k uchycení chladiče pomocí čtyř šroubů. Chladič je umístěný zespoda DPS od jejíhož povrchu ho distancují nevodivé podložky. LED modul je následně přišroubován k chladiči skrze otvor v DPS. Tento způsob
37
uchycení řeší velice efektivně odvod tepla z RGB modulu. Koncová podoba RGB lampy je patrná z obr. 3.2.14.
Obr. 3.2.14 Fotografie RGB lampy
Pro konečné použití v domácnosti jistě vyžaduje další ochranný kryt s jistou kvalitou designu. Výroba krytu vhodného a přitažlivého pro interiér vyžaduje nemalé finanční náklady, které v tomto okamžiku nelze vynaložit.
3.3 Dálkové ovládání Tato podkapitola se zabývá konstrukcí a zapojeními použitými v návrhu řídicí desky dálkového ovládání. Dále objasňuje funkci speciálních použitých obvodů jako například kapacitní snímač.
3.3.1 Napájecí zdroj Dálkové ovládání je napájeno z bateriových článků, které po dobu užívání ztrácí odběrem proudu napětí. Aby se předešlo k předčasnému poklesu napětí pod stanovené meze použitých obvodů, a docílilo se tak maximální možné pracovní doby, je dálkové ovládání vybaveno step-up konvertorem. Jeho označení je L6920 a dokáže ze vstupního napětí od (0,5V 5,5)V vyrobit na výstupu +3,3V, jenž je potřebné. Konvertor je použit v konvečním zapojení, které vychází z katalogového listu [19]. Vstup konvertoru „input voltage“je také přiveden na jeden měřicí kanál A/Č převodníku aby bylo možné stav baterií hlídat případně varovat uživatele. Zapojení je patrné z následujícího obrázku.
38
VCC
R4 0R R2 0R J3 L1 1 2 HEADER 2
7
+ C1
15uF DO1608
47uF
3.3V
U9
Input_v oltage
5 2 4
R3 0R
C42
LX
FB OUT
SHDN LBI LBO REF GND
1 8 3 6
VCC
C41 C54 100nF + 47uF
L6920 100nF R3 and R4 placed only: source L6920 inactive, activ external source R2 placed only: source L6920 active, inactive external source
Obr. 3.3.1 Zapojení zdroje L6920
3.3.2 Technologie s S-TOUCHTM Téměř každé elektronické zařízení potřebuje mít zavedené nějaké vstupní ovládací elementy. Běžně se používá mechanických zdvižných tlačítek v různých podobách. Současným trendem ale je, vyrábět věci jednodušeji a hlavně s nejmenšími možnými náklady jak pro výrobu tak budoucí servisní práce. Využití kapacitních dotykové technologie v dálkovém ovládání přináší četné výhody. Mezi ně patří uživatelsky atraktivně řešené nastavování barvy a jasu, kdy stačí pouhým tažením nebo dotykem v přímkovém nebo kruhovém směru, jezdit prstem po motivech na DPS. Viz více v kapitole 4.8.4. Nebo se jenom dotknout vyznačených míst, která se v této technologii chovají jako standardní tlačítka. K zavedení této technologie byl využit integrovaný obvod firmy STMicroelectronics označený STMPE821 (dále obecně „capsense“). Capsense je 8-mi kanálový kapacitní snímač dotyku. Hardwarové vybavení obvodu je pro měření kapacity plně optimalizované. Všechny měřicí piny mohou být konfigurovány buď v kapacitně citlivém módu nebo jako běžné I/O piny. Pro použití v dálkovém ovládání jsou všechny konfigurovány pro měření kapacitance. Konfigurace a další přenos dat do řídicího mikrokontroléru probíhá po sériové sběrnici I2C. Základní rysy: Capsense pracuje při napájecím napětí (2,7V 3,6)V. Odebírá proud do 160μA v aktivním režimu a 1μA v režimu spánku. K dispozici je 8 kapacitně citlivých kanálů. Měření kapacity na daném pinu provádí s frekvencí až 500Hz. Dynamický rozsah měření kapacity je 7,8pF.
39
Každý kanál je možno individuálně kalibrovat pro dosažení optimálních vlastností v daném prostředí (registry EVR). Každému kanálu je možné individuálně nastavit podmínky detekce dotyku (TVR). Capsense má vyvedený výstupní pin INT, pro generování přerušení při dotyku do nadřazeného mikrokontroléru Komunikuje s nadřazeným mikrokontrolérem po sběrnici I2C. 3.3.2.1 Princip funkce Zachycení dotyku na senzorovém pinu je založena na detekčním mechanizmu změny impedance. Součástka vykonává periodickou kalibraci a následně ukládá naměřené hodnoty na jednotlivých kanálech. Základem pro vyhodnocování dotyku jsou hodnoty v interních registrech pojmenovaných „CALIBRATED IMPEDANCE“ a „IMPEDANCE“. Každý kanál má svou dvojici registrů. Z těchto se určuje, zda došlo k dotyku či nikoli. Více v kapitole XX o kalibrování. K vyhodnocování samotných změn kapacity slouží obdélníkový signál, referenční kapacitní pin a samozřejmě vyhodnocovaný pin (senzor). Obdélníkový signál je přiváděn současně na referenční pin a pin senzoru. Podstata je v tom, že konečný tvar, délka náběžné hrany (dále „zpoždění“), obdélníkového signálu je odvozena od RC článku na pinech. Čím větší impedance, tím je naměřeno větší zpoždění. Názorně to zobrazuje obr. 3.3.2 podle [20]. Rozdíl zpoždění referenčního pinu a pinu senzoru je ukládán do zmíněných registrů “impedance”. Z předchozího vyplývá, že STMPE pracuje na rozdílovém měření kapacity.
Kapacita senzoru 1
Pin senzoru
Zpoždění na pinu senzoru
Referenční kapacita 2 Referenční pin Zpoždění na referenčním pinu
Obr. 3.3.2 Princip vyhodnocení dotyku kapacitním snímačem 1 2
kapacita senzoru = vlastní kapacita senzoru + kapacita externího ladicího kondenzátoru referenční kapacita = vlastní kapacita ref. pinu + kapacita externího ladicího kondenzátoru 40
Když se prst dotýká pinu senzoru, kapacitance přibývá o typicky 2-3pF, která má za následek přibývající zpoždění pro dosažení maximální hodnoty. Toto představuje změnu impedance, které je pak porovnávána s hodnotami v „CALIBRATED IMEPDANCE“ k určení stavu na senzoru (dotyk, bez dotyku). Částečně mají však vliv na vyhodnocování impedance, kromě dotyku prstu, i změny vlastností prostředí. Tím jsou myšleny změny teploty, výskyt vodních částic v okolí senzoru atd.. Jevy způsobené těmito nežádoucími vlivy jsou kompenzovány nastavením interních registrů „CALIBRATED IMPEDANCE“. Viz více v kapitole 4.8.3 o softwarovém nastavení capsense. STMPE821 obsahuje kalibrační registry ke kompenzaci rozdílů délek spojů od fyzických senzorů k pinům, velikosti ploch senzorů, tloušťce překryvného materiálu a další. 3.3.2.2 Kapacitní kompenzace vstupů Capsense je schopný změřit rozdíl až 7,8pF mezi referenční kapacitou a individuálním kanálem. V případě kdy spoje mezi senzorem a měřicím pinem je příliš dlouhá, je možno využít registru „REFERENCE DELAY“ k posunu reference až o 6,0pF. I za této podmínky je stále možné měření v celém dynamickém rozsahu. V případě, že i 6,0pF není dostatečné lze na externí referenční pin ARef připojit kapacitu o velikosti až 30pF. Který má za následek další posun dynamického rozsahu. Naměřené rozdíly kapacit jsou dostupné v registrech „IMPEDANCE“. Popsané situace jsou zobrazeny na obr. 3.3.3.
7,8pF
6,0pF
REFERENCE DELAY = 0 Dynamický rozsah = 0 – 7,8pF
7,8pF
REFERENCE DELAY = 6,0pF Dynamický rozsah = 6,0 – 13,8pF
6,0pF
30pF
7,8pF
REFERENCE DELAY = 6,0pF Aref externí kapacitor = 30pF Dynamický rozsah = 36,0 – 43,8pF
Přibývající kapacita
Obr. 3.3.3 Nastavení oblasti měřené kapacity
3.3.3 Sběrnice I2C Do capsense je implementováno rozhraní I2C vyhovující standardu Philips I2C verze 2.1. Capsense se na sběrnici chová jako „slave“. S-TOUCH nemá vyvedeny externí piny pro 41
nastavení adresy na sběrnici. Jeho identifikační adresa se nedá měnit a je stanovena hexa hodnotou 0xB0 v interních registrech.
3.3.4 Zapojení STMPE821 Zapojení STMPE821 s všemi okolními součástkami je následující. VCC
VCC Touch0 R37 47k
R38 47k
INT_STMPE
RST_STMPE
C36 10nF
C37 10nF
COLOR SETTING
Touch1 Touch2 Touch3 Touch4 Touch5 C44 C45 C46 C47 C48 C49 1pF 1.2pF 1pF 0pF 1pF 1pF
CAP_SW5 Touch6 1
C_1
3
C_3
C_2
VCC
RST_STMPE I2C_SDA I2C_SCLK
VCC
R48 4.7k
R45 22R R47 R4622R 4.7k
8 5 6 7
VCC GPIO_0/Touch_0 VIO GPIO_1/Touch_1 GND GPIO_2/Touch_2 GPIO_3/Touch_3 GPIO_4/Touch_4 INT GPIO_5/Touch_5 GPIO_6/Touch_6 RST GPIO_7/Touch_7 SDA SCL ARef
3 2 1 16 15 14 13 12
Touch0 Touch1 Touch2 Touch3 Touch4 Touch5 Touch6 Touch7
1 CAP_SW2
4
STMPE821
S_TOUCH C_1
C_1 S_TOUCH
2
INT_STMPE
10 11 9
OTHER CONTROL CAP_WHEEL_0 CAP_SW4 1
C38
1
C2
C39 C52 + 3.3uF 1uF
2
U7
Touch7 C50 C51 0pF 1pF
C1
C3
3
4.7pF CAP_SW3 CAP_SLIDER BRIGHTNESS SETTING
Obr. 3.3.4 Zapojení STMPE821
Kapacitory C44 až C51 slouží ke kompenzaci vstupů, C38 představuje referenční kapacitu.
3.3.5 Návrh motivu na DPS pro S-TOUCHTM Pady senzorů se běžně řeší motivem přímo na DPS. Tímto způsobem lze motiv navrhnout v téměř jakémkoliv tvaru a přizpůsobit ho požadavkům aplikace. V této podkapitole jsou objasněny základy návrhu senzorových padů pro 2-vrstvé plošné spoje se základním nosným materiálem FR4, protože pro návrh dálkového ovládání je této technologie a materiálů využito. V dvouvrstvé technologii DPS jsou všechny součástky včetně STMPE821 umístěné v druhé vrstvě (BOTTOM) a motivy senzorů ve vrstvě první (TOP). Kromě ladících kapacitorů individuálních měřicích kanálů nemohou být umístěné přímo pod pady senzorů nebo v okolí STMPE821, žádné další součástky nebo signálové spoje. Referenční kapacitor je umístěn v blízkosti STMPE. Na následujícím obrázku obr. 3.3.5 je zobrazeno principielní řešení použité pro dálkové ovládání.
42
Řídicí část DPS GND1
S-TOUCHTM část DPS GND2
Bodové propojení GND1 a GND2 Pady senzorů
Krycí panel DPS TOP BOTTOM
DPS tloušťky 1,8 mm, typ FR4
ZigBee modul
STM32 Okolní součástky
Ladící kapacitory
STMPE821
Spoje vedené od padů senzorů
Obr. 3.3.5 Řešení návrhu DPS dálkového ovládání
K minimalizaci přenosu rušivých signálů z řídicí části jsou vytvořeny dvě země a spojené pouze v jednom místě. Toto oddělení se týká součástek spojených s S-TOUCHTM technologií a řídící částí. Ladící kapacitory jsou umístěné těsně u STMPE821. Spoje od elektrod senzorů vedou pouze v druhé vrstvě DPS a na žádném místě se nepřekrývají. Pokud spoj vede pod vlastním senzorem, je snaha o minimalizaci překrytí, to znamená, že nejkratší cestou je vyveden pryč z dosahu plochy senzoru. Ve vrstvě TOP není žádná součástka, aby se nechal jednoduše přidělat krycí panel, nebo aby se celá řídicí deska dala uložit do ochranné krabičky těsně pod víko. Velikosti navržených senzorů jsou do velikosti 225mm2. Nad tuto velikost nepřibývá citlivost, ale úroveň šumu a pravděpodobnost správného vyhodnocení dotyku. Prostor mezi senzory je vyplněn rozlitou zemí typu „mesh“ se specifickými vlastnostmi 6milů tloušťka čáry a 30 milů jejich vzdálenost. Vzdálenost mezi senzorem a zemnící sítí je 1mm. 3.3.5.1 Použité tvary senzorů V dálkovém zařízení jsou použity tři typy senzorů. Senzory pojmenované „Button“, „Wheel“ a „Slider“. Použitý senzor Button je patrný z obr. 3.3.6. Jedná se o kruhovou plochu o rozměrech r = 10mm. Připojovací kontakt je vyveden ze středu. Jeho funkce spočívá v základní detekci přiblíženého prstu. Pokud se prst přiblíží do jeho dostatečné vzdálenosti, naměřená kapacita přesáhne jistou hodnotu předdefinované úrovně a přítomnost prstu je detekována.
Připojovací kontakt jako prokov do druhé vrstvy Měděná plocha
Obr. 3.3.6 Button senzor
43
Wheel senzor se skládá ze tří dílčích senzorů. Podstatou tohoto senzoru je vyhodnocování nejen dotyku ale i polohy měřením kapacitance na daných třech elektrodách při přítomnosti prstu. Pohybem prstu nad motivem senzoru, kapacitance na jistých elektrodách klesá či stoupá. Z tohoto lze matematickým postupem dopočítat pozici prstu v rozmezí 0° až 360°. Tvar Wheel senzoru je patrný z obr. 3.3.7 a princip změn kapacitance udává společně s obr. 3.3.8 Slider senzor je také složen ze tří dílčích senzorů, ale slouží k detekci pohybu a polohy prstu ve dvou směrech, lépe řečeno mezi dvěma body. Je zachycen na obr. 3.3.9 a vysvětlující změny kapacitance zachycuje obr. 3.3.10.
Měřená kapacitance
elektroda1
Kontakt Kontakt Kontakt elektrody3 elektrody1 elektrody2 Připojovací kontakt jako prokov do druhé vrstvy Měděná plocha
180°
240°
0°
120° 180°
Oblast styku senzoru s prstem Směr pohybu elektroda3
elektroda2 180°
Obr. 3.3.7 Wheel senzor
elektroda1
elektroda2
Obr. 3.3.8 Vliv pohybu prstu na měřenou kapacitanci – Wheel senzor
elektroda3 Připojovací kontakt jako prokov do druhé vrstvy Měděná plocha Oblast styku senzoru s prstem
Obr. 3.3.9 Slider senzor
Kontakt Kontakt elektrody1 elektrody2
Kontakt elektrody3
Měřená kapacitance
Pohyb
Obr. 3.3.10 Vliv pohybu prstu na měřenou kapacitanci – Slider senzor
3.3.6 Krycí panel Kapacitní senzory nemohou být z principu vystaveny přímému kontaktu s prstem. Obvykle se užívá nějaký druh krycího materiálu nejčastěji vyrobeného z plastu či skla. Krycí materiál a jeho tloušťka určují citlivost systému. Tlustší materiál a menší dielektrická konstanta materiálu vedou k tomu, že je blízkost prstu těžko detekovatelná. To je proto, že krycí materiál snižuje kapacitní vazbu mezi prstem a elektrodou senzoru. Nižší kapacitní 44
vazba má za následek omezení citlivosti měřicího systému. Základní rovnice pro výpočet kapacitance mezi prstem a senzorem je následující a vychází z [20]. (3.8)
Kde C
změna kapacitance potřebná k detekci dotyku prstu (F)
ε0
permitivita vakua (8.854 x 10-12 F/m)
εr
relativní permitivita materiálu užitého jako krycí panel (-)
S
aktivní plocha senzoru (m2)
D
tloušťka krycího materiálu (m)
Z uvedené rovnice je patrné, že tloušťku zvoleného materiálu může kompenzovat jeho relativní permitivita a lze dosáhnout stejných vlastností jako s materiálem slabším. Co se týče materiálů a vhodnosti užití pro účel krytí senzorů, nejlepší je užití skla s εr =7,8 nebo samotného nosiče DPS, materiálu FR4 s εr = 5,2 podle [21]. Při užití krycího panelu je také velice důležité dobré přilnutí na plochu senzorů. Jako krycí panel, zobrazený na obr. 3.3.5, bylo pro vývoj využito části obalu CD nosiče. Celý měřicí systém je tedy nekalibrován na tenký plát plastu, který má relativní permitivitu cca 3. Pokud by se dálkové ovládání umístilo do krabičky, musel by se systém znovu kalibrovat (viz další kapitola 3.3.7).
3.3.7 Kalibrace STMPE821 Při kalibraci musí být již nainstalován krycí panel. Kalibrace kapacitního snímače STMPE821 je úzce svázána s implementováním alespoň základního software do řídicího mikrokontroléru. Základní software musí umět číst a zapisovat z nebo do obvodu STMPE821. Dále nějakým způsobem zobrazit naměřená data. Jednoduchý program pro kalibraci řídicí desky je obsahem přiloženého CD. Pro zobrazení hodnot se využívá debugovacího módu vývojového prostředí μVision4.0 firmy Keil (viz kapitola 4.1.1). Přenos dat probíhá prostřednictvím připojeného debuggeru μLink. Po spuštění debugování implementovaný software provede počáteční inicializaci capsense obvodu (viz inicializace kapitola 4.8.3) a pak periodicky vyčítá hodnoty z registrů „IMPEDANCE“ a zobrazuje výsledek podle rovnice (3.9). Z předešlého vychází, že ke kalibraci je třeba osazená řídicí deska, vyjma osazení kompenzačních kondenzátorů kapacitního snímače. 45
Prvním krokem je určení kapacity referenčního kondenzátoru, aby měřené hodnoty na všech kanálech spadaly do dynamického rozsahu. Principielně to zachycuje obr. 3.3.11, který koresponduje s rovnicí (3.9). (3.9)
Kde IMPEDANCE hodnota v rozmezí 0-127, kde jedna jednotka představuje 40 - 60fF CREF
referenční kapacitance (referenční vstup + hodnota REFERENCE
DELAY registru) CSENZOR
naměřená hodnota kapacitance na jednom vstupu
*
hodnota závorky je v rozmezí 0 127
Poznámka:
konstanta 127 vychází z [12]
Kapacitance referenčního vstupu
CREF REFERENCE DELAY registr (0-127)
CSENZOR
Obr. 3.3.11 Nastavení rozsahu pro měření kapacitance
Kapacita referenčního vstupu (prozatím bez CREF), je určitě menší než kapacity na měřicích kanálech. Způsobuje to krátký přívodní vodič od elektrody CREF , vzhledem k relativně dlouhým přívodním vodičům od elektrod senzorů. Vypočtená hodnota z registru IMPEDANCE je na počátku „127“. Hodnoty mohou být ve skutečnosti i vyšší, ale přetečené hodnoty dosahují maxima 127 a podtečené 0. Korektní hodnota IMPEDANCE z měřicího vstupu je dána intervalem (40 100). Volbu referenčního kondenzátoru víceméně zjišťujeme empiricky. Postupně zkoušíme hodnoty referenčního kondenzátoru od hodnoty 4,7pF až po 33,0pF. Jako správný určíme ten, kdy hodnota IMPEDANCE žádného z kanálů není větší než 100 a menší než 40. Pokud je stanoven referenční kondenzátor, zbývá již určit zbylé ladicí kondenzátory, aby se měřené hodnoty nejvíce blížili hodnotě 40. Která zaručuje vyhodnocování dotyku v ideálním měřicím rozsahu. Stejně jako při volbě kapacitní reference, i tyto kondenzátory
46
zkoušíme od hodnot 1pF po celé řadě až dosáhneme nejbližší hodnotu blížící se 40. Nalezení správné hodnoty kondenzátoru může urychlit úvaha, že jedna hodnota ze 127 je cca 50fF. Pokud je tedy potřeba snížit zobrazovanou hodnotu o dvacet, připojíme na odpovídající vstup kondenzátor o kapacitě CSENZOR = 1pF. Při kalibraci STMPE821 v dálkovém ovládání, je nutné dosažení velice blízkých hodnot, především na vstupech se společným senzorem (Wheel, Slider). Ulehčuje to algoritmické zpracování naměřených dat. Pro dálkové ovládání jsou odladěné hodnoty kondenzátorů dle tab. 3.4.1. Hodnoty korespondují se schématem zapojení z obr. 3.3.4.
Kanál 0 1 2 3 4 5 6 7 Senzor Button1 Wheel Wheel Wheel Button2 Slider Slider Slider C (pF) 1 1,2 1,0 1 1 1 Hodnota 72 61 60 63 59 76 77 77 Tab. 3.3.1 Hodnoty po kalibraci STMPE821 na dálkovém ovládání
3.3.8 Finální konstrukce Podoba finálního řešení je patrná z fotografie na obr. 3.3.12. Předpokládalo se, že bude v konečné podobě umístěno do ochranné krabičky, která také byla navržena. A návrh jse součástí přílohy. Zhotovení krabičky bylo ale cenově nedostupné. Proto je umístěné pouze v dočasném krytu.
Obr. 3.3.12 Fotografie dálkové ovládání
47
3.4 Časovací jednotka Jako základ časovací jednotky je využit vývojový modul firmy Raisonance pojmenovaný Primer2 z obr. 3.4.2 podle [22]. Modul obsahuje základní stavební prvky, potřebné pro konstrukci časovací jednotky. Jejich přehled s parametry je patrný z následující tabulky. Komponenta
Konkrétní typ
Mikrokontrolér Napájení Displej Práce se zvukem Ovládací prvky
STM32F103E Li-on baterie (6 hodin pracovní doba) Touch screen TFT s rozlišením 128x160 px Audio codec STW5094A 4 směrový Joystick s centrálním tlačítkem Dotykový displej Konektor pro rozšíření 20-pinový konektor pro připojení periferií mimo jiné po SPI Tab. 3.4.1 Komponenty Primer2 potřebné pro časovací jednotku
Implementace ZigBee modulu do Primer2 by se provedla prostřednictvím rozšiřujícího konektoru a navržením externí DPS. DPS by obsahovala odpovídající konektor k rozšiřujícímu konektoru na Primer2, místo pro osazení ZigBee modulu a rozvod napájení. Zapojení konektoru vyvedeného z Primer2 je patrné na obr. 3.4.1 podle [23].
Obr. 3.4.1 Zapojení rozšiřujícího konektoru Primer2
Kon
SPI + Napájení
ekto r
Vodič SPI Pin pouzdra mikrokontroléru Pin 20-pinového konektoru NSS PB12 8 CLK PB13 7 MISO PB14 5 MOSI PB15 6 Napájení 1,19 Zem 2, 20 Tab. 3.4.2 Použité vodiče konektoru na Primer2 pro rozšiřující modul
Obr. 3.4.2 Primer2
ZigBee Modul
Rozšiřující modul
Obr. 3.4.3 Blokový návrh rozšiřujícího modulu 48
Rozšiřující modul je umístěn pod základní deskou Primer2. Názorně to zachycuje obr. 3.4.4. Joystick
STM32 Displej DPS Primer2
ZigBee Modul
Konektor
Obr. 3.4.4 Blokové řešení návrhu časovací jednotky
Časovací jednotka nebyla fyzicky dokončena. Vedlo k tomu po domluvě s vedoucím práce, který uznal, že dosažený síťový systém je vyhovující. Podstatnou roli hrál také čas, který bylo třeba věnovat na bezproblémový chod ostatních prvků sítě. Stabilní síť o prvcích dálkové ovládání, RGB lampy a USB ovladač bylo uznáno za lepší řešení, než chybová síť se čtvrtým typem zařízení, časovací jednotkou.
3.5 USB ovladač Pro funkci USB ovladače je využit vývojový modu firmy STMicroelectronics STEVAL-IFS013Vx. Hardwarová koncepce vychází z demo modulu STEVAL-IFS013V1, jak je také označena deska. Použitý ZigBee modul však obsahuje ZigBee Pro stack a kompletní sestava odpovídá demo kitu STEVAL-IFS013V2. Dokumentace k hardwaru [14] je dostupná na stránkách firmy STMicroelectronics nebo na přiloženém CD. Ilustrační foto zastupuje.
Obr. 3.5.1 Fotografie USB ovladače (STEVAL-IFS013V1)
4 Softwarové vybavení Tato kapitola se zabývá tvorbou softwarové složky pro navržená zařízení a lze ji pomyslně rozdělit na několik částí. První část obsahuje popis použitých vývojových prostředků. Druhá část se zabývá dílčími nastaveními periferií mikrokontroléru, které jsou
49
nutné k funkci řídicích desek. Třetí kapitola seznamuje s využitými funkcemi a vlastní komunikaci pro bezdrátovou síť ZigBee.
4.1 Využití produktů firmy KEILTM Počáteční tvorba softwarového vybavení byla prováděna na vývojovém balíčku firmy KEILTM pro mikrokontroléry založené na ST©ARM technologii. Tento vývojový balíček je běžně dostupný i fyzickým osobám. Součástí balíčku je vývojová deska označená MCBSTM32 (dále „kit“), emulátor uLink-ME a vývojové prostředí μVision verze 4.0. Zde je počáteční důvod použití uvedeného prostředí k vývoji software. Kit je osazený odlišným tipem mikrokontroléru, ale rodina je zachována a proto nebyly obavy o kompatibilitu software. Na kitu mohly být odzkoušené základní stavební prvky kódu, než byly navrženy první prototypy řídicích desek. Uživatelský software se do desky nahrává pomocí emulátoru se standardizovaným rozhraním JTAG. Emulátor také společné s vývojovým prostředím umožňuje ladění (debugování) nahraného software. Tento emulátor je využíván pro stejné účely i v navržených deskách.
4.1.1 Vývojové prostředí μVision 4.0 Vývojové prostředí μVision 4.0 má dva rozdílné módy funkčnosti. První kdy je ve funkci část prostředí μVision® IDE a druhou je ladicí mód μVision® Debugger. Hlavní funkcí části IDE je správa projektu, jako počáteční konfigurace projektu pro daný typ mikrokontroléru, organizace souborů se zdrojovými kódy a jejich editace. Debugger zastupuje možnost ladění programu, to znamená, že umožňuje vkládání breakpointů, dokáže zobrazit stavové hodnoty registrů a paměti dat, případně významných bitů. Umožňuje náhled na aktuální stav periferií využitého mikrokontroléru. Je třeba dodat, že tyto funkce lze využít, pouze pokud je použitý mikrokontrolér v interní databázi Device Database® prostředí. μVision 4.0 obsahuje RealView® kompilátor přizpůsobený překladu kódů napsaných v jazyce C či C++, samozřejmostí je i assembler. Vývojové prostředí obsahuje firmwarové knihovny STMicroelectronics [27]a je s nimi plně kompatibilní. Navíc obsahuje MicroLib, což je menší a efektivnější softwarová knihovna než standardní podle [24] pro jayzk C. Dále četné příklady jednoduchých aplikací, takže vývoj softwaru je v začátcích jednodušší. Verze vývojového prostředí, která je využita pro vytvoření softwaru, je nekomerční a má jistá omezení. Program, z kterého se vygeneruje více než 32KB kódu nebo dat není přeložen ani linkován. Debugger také podporuje pouze programy nepřekračující 32KB hranici. Pro účely této diplomové práce, by neměla být hranice dosažena. Prostředí je 50
dostupné
na
internetových
stránkách
firmy
Keil,
konkrétní
adresa
je
[https://www.keil.com/demo/eval/arm.htm].
4.1.1.1 Projekt a projektový manažer v μVision Základní informace pro užití, jako založení nového projektu otevření starého, nastavení zobrazení oken pro prohlížení různých částí projektu, je snadné získat například ze samotné nápovědy prostředí po stisku klávesy F1. Proto nepovažuji za nutné tyto postupy zde rozebírat. Co však stojí za zmínku, a bylo použito pro tvorbu kódu, jsou následující postupy. Po spuštění prostředí μVision založení nového projektu a vybrání součástky, pro kterou bude zdrojový kód psán, se dialogovým oknem μVision dotazuje, zda má vytvořit „startovací“ soubor. ANO, soubor je potřeba vytvořit. Soubor je obvykle pojmenován podle rodiny mikrokontrolérů, která byla vybrána a charakteristická koncovka je „s“. V našem případě je startovací soubor „STM32F10x.s“. Soubor se automaticky uloží do kořenové složky na úroveň souboru projektu *.uvproj, odkud se po zbytek času nepřemisťuje. Každý rozsáhlejší projekt, obsahující více hlavičkových souborů a souborů s kódem vyžaduje jistou organizaci v podobě složek se jmenovanými soubory. K tomu slouží projektový manažer a zobrazuje se pomocí nabídky View→Project window. Podoba souborového manažeru je na následujícím obrázku.
Obr. 4.1.1 Příklad souborového manažeru μVision
Kořenová složka STM32F10x je automaticky pojmenována prostředím podle jména projektu. V projektovém manažeru lze přidávat a odebírat jednotlivé soubory z projektu pomocí nabídek Remove file nebo Add files. Nebo také přidávat a odebírat složky pomocí 51
nabídek Add group nebo Remove group. Tyto složky nemusí vůbec korespondovat s reálnou organizací složek a souborů v cílovém uložišti. Záleží tak na uživateli, jak si složky v manažeru pojmenuje a jaké soubory do jakých složek umístí. Pro správu souboru hrají nejdůležitější roli jejich fyzické adresy, to znamená, že projektovému manažeru stačí, že na dané adrese nalezne daný soubor. To ale vede k zavádějící otázce. Proč dělat jinou strukturu souborů v projektovém manažeru, než v cílovém uložišti souborů? Zde se dostáváme k opodstatnění této kapitoly. Odpověď zní, protože projektový manažer neumí vytvořit víceúrovňovou strukturu složek. A to by mohlo vést ke zmatení uživatele v orientaci organizace souborů, který zpracovává již pokročilý projekt, například zdokonaluje software ZigBee zařízení. Dále je třeba říci, že ne všechny soubory používané v projektu, musí být touto cestou do projektu zahrnuty (viz kapitola 4.1.1.2). 4.1.1.2 Nastavení projektu v prostředí μVision Samotné nastavení projektu se projevuje až při akci, kdy chceme projekt přeložit, simulovat, změnit typ mikrokontroléru atd. Pro taková nastavení složí dialogová nabídka Options for Targer’jméno projektu‘ patrná z obr. 4.1.2. Dialogové okno lze vyvolat pomocí stisku pravého tlačítka myši na kořenové složce z projektového manažera a výběrem první položky z nabízeného menu. V následujících krocích bude popsáno nastavení projektu light určený pro RGB lampu, který je téměř totožný ohledně nastavení i pro dálkové ovládání.
Obr. 4.1.2 Dialogové okno k nastavení projektu
52
V záložce Device se vybírá konkrétní typ mikrokontroléru. I z obr. 4.1.2 je vidět, že „zašedlý“, tedy vybraný typ, je STM32F101CB. Záložka Target poskytuje nastavení rozsahů adres jak v paměti programu, tak v paměti dat. Jsou použity standardně nastavené hodnoty, protože v paměťových oblastech není nic, kromě tohoto programu. Tyto hodnoty jsou, pro paměť programu vlevo a dat vpravo, nastavené podle obr. 4.1.3.
Obr. 4.1.3 Nastavení paměťového prostoru
V této záložce je další důležité nastavení a to použití knihovny MicroLIB. To se provede zaškrtnutím volby Use MicroLIB. Záložka Output slouží k nastavení výstupních souborů po překladu jako jejich umístění, zda vytvořit soubor s koncovkou „hex“, který obvykle slouží jako koncový soubor určený k nahrání do mikrokontroléru. Nebo zda do výstupního souboru zahrnout Debugovací informace či z projektu vytvořit knihovnu. Toto nastavení není pro projekt funkčně závislé. Soubor *.hex není třeba generovat. Potřebný kód, si prostředí načte ze souboru *.axf, který je taktéž po vytvoření projektu zadán v tomu určeném pravém horní editační poli. Při nahrávání např. externího souboru se jméno souboru, případně jméno i s koncovkou „hex“ zadá do zmíněného pole. Záložka Listing slouží k nastavení souborů s příponou „lst“. Volby dostupné v této záložce jsou implicitně zanechány. Stejně tak jako záložku User, ASM a Linker, které již nebudou zmiňovány. Nabídka záložky C/C++ slouží k definování symbolů pro preprocesor jazyka C. Symboly nemusí být definovány pomocí direktivy #define ve zdrojových kódech a lze se spolehnout na zadání v této záložce do editačního okna Preprocessor symbols. Druhou podstatou záložky C/C++ je zahrnutí cest souborů, které jsou nebo budou v projektu užity. μVision podporuje relativní zadávání cest. Zadání probíhá interaktivním způsobem. Záložka Debug umožňuje výběr mezi dvěma módy ladění programu a to simulování nebo využití debugovacího zařízení k testování programu na reálném zařízení. Jak je také užito pro vytvořené projekty. Natavení této záložky je také ponecháno téměř implicitně s výjimkou povolení volby Run to main(). Pro správnou funkci je třeba dobře nastavit debugovací zařízení na ULink Cortex Debugger. Následně ještě provést samotné nastavení debugovacího zařízení. Kliknutím na tlačítko s nápisem „Settings“ se dostaneme na další dialogovou nabídku Cortex-M Targer Driver Setup, která to umožňuje. Obsahuje další tři záložky. První je opět Debug, kde se zobrazují identifikační informace použitého zařízení. Dále nastavení použití rozhraní, jestli JTAG nebo SW (Serial Wire) a jeho rychlost. Je použito SW o rychlosti 5MHz. Druhá záložka je Trace, 53
kterou není třeba nastavovat. Třetí záložka slouží k výběru velikosti interní paměti použitého mikrokontroléru. Je zvolena velikost odpovídající kategorii Medium density flash paměti na čipu. To znamená velikost 128KB paměti programu s adresním rozsahem od 0x08000000 do 0x0801FFFF.
4.2 Využití produktů firmy Raisonance Průběh prací na softwarovém vybavení síťových zařízení si vyžádal přechod k vývojovým prostředkům firmy Raisonance. Konkrétně kvůli vývoji software pro USB ovladač. Pro toto zařízení se nepodařilo v μVision 4.0 zprovoznit potřebné USB knihovny. K vývoji je použito vývojové prostředí Ride7 a debugovací zařízení RLink.
4.2.1 RLink Jako debugovací zařízení je využit RLink, které slouží také k nahrávání přeloženého programu. Ovladače potřebné k jeho funkci jsou dostupné na přiloženém CD nosiči. RLink také může pracovat s různými debugovacími rozhraními. To se volí výběrem hardwarové koncovky. Pro projekt USB ovladače je použita koncovka RLink-SWD. Výběr se učiní konfigurací propojek na koncovce. Pro USB ovladač se využívá konfigurace na JTAG rozhraní.
4.2.2 Vývojové prostředí Ride7 Stejně jako u μVision základní operace a práce s prostředím jsou dostupné buď z nápovědy po stisku tlačítka F1. Nebo ze internetových stránek firmy Raisonance Jedná
se
o
nekomerční
verzi
softwaru,
kterou
je
možné
stáhnout
z
[http://www.raisonance.com/mcu_downloads.html]. Poskytuje podporu tvorby
projektu, editaci kódů v jazycích C a assembleru pro mikrokontroléry založené na bázi ARM včetně CortexTM-M3 a obsahuje mechanizmy k optimalizaci uživatelského kódu. Pro překlad je využit překladač GCC ARM licenčně zahrnutý pod GNU. Podpora debugování je samozřejmostí. Integrovaný RBuilder zajišťuje v módu ladění přesnou konfiguraci perifierií podle C kódů, případně umožňuje její změnu. Stejně jako μVision 4.0 poskytuje velikou škálu nabízených náhledů do různých oblastí pamětí, stavů proměnných či vkládání breakpointů. Co se týče daných omezení pro nekomerční verze, je Ride7 omezen pouze na velikost programu, který se chce debugovat a to 32KB. Omezení velikosti programu pro překlad není.
54
4.2.2.1 Projektový manažer Ride7 Projektový manažer se vyvolává z menu View → Project explorer a poskytuje stejné funkce jako u prostředí μVision s tím rozdílem, že podporuje i víceúrovňové vkládání složek. K tomu slouží výběrové menu zobrazené po stisku pravého tlačítka nad projektovým manažerem. Vložení souboru nebo složky se provádí Add… →Item nebo Add…→ Folder. Odstranění souborů nebo složek se provádí ze stejného menu položkou Remove. Odstraněny jsou ty složky nebo soubory, které jsou označené. 4.2.2.2 Nastavení projektu v Ride7 Tato podkapitola ukazuje, jak nastavit vlastnosti projektu, ke správnému přeložení a nahrání programu do součástky. Pro názornost je použit projekt pro USB ovladač. K nastavení projektu slouží dialogové okno Properties, které se otevře stiskem ikony nad projektovým manažer úplně vlevo. Základní nabídka je rozdělena do šesti složek Application Options, Advanced ARM Options, GCC compiler, AS assembler, LD linker, RLink Configuration. V Application Options je uložena adresa projektu, typ aplikace, které zůstávají vyplněny po založení projektu standardně. Nastaveným editačním polem je Current Configuration, ve kterém se volí, jaká konfigurace programu se používá. Pro USB ovladač je třeba vyplnit ST_STM32_2_x. Dalším nastavením je volba adresy cílové složky pro výstupní soubory a nastavení adres, které obsahují soubory zahrnuté v projektu. V Advanced ARM Options lze nastavit typ mikrokontroléru a debugovací zařízení. Jako mikrokontrolér je nastaven STM32F103C8T6. Ve skutečnosti je USB zařízení osazeno mikrokontrolérem STM32F103C8T6, ale vývojové prostředí obsahuje nějakou chybu a hlásí problémy při překladu programu, proto volba nekoresponduje s realitou. Na funkčnosti to však nic nemění. Pro debugování aplikace je využit zmíněný RLink. GCC compiler poskytuje nastavení definic pro preprocesor se stejnou funkcí jako u μVision a s nastavením optimalizace kódu hodnotou „Size optimization“. AS assembler neobsahuje žádná nutná nastavení. V LD linker je třeba nastavit užití základního MAP souboru. Tzn. hodnotu u Generel MaP file nastavit na „YES“. Stejně tak i hodnotu u Use Default Startup k použití výchozího Startup souboru a taktéž Use Default Script File k použití výchozího linker skriptu. RLink Configuration vyžaduje uživatelskou akci a to klik na tlačítko „Click here to open options dialog box“. Kde se nastaví Download, Debug nebo obojí. Režim RLink v SWD a to i přesto,že je hardwarově nastavené na JTAG. Jako nastavení stavového slova v části okna Option Bytes Action volíme Leave as is.
55
4.3 EZSP sériový protokol pro SPI EZSP je platný protokol pro komunikaci mezi řídicím mikrokontrolérem (dále „Host“) a síťovým mikrokontrolérem SN260 na ZigBee modulu SPZB260. Protokol je produktem firmy Ember a tato kapitola se zabývá jeho stručným popisem. Všechny EZSP datové rámce začínají třemi stejnými poli a to sequence, frame control a frame ID. Formát zbytku rámce závisí na konkrétním frame ID zprávy. Většina rámců má pevně danou délku, proměnnou délku mívají aplikační zprávy. Frame control indikuje směr zprávy, zda se jedná o příkaz (command) nebo odpověď (callback). Pro příkaz frame control obsahuje informace o spotřebě a v odpovědích stavové informace SN260. Základ komunikace je tvořen transakcemi o dvou zprávách podle obr. 3.1.1. Host iniciuje příkaz do SN260 a SN260 posílá odpověď Hostu. Pokud SN260 chce komunikovat asynchronně, což je i ve spojení s SPI rozhraním pravděpodobné, indikuje posílání zprávy signálem přerušení na vodiči HOST_INT. Pokud příkaz obsahuje aplikační zprávu, Host musí určit ve zprávě tag velikosti jednoho byte. Tento tag je v budoucích příkazech a odpovědích použit k přiřazení typu zprávy. Například, když je posílána zpráva, Host poskytne obsah zprávy a tag. Tag je potom užit k informování o „osudu“ zprávy v odpovědi z SN260.
4.3.1 Formát protokolu Formát celé zprávy je patrný z obr. 4.3.1.
Obr. 4.3.1 Formát rámce zprávy EZSP protokolu
Prvním bytem je Sequence. Hodnota Sequence by měla být inkrementována Hostem v každém časovém okamžiku, kdy je posílána nějaká zpráva. SN260 tuto hodnotu Sequence následně užívá v odpovědi. Frame control byte je nastaven podle aktuálního pracovního režimu SN260. Tím jsou myšleny režimy jako Power down, Deep sleep, Idle či normální provoz. Detailní nastavení je dostupné v [15]. Třetím bytem je Frame ID, který závisí na konkrétním typu rámce podle tab. 4.3.1 . Pole Parameters obsahuje ostatní parametry zprávy.
56
Pořadí 0 1 2 3 4 5 6 7 8 9
Typ Frame (Frame ID) Kapitola v [25] Configuration Frames 2.4 Utilities Frames 2.5 Networking Frames 2.6 Binding Frames 2.7 Messages Frames 2.8 Security 2.9 Trust center 2.10 Certificate Based Key Exchange (CBKE) 2.11 Mfglib 2.12 Bootloader 2.13 Tab. 4.3.1 Přehled rámců EZSP protokolu
4.4 EmberZNet® Pro - ZigBee software EmberZNet PRO je soubor softwarového vybavení obsahující všechny potřebné elementy k vytvoření síťové aplikace založené na platformě společnosti Ember. EmberZNet PRO je první certifikovaný ZigBee
stack pro průmyslové odvětví vyhovující standardu
ZigBee PRO Feature Set. Softwarový balíček EmberZNet poskytuje možnosti vytvoření aplikací spadajících do certifikovaných aplikačních profilů jako Remote control, Building automation, Home automation, Advanced Metering Infrastructure.
4.5 Základ společného softwarového vybavení Pro zrychlení vývoje aplikačního software, STMicroelectronics poskytla soubor zdrojových kódů ZigBee® REva Kit popsaných v [26], [28]. Zdrojové kódy jsou napsány s využitím dostupných firmwarových knihoven STMicroelectronics popsaných v [27]. Soubor zdrojových kódů byl oživen pracovníky STMicroelectronics na vývojových deskách firmy Raisonance, které slouží k demonstraci mikrokontrolérů STM32, STR7 a STR9 ve spojení se ZigBee platformou EM260 v ukázkových příkladech síťových aplikací. Zdrojové kódy obsahují pro naše zařízení spoustu nadbytečného i spoustu nevyhovujícího kódu. Přesto tento soubor tvoří základ aplikačního software pro RGB lampu, Dálkové ovládání a USB ovladač.
4.5.1 Nastavení sériového rozhraní USART Pro vývojové účely je implementován i obslužný software periferie USART1. Periferie je konfigurována do režimu UART. Pomocí něho jsou vypisovány hlášení na hyperterminál a lze tak jednodušeji odhalit chyby softwaru, případně získávat stavové hodnoty za běhu programu. Toho je užito v aplikačním software zejména v části obsluhy síťového software.
57
Prvek struktury
Význam nastavení
Natavená hodnota
USART_InitTypeDef USART_BaudRate
9600
USART_WordLength
USART_WordLength_8b
USART_StopBits
USART_StopBits_1
USART_Parity
USART_Parity_No
USART_HardwareFlowControl
USART_HardwareFlowControl_None
USART_Mode
USART_Mode_Rx | USART_Mode_Tx
Rychlost komunikace 9600 bitů/s Velikost datového slova je 8 bitů Počet Stop-bitů 1 Paritní bit není v přenosu uplatňován Nepoužívá hardwarové řízení toku dat Aktivace vysílacího o přijímacího kanálu
Tab. 4.5.1 Nastavení UART
Pro zápis na sériovou linku je implementována funkce printf() odpovídající standardní funkci z jazyku C. K tomu je využito vzorového příkladu z prostředí μVision.
4.5.2 Nastavení sériového rozhraní SPI Správné nastavení sériového rozhraní SPI zaručuje korektní komunikaci se ZigBee modulem s využitím protokolu EZSP. Nastavení periferie je patrné z tab. 4.5.2. Prvek struktury
Natavená hodnota
SPI_InitTypeDef SPI_Direction
SPI_Direction_2Lines_FullDuplex
SPI_Mode
SPI_Mode_Master
SPI_DataSize
SPI_DataSize_8b
SPI_CPOL
SPI_CPOL_High
SPI_CPHA
SPI_CPHA_2Edge
SPI_NSS
SPI_NSS_Soft
SPI_BaudRatePrescaler
SPI_BaudRatePrescaler_8
SPI_FirstBit
SPI_FirstBit_MSB
SPI_CRCPolynomial
7
Tab. 4.5.2 Nastavení SPI rozhraní
58
Význam nastavení Nastavení komunikace na plně duplexní režim SPI periferie je master a poskytuje CLK při komunikaci Data jsou předávána ve formátu slova o velikosti 8b Data jsou posouvána a platná na náběžnou hranu hodinového signálu Počátek vysílání je dán druhou hranou v signálu CLK Výběr Slave probíhá softwarovým řízením Frekvence První vysílaný bit každého byte je MSB Zabezpečení dat 7-bitovým CRC
4.5.3 Nastavení systému přerušení NVIC Použití systému přerušení je v této aplikaci nevyhnutelné. Může zde nastat mnoho událostí, které by se vzhledem k počtu úkolů aplikačního software nemuselo podařit s využitím metody opakovaného dotazování zachytit. Nastavení NVIC je shodné pro všechny zařízení. NVIC je nastaven do režimu PRIGROUP 2 z tabulky tab. 2.1.2 ve standardním vektorovém adresovacím prostoru Cortex-M3. Tato nastavení se provedou následujícími funkcemi. V navržených zařízeních jsou ošetřena přerušení od pěti různých zdrojů. Prvním je externí přerušení od ZigBee modulu. Na jeho základě se spouští SPI komunikace a je mu nastavena nejvyšší priorita z definovatelných přerušení. Následné čtyři obsluhují události z USART1, externího kanálu tlačítka a časovače TIM2, TIM3 v případě dálkového ovládání. v případě RGB lampy TIM3, TIM4. Samotné nastavení jednotlivých zdrojů přerušení na jednotlivé kanály je dáno tabulkami tab. 4.5.3 a tab. 4.5.4.
/*Tabulka vektoru přerušení je ve FLASH paměti a začíná na 0x08000000*/ NVIC_SetVectorTable(NVIC_VectTab_FLASH, NVIC_VectTab_FLASH_base); /*Nastavení 2 prioritních a 2 podprioritních skupin*/ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Prvek struktury NVIC_InitTypeDef NVIC_IRQChannel
Natavená hodnota EXTI15_10_IRQChannel
NVIC_IRQChannelPreemptionPriority
0
NVIC_IRQChannelSubPriority
0
NVIC_IRQChannelCmd
ENABLE
Význam nastavení Kanál 10 15 pro externí přerušení Nejvyšší priorita z preemption Nejvyšší priorita z subpriority Povoleni tohoto přerušení
Tab. 4.5.3 Nastavení přerušení pro externí signál HOST_INT z SPZB260
Prvek struktury NVIC_InitTypeDef
NVIC_IRQChannel
Natavená hodnota TIM2_IRQChannel TIM3_IRQChannel TIM4_IRQChannel USART1_IRQChannel EXTI15_10_IRQChannel
NVIC_IRQChannelPreemptionPriority
1
NVIC_IRQChannelSubPriority
0
NVIC_IRQChannelCmd
ENABLE
Význam nastavení Kanál přeruš. pro TIM2 Kanál přeruš. pro TIM3 Kanál přeruš. pro TIM4 Kanál přeruš. pro USART1 Kanál 10 15 pro externí přerušení Druhá nejvyšší priorita z preemption Nejvyšší priorita z subpriority Povoleni tohoto přerušení
Tab. 4.5.4 Nastavení NVIC pro systémový timer, SPI timer, USART1, externí přerušení od tlačítka 59
4.6 ZigBee software Z obrázku obr. 4.6.1 podle [5] jsou patrné základní úkoly, které musí být v aplikačním software vyřešeny nebo implementovány. Je myšlen aplikační software založený na Ember platformě standardu ZigBee, tedy EmberZNet.
Obr. 4.6.1 Zkladní úkoly aplikačního softwaru
4.6.1 Definice Endpointů a Callbacků Každý main souboru aplikace musí začínat definováním některých důležitých parametrů. Tyto parametry zahrnují endpointy, callbacky a nějaké specifické globální proměnné. Endpointy jsou vyžadované k posílání a přijímání zpráv. Složitá síťová zařízení mohou obsahovat endpointů hned několik. Pro řešení sítě inteligentního domovního osvětlovače stačilo definovat pouze jeden endpoint v každém zařízení. V tabulce tab. 4.6.1 jsou zachycena definice endpointu a proměnné s tím spojné. Endpoint
Popis
Nastavení v aplikačním software
Definuje kolik 1 endpointů existuje na dané zařízení EmberEndpointDescription Typická definice {PROFILE_ID, 0, } PGM endpointDescription endpointu. { Globální pole, které { EmberEndpoint definuje, jak jsou dané ENDPOINT,&endpointDescription emberEndpoints[ ] endpointy } enumerovány. ,}; Tab. 4.6.1 Vyžadované globální endpointy int8u emberEndpointCount
Vyžadované funkce obsluhy callbacků jsou zachyceny v tab. 4.6.2. Detailní popis každé z funkcí je k nalezení v [29]. Poslední dvě funkce nejsou užity, protože každé zařízení zatím pracuje ve vývojovém režimu. To znamená, že užívá pevně nastavených vlastností sítě a nevyužívá k připojení vyhledávací mechanizmus, vyžadující obsluhu callbacků. 60
Funkce obsluhy callbacků
Popis
Využití v aplikačním software
Volána když se dokončí posílání zprávy. Návratová hodnota určuje, emberMessageSentHandler( ) zda posílání bylo úspěšné či nikoliv. emberIncomingMessageHandler( Volána, když je přijata zpráva.
ANO ANO
)
Volána, když se změní status stacku. Například připojen, odpojen, zmizení sítě. Volána, když je dokončeno emberScanCompleteHandler( ) vyhledávání sítí. Volána, když je nalezena síť emberNetworkFoundHandler( ) během scanování prostoru pro dostupné sítě. Tab. 4.6.2 Vyžadované základní funkce
ANO
emberStackStatusHandler( )
NE NE
4.6.2 Endpointy, Clustery a Profily Z objektově orientovaného pohledu je endpoint instancí endpointDescriptoru, který je jako třída popisující atributy či funkčnost endpointu.
Definice základních prvků PROFILE_ID ENDPOINT
Hodnota
Popis
Jedinečné určení aplikačního profilu pro vývoj software pod ST Microelectronics Numerické označení prvního a 1 posledního endpointu v zařízení Tab. 4.6.3 Definice parametrů pro ZDO domovního osvětlovače
Definované Clustery
0x0266
Hodnota (ClusterID)
Popis
Koordinátor sítě hledá nové prvky sítě RGB lampa potvrzuje že našla MSG_LIGHT_SELECT_SWITCH 2 koordinátora. MSG_SWITCH_READY 3 Koordinátor hlásí přítomnost USB ovladač se připojil do sítě a žádá si o MSG_NODE_IN_NET 10 jeho akceptování. Přenos zprávy s budoucím stavem RGB MSG_LIGHT_STATE 255 lampy. Vypnuto /zapnuto. Přenos zprávy s barevnými složkami barev MSG_WHEEL_DATA 249 pro RGB lampu. Přenos zprávy, která aktivuje či deaktivuje MSG_DEVICE_SELECT 245 vnímání RGB lampy MSG_LIGHT_OK 241 RGB lampa potvrzuje, že je stále v síti. USB ovladač žádá RGB lampy, aby se mu MSG_MULTICAST_USB_TO_LIGHT 170 ohlásili Tab. 4.6.4 Definice clusterů a jejich význam MSG_SWITCH_ADVERTISE
1
61
Descriptor „dědí“ schopnosti z aplikačního profilu (kapitola 2.2.7.1), to znamená, že deskriptor obsahuje specifikaci typu zařízení. Zjednodušeně řečeno, každý aplikační profil může obsahovat sadu endpointů. A každý endpoint akceptuje určité Clustery. Cluster vyjadřuje jakýsi parametr endpointu. Endpoint obvykle obsahuje výčet vstupních a výstupních Clusterů. Software obsahující všechny předešlé stavební prvky lze nazývat ZDO z anglického ZigBee Device Object. V každém síťovém zařízení navrženém pro inteligentní domovní osvětlovač je implementován jedinečný aplikační profil, definován jeden endpoint a sada clusterů. Výčet definic je patrný z následujících tabulek.
4.6.3 Stanovení programové smyčky Správný návrh hlavní programové smyčky je velice důležitý. Týká se jak výkonnosti aplikace, tak její stability. obr. 4.6.2 popisuje aplikační smyčku užitou v každém softwarovém řešení pro navržená zařízení. START
Inicializace
Znovu připojení se k síti Funkční průchody mezi programovými bloky Reset Watchdog Není vyřešeno, aplikace je funkční i bez toho emberTick()
Network state
Vytvoření, připojení nebo znovu připojení se k síti
Nastavení indikátorů stavu (LED) Obsluha nesíťových záležitostí(měřeni ADC, čtení UART, atd..)
Nepřipojeno k síti
applicationTick()
Obr. 4.6.2 Programová smyčka pro aplikace na EmberZNet
4.6.4 Nastavení sítě a vyžadované řízení Třemi základními akcemi v této kategorii jsou Detekování sítě Připojení k síti Založení sítě 62
4.6.4.1 Detekce sítě Detekce se provádí pomocí funkcí z [5] kapitoly 3.3.3.1. V aplikaci domovního osvětlovače je nastavení sítě pevně dané, a proto zde nejsou funkce uvedeny. Aktuální parametry sítě jsou patrné z tab. 4.6.5. Parametr struktury EmberNetworkParameters radioChannel extendedPanId panId radioTxPower
Nastavená hodnota v aplikačním software
Význam
Připojí se na kanál 26 pásma. Podle standardu 802.15.4. Rozšířený identifikátor {'l','i','g','h','t', 's',0,0} sítě. Standardní 511 indentifikátor sítě. Výstupní výkon -1 vysílače (dBm). Tab. 4.6.5 Nastavení parametrů užité sítě ZigBee 26
4.6.4.2 Připojení k síti Nový prvek ZR, který má definované vlastnosti sítě dle tab. 4.6.5 se pokouší po svém startu připojit ke stejné síti vytvořené ZC. Pokud ZC zaregistruje tyto pokusy, odešle potvrzení se síťovou adresou žádajícímu ZR. Pokyn k připojení nastává v okamžiku volání funkce
emberJoinNetwork().
emberStackStatusHandler().
Odpovědí
na
tuto
funkci
je
volání
callbacku
Předaným parametrem je aktuální stav sítě. Pokud
připojení proběhlo úspěšně, parametrem je JOINED. 4.6.4.3 Vytvoření sítě O vytvoření sítě se stará ZC. Vytvoření sítě s pevně danými parametry je jednoduší, než klasické vytvoření sítě s vyhledáním dostupných kanálů. Po nastavení struktury EmberNetworkParameters se voláním funkce emberFormNetwork() zahájí proces
zakládání sítě. Pokud je síť založena, funkcí emberPermitJoining() v ZC lze povolit dalším zařízením připojení do sítě. Software pro ZC inteligentního domovního osvětlovače má povoleno připojení ZR neustále. Je to z důvodu automatizovaného připojování nové RGB lampy nebo USB ovladače do sítě. Připojení ZR není závislé na zásahu uživatele.
63
4.6.5 Obsluha zpráv Užívaný EmberZNet stack se stará o spoustu věcí na základě nízkoúrovňového zpracování zpráv. To je patrné z obr. 4.6.3 podle [5], z kterého je patrné, kde je rozhranní aplikačního softwaru s nízkoúrovňovým systémem zpracování zpráv.
Obr. 4.6.3 Postup zpracování zpráv
APS layer zpracovává APS frame strukturu. Tato struktura ale obsahuje ještě APS header umístěnou v části Paremeters z obr. 4.3.1. Navržený program musí pro odesílanou zprávu APS header sestavit případně pro přijímanou zprávu APS header analyzovat. Mezi základní úkony týkající se zpráv patří následující činnosti Vytvoření + odeslání zprávy Přijetí zprávy 4.6.5.1 Vytvoření + odeslání zprávy Vytvoření zprávy se zpravidla dělá v programu těsně před jejím odesláním. Specifické nastavení závisí na typu zprávy. Typy zpráv vypisuje tab. 4.6.6. Typ zprávy Unicast Multicast Broadcast
Název vysílací funkce
Popis
emberSendUnicast() Zaslání zprávy jednomu jedinému cíli v síti emberSendMulticast() Zaslání zprávy vybrané skupině cílů v síti emberSendBroadcast() Zaslání zprávy všem přítomným prvkům v síti Tab. 4.6.6 Typy zpráv sítích ZigBee
V aplikaci domovního osvětlovače jsou využity zprávy typu unicast a multicast. Jejich popis s přednastavením APS header je ukázán na následujících praktických příkladech. Zpráva unicast Dálkové ovládání jako ZC zasílá mimo jiných zprávu unicast RGB lampám. Zpráva obsahuje parametry barevných složek a je indikována specifickou volbou clusteru. Zjednodušená zpráva pro přenos čtyř barevných složek je následující.
64
/*demonstrační nastavení čtyř dvoubytových slov jako dat k vyslání*/ globalBuffer = {20,30,30,40,40,50,50,60}; /*nastavení aplikačního profilu této aplikace*/ frame.profileId = PROFILE_ID; /*nastavení specifického Clusteru pro posílání RGB složek*/ frame.clusterId = MSG_WHEEL_DATA; /*endpoint dálkového ovládání*/ frame.sourceEndpoint = ENDPOINT; /*nastavení cílového endpointu – endpoint RGB lampy*/ frame.destinationEndpoint = ENDPOINT; /*žádné speciální nastavení pro APS header*/ frame.options = EMBER_APS_OPTION_NONE; //EMBER_APS_OPTION_NONE; /*seqence 0, není třeba hlídat časové vazby mezi zprávami inkrementováním sequence*/ frame.sequence = 0; /*samotné vyslání zprávy unicast, do status je uložen stav po odeslání*/ status = ezspSendUnicast ( /*adresování cíle pomocí tabulky adres dostupných zařízení*/ EMBER_OUTGOING_VIA_ADDRESS_TABLE, /*pořadový index vybraného cíle v tabulce */ tableNodeIndex, /*ukazatel na nastavený APS frame frame*/ &frame, /*ještě jednou zvolený Cluster*/ MSG_WHEEL_DATA, /*délka datové zprávy = počet využitých bytů z globalBufferu*/ 8, /*data, která jsou třeba poslat*/ globalBuffer, /*zařazení sequence ještě jednou*/ &frame.sequence); /*kontrola, zda nedošlo při odesílání k chybě*/ if (status != EMBER_SUCCESS) { if (status == 0xa1) emberSerialPrintf(APP_SERIAL, "NETWORK BUSY.....Message not sent\r\n"); else emberSerialPrintf(APP_SERIAL, "Error during the message sending: 0x%x\r\n", status);
Zprávy typu unicast používají všechny typy zařízení, pokud se bude někde hovořit o tomto typu zpráv, je tím myšlena předchozí softwarová konstrukce se změnou příslušných parametrů. Zpráva multicast Dálkové ovládání využívá zprávu typu multicast k periodickému dotazování na nové prvky sítě nebo přítomnost již zaregistrovaných. Softwarová konstrukce ukázkové zprávy typu multicast je následující.
65
apsFrame.profileId = PROFILE_ID; /*RGB lampy reagují na cluster MSG_SWITCH_ADVERTISE odpovědí*/ apsFrame.clusterId = MSG_SWITCH_ADVERTISE; apsFrame.sourceEndpoint = ENDPOINT; apsFrame.destinationEndpoint = ENDPOINT; apsFrame.options = EMBER_APS_OPTION_NONE; /*groupID udává, které skupině posluchačů je zpráva určena */ apsFrame.groupId = MULTICAST_ID; apsFrame.sequence = 0;
status = ezspSendMulticast( &apsFrame, /*radius 10 udává, že “dosah” zprávy je 10 zařízení v hloubkovém řezu topologie sítě */ 10, // radius /*non-member radius 6 udává počet zařízení, přes které zpráva projde, ale nejsou členy groupID.*/ 6, // non-member radius /* cluster */ MSG_SWITCH_ADVERTISE, /* délka zprávy, je 0. Posílá se jenom Cluster s APS header */ 0, /* globalBuffer pouze jako nezbytný parametr */ globalBuffer, &apsFrame.sequence); /* výpisové hlášení na sériovou linku */ emberSerialPrintf(APP_SERIAL, "TX [switch advertise], status 0x%x\r\n", status);
4.6.5.2 Přijetí zprávy Přijetí zprávy je s použitím EmberZNet celkem prostá záležitost. Pokud na základě nižších
vrstev
dle
obr.
4.6.3
dojde
k příjmu
zprávy,
je
volána
funkce
emberIncomingMessageHandler(). V této zprávě se potom na základě očekávaných
hodnot řeší její zpracování. Ve zdrojových kódech pro EmberZNet se k tomu zpravidla užívá rozhodovací metody pomocí přepínače (switch()). Je jasné, že obsah funkce je v každém zařízení jiný, ale následující kód ukazuje názorný příklad, jak dochází ke zpracování zprávy ve jmenované funkci. Je uvedená zjednodušená verze přijmu zprávy RGB lampou od dálkového ovládání a zpráva přenáší informace k zapnutí nebo vypnutí lampy. ezspIncomingMessageHandler(EmberIncomingMessageType type, EmberApsFrame *apsFrame, int8u lastHopLqi, int8s lastHopRssi, EmberNodeId sender, int8u bindingTableIndex, int8u addressTableIndex, int8u length, int8u *message)
66
{ // ******************************************** // obsluha příchozí zprávy // ******************************************** /* aplikace přepínače switch */ switch (apsFrame->clusterId) { /* hledání odpovídajícího Clusteru */ case ClusterID: /* výkonný kód pro zpracování zprávy nebo reakci na přijatou zprávu se specifickým clusterem */ if(aktivovaneSvetlo){ if (zapnuteSvetlo){ zapnuteSvetlo = FALSE; nastavKanalyRGBTimeruNa(0); } else { nastavKanalyRGBTimeruNa(ulozeneBarvy); zapnuteSvetlo = TRUE; } } break; /* pokud cluster nevyhovuje žádné z nabídek,je dobré ho vypsat na sériovou linku a analyzovat */ default: emberSerialPrintf(APP_SERIAL, "RX [unknown (%2x)] ", apsFrame->clusterId); emberSerialPrintf(APP_SERIAL, "; analyse me\r\n"); break;
4.6.6 Housekeeping Tasks Poslední část, kterou musí aplikační software obsahovat, se zabývá především následujícími body. Obsluha I/O Reset watchdog timer Práce s daty (výměna dat s SN260) Řešení chybových hlášení a stavů Tyto záležitosti jsou vyřešeny funkcí emberTick()korespondující s výkoným blokem z obr. 4.6.2. emberTick() je další unikátní funkcí, která je vyžadována v aplikaci postavené na platformě SN260. Volání této funkce přikazuje stacku, aby vydal události, které nastaly od posledního volání funkce emberTick().
4.6.7 Konfigurace ZigBee sítě Z obrázk
67
obr. 4.6.4 je patrná konfigurace a topologie navržené sítě pro inteligentní domovní osvětlovač.
Dálkové ovládání (ZC)
RGB lampa (ZR)
1
2
N
N-1
USB ovladač (ZR) Ověřená komunikace Teoretická komunikace
1
X
2
Obr. 4.6.4 Toplogie navržené sítě
Proměnné N a X vyjadřují počet zařízení. Konkrétní počet zařízení v síti domovního osvětlovače je dán rovnicí (4.1) a vychází z velikosti adresovací tabulky ZC. (4.1)
4.7 Software RGB lampy 4.7.1 Inicializace systému hodin Mikrokontroléry obsahují rozsáhlou interní strukturu umožňující rozmanité variace v nastavení hodinového signálu pro obsažené periferie. Blokové schéma interní struktury je patrné z obr. 4.7.1 podle [13]. Pro RGB lampu jsou využívány periferie dle tabulky tab. 4.7.1. Nastavení frekvencí pro jednotlivé hodinové sběrnice s použitými funkcemi je patrné z tab. 4.7.1. Frekvence jsou odvozeny od frekvence zdroje hodinového signálu, čímž byl zvolen interní 8MHz RC oscilátor. Periferie Sběrnice hodin GPIOA PCLK2 GPIOB PCLK2 GPIOC PCLK2 TIM2 PCLK1 TIM3 PCLK1 TIM4 PCLK1 SPI1 PCLK2 ADC1 PCLK2 USART1 PCLK2 Jádro Cortex-M3 HCLK Tab. 4.7.1 Použité periferie a odpovídající sběrnice hodin 68
Pořadí
Použitá funkce s parametry
1
RCC_HSICmd(ENABLE);
2
RCC_HCLKConfig(RCC_SYSCLK_Div1);
3
RCC_PCLK2Config(RCC_HCLK_Div1);
4
RCC_PCLK1Config(RCC_HCLK_Div1);
5
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9);
6
RCC_ADCCLKConfig(RCC_PCLK2_Div8);
7
Význam Zdroj hodin Interní RC oscilátor 8MHz Hodiny pro HCLK sběrnici ൌ sběrnice Hodiny pro PCLK2 ʹൌ Hodiny pro PCLK1 ͳൌ Nastavení PLL
Hodiny pro ADC ൌͶǡͷ Hodiny pro SYSCLK RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); ൌ Tab. 4.7.2 Postup a princip nastavení sběrnic hodin
Obr. 4.7.1 Blokové schéma obvodu hodin mikrokontorlérů STM32
69
4.7.2 Nastavení analogově číslicového převodníku STM32F101CB obsahuje dvě měřicí jednotky A/Č převodníku označené ADC1 a ADC2. V RGB lampě jsou využity 3 kanály jednotky ADC1. Každý z kanálů má shodné nastavení podle tab. 4.7.3. Prvek struktury
Natavená hodnota
ADC_InitTypeDef ADC_Mode
Význam nastavení
ADC1 a ADC2 pracují nezávisle na sobě Odměr vždy jenom na DISABLE jediném kanálu pracují v režimu Single DISABLE conversion ADC_ExternalTrigConv_None Není externě triggerován Data budou po konverzi ADC_DataAlign_Right zarovnána v 16-bitovém slovu do prava Udává počet kanálů pro 1 měření Tab. 4.7.3 Nastavení kanálů ADC1 ADC_Mode_Independent
ADC_ScanConvMode ADC_ContinuousConvMode ADC_ExternalTrigConv ADC_DataAlign ADC_NbrOfChannel
Pořadové číslo kanálu 2 8 9
Určení kanálu
Použití měřicího kanálu
ADC_Channel_2 Určení teploty RGGB modulu ADC_Channel_8 Nastavení jasu v manuálním režimu ADC_Channel_9 Nastavení barvy v manuálním režimu Tab. 4.7.4 Tabulka použitých kanálu ADC1
Ukázkový blok měření na kanálu teploty je patrné z následujícího příkladu. Vývojový diagram z obr. 4.7.2 zahrnuje měření na všech kanálech z tab. 4.7.3. /* nastavení kanálu, na kterém se bude měřit*/ ADC_RegularChannelConfig(ADC1,ADC_Channel_2,1, ADC_SampleTime_41Cycles5); /* spuštění konverze*/ ADC_SoftwareStartConvCmd(ADC1, ENABLE); /* již nastal konec převodu ?*/ while(!(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))); /* pokud ano, vynuluj FlagEndOfConversion */ ADC_ClearFlag(ADC1, ADC_FLAG_EOC); /* čtení naměřené hodnoty do proměnné TEPLOTA */ TEPLOTA = ADC_GetConversionValue(ADC1);
70
Start Nastav kanál 1
Nastav kanál 2
Nastav kanál 3
Spusť konverzi
Spusť konverzi
Spusť konverzi
EOC
EOC
EOC
+
+
+
Vynuluj flag EOC
Vynuluj flag EOC
Vynuluj flag EOC
Ulož data
Ulož data
Ulož data
Konec Obr. 4.7.2 Vývojový diagram měření ADC1
4.7.3 Nastavení timeru pro generování PWM Periferie čítače/časovače, v literatuře [13] uváděna jako TIM2 je užita ke generování PWM signálu pro řízení barev. Nastavení TIM2 určuje výslednou hloubku barev a ve spojení s hodinovým signálem periferie je nutné správně spočítat obnovovací frekvenci základny, která by neměla být nižší než 100Hz z [1]. Lidské oko je pod tuto hranici schopné registrovat nespojitost obrazu. V našem případě jsou myšleny jednotlivé složky barev RGB. Požadována hloubka jedné barvy je 16 bitů, což odpovídá hodnotě 65536 úrovní. Dodržení podmínky z nerovnice (4.2) a (4.3) odstraní viditelné „blikání“. (4.2)
Nebo také (4.3)
Kde fZ
obnovovací frekvence časové základny
TZ
perioda obnovení časové základny
71
Obr. 4.7.3 Blokové schéma časovače TIM2
Základním prvkem každého timeru je časová základna a její nastavení. S časovou základnou jsou asociovány tři registry. Prescaler registr, Counter registr a Auto-reload registr. Registry a jejich blokové umístění je patrné z obr. 4.7.3 podle [13]. Prescaler registr funguje jako 16-bitová předdělička hodinového systému. Counter registr inkrementuje nebo dekrementuje hodnoty než dosáhne shody s hodnotou registru Auto-reload. Hodnota v Autoreload registru udává rozlišení časové základny. Hodinový signál pro TIM2 je nastaven na 36MHz. Nastavení časové základny je patrné z tab. 4.7.5 a dosažené parametry z obr. 4.7.4. Prvek struktury TIM_TimeBaseInitTypeDef TIM_Period TIM_Prescaler TIM_ClockDivision TIM_CounterMode
Natavená hodnota
Význam nastavení
Nastavení Auto-reload registru na maximální dovolenou hodnotu. Nastavení předděličky. Counter 4 inkrementuje na každou 4 hranu hodinového signálu. Frekvence hodinového signálu = TIM_CKD_DIV1 frekvence APB1 = 36MHz Counter registr inkrementuje hodnotu od TIM_CounterMode_Up 0 do hodnoty v Auto-reload Tab. 4.7.5 Nastavení časové základny TIM2 65534
72
TCK_PSC fCK_PSC
CK_PSC
TCK_CNT CK_CNT
Counter register
fCK_CNT
Časová základna
TB
Hodnota auto-reload fB
t
Obr. 4.7.4 Nastavení časové základny TIM2
Označené časové úseky korespondují s blokovým schématem z obr. 4.7.3. Konkrétní hodnoty pro vyznačené periody vychází z tab. 4.7.5 a následujících rovnic. (4.4)
(4.5)
(4.6)
(4.7)
(4.8)
(4.9)
Nyní zbývá nastavit PWM signály. Každý ze čtyř PWM signálů lze nastavit individuálně. Pro každý kanál PWM existuje OC (Output Control) inicializační struktura. tab. 4.7.5 uvádí počáteční nastavení jednoho kanálu.
73
Prvek struktury TIM_OCInitTypeDef TIM_OCMode TIM_OutputState TIM_Pulse TIM_OCPolarity
Natavená hodnota
Význam nastavení
Režim PWM v módu 1 viz [13] Povolení užití kanálu 0 dílků časové základny je v periodě 0 TB aktivní Část periody v délce TIM_Pulse je TIM_OCPolarity_High v úrovni logická „1“ Tab. 4.7.6 Nastavení OC časovače
TIM_OCMode_PWM1 TIM_OutputState_Enable
Důležitým nastavením při inicializaci TIM2 jsou následující funkce. První funkce je uvedena pro nastavení OC1, ale jinak musí být nastaven individuálně každý OC. /* PWM signál bude generován kontinuálně */ TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); /* Při změně TIM_Pulse se hodnota přepíše, až když Auto-reload registr dosáhne hodnoty TIM_Period */ TIM_ARRPreloadConfig(TIM2, DISABLE);
Ukázkový blok programu pro nastavení střídy 1:1 signálu PWM se provede dle následujícího příkladu. /* nastav TIM_Pulse na polovinu Auto-reload registru */ TIM_OCInitStructure.TIM_Pulse = 32767; /* již Counter registr dosáhl hodnoty v Auto-reload*/ while(TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == RESET); /* aktualizuj nová data TIM_Pulse v OC1*/ TIM_OC1Init(TIM2, &TIM_OCInitStructure); /* vymaž flag TIM_FLAG_UPDATE*/ TIM_ClearFlag(TIM2, TIM_FLAG_Update);
Nastavení všech kanálů se provádí v krocích podle vývojového diagramu na obr. 4.7.5 vývojový diagram postupného nastavení kanálu tim2 generujících pwm.
74
Start Nastav TIM_Pulse Nastavení OC1
Nastavení OCx
Nastav TIM_Pulse TIM_FLAG_UPDATE
Nastavení OC2
+ Vynuluj flag TIM_FLAG_UPDATE
Nastav TIM_Pulse Nastavení OC3
Aktualizuj strukturu OCx
Nastav TIM_Pulse
Konec
Nastavení OC3
Konec
Obr. 4.7.5 Vývojový diagram postupného nastavení kanálu TIM2 generujících PWM
4.7.3.1 Kanály TIM2 Jednotlivým kanálům časovače TIM2 jsou implicitně přiděleny jisté GPIO(General Purpose Input Output) pouzdra mikrokontroléru. Tato konfigurace omezovala použití signálů od jiných periferií. Řešením je remapování na jiné GPIO pomocí systému AFIO (Alternate function Input Output). Změna je patrná z tab. 4.7.7. AFIO TIM2_CH1 TIM2_CH2 TIM2_CH3 TIM2_CH4
Implicitní nastavení Nové nastavení Využito jako PA0 PA0 PA1 PA1 PA2 PA10 ADC kanál 9 PA3 PA11 SPI Slave Select vodič Tab. 4.7.7 Použité GPIO pro kanály PWM
4.7.4 Systémový timer Pro přenos dat v síti ZigBee je důležité zavést časový pojem do systému. Jinak řečeno, vykonáním akcí v určité časové okamžiky lze předvídat následující stav sítě a vyvarovat se kolizním stavům. K tomuto účelu byl zaveden systémový časovač. Jedná se o periferii TIM3. Tento časovač pracuje v režimu generování časových událostí (Output Compare mode). Je nastaven pro generování události každou 1ms. Samotné nastavení je patrné z tabulek tab. 4.7.8 a tab. 4.7.9.
75
Prvek struktury
Natavená hodnota
TIM_TimeBaseInitTypeDef
Význam nastavení
Nastavení Auto-reload registru na maximální dovolenou hodnotu. Nastavení předděličky. Counter TIM_Prescaler 35999 Výsledkem je rozlišení 1ms Frekvence hodinového signálu = TIM_ClockDivision TIM_CKD_DIV1 frekvence APB1 = 36MHz Counter registr inkrementuje hodnotu TIM_CounterMode TIM_CounterMode_Up od 0 do hodnoty v Auto-reload Tab. 4.7.8 Nastavení časové základny systémového časovače TIM_Period
65535
Prvek struktury
Natavená hodnota
TIM_OCInitTypeDef TIM_OCMode TIM_OutputState TIM_Pulse
Význam nastavení
Časovací mód OC Povolení užití kanálu Hodnota odpovídající 65535ms Část periody v délce TIM_Pulse je TIM_OCPolarity_High v úrovni logická „1“ Tab. 4.7.9 Nastavení OC systémového časovače
TIM_OCMode_Timing TIM_OutputState_Enable 65535
TIM_OCPolarity
Časové řízení akcí v softwarových procedurách je založeno na čtvrt sekundových intervalech. Tento interval je odvozen z generovaných událostí systémovým časovačem.
4.7.5 Manuální nastavení barvy a jasu Z kapitoly 3.2.4 vyplývá, že na vstupech 8 a 9 ADC je měřeno napětí od (0 3,3)V. Funkce vstupů je patrná z tab. 4.7.4. Rozsah převodníku je 12b tj. 4096 hodnot. To znamená, že maximální dosažitelný počet barev je 4096 a stejně tak počet úrovní jasu. Manuální režim řízení barev umožňuje nastavení maximálně 16777216 barev. Je uvedeno maximálně, protože nejsou zjištěny aktuální měřicí chyby převodníku. Postup výpočtu barvy se provádí pomocí obr. 4.7.6 podle [1]. Barevná škála je rozdělena na 6 úseků se specifickým obsažením jednotlivých barevných složek. 4096 úrovní z POT R31
682
B = ON R= OFF G = ++
682
B = -R= OFF G = ON
682
B = OFF R= ++ G = ON
682
B = OFF R= ON G = --
685
682
B = ++ R= ON G = OFF
B = ON R= -G = OFF
B = ON R= OFF G = OFF
Obr. 4.7.6 Rozdělení barevného spektra na rozlišení ADC převodníku
Návrh vychází z RGB modelu, který je omezen zmíněným rozlišením barev. Použitý algoritmus počítá barvy v pořadí z obr. 4.7.7. 76
R
Dosažené barvy RGB modelu G
B
Obr. 4.7.7 Dosažené barvy RGB modelu
Pokud jsou známy jednotlivé složky barev, řízení jasu je již jednoduché a vychází z principů z kapitoly 2.4.1.2. RGB lampě je vyřešeno násobením každé složky stejnou hodnotou, aby zůstal zachován poměr barev. Zmíněná hodnota je dána poměrem aktuální hodnoty měřené A/Č převodníkem na kanálu 8 a její maximální hodnoty, kterou je 4095. Výsledkem je číslo v rozmezí (0–1), neboli (0 100)% .
4.7.6 Inicializace RGB lampy Obsah inicializační procedury z obr. 4.6.2 je patrný z vývojového diagramu na obr. 4.7.8. inicializace Nastavení ADC
Povolení externích přerušení
Nastavení RGGB timeru
Ověření komunikace po SPI
Nastavení systému hodin Nastavení přerušení Nastavení UART
Nastavení systémového timeru
Nastavení tlačítek
Spuštění systémového timeru
Nastavení LED
Nastavení SPI
Ověření verze stacku Nastavení aplikačních konstant
Konec inicializace Obr. 4.7.8 Vývojový diagram inicializační procedury RGB lampy
4.7.7 applicationTick() RGB lampy Jak je patrné z vývojového diagramu na obr. 4.6.2 procedura applicationTick() je volána v každém cyklu hlavní programové smyčky pouze tehdy, když se prvek úspěšně připojil k síti ZigBee.
77
applicationTick() 1
Kontrola teploty RGB modulu
Uběhlo 250ms
+ 2
Aktualizace stavu LED
Invertuje aktuální stav každým průchodem
3
Ošetření požadavku odpovědi na dotaz ZC
Pokud je požadováno provádí s odezvou (1-4)s
4
Ošetření požadavku na odpověď od ZC
Pokud je požadováno provádí s timeoutem 10s
5
Zaslání clusteru do ZC idenfikující její stálou přítomnost
Pokud RGB lampa nalezla ZC, posílá každých cca 20s presenční cluster
6
Ošetření požadavku na presenční odpověď do USB ovladače
Pokud RGB lampa nalezla ZR USB ovladač, posílá mu potvrzovací zprávu
Konec
Obr. 4.7.9 Vývojový diagram procedury applicationTick() RGB lampy
Časová závislost vykonání jednotlivých bloků procedury se provede nastavením hodnoty nějaké proměnné, která je následně průchodem podmínky 250ms zmenšena o hodnotu 1. Po dosažení nulové hodnoty v nastavené proměnné je jasné, že uběhl požadovaný čas. Například získání odezvy 20s z pátého bloku diagramu získáme nastavením proměnné na hodnotu 80.
4.7.8 Akceptované clustery a zprávy Každé ZigBee modul má z výroby uložené svoje identifikační číslo. Tento identifikátor má rozsah osm bytů a je označován EUI64. Toho je využito k částečnému zabezpečení a identifikaci zpráv. Identifikátor EUI64 je přidáván jako data do každého vysílaného datového rámce. To znamená, že pokud se formuje zpráva, jako první se uloží do datového bufferu vlastní EUI64 a až poté požadovaná data. Velikost datového rámce je tedy vždy minimálně osm bytů. Zdá se, že by tato skutečnost mohla zbytečně zatěžovat síť, ale tento postup je velice praktický pro rozeznávání nových prvků a řešení adresování. Je to jediný identifikátor zařízení, který se jistě za dobu funkce sítě nezmění. Využití přidělované dvou bytové síťové adresy, označované nodeId, síťovým manažerem není stoprocentní, jelikož je přidělována náhodně a hrozí jejich kolize, která má za následek jejich změnu.
78
Při rozeznávání přijatých datových zpráv se nejdříve zkontroluje, zda počet přijatých bytů je minimálně roven počtu osm a pokud ano, začne se řešit zbytek zprávy. Procedura pro vyhodnocení přijatých zpráv je zachycena v diagramu z obr. 4.7.10 incomingMessageHandler
Délka dat >= 8B
+ 1
Ulož přijaté EUI64
MSG_SWITCH_ADVERTISE
MSG_SWITCH_READY
+
MSG_WHEEL_DATA
+
+
Požadavek na odpověd do ZC
ZC se hlásí, že je stále v síti
Zpráva pro nastavení nových hodnot barevných složek
MSG_LIGHT_STATE
MSG_DEVICE_SELECT
MSG_MULTICAST_USB_TO_LIGHT
+ Změna stavu RGB lampy na opačný (vypnuto/zapnuto)
+ Informace k přepnutí světla do aktivního nebo pasivního režimu
+ Požadavek na odpověď do ZR(USB ovladač)
Konec
Obr. 4.7.10 Vývojový diagram pro zpracování zpráv v RGB lampě
4.8 Software dálkového ovládání V popisu softwaru pro dálkové ovládání jsou opět znázorněny základní prvky obslužného software. Jedná se o nastavení hodinových sběrnic, I2C periferie, vyhodnocení dat ze senzorů a na závěr popis hlavní výkonné programové procedury.
4.8.1 Inicializace systému hodin Nastavení sběrnic hodin je totožné s nastavením RGB lampy. Vychází tedy z tab. 4.7.2. Periferie a příslušné hodinové sběrnice použité v mikrokontroléru dálkového ovládání jsou patrné z tab. 4.8.1
79
Periferie
Sběrnice hodin
GPIOA PCLK2 GPIOB PCLK2 TIM2 PCLK1 TIM3 PCLK1 I2C1 PCLK1 SPI1 PCLK2 ADC1 PCLK2 USART1 PCLK2 Jádro Cortex-M3 HCLK Tab. 4.8.1 Použité periferie a odpovídající sběrnice hodin
4.8.2 Nastavení sběrnice I2C Periferie I2C je využita ke komunikaci s obvodem STMPE821. Mikrokontrolér obsahuje dvě nezávislé komunikační jednotky označené I2C1 a I2C2. V aplikaci dálkového ovládání se užívá I2C1 a je konfigurována na Master mód. Funkční nastavení periferie je uvedeno v následující tabulce. Prvek struktury I2C_InitTypeDef
Natavená hodnota
I2C_Mode
I2C_Mode_I2C
I2C_DutyCycle
I2C_DutyCycle_2
I2C_OwnAddress1
Nemá význam, není užito Povolení potvrzovacích I2C_Ack_Enable úrovní od Master Adresa slave je 7bitů, I2C_AcknowledgedAddress_7bit osmý bit signalizuje čtení/zápis Rychlost přenosu 190000 190kb/s Tab. 4.8.2 Nastavení periferi SPI
I2C_Ack I2C_AcknowledgedAddress I2C_ClockSpeed
Význam nastavení Periferie pracuje v módu I2C Nastavení pro Fast mode
0x00
Tab. 4.8.3 Průběh dat a událostí na sběrnici I2C
80
4.8.3 Zpracování dat ze senzorů Zpracování dat ze senzorů STMPE821 má smysl, pouze když jsou měřicí vstupy správně nakalibrované a nastavené správné hodnoty v interních registrech. Důležité registry a hodnoty, které musely být nastaveny, udává tab. 4.8.4. Nastavení proběhla podle postupu uvedeného v kapitole 3.3.2.2. Název registru
Nastavená hodnota
SYS_CFG_2
0x0E
FEATURE_SEL GPIO_FUNCT CAL_INTERVAL ETC_WAIT EVR
0x04 0x00 0x0C 0x0C 0x05
FILTER_THRESHOL INTEGRATION_TIME TVR STRENGTH_THRES0 INT_CTRL INT_EN
Popis Povolení hodinového sitnálu pro TOUCH modul .
Registruje všechny kanály, které jsou nad nastavenou úroveň Nepoužívat GPIO expandér Doba trvání mezi kalibracemi Doba mezi kalibrací a poslední touch událostí Nastavení citlivosti na prostředí Nastavení kolik inkrementací stačí internímu čítači k uznání, 0x08 že došlo k dotyku 0x0E Doba integrování 0xA1 Nastavení citlivosti na detekci dotyku 0x96 Nastavení komparační úrovně určující dotyk 0x01 Globální povolení přerušení 0x02 Žádná data nejsou dostupná v FIFO Tab. 4.8.4 Nastavení registrů STMPE821
Základem zpracování dat je jejich čtení ve správné časové okamžiky a následně aplikování vyhodnocovacího algoritmu. Pro čtení ve správných okamžicích lze užít dvou metod. Obě byly vyzkoušeny, ale pouze jedna se vyhovuje pro zpracování dat senzorů v dálkovém ovládání. První metodou je čtení vázané na přerušovací signál z STMPE821. Pokud je povolené přerušení v registru INT_EN, generuje se při detekci dotyku nebo následném opuštění senzoru prstem přerušovací signál. V tomto okamžiku jsou v interní FIFO paměti obvodu platná data, která říkají, na kterých vstupních kanálech došlo k události. Jedná se o jeden byte. Každý bit představuje jeden kanál. Pokud je bit nastaven na hodnotu log. „1“, na kanálu byl detekován dotyk. Pokud ne, prst se již na senzoru nenachází. V tomto módu lze velice dobře ošetřit senzory typu Button. Jedno přerušení při dotyku druhé při opuštění. Pokud je ale použit senzor typu Wheel, nebo Slider množství generovaných přerušení je tak veliké, že je tato metoda pro aplikační software nepoužitelná. Druhá metoda spočívá v periodickém vyčítání hodnot kapacitance na vstupech a jejich následném zpracování. Metodu lze nazývat „ruční“ vyhodnocení. Tato metoda je použita pro algoritmické vyhodnocení polohy prstu na Wheel i Slider senzoru. Nakonec byla 81
aplikována i na samotné Button senzory. Při použití této metody je třeba dbát na to, aby dvě po sobě následující čtení byly ve větším časovém horizontu, než zabere snímači vstupní kapacitance změřit. To by mohlo vést k nesprávným výsledkům. Základem k ručnímu vyhodnocování dat jsou známé hodnoty měřených veličin v klidu, bez dotyku prstu. Tyto hodnoty udává tab. 3.3.1. Vyhodnocení senzoru Button je provedeno pouhým porovnáním, zda se naměřená kapacitance odlišuje od kapacitance v klidu o určitou hodnotu. V aplikaci je vyhodnocení dotyku signalizováno, pokud je měřená kapacitance o osm větší než klidová. 4.8.3.1 Vyhodnocení Wheel senzoru K vyhodnocení kruhového senzoru je třeba složitějšího algoritmu. Podstata snímání pohybu po senzoru částečně vyplývá z obr. 3.3.8. Na základě čtení kapacitancí ve dvou různých časových okamžicích, získáme poměry kapacitancí na jednotlivých elektrodách senzoru. Primárním cílem aplikovaného softwaru je dosažení rovnice (4.10), kde f(poloha_prstu) má neklesající charakter a výstupem je číslo x v rozsahu buď (0 31) nebo (0 47) nebo (0 63) při pohybu prstu jednou o 360° na senzoru. (4.10)
Podařilo se navrhnout algoritmus, který poskytuje rozlišení 48 dílů. Pro větší rozlišení by bylo třeba dál upravovat motiv na DPS. Vývojový diagram algoritmu pro vyhodnocení polohy prstu na wheel senzoru je patrný z obr. 4.8.1. Jak bylo řečeno, tento algoritmus rozpozná na Wheel senzoru 48 pozic prstu. Pro řízení barev kruhovým pohybem prstu po senzoru je ale třeba mnohem víc úrovní. Aby mohl být použit algoritmus využitý pro řízení barev manuálním způsobem z kapitoly 4.7.4, potřebujeme získat hodnotu v rozsahu (0 4095). Při daném rozlišení 48 dílků by dosažení hodnoty 4095 zabralo přibližně 85 otočení prstem. Proto se výsledná hodnota Hodnota násobí koeficientem 10. A počet otáček k dosažení barev celého spektra s násobkem deseti klesá. Nevýhodou je, že přicházíme o značný počet barev, protože barvy jsou generovány po skocích. Počet barev nastavitelných pomocí aplikovaného algoritmu pro Wheel senzor je 409. Výpočtový algoritmus pro určení hodnoty (0 4095) je zachycen na obr. 4.8.3. Vztahy mezi přepočty hodnot podléhají funkci (4.9). Pro názornost jsou zachyceny na obr. 4.8.2.
82
Výpočet hodnoty x z Wheel senzoru
Data0 = Naměřená data z wheel Impedance01 = 127 - 1.byte z Data0 Impedance02= 127 - 2.byte z Data0 Impedance03 = 127- 3.byte z Data0 Čekej cca 2,6ms
Čtení dat o velikosti 3 bytů Upravení dat do správného formátu 1.byte z Data0 – hodnota na elektrodě 1 2.byte z Data0 – hodnota na elektrodě 2 3.byte z Data0 – hodnota na elektrodě 3 Čekací smyčka
Data1 = Naměřená data z wheel Impedance11 = 127 - 1.byte z Data1 Impedance12= 127 - 2.byte z Data1 Impedance13 = 127- 3.byte z Data1
Čtení dat o velikosti 3 bytů Upravení dat do správného formátu 1.byte z Data1 – hodnota na elektrodě 1 2.byte z Data1 – hodnota na elektrodě 2 3.byte z Data1 – hodnota na elektrodě 3
Došlo k dotyku na nějaké z elektrod +
Dotyk mezi 1. a 2. elektrodou
Dotyk mezi 2. a 3. elektrodou
Dotyk mezi 3. a 1. elektrodou
+ /* Poměr hodnot na elektrodách 2 a 1 */
+ /* Poměr hodnot na elektrodách 3 a 2 */
+ /* Poměr hodnot na elektrodách 1 a 3 */
Hodnota = impedance12 / impedance11
Hodnota = impedance13 / impedance12
Hodnota = impedance11 / impedance13
/* *10 posun řádové čárky, +4 korekce nuly */
/* *10 posun řádové čárky, -4 korekce nuly, připočet hodnot prvního sektoru */
/* *10 posun řádové čárky, -6 korekce nuly, připočet hodnot druhého sektoru */
Hodnota = (Hodnota * 10) + 4
Hodnota = (Hodnota * 10) – 4 + 16
Hodnota = (Hodnota * 10) – 6 + 32
/* *1,07 = poměr předpokládaného a reálného rozlišení senzoru = 48/45 */
/* *1,07 = poměr předpokládaného a reálného rozlišení senzoru = 48/45 */
/* *1,07 = poměr předpokládaného a reálného rozlišení senzoru = 48/45 */
Hodnota = Hodnota * 1,07
Hodnota = Hodnota * 1,07
Hodnota = Hodnota * 1,07
x = x + Hodnota;
konec
Obr. 4.8.1 Základní algoritmus zpracování dat z Wheel senzoru
x x = f(poloha_prstu) 4090
Výsledná hodnota . 10
Výsledek algoritmu Určení barvy 0 409 0
Výsledek základního algoritmu
47
Výsledná hodnota
Pozice prstu
Hodnota
0
1
2
4
3
5
6 7 Počet otáček
Obr. 4.8.2 Vývoj konečné hodnoty pro určení barvy
83
8
Určení barvy
(posledníX - novéX) > 37 +
Test na pohyb prstu zleva do prava nad bodem přechodu z x = 47 do x= 0, 37 = (rozlišení wheel – 1) – 10 10 zabezpečuje výpočet při přechodu z jniných než ideálních hodnot x(47 a 0)
barva = barva + 47 – (posledníX - novéX)
(novéX - posledníX) > 37 +
1
výslednáBarva >= 4095 + barva = 0
Test na pohyb prstu zprava do leva nad bodem přechodu z x= 0 do x = 47, 37 = (rozlišení wheel – 1) – 10, 10 zabezpečuje výpočet při přechodu z jniných než ideálních hodnot x(0 a 47)
výslednáBarva = 0
výslednáBarva <= 0
barva = barva + 47 – (novéX - posledníX )
+ barva = barva + (novéX - posledníX )
barva = 409
výslednáBarva = barva *10
výslednáBarva = 4095
1 posledníX = novéX Konec
Obr. 4.8.3 Algoritmus k určení barvy, hodnoty (0 4095)
4.8.3.2 Vyhodnocení Slider senzoru Pro vyhodnocení pozice prstu na Slider senzoru platí stejná pravidla jako pro Wheel senzor. Jeho forma je však o něco jednodušší, protože nemusí být ošetřen přechod z hodnoty dané rozlišením na počáteční nulovou. Na druhou stranu, plochy elektrod nejsou stejné a proto je nutné uvažovat toto ve výpočtech. Použitý algoritmus vyhodnocující x z rovnice (4.9) ve zjednodušené verzi vyplývá z obr. 4.8.4. Vyhodnocovacím algoritmem bylo dosaženo rozlišení o 12 úrovních. Stejně jako v předchozím případě, byla snaha o užití stejného algoritmu pro řízení jasu jako v manuálním režimu. Je tedy požadována hodnota v rozmezí (0 4095). Toto je vyřešeno stejně jako u Wheel senzoru a to násobením. Z testovacích verzí softwaru na reálných RGB lampách byl násobící koeficient stanoven na hodnotu 90. Minimální hodnota úrovně jasu na 180 z 4095. Z toho vyplývá, že počet dosažitelných úrovní jasu je po zaokrouhlení 43. Výpočtový algoritmus, jehož výsledkem je hodnota (0 4095) zobrazuje obr. 4.8.5.
84
Výpočet hodnoty x ze Slider senzoru
Data0 = Naměřená data ze slider Impedance01 = 127 - 1.byte z Data0 Impedance02= 127 - 2.byte z Data0 Impedance03 = 127- 3.byte z Data0 Čekej cca 2,6ms Data1 = Naměřená data z slider Impedance11 = 127 - 1.byte z Data1 Impedance12= 127 - 2.byte z Data1 Impedance13 = 127- 3.byte z Data1
Čtení dat o velikosti 3 bytů Upravení dat do správného formátu 1.byte z Data0 – hodnota na elektrodě 1 2.byte z Data0 – hodnota na elektrodě 2 3.byte z Data0 – hodnota na elektrodě 3 Čekací smyčka Čtení dat o velikosti 3 bytů Upravení dat do správného formátu 1.byte z Data1 – hodnota na elektrodě 1 2.byte z Data1 – hodnota na elektrodě 2 3.byte z Data1 – hodnota na elektrodě 3
Došlo k dotyku na nějaké z elektrod +
Dotyk mezi 1. a 2. elektrodou
Dotyk mezi 2. a 3. elektrodou
+ /* Poměr hodnot na elektrodách 2 a 1 */
+ /* Poměr hodnot na elektrodách 3 a 2 */
/* Hodnota = pulka z rozlišení = 12/2 */
Hodnota = impedance12 / impedance11
Hodnota = impedance13 / impedance12
Hodnota = 6
/* *10 posun řádové čárky, 1,7 = pomer ploch elektrody1 a 2 */
/* 1,7 = pomer ploch elektrody 3 a 2, *10 posun řádové čárky, +6 připočet hodnot prvního části */
Hodnota = Hodnota * 1,7 * 10 /* *1,5 = poměr předpokládaného a reálného rozlišení senzoru mezi 2. a 1. elektrodou = 6/4 */
Hodnota = (Hodnota * 1,7 * 10) + 6 /* *1,07 = poměr předpokládaného a reálného rozlišení senzoru = 48/45 */
Hodnota = Hodnota * 1,5 Hodnota = Hodnota * 1,07
x = x + Hodnota;
konec
Obr. 4.8.4 Algoritmus základního zpracování dat ze Slider senzoru
Určení jasu výslednýJas <= 180
jas = jas + (novéX - posledníX )
+ výslednýJas = jas *90 jas = 2 výslednýJas = 180
výslednýJas >= 4095 + jas = 43
posledníX = novéX
výslednýjas = 4095 Konec
Obr. 4.8.5 Algoritmus k určení jasu, hodnoty (0 4095) 85
4.8.4 Ovládání pomocí Wheel a Slider senzoru Posuvem nebo dotykem prstu na Slider senzoru lze nastavit úroveň jasu, která se sníží nebo zvýší maximálně o velikost rozlišení senzoru násobeného koeficientem. Pohybem doprava se jas zvyšuje, pohybem doleva se snižuje. Při pouhém dotyku se aktuální jas změní o odpovídající hodnotu pozice prstu opět upravenou koeficientem. Wheel senzor má dva uživatelské módy. Dalo by se říci, že s ním lze nastavovat barvy „hrubě“ a „jemně“. Hrubé nastavování funguje při pouhém dotýkání se senzoru. Spektrum barev je rozloženo na rozlišení 48 dílů. Lze si tak rychle vybrat přibližnou barvu. Čas potřebný k rozlišení dotyku od pohybu je cca 300ms. Jemné nastavování funguje při kontinuálním pohybu prstu po senzoru. Vždy se začíná nastavovat barva od poslední uložené. Tento mód funguje v kruhové smyčce, to znamená, že pokud obsluha bude kroužit pouze jedním směrem, spektrum barev se bude periodicky opakovat.
4.8.5 Inicializace dálkového ovládání Jednotlivé bloky inicializační procedury jsou patrné z obr. 4.8.6 inicializace Nastavení UART
Nastavení SPI
Nastavení zabezpečení
Nastavení LED
Povolení externích přerušení
Konec inicializace
Nastavení systému hodin Nastavení I2C Reset STMPE821
Nastavení systémového timeru
Nastavení STMPE821
Spuštění systémového timeru
Ověření verze stacku
Nastavení referenčních kapacitancí senzorů
Ověření komunikace s STMPE821
Nastavení aplikačních konstant
Ověření komunikace po SPI
Obr. 4.8.6 Inicializační procedura dálkového ovládání
4.8.6 applicationTick() dálkového ovládání Základní koncept běhu programu je patrný z obr. 4.6.2. Stejně jako v softwaru RGB lampy i tady se využívá k řízení 250ms dlouhých intervalů. Obsluha kapacitních senzorů se vykonává v každém cyklu. Vývojový diagram procedury applicationTick() je patrná z obr. 4.8.7.
86
1
applicationTick() Uběhlo 250ms
+
Dotyk na Wheel
+ Najdi novou barvu
Je připojen k síti
+
Ošetření Slider senzoru Invertuje aktuální stav každým průchodem
Aktualizace stavu LED
+
Dotyk na Slider Povoleno přiopojení dalších ZigBee zařízení
+
Najdi novou úroveň jasu
Povol možnost připojení
+
Dotyk na Button1
Najdi platný index z adresovací tabulky
+
0,5s před výzvou ZR k registraci
Pošli na index aktivační zprávu s Clusterem MSG_DEVICE_SELECT
Vyšli many-to-one route request
Na všechny ostatní platné indexy deaktivační zprávu
+
Čas k výzvě k registraci
Dotyk na Button2
Pošli multicast zpávu s Clusterem MSG_SWITCH_ADVERTISE
+ Najdi platný index z adresovací tabulky
Inkrementování hodnot určujícíh délku života prvků v adresovací tabulce
Pošli na index zprávu s Clusterem MSG_LIGHT_STATE Jiná hodnota barvy nebo jasu
Ošetření Button senzorů
+ Vypočítej barevné složky
Ošetření Wheel senzoru
1 Konec
Pošli na index zprávu s Clusterem MSG_WHEEL_DATA a barevnými složkami
Obr. 4.8.7 Vývojový diagram applicationTick() dálkového ovládání
4.8.7 Akceptované zprávy a clustery Strategie zpráv, tím je myšleno použití EUI64, nodeId či princip adresování bylo popsáno výše. Proto je zde uveden jen vývojový diagram na obr. 4.8.8 zachycující obsluhu příchozích zpráv v dálkovém ovládání.
87
incomingMessageHandler
Délka dat >= 8B
+ Ulož přijaté EUI64
MSG_NODE_IN_NET
MSG_SWITCH_ADVERTISE
+
+
Presenční zpráva každého z ZR.
Typ zprávy EMBER_INCOMING_UNICAST _REPLY
Typ zprávy EMBER_INCOMING_UNICAST
+
+
Zpráva od ZR. Ulož adresu a EUI64 do adresovací tabulky
Vyhodnocení času od poslední zprávy z daného ZR
Duplikát potvrzení přijetí adresovaný ZR. Ignorování.
+ Potvrzení přijetí
Déle než cca 1minuta
Vymaž ZR z adresovací tabulky
Registruj presenční zpávu
Konec
Obr. 4.8.8 Zpracování příchozích zpráv v dálkovém ovládání
4.9 Software USB ovladače 4.9.1 Inicializace systému hodin USB ovladač je hardwarově nejjednodušší zařízení, které je v domovním osvětlovači použito. Využívá také nejméně periferií. Jejich seznam s příslušnou hodinovou sběrnicí je patrný z následující tabulky. Periferie
Sběrnice hodin
GPIOA PCLK2 GPIOB PCLK2 GPIOC PCLK2 TIM2 PCLK1 TIM3 PCLK1 SPI1 PCLK2 USB USBCLK Jádro Cortex-M3 HCLK Tab. 4.9.1 Použité periferie v USB ovladači a příslušné sběrnice hodin
Zařízení pracuje se sériovým rozhraním USB. Tato sběrnice potřebuje ke správné funkci kvalitní zdroj hodinového signálu. Proto se používá externí 12MHz krystalový oscilátor. USB sběrnice vyžaduje frekvenci 48MHz. V předchozích kapitolách bylo ukázáno
88
nastavení systému hodin s interním RC oscilátorem. V tab. 4.9.2 je popsán postup nastavení s externím krystalovým oscilátorem. Pořadí
Použitá funkce s parametry
1
RCC_HSEConfig(RCC_HSE_ON);
2
RCC_HCLKConfig(RCC_SYSCLK_Div1);
3
RCC_PCLK2Config(RCC_HCLK_Div1);
4
RCC_PCLK1Config(RCC_HCLK_Div2);
5
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
6
RCC_USBCLKConfig( RCC_USBCLKSource_PLLCLK_1Div5);
7
Význam Zdroj hodin HSE Externí krystalový 12MHz Hodiny pro HCLK sběrnici HCLK = SYSCLK sběrnice Hodiny pro PCLK2 PCLK2 = HCLK Hodiny pro PCLK1 PCLK1 = HCLK/2 Nastavení PLL
Zdroj hodin pro USB
RCC_SYSCLKConfig( Hodiny pro SYSCLK RCC_SYSCLKSource_PLLCLK); SYSCLK = PLLCLK Tab. 4.9.2 Nastavení hodinového systému v mikrokontroléru USB ovladače
4.9.2 Použití periferie USB USB sběrnice je konfigurována pro komunikaci s virtuálním COM portem, tedy jako Communication Device Class (CDC). K implementaci USB byly použity vzorové příklady poskytnuté firmou STMicroelectronics. USB rozhraní slouží jako náhrada USART1 z předchozích zařízení. V softwaru je zahrnuto nastavení i pro USART1. Po nainstalování ovladačů z kapitoly 4.10.1 je možné skrze tuto sběrnici vypisovat hlášení na hyperterminál sériové linky v PC. Pokud by bylo nutné využít standardní sériové rozhraní, stačí změnit k tomu určenou direktivou překladače a na komunikačních vodičích USB se objeví datové vodiče UART1.
4.9.3 Inicializace softwaru USB ovladače Blokový popis inicializace má v podstatě shodný průběh s inicializací ZR RGB lampy. Lze se tedy odkázat na obr. 4.7.8.
4.9.4 applicationTick() USB ovladače USB ovladač také využívá systémového časovače pro řízení akcí. Na obr. 4.9.1 je zobrazen vývojový diagram procedury applicationTick() v USB ovladači.
89
applicationTick()
Uběhlo 250ms
+ 1
Aktualizace stavu LED
Invertuje aktuální stav každým průchodem
2
Ošetření požadavku odpovědi na dotaz ZC
Pokud je požadováno provádí s odezvou (1-4)s
3
Ošetření požadavku na odpověď od ZC
Pokud je požadováno provádí s timeoutem 10s. Po 10s začne hledat nový ZC.
4
Zaslání clusteru do ZC idenfikující přítomnost USB ovladače
Pokud USB ovladač nalezl ZC, posílá každých cca 20s presenční cluster
5
Ošetření požadavku na presenční odpověď do ZR
Pokud USB ovladač nalezl ZR RGB lampu, posílá tomuto ZR potvrzovací zprávu
6
Inkrementování hodnot určujícíh délku života prvků v adresovací tabulce
Konec
Obr. 4.9.1 Vývojový diagram applicationTick() USB ovladače
4.9.5 Akceptované zprávy a clustery Clustery a reakce USB ovladače na zprávy, které je obsahují, naznačuje vývojový diagram z obr. 4.9.2 incomingMessageHandler
Délka dat >= 8B
+ Ulož přijaté EUI64
MSG_SWITCH_ADVERTISE
+ Nastav požadavek na odpověd do ZC
MSG_SWITCH_READY
MSG_LIGHT_OK
+
MSG_DEVICE_SELECT
+
Ošetří prezenční hlášení ZC
Ošetři prezenční hlášení ZR
+ Informace k přepnutí USB ovladače do aktivního nebo pasivního režimu
Konec
Obr. 4.9.2 Zpracování příchozích zpráv v USB ovladači
90
4.10 Počítačová aplikace ZigBeeLightConfigurator Jedním z úkolů této práce, bylo vytvořit software pro osobní počítač, který dokáže ovládat jednotky domovního osvětlovače, lépe řečeno jednotlivé RGB lampy, které jsou aktuálně připojeny v síti Zigbee. Počítačová aplikace je napsaná ve vývojovém prostředí Eclipse, který využívá k tvorbě softwaru jazyk Java. Eclipse IDE lze zdarma stáhnout z [http://www.eclipse.org/]. Tento nástroj byl zvolen z hlediska přenositelnosti výsledné aplikace a její snadné instalace.
4.10.1 Ovladač pro virtual COM port Z předešlých kapitol 2.4.5 a 3.5 vyplývá, že informace pro ZigBeeLightConfigurator budou poskytovány ze síťového zařízení USB ovladače. USB ovladač využívá pro komunikaci s počítačem sériovou sběrnici USB. Samotná obsluha USB portu vyžaduje složité přístupy, navíc objem dat je ve srovnání s možnostmi USB zanedbatelný. Standardní postup řešící tuto situaci je využití Virtual COM portu, respektive dostupných ovladačů pro jeho vytvoření. V této práci byl využit ovladač vytvořený pracovníky ST Microelectronics. Spouštěcí soubor ovladače s koncovkou exe je pojmenován vcpdriver_v1.1_setup. Tento ovladač se instaluje pouze jednou a to bezprostředně po té, co je zasunut do jednoho z USB portů USB ovladač. Přitom nezávisí na funkčnosti sítě ZigBee, nebo přítomnosti ostatních prvků sítě. Podrobný postup pro instalaci Virtual COM portu je dostupný v [14]. Ovladač pro virtual COM port je obvykle funkční pouze pro USB port, do kterého byl zasunut USB ovladač při instalaci. Počítačová aplikace umožňuje výběr ze všech COM portů existujících na daném počítači, ale pro správnou funkci je třeba vybrat ze seznamu ten správný. Po instalaci ovladače lze ve správci zařízení používaného počítače nalézt označení portu COM, který se vytvořil, například COM4.
4.10.2 ZigBeeLightConfigurator Aplikace ZigBeeLightConfigurator je jednoduchý program, který umožňuje uživateli nastavit barvu na všech RGB lampách, které jsou registrované USB ovladačem. Pro komunikaci s uživatelem ZigBeeLightConfigurator obsahuje jednoduché grafické uživatelské rozhraní (GUI). Vzhled GUI je patrný z obr. 4.10.1
91
Obr. 4.10.1 GUI programu ZigBeeLightConfigurator
4.10.2.1 Protokol komunikace s USB ovladačem Základní komunikace mezi počítačem a USB ovladačem probíhá podle navrženého protokolu pro tuto aplikaci. USB ovladač je naprogramován k reagování na jisté znaky přijaté po USB. Stejně tak ZigBeeLightConfigurator reaguje na úvodní znaky přijaté zprávy. Seznam úvodních znaků zpráv posílaných mezi PC aplikací a USB ovladačem a akce na ně jsou patrné z tabulky tab. 4.10.1.
Reakce
Znak a c d # \n
USB ovladač
ZigBeeLightConfigurator
Vyšle seznam připojených RGB lamp Očekává, že následuje osm byte s údaji o barevných složkách. Deaktivuje aktivované RGB lampy Očekává, že následuje identifikační index Očekává, že následuje seznam připojených světla v adresovací tabulce USB ovladače. RGB lamp. Končí datový rámec Končí datový rámec Tab. 4.10.1 Tabulka klíčových znaků zpráv mezi ZigBeeLightConfigurator a USB ovladačem
Průběh dat v závislosti na akci uživatele je patrný z vývojového diagramu na obrázku obr. 4.10.2.
92
Start 1s
+ Pošli „a“
„#“
Úvodní znak Přenášená data a jejich organizace
+ Zpracuj tabulku
1 byte a
Výběr light
0 byte
1 byte
1 byte #
+ Pošli „#“ a index
1 byte d
Žádný výběr
+ Pošli „d“ + „isconnect“
1 byte c
Index (číslo od 0 do 14)
i
s
G
9 bytů o n n
c
B
8 bytů G
e
c
t
R
Změna barvy
+ Pošli „c“ + složky RGGB (8B) Konec
Obr. 4.10.2 Vývojový diagram obsluhy sériové linky ZigBeeLightConfiguratorem
Obr. 4.10.3 Organizace dat v rámcích vysílaných ZigBeeLightConfiguratorem
4.10.2.2 Třídy a jejich funkce ZigBeeLightConfigurator
- základní třída spravující organizační bloky pro skládání
komponent GUI a definuje jejich rozmístění. Dále vytváří základní vlákno pro 1s dlouhé časové intervaly. SerialUtils – tato třída definuje vlastnosti sériového portu, jejichž konkrétní hodnoty jsou uvedeny v tab. 4.10.2. Obsluhuje vysílání kompletních zpráv se stavovými výpisy na konzoli GUI. Parametr
Hodnota
Přenosová rychlost (kb/s) 115200 Počet datových bitů (b) 8 Parita žádná Počet stop-bitů 1 Řízení toku neřízeno Tab. 4.10.2 Nastavení sériového portu v ZigBeeLightConfiguratoru
SerialChooser – třída vytváří a obsluhuje rolovací lištu s nabídkou dostupných COM portů. Dále vytváří a obsluhuje tlačítko pro připojení nebo odpojení od COM portu. SerialConnector – třída provádí samotné připojení k vybranému COM portu s ošetřením timeoutů a vyjímek. Případné problémy s připojením vypisuje do konzole. 93
ProtocolUtils – v této třídě dochází k sestavení rámce dat pro vyslání. Rámce jsou sestaveny podle obr. 4.10.3. Node – zde je implementován algoritmus pro rozložení adresovací tabulky z USB ovladače na dílčí hodnoty. NodesManager – třída spravuje záznamy z třídy Node. NodesListChanged – implementace posluchače, který hlídá změnu seznamu RGB lamp. NodeChooser – třída je volána při výběru RGB lampy z nabídky, aby určila index, který je třeba poslat USB ovladači. Console – implementace objektu konzole a vytvoření prostředků k zapisování na ní. ColorPicker – implementace objektu palety barev s barevnými systémy. ColorEvent – Java pro tuto třídu používá výraz interface. Funkčně slouží k informativním účelům pro ostatní třídy, že došlo ke změně barvy. ColorChanged – rozšiřující interface. Tento používá ColorEvent jako vstupní parametr. ClooseConnectionOnExitWindowListener – implementuje zavírací procedury aplikace.
Java standardně neumí přistupovat na COM port. Práci s COM portem zajišťuje importování knihovny rxtxcomm.jar verze 2.1-7 volně dostupné na [30], stejně jako návod na její použití. Aplikování palety barev vychází z [31]. 4.10.2.3 Funkce ZigBeeLightConfiguratoru Pokud je připojen USB ovladač a nainstalován virtuální COM port po spuštění ZigBeeLightConfiguratoru je třeba vybrat odpovídající COM port a stisknout tlačítko „Connect“. Do dvou sekund se v seznamu objeví výpis dostupných RGB lamp, které jsou reprezentovány nabídkou light X, kde X představuje číslo od 1 do 15 a zastupuje tak jednu RGB lampu. Řízení barev RGB lamp funguje podobně jako pomocí dálkového ovládání. Tím je myšleno, že je nejdříve třeba RGB lampu vybrat a až poté ji ovládat. Výběr lampy se provede kliknutím levým tlačítkem myši na požadované ligh X v seznamu. Následným klikáním nad poli s barvami se každá změněná barva od předchozí pošle na aktuálně vybranou RGB lampu. Barvy lze nastavovat ve třech různých barevných systémech a to HSB, RGB a hrubé nastavení pomocí palety 252 barev. Pokud je třeba aplikaci vypnout, nejprve stiskem „Disconnect“ odpojíme aplikaci od COM portu a poté klasicky zavřeme.
94
4.11 Použití, ovládání, funkce a sestavení systému osvětlovačů Zde bude uveden názorný příklad použití domovního osvětlovače spíše z pozice uživatele. Přesto, že založení domovní sítě je úkolem dálkového ovládání, nezáleží na tom, v jakém pořadí se připojují všechny použité typy zařízení. Připojení je svázáno s připojením napájení, to znamená, že po připojení napájení se prvek automaticky připojí k síti, pokud je dostupná. Vždy se dosáhne funkční sítě se všemi dostupnými prvky. Funkční síť není ale vytvořena okamžitě, lépe řečeno, než jsou vytvořeny všechny potřebné konexe mezi zařízeními, uběhne řádově 15s. Funkčnost zařízení, signalizuje LED, blikající v periodě 250ms. Řízení RGB lamp pomocí dálkového ovládání je následující. Dálkové ovládání obsahuje k ovládání dvě tlačítka označené na motivu „1“ (dále „tl1“) a „2“ (dále „tl2“), kruhový senzor polohy („Wheel“), a podélný senzor polohy („Slider“). Stiskem tlačítka označeného na motivu „1“ se vybírá konkrétní RGB lampa, kterou chceme řídit. Zpětná vazba s uživatelem je zajištěna LED D10, která se při aktivaci RGB lampy rozsvítí. Při opakované stisku tl1 se aktivuje další RGB lampa v řadě a všechny ostatní deaktivují. Sekvence je obvykle dána pořadím připojení k napájení. Pokud by mělo dojít k opětovné aktivaci první RGB lampy, aktivují se nejprve všechny dostupné RGB lampy a je možno je ovládat synchronně. Následující stisk tl1 aktivuje opět první RGB lampu. Z předchozího vyplývá, že ovládat lze pouze aktivované lampy. To platí i pro funkci vypnutí či zapnutí lampy tlačítkem tl2. Každé stisknutí tl2 změní stav aktivované RGB lampy na opačný. Stavem je myšleno zapnuto nebo vypnuto. Nastavení barev a jasu vychází z kapitoly 4.8.4 a není nutno jej znovu popisovat.
95
5 Závěr a zhodnocení Cílem práce byl komplexní návrh a realizace malé domovní bezdrátové sítě řízených osvětlovačů. Počátek zpracování byl věnován studii jádra ARM CortexTM-M3 a použití mikrokontrolérů STM32. Kde jsem se seznámil s jejich inovační strukturou, principy a vlastnostmi. Bezdrátový standard ZigBee pro mě byl na začátku práce novinkou a tak bylo nutné nastudovat jeho podstatu, možnosti a hlavně principem návrhu ZigBee aplikací s podporou nízkoúrovňových hardwarových prostředků. Během hardwarového vývoje jsem navrhl řídicí desku plošného spoje interiérového osvětlovače (RGB lampy). RGB lampa dokáže buzením vysoce svítivého RGB LED modulu generovat až cca 16 mil. barev s hloubkou 48 bitů. RGB lampu je možno připojit do sítě standardu Zigbee PRO prostřednictvím modulu SPZB260-PRO. Druhým navrženým a oživeným zařízením je dálkové ovládání. Jako ovládací prvky byly navrženy speciální motivy přímo na DPS, které využívá kapacitní snímač dotyku jako měřicí elektrody. Dálkové ovládání je taktéž navrženo k osazení modulu SPZB260-PRO. Třetím zařízením je USB ovladač. Podklady pro zpracování jsem vytvořil pouze teoreticky, protože byl během návrhu vytvořen k demonstračním účelům pracovníky STMicroelectronics. Poté jsem hardware koncepčně přejal. Časovací jednotku jsem také zpracoval pouze teoreticky (kapitola 2.4.4). Vzhledem k dosažené autonomii systému byl časovací prvek po domluvě s vedoucím práce uznán jako redundantní a na jeho vývoji jsem nepokračoval. Velikou část práce tvořilo zpracování softwarového vybavení. V počátcích návrhu šlo o separátní programy, kterými byly obsluhovány jednotlivé periferie v rámci hardwarové vrstvy. Tyto programy sloužily také k získávání zkušeností o funkci periferií, například jednotka čítače/časovače, systém přerušení a další. Když byly všechny potřebné periferie zprovozněny, bylo potřeba vytvořit první síťovou ZigBee aplikaci. K tomu jsem měl k dispozici knihovnu STMicroelectronics, která ale byla napsána v jiném vývojovém prostředí a pro jiný typ hardware. Nejprve jsem začal s konverzí do mnou užívaného vývojového prostředí μVision (kap. 4.1.1). Tento proces doprovázelo několik problémů. Tím hlavním bylo stále nemožné linkování i přes bezchybný překlad C souborů, což se projevovalo četným chybovým hlášením. Problém byl vyřešen překompilováním firmwarové knihovny užívané vývojovým prostředím μVision. Když bylo možné knihovny přeložit, následovaly četné úpravy pro kompatibilitu s hardwarem. První funkční komunikace po síti ZigBee spočívala v ovládání signalizační LED. Spuštění první ZigBee aplikace považuji osobně za největší 96
skok v průběhu zpracování. Pro software USB ovladače nastal opačný problém. A sice přeložitelný program po nahrání nefungoval. Problém byl vyřešen přeložením ve vývojovém prostředí Ride7 (kap. 4.2.2) a navíc s nastaveným jiným typem mikrokontroléru než je ve skutečnosti použit. Jako poslední jsem vytvořil jednoduchou aplikaci pro PC s možností správy barev všech připojených osvětlovačů. V práci jsem navrhl funkční systém spravující jedno dálkové ovládání a až 15 RGB lamp a USB ovladačů. Dálkovým zařízením lze plynule nastavit barvu osvětlovačů ze spektra o 409 barvách a 43 úrovních jasu. Součin cca 17,5 tisíc udává počet možných nastavení, přičemž je stále dodržena hloubka barev 48 bitů. Počítačovou aplikací lze pohodlně ovládat osvětlovače v různých barevných systémech.
97
6 Literatura [1]
AN2531 Generating multicolor light using RGB LEDs
[http://www.st.com]
[2]
RLink STM32 development kit
[http://www.raisnonance.com/arm/STM32.php#REva]
[3]
STMicroelectronics tools for Zigbee
[http://www.st.com/stonline/products/families/communication/wscomm/zigbee/z gb_tool.htm]
[4] Trevor Martin: An Engineer’s Introduction To The STM32 Series. Vydavatelství Hitex(UK) Ltd., 2008, ISBN: 0-9549988 8 [www.hitex.com]
[5]
EmberZNet Application Developer’s Reference Manual, dokument 120-3021-000E
[www.ember.com/pdf/120-3021-000_App_Dev_Ref_Manual.pdf]
[6]
Němec M.: Barvy a barevné systémy
[http://barborka.vsb.cz/nemec/zpg/prednasky/prednaska06.pps
[7]
Podklady pro cvičení z fotometrie
[http://physics.mff.cuni.cz/vyuka/zfp/txt_304.pdf]
[8]
Studijní materiály optických přístrojů
[http://www.fyzika.gymsusice.cz/web/data/texty/Opticke_pristroje.pdf]
[9]
Odborný článek vysvětlující pojem gamut
[http://cs.wikipedia.org/wiki/Gamut]
[10]
Katalogový list spínaného zdroje ST1S10, rev. 3
[http://www.st.com]
[11]
Katalogový list ZigBee modulu SPZB260-PRO, rev. 1
[http://www.st.com]
[12]
Katalogový list kapacitního snímače dotyku STMPE821, rev. 4
[http://www.st.com]
[13]
RM0008 Referenční manuál k STM32F101CB, rev. 6
[http://www.st.com]
[14]
UM0602 ZigBee® USB dongle demonstration kit (STEVAL-IFS013V2)
[http://www.st.com]
[15]
Katalogový list SN260 ZigBee® 802.15.4 network procesor, Rev.2
[http://www.st.com]
[16]
Katalogý list spínaného zdroje L5980, rev. 3 98
[http://www.st.com]
[17]
Katalogový list RGGB LED modulu LE ATB A2A rev. 2006-09-13
[http://www.osram-os.com]
[18]
Katalog chladičů Fischer elektronik, str. B34
[http://www.fischerelektronik.cz/]
[19]
Katalogový list spínaného zdroje L6920, rev. 2
[http://www.st.com]
[20]
AN2693 S-TouchTM devices: system considerations, rev.1
[http://www.st.com]
[21]
AN2733 S-Touch™ PCB and layout guidelines
[http://www.st.com]
[22]
STM32-Primer2 user manual, verze dokumentu 2009-03-19
[http://www.stm32circle.com/resources/stm32primer2.php]
[23]
Schéma zapojone Primer2
[http://www.stm32circle.com/resources/stm32primer2.php]
[24]
Popis MicroLib knihovny
[http://www.keil.com/arm/microlib.asp]
[25]
EZSP Reference Guide, dokument 120-3009-000H
[http://ember.com/products_documentation.html]
[26]
RN0018 ZigBee® REva kit library package release 3.0.0, Rev.5
[http://www.st.com]
[27]
UM0427 Firmwarová knihovna pro STM32Fxx, rev. 6
[http://www.st.com]
[28]
UM0389 ZigBee® REva kit library package, Rev.9
[http://www.st.com]
[29]
EmberZNet Stack API Guide, Ember dokument 120-3006-000O
http://www.ember.com/pdf/EM250/120-3006-000O_EmberZNet_API/main.htm
[30]
Java tutorial online
[http://www.jcontrol.org/download/rxtx_en.html]
[31]
Java tutorial online
[http://java.sun.com/docs/books/tutorial/uiswing/components/colorchooser.ht ml]
99
7 Přílohy 7.1
Elektrická schémata
Obr. 7.1.1 Schéma zapojení dálkového ovládání 100
Obr. 7.1.2 Schéma zapojení RGB lampy – řídicí část
101
Obr. 7.1.3 Schéma zapojení RGB lampy – výkonová část
102
7.2
Desky plošných spojů
7.2.1 Dálkové ovládání
Obr. 7.2.1 Vrstva TOP dálkového ovládání
Obr. 7.2.2 Vrstva BOTTOM dálkového olvádání
Obr. 7.2.3 Osazovací výkres (pouze TOP, v BOTTOM nejsou žádné součástky)
103
7.2.2 RGB lampa
Obr. 7.2.4 Vrstva TOP RGB lampy
Obr. 7.2.5 Vrstva BOTTOM RGB lampy
Obr. 7.2.6 Osazovací výkres (pouze TOP, v BOTTOM nejsou žádné součástky)
104
40
12
5,5
116,9
7
Ø 2,5
10,5
42
R2
35,5
R 5,5
33,8
10,5
il
R4
52,5
DPS - těsně pod horní stranou krabičky. Bude se zasouvat zadní stranou.
R2
Vnitřní prostor
111,9
46
1,6
105 Deta
51,7 15
34
41,5
29,5
Ø 4,50
25
Ø3
35 2 2
Spodní uzávěr – pohled shora
2,7
2
Horní kryt – pohled shora
R4
6,50
6
Způsob sesazení horního krytu a spodní části krabičky
2,50
R4
Vnitřní prostor 15 R2
Obr. 7.3.1 Výkres krycí krabičky pro dálkové ovládání Měřítko NENÍ 1:1
JEDNOTKY: mm
Šroubky
Vzpěra proti ohýbání nebo zlomení
DPS - těsně pod horní stranou
Zapuštění pro hlavy šroubků
Spodní uzávěr – pohled z boku
R1
4
Baterie
10
Horní kryt – pohled z boku
7.3 Návrh krabičky pro dálkové ovládání
109,5
4
7.4 Obsah přiloženého CD ¬ [capture_files]
navržená schémata v Orcad Capture
∟ [Dalkove_ovladani] ∟ [RGB_lampa]
průvodní materiály k referenčním demo deskám STM
¬ [demo_boards]
∟ [STEVAL-IFS013V2] ∟ [STEVAL-ILL009V1] ∟ [STEVAL-ILL009V5] ∟ [STM_PRIMER2]
¬ [documents] manuály, katalogové listy ¬ [DP] elektronická podoba diplomové práce v souborech docx a pdf ¬ [layout_files]
navržené DPS v Orcad Layout
∟ [Dalkove_ovladani] ∟ [RGB_lampa]
¬ [measured_data]
naměřené průběhy
¬ [microcontrollers_software]
projekty a zdrojové kódy pro každé zařízení
∟ [Dalkove_ovladani] ∟ [RGB_lampa] ∟ [USB_ovladac] ∟ [hex_soubory]
¬ [pc_application] ¬ [photos] ¬ [pictures]
počítačová aplikace se všemi soubory a knihovnami v Javě
fotografie zařízeních obrázky z diplomové práce
¬ [ZigBee_documents]
návody a manuály od Ember
106