TECHNICKÁ UNIVERZITA v LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií
Uživatelské rozhraní geologické ústředny
Semestrální práce
Bc. Matěj Kolář
Liberec
2012
Materiál vznikl v rámci projektu ESF (CZ.1.07/2.2.00/07.0247) Reflexe požadavků průmyslu na výuku v oblasti automatického řízení a měření, KTERÝ JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY
Uživatelské rozhraní geologické ústředny Poděkování
Fakulta mechatroniky, informatiky a mezioborových studií Ústav řízení systémů a spolehlivosti
Zadání semestrálního projektu Příjmení a jméno studenta, (osobní číslo - nepovinné)
Matěj Kolář
Datum zadání práce
15.2. 2012
Plánované datum odevzdání
květen 2012
Rozsah grafických prací
Dle potřeby dokumentace
Rozsah průvodní zprávy
cca 15 stran
Název práce (česky)
Uživatelské rozhraní geologické ústředny
Název práce (anglicky) User interface for geological control unit Zásady pro vypracování BP: 1. Prostudujte strukturu procesorů ARM-Cortex M3 a M4 a jejich možnosti se zaměřením na uživatelská rozhraní. 2. Navrhněte koncepci jednotlivých rozhraní geologické ústředny (klávesnice, display, komunikační sběrnice, paměťová uložiště) – hw i sw. 3. Realizujte funkční model (hw i sw) kapacitní klávesnice pro geologickou ústřednu. Seznam odborné literatury: [1] Praktické zkušenosti s procesory ARM Cortex M3, (URL:
) [2] Kapacitní klávesnice (URL: ) [3] Katalogové listy firmy ST (procesory STM32F207, STM32F407) Ing. Lubomír Slavík, Ph.D. Vedoucí BP/DP Konzultant BP/DP
2
Uživatelské rozhraní geologické ústředny Poděkování
Poděkování Chtěl bych poděkovat Ing. Lubomíru Slavíkovi Ph.D. za spolupráci na konceptu celého zařízení, návrhu hardwarových částí a především pak za konzultace k různým částem řešení i úkolu jako celku. Dále pak Ing. Milošovi Hernychovi za konzultace a nápady ke koncepci řešení a v neposlední řadě také doc. Ing. Milanovi Hokrovi za všeobecnou podporu.
Tento text vznikl za podpory projektu ESF CZ.1.07/2.2.00/07.0247 Reflexe požadavků průmyslu na výuku v oblasti automatického řízení a měření.
3
Uživatelské rozhraní geologické ústředny Abstrakt
Abstrakt Teoretická část práce pojednává o obecném popisu návrhu koncepce geologické ústředny. Popisuje jednotlivé části zařízení celku a jeho budoucí vývoj. Důraz je kladen na uživatelské rozhraní zařízení. V druhé části jsou popsány praktické zkušenosti s vývojem software pro geologickou ústřednu. Software je vyvíjen v jazyce C a C++ pro mikroprocesory ARM CORTEX, konkrétně STM32. Poslední část popisuje řešení kapacitní klávesnice a vzniklé problémy s návrhem.
Abstract The theoretical part of project is general description of the concept of geological data logger. This part describes the different parts of the device unit and its future development. Emphasis is placed on the user interface device. The second section describes practical experience in developing software for geological data logger. Software is developed in C and C ++ for ARM CORTEX microprocessors, specifically STM32. The last part describes how to solve capacitive keyboard and the resulting problems with the proposal.
4
Uživatelské rozhraní geologické ústředny Obsah
Obsah Prohlášení ................................................................ Chyba! Záložka není definována. Poděkování ........................................................................................................................3 Abstrakt ..............................................................................................................................4 Obsah ..................................................................................................................................5 1. Úvod .............................................................................................................................6 2. Koncepce zařízení ......................................................................................................8 2.1. Řídící deska ..........................................................................................................8 2.2. Měřící moduly ......................................................................................................9 2.3. Uživatelské rozhraní ...........................................................................................9 2.4. Napájení ..............................................................................................................10 2.5. Blokové schéma ........................................ Chyba! Záložka není definována. 3. Základní prvky zařízení ..........................................................................................11 3.1. Mikroprocesor ....................................................................................................11 3.2. Přístrojová krabice .............................................................................................12 3.3. Displej .................................................................................................................. 12 3.4. Klávesnice ...........................................................................................................12 3.5. SD karta ...............................................................................................................13 3.6. Vývojová deska ..................................................................................................13 3.7. Adresace..................................................... Chyba! Záložka není definována. 3.8. Protokol Finet .....................................................................................................13 4. Software .....................................................................................................................15 4.1. Vývojové prostředí ............................................................................................15 4.2. Proprietární ovladače........................................................................................16 4.3. Multitasking .............................................. Chyba! Záložka není definována. 4.4. Paralelní interface displeje ...............................................................................16 4.5. SPI ovládání displeje .........................................................................................16 4.6. Grafická knihovna .............................................................................................17 4.7. SDIO rozhraní ........................................... Chyba! Záložka není definována. 4.8. Implementace FAT32 ........................................................................................17 4.9. ADC s DMA .......................................................................................................18 5. Kapacitní klávesnice ................................................................................................19 5.1. Atmel QTouch ....................................................................................................19 6. Závěr ..........................................................................................................................21 Literatura ..........................................................................................................................22
5
Uživatelské rozhraní geologické ústředny Úvod
1. Úvod Úkolem práce je koncepční návrh mechanického, elektronického a softwarového provedení, výroba prototypů a následná kusová výroba univerzálního měřícího celku pro on-line monitoring geofyzikálních jevů a procesů, včetně jednotlivých měřících modulů pro široký rozsah různorodých veličin a uživatelského rozhraní s důrazem na minimální spotřebu celého zařízení. Na úkolu spolupracuji s Ing. Lubomírem Slavíkem Ph.D., s předpokladem dokončení spolu s mojí diplomovou prací. Pro magisterský projekt jsem řešil dílčí část celého úkolu a to koncept řešení s důrazem na uživatelské rozhraní, včetně prvního prototypu návrhu. Požadavky na měřící systém jsou jeho modulárnost, ale jednotná koncepce pro všechny druhy měření, uživatelské rozhraní pro místní zásah do měřícího procesu a spotřeba energie odpovídající možnosti provozu na baterie. Komerčně dostupná řešení nabízejí jednotlivé požadované vlastnosti, ale nenašli jsme takové, které by mělo všechny. Uživatelské rozhraní by mělo být realizováno klávesnicí a displejem a rozhraním pro lokální uchovávání dat. Velmi důležitým požadavkem je také provoz zařízení v nepříznivých podmínkách. Na základě dohody jsem se v celé práci ujmul vývoje software a elektronické a mechanické konstrukci kapacitní klávesnice a spolupráce na koncepci řešení. Stěžejním rozhodnutím celé koncepce byla zcela přirozeně volba používané architektury mikroprocesoru a bohužel také volba konkrétní krabice pro naše zařízení, kde byl výběr značně problematický. S tím související následné volby dalšího postupu, jako je výběr vývojových prostředků a programovacího prostředí, programovacího jazyka a případného operačního systému reálného času. Nemalou část práce jsme pak také věnovali výběru displeje a volbě druhu klávesnice a její následné možnosti optimalizace. Celé zařízení je vyvíjeno jako co možná nejuniverzálnější, ale jeho aktuální vývoj je pro projekt dlouhodobého sledování geologických jevů v reálném prostředí granitů Českého masivu pro bezpečnostní výpočty a pro návrh požadavků, indikátorů a kritérií 6
Uživatelské rozhraní geologické ústředny Úvod
na výběr vhodného prostředí pro hlubinné úložiště jaderného odpadu v české republice, který probíhá v bedřichovském tunelu a je veden doc. Ing. Milanem Hokrem Ph.D. Naše ústředna by měla sjednotit již probíhající systém měření. Podmínky této lokality jsou poměrně nepříznivé k elektronickým zařízením, je zde kolem 10 °C a 100% vlhkost. Stěžejní funkcí zařízení v této konkrétní aplikaci je komunikace s nadřazenou řídící jednotkou vyvíjenou ing. Milošem Hernychem a databázovým systémem pro sběr všech dat v řídícím centru Technické univerzity v Liberci. Po konzultaci jsme se rozhodli pro přizpůsobení se stávajícímu protokolu a sběrnici instalované ve štole.
7
Uživatelské rozhraní geologické ústředny Koncepce zařízení
2. Koncepce zařízení Celé zařízení můžeme rozdělit do tří samostatných bloků a to hlavní řídící desku, jednotlivé měřící moduly a rozhraní pro uživatelský vstup. Z důvodů co největší modulárnosti jsme se rozhodli pro inteligentní měřící moduly osazené vlastním mikroprocesorem. Hlavní procesor pak bude na řídící desce. Komunikační rozhraní mezi hlavní procesorem a jednotlivými moduly je poněkud nestandardně sběrnice RS485 (důvody uvedu později). Pro komunikaci s nadřízenou řídící jednotkou jsme také zvolili RS-485 a mírně modifikovaný protokol FINET (stávající stav ve štole).
2.1. Řídící deska Základní deska bude obsahovat: hlavní mikroprocesor zdroje jednotlivých napětí komunikační interface rozhraní pro připojení měřících modulů rozhraní pro archivaci dat Principiálně by pak měla celá měřící ústředna fungovat tak, že hlavní procesor bude vyčítat stavy jednotlivých měřících modulů a dále s nimi nakládat v závislosti na konkrétní aplikaci. Pro účely sběru dat v tunelu bude procesor pouze čekat na dotazy od nadřazené řídící jednotky na sběrnici RS-485 a vracet hodnoty jednotlivých veličin. Případně je pak ještě archivovat na paměťové médium. Obecně pak bude jednotka připravena na použití různých komunikačních rozhraní, ať osazenými přímo na desce, nebo prostřednictvím zásuvných modulů. Jako základní alternativou pro sběrnici RS-485 bude bezdrátové rozhraní 2,4 GHz. V dalších stupních vývoje se pak počítá také s rozhraním ethernet a možností vyčítat lokální archiv na USB flash-disk. Deska bude poskytovat rozhraní pro měřící moduly a to jednak interní, ale i externí. 8
Uživatelské rozhraní geologické ústředny Koncepce zařízení
Další úkol hlavního mikroprocesoru bude kontrola nad spotřebou energie celého zařízení. Na základní desce bude několik spínaných zdrojů, které budou poskytovat napájecí napětí 3,3 V, 12 v a 24 V. Všechny napájecí napětí bude možné zapínat a vypínat na základě rozhodnutí hlavního procesoru nebo žádostí jednotlivých měřících modulů. Stejně tak bude mít možnost hlavní procesor probouzet jednotlivé moduly a jednotlivé moduly případně probudit hlavní procesor. Všechna tato opatření by měla dát dostatek hardwarových prostředků pro maximální možnou úsporu energie. Zejména při asynchronním snímání stavů čidel a probouzení pouze důležitých bloků na co nejkratší dobu a pouze v situacích kdy se něco stalo.
2.2. Měřící moduly Jak jsem již naznačil, tak budou interní i externí měřící moduly, které budou k hlavnímu procesoru připojeny pomocí druhé společné sběrnice RS-485. Každý měřící modul bude osazen vlastním menším mikroprocesorem. Externí moduly budou napájeny pouze jedním 12V napětím a budou mít pouze rozhraní pro datovou komunikaci. Interní pak budou mít možnost využívat napětí 3,3 V, 12 v a 24 V, přičemž 3,3 v bude permanentních a od 12 v nebo 24 v si budou muset zažádat. Dále pak interní budou moct být probouzeni (a probouzet) hlavním CPU. Interní moduly budou moct být maximálně čtyři, externě se pak dají přidat další čtyři. Pro komunikaci mezi moduly a hlavním procesorem jsme zvolili sběrnici RS-485, právě proto, aby se sběrnice dala vyvést i mimo desku plošných spojů a také pro kompatibilitu s hlavní sběrnicí. Za těchto okolností nebude problém pouze softwarovou úpravou udělat z měřícího modulu samostatné zařízení připojitelné na hlavní sběrnici, samozřejmě s tím že bude umožňovat měřit pouze jednu veličinu a bude bez uživatelského rozhraní.
2.3. Uživatelské rozhraní Pod pojmem uživatelské rozhraní se v naší aplikaci rozumí klávesnice, displej a ukládání dat na paměťové médium. Pro realizaci klávesnice se nabízejí v podstatě jen dvě možnosti. Univerzální fóliová klávesnice nebo vlastní konstrukci klávesnice kapacitní. Nakonec jsme se rozhodli pro druhou variantu s tím, že jsem na sebe vzal 9
Uživatelské rozhraní geologické ústředny Koncepce zařízení
kompletní návrh jak HW, tak SW i mechanického řešení. Klávesnice musí být podsvícená (v tunelu je úplná tma).
2.4. Napájení Celé zařízení počítá se dvěma možnostmi napájení. První je 13,6 v z napájecího zdroje (230 V/13,6 v nebo 24 V/13,6 V) s možností napájení zálohovat 12 v olověnou baterií. Druhá možnost je napájení z baterie a pro větší výdrž a minimální samovybíjení jsme zvolili moderní baterii LiFePO4. Primárně se také počítá, že v případě připojení na sběrnici RS-485 bude zařízení napájeno ze souběžně vedené napájecí větve a bateriové napájení se využije při bezdrátovém přenosu dat.
10
Uživatelské rozhraní geologické ústředny Základní prvky zařízení
3. Základní prvky zařízení 3.1. Mikroprocesor Stěžejní část celého projektu je mikroprocesor. Zvolili jsme architekturu ARM Cortex M3/M4. Zejména z důvodu nezávislosti jádra na výrobci, jeho rozšířenost a v neposlední řadě také výkon. Konkrétně jsme vzali SMT32 od firmy ST. Jedná se o 32bitový mikroprocesory pracující rychlostí až 210 MIPS ve spolupráci se signálovým procesorem. Původně jsme začali vývoj s STM32F2 jako hlavním CPU a s STM32L1 jako procesorem pro moduly. V souvislosti s tím jsme pořídili vývojovou univerzální desku osazenou STM32F207IG na které jsem prozatím většinu software ladil. Později jsme se rozhodli základní desku postavit na výkonnějším STM32F407.
3.1.1. STM32F2 Většina software je teď napsaná pro STM32F207IG s jádrem CORTEX M3. Jedná se o 176 nožičkový procesor s 1 MB paměti flash a 128 KB RAM, paralelním rozhraním pro přídavnou paměť a paralelně řízený displej. Rozhraním Ethernet a Full Speed USB (i USB Host). Rozhraním SDIO pro připojení SD karty a samozřejmě řadou dalších standartních periférií jako jsou 4x USART (s maximální rychlostí 7,5 Mb/s), 3x SPI (s maximální rychlostí 30 Mb/s), 16-ti kanálové DMA, 12-bitový AD i DA převodník (až 6 MSPS), 17 časovačů a obvod reálného času s podporou kalendáře a možností zálohy oddělenou baterií. Navíc procesor obsahuje paralelní rozhraní pro připojení CMOS kamery, hardwarový kalkulátor CRC a pravý generátor náhodných čísel. Maximální taktovací frekvence je 120 MHz s dosažením až 150 MIPS.
3.1.2. STM32L1 Pro měřící moduly jsme zvolili podstatně méně výkonný procesor, ale se zachováním stejného jádra. Konkrétně STM32L152 ve 48 nožičkovém provedení. Procesor běhá na 32 Mhz, paměť flash je maximálně 128 KB a RAM 16KB. Byť se jedná o podstatně slabší procesor většinu běžných periférií si zachovává, chybí mu pouze paralelní rozhraní pro displej, kameru, generátor náhodných čísel a Ethernet. Cenově je srovnatelný s 8-bitovými CPU, ale možnostmi je o úroveň výše.
11
Uživatelské rozhraní geologické ústředny Základní prvky zařízení
Důležitým faktorem je spotřeba, která se pohybuje okolo 233 µA/MHz a ve stand-by módu pouze 300 nA.
3.1.3. SMT32F4 Pro hlavní desku jsme nakonec zvolili ještě o něco výkonnější procesor z řady STM32F4, konkrétně STM32F407 s jádrem CORTEX M4. Procesor kromě vyššího výkonu (210 MIPS) navíc disponuje signálovým procesorem a FPU (jednotkou pro operace s plovoucí řádovou čárkou). Varianta byla volena spíše s výhledem do budoucna, aktuálně nám to konkrétní výhody patrně nepřinese.
3.2. Přístrojová krabice Paradoxně je největším problémem sehnat nějakou vyráběnou krabicí, do které by se mohla elektronika instalovat. Do užšího výběru se nám dostalo asi 40 různých krabic, ale žádná z nich nebyla optimální. Nakonec jsme zvolili krabici firmy Fibox o rozměrech 215x315 cm a hloubce 17 cm, s tím že se postaví na šířku. Krabice se doplní o tzv. inspekční okno, pod které přijde displej s klávesnicí.
3.3. Displej Výběr displeje je také poměrně problematický, potřebujeme dostatečně veliký monochromatický podsvícený displej s minimální spotřebou. Na výběr máme mezi menším displejem, ovládaným pomocí SPI a poměrně nízkou spotřebou a větší paralelně řízený displej, ale s vyšší spotřebou a nutností 15 v napájení. Displej bude připojen k hlavnímu procesoru. Na displeji je potřeba psát text a vykreslit jednodušší grafiku jako například názorné rozmístění senzorů.
3.4. Klávesnice Důvody proč jsme zvolili kapacitní klávesnici, jsou zejména možnost zakrytí sklem a umístění elektroniky uvnitř krabice, možnost s minimálními náklady vytisknout vlastní layout a mít klávesnici na míru. Udělat profesionální vzhled v "domácích podmínkách" a v neposlední řadě absence jakéhokoliv mechanického prvku.
12
Uživatelské rozhraní geologické ústředny Základní prvky zařízení
Klávesnice bude předávat informace o svém stavu (stisku kláves) hlavnímu procesoru. Pravděpodobně pomocí SPI nebo řídícími signály GPIO. Měla by obsahovat číselnou klávesnici a ovládací prvky jako jsou šipky, případně kontextová tlačítka.
3.5. SD karta Zvolili jsme microSD kartu. Slot bude umístěn na základní desce a k procesoru připojen prostřednictvím SDIO rozhraní (hardwarová periferie). Sloužit bude k lokálnímu ukládání dat, jako záloha a v případě autonomního provozu ústředny v jiné aplikaci i jako primární úložiště. Na kartě by měl být souborový systém pro snadné nahrání dat do PC.
3.6. Vývojová deska Vývojová deska, kterou jsme zakoupili, je Keil MCBSTM32F200. Osazená je procesorem STM32F207IG. Na desce je barevný TFT displej s rozlišením 320x240 bodů, externí paměť (8MB Flash, 512 MB NAND Flash, 2 MB RAM, 8 KB EEPROM). EEPROM je navíc kompatibilní s NFC technologií. Dále deska obsahuje fyzické rozhraní sítě Ethernet, řadič USB, CAN interface, RS232, podporu MicroSD karet, akcelerometr a digitální kompas, audio rozhraní, digitální mikrofon a kameru.
3.7. Protokol Finet FINET je binární protokol s pevným rámcem (úvodní a ukončovací znak) určený pro přenos po duplexních i poloduplexních komunikačních kanálech. Komunikaci vždy navazuje nadřízený systém na principu dotaz - odpověď. Stanice odpovídá na každý dotaz pro ni určený. Důležitým parametrem je doba označená jako klid na lince. Ta je podmínkou pro rozeznání začátku bloku dat. Obvykle je nastavena na trojnásobek doby potřebné k odeslání jednoho bytu. Tato prodleva je nutná jak na straně SLAVE mezi přijetím dotazu a odesláním odpovědi, tak i na straně MASTER po přijetí odpovědi před vysláním dalšího dotazu. Druhým časovým parametrem je maximální doba mezi jednotlivými byty zprávy. Po jejím vypršení je zbytek zprávy ignorován a čeká se na příchod nové zprávy (SLAVE) nebo se vyšle opakovaný dotaz (MASTER). Obvyklé nastavení komunikačního portu je 19200 b, 8 bitů, žádná parita, 1 stop bit a žádné řízení toku dat. 13
Uživatelské rozhraní geologické ústředny Základní prvky zařízení
3.7.1. Komunikační rámec Směr MASTER -> SLAVE - Zpráva (dotaz) bez datového pole SD1
DA
SA
FC
FCS
ED
Směr MASTER -> SLAVE - Zpráva (dotaz) s datového pole SD2
LE
LER
SD2R
DA
SA
FC
DATA
FCS
ED
Směr SLAVE -> MASTER - Odpověď bez datového pole - krátké potvrzení SACK Směr SLAVE -> MASTER - Odpověď bez datového pole SD1
DA
SA
FC
FCS
ED
Směr SLAVE -> MASTER - Odpověď s datovým polem SD2
LE
LER
SD2R
DA
SA
FC
DATA
FCS
ED
FC
ER1
ER2
FCS
Směr SLAVE -> MASTER - Negativní odpověď SD2
LE
LER
SD2R
DA
SA
ED
3.7.2. Znaky komunikačního rámce SD1 – úvodní znak 1, pevná hodnota $10 SD2 – úvodní znak 2, pevná hodnota $68 LE – délka dat, vlastní délka dat + 3 (DA,SA,FC) LER – opakovaná délka dat SD2R – opakovaný úvodní znak 2, pevná hodnota $68 DA – cílová adresa zprávy SA – zdrojová adresa zprávy DATA – vlastní předávaná data (pro vyšší vrstvu) FCS – kontrolní součet jako bytový součet DA+SA+FC+ DATA modulo 256. ED – koncový znak, pevná hodnota $16 SACK – krátké potvrzení, pevná hodnota $E5
14
Uživatelské rozhraní geologické ústředny Software
4. Software Software je vyvíjen pro dva procesory, v další etapě se pak přejde ještě ke třetímu, ale vzhledem k použití ovladačů a stejné architektury je software téměř bez úprav přenositelný a není tedy úplně podstatné, na čem je momentálně. Na STM32F2 je vyřešeno: Multitasking. Obsluha SD karty pomocí periferie pro SDIO operace a DMA. Plná implementace souborového systému FAT32 pomocí knihovny FatFs. Obsluha paralelně řízeného barevného TFT displeje. AD převodník pracující s DMA. Sériová komunikace s PC.
Na STM32L1 je vyřešeno: Zpracování řídících signálů kapacitní klávesnice Řízení menšího monochromatického displeje ovládaného pomocí SPI. Grafická knihovna umožňující vykreslování a mazání obdélníku a textový výstup pomocí fontu importovaného z MS Windows (možnost importu libovolného fontu, případně i včetně diakritiky).
4.1. Vývojové prostředí Pro vývoj software jsem zvolil vývojové prostředí firmy CrossWorks CrossStudio for ARM. Programovací jazyk kombinaci C a C++. Přičemž v C jsou většinou knihovny třetích stran a svůj kód se snažím spíše psát v C++. C++ určitě nabízí větší pohodlí, ale jaký jazyk bude nakonec převážně používán zatím nevím. Vývojové prostředí mimo jiné nabízí vlastní multitasking, který také využívám. Jako programátor a debugger používám J-Link od firmy SEGGER, který disponuje jednak rozhraním JTAG tak i redukovaným rozhraním SWD. 15
Uživatelské rozhraní geologické ústředny Software
4.2. Proprietární ovladače Za velmi efektivní z hlediska vývoje považuji proprietární ovladače od firmy ST. Více či méně za nás obstarají fyzický přístup do registrů pomocí C-funkcí. Ovladače jsou ve formě sady souborů se zdrojovými kódy a hlavičkových souborů. Bylo poměrně problematické je importovat do projektu v prostředí CrossStudio, ale nakonec se to povedlo. Dalším přínosem je také C soubor, který kompletně obstará nastavení hodinového zdroje. Nastavení u Cortexu je poměrně rozsáhlé, protože lze různě taktovat jednotlivé skupiny periférií. Soubor lze pomocí nástroje od ST automaticky vygenerovat na základě nastavení v grafickém prostředí. Součástí sady ovladačů jsou také knihovny, které pomocí ovladačů dokáží už ovládat konkrétní připojené zařízení k procesoru, jako například paměť EEPROM pomocí I2C, knihovna pro zápis a čtení dat na/z SD karty využívající SDIO rozhraní apod.
4.3. Paralelní interface displeje Paralelní rozhraní displeje jsem vyzkoušel na vývojové desce osazené barevným TFT displejem. Procesor STM32F2 obsahuje jednotku FSMC (flexible static memory controller), která umožňuje přímé připojení displeje a přímí zápis do jeho paměti. Pro jeho ovládání jsem použil knihovnu od firmy ST, která v sobě sdružuje grafické funkce i výpis textu na displej. Text je bohužel omezen pouze na jediný font a to neproporcionální. Příklad zápisu textu do řádku: sprintf(text," ADC = %d,%d v ",v,mv); LCD_DisplayStringLine(LINE(6),text);
4.4. SPI ovládání displeje Pro ovládání menšího displeje jsem si napsal vlastní knihovnu, která využívá pouze ovladače rozhraní SPI. Displej je k procesoru připojen rozraním SPI, jedním resetovacím pinem a pinem určující režim příkazů nebo režim dat. V režimu
příkazů
může
procesor
posouvat
kurzorem,
zapínat
displej
a nastavovat jeho vlastnosti. Displej má rozlišení celkem 102 x 64 bodů a je rozdělen na 16
Uživatelské rozhraní geologické ústředny Software
celkem 102 x 8 buněk v paměti o velikosti osmi bitů. To znamená, že jeden bajt v paměti displeje představuje jeden sloupec osmi bodů na displeji. Zápis bajtu se provádí v datovém režimu a pozice ukazatele se automaticky inkrementuje o jeden sloupec doprava. Ukazatel může mít celkem 102 pozic na souřadnici X a 8 pozic na Y.¨
4.5. Grafická knihovna Rozhodl jsem se napsat si vlastní jednoduchou grafickou knihovnu, protože ta od ST nebyla úplně vyhovující. Největší problém byl v tom, že na displej můžu zapisovat vždy pouze po osmi bodech v daných souřadnicích. Pro velikost písma například 10 bodů bych při přímém zápisu na displej musel jedním řádkem obsadit dva osmibodové řádky a plýtvat místem. Problém jsem vyřešil tím, že jsem si vytvořil pole bajtů v paměti RAM, do které lze zapisovat pomocí logického součtu a neovlivňovat tím okolní body a potom nahrát celé pole do displeje. Tímto způsobem jsem docílil toho, že můžu cokoliv začít vykreslovat v libovolném bodě displeje.
4.6. Implementace FAT32 Jako souborový systém jsem zvolil FAT32 a pro jeho implementaci knihovnu FatFs. Jedná se o kompletní FAT32 včetně podpory procházení a vytváření adresářové struktury a dlouhých názvů souborů. Knihovna je nezávislá na architektuře. Pro implementaci je nutné pouze vytvořit těla funkcí pro spodní vrstvu, tzn. fyzický zápis do paměti. Potom již lze používat API knihovny pro čtení, vytváření, zapisování i mazaní souborů a složek, které se velmi podobá standartním funkcím pro práci se souborem v prostředí MS Windows. Proměnná rc nese informaci o úspěšnosti vykonávané funkce. f_open otevře soubor, argumentem funkce je struktura popisující soubor (zatím prázdná), název souboru a způsob jeho otevření. f_close soubor uzavírá. Funkce f_write zapisuje do souboru a f_lseek posouvá začátek zápisu o daný počet znaků, v tomto případě na konec souboru. To proto, že knihovna neumí otevřít soubor pro zápis na konec souboru. Příklad funkce, kterou knihovna volá při zápisu do paměti: 17
Uživatelské rozhraní geologické ústředny Software
4.7. ADC s DMA AD převodník jsem nastavil spolu s DMA na kontinuální převod analogového napětí na digitální hodnotu. Vzhledem k DMA se o převod kromě inicializace nemusím starat, hodnotu převodu mám vždy k dispozici v předem určené proměnné.
18
Uživatelské rozhraní geologické ústředny Kapacitní klávesnice
5. Kapacitní klávesnice 5.1. Atmel QTouch Aktuální stav je realizován knihovnou pro kapacitní klávesy QTouch firmy Atmel. QTouch umožňuje implementaci algoritmu pro vyhodnocení dotyku (zvýšení kapacity) do většiny svých procesorů. Použil jsem 8-bitový procesor, který dokáže obsloužit až 12 kláves. Procesor obstarává pouze kapacitní klávesnici a informaci o stavu dává hlavnímu procesoru pomocí řídících signálů. Jediným problémem je vysoká spotřeba celé klávesnice, která se pohybuje kolem 10mA. Při návrhu jsem počítal s úsporným módem, ve kterém by byla aktivní pouze jedna klávesa, a její stav by se kontroloval s nižší frekvencí, takže by se pro probuzení zařízení musela jedna klávesa déle podržet. Spotřeba pak měla výrazně klesnout. Po fyzické realizaci a vysoké spotřebě za všech možný okolností, jsem v dokumentaci procesoru dohledal, že je problém s nedefinovaným stavem pinu, se kterým se společně s knihovnou Qtouch nedá nic udělat. Předpoklad dalšího vývoje je implementace knihovny od firmy ST do hlavního procesoru a klávesnici doplnit o jednoúčelový obvod kapacitního tlačítka, který by se staral pouze o "probouzecí" tlačítko (z důvodu spotřeby právě jen jedno). Spotřeba ve vypnutém stavu by se pak měla pohybovat kolem 50uA a to bude vzhledem k ostatním úkolům ústředny zanedbatelné.
19
Uživatelské rozhraní geologické ústředny Kapacitní klávesnice
Na povrchu elektrod kláves je led dioda, celá klávesnice, včetně diod se zalije průsvitnou zalévací hmotou určenou pro rozptyl světla a celek se překryje fólií s potiskem, který bude prosvícen diodou. V ideálním případě bude součástí desky i displej pro zařízení a bude tvořit kompaktní celek, který se nalepí na inspekční okno v krabici.
Obrázek 1 - Zapojení QTouch
20
Uživatelské rozhraní geologické ústředny Závěr
6. Závěr Zadání práce, tedy uživatelské rozhraní geologické ústředny bylo splněno. Výsledkem práce je řada nástrojů a postupů, které jsou použitelné pro další vývoj kompletního software celé ústředny. Z hlediska úkolů této části zůstává jediným problémem vysoká spotřeba klávesnice. Nejpravděpodobnější další postup bude pokus implementovat kapacitní knihovnu od firmy ST do mikroprocesoru STM32 a klávesnici doplnit o takzvané „wake-up“ tlačítko, které procesor probudí a ten teprve spustí kapacitní klávesnici. Tlačítko bude také kapacitní, ale obsluhováno jednoúčelovým obvodem s nízkou spotřebou pracující pouze s jedním tlačítkem. Osobní přínos celé této práce je přechod z architektury AVR na ARM. Výkon a paměťové prostředky 32bitových procesorů se jeví jako zbytečný komfort, ale na druhou stranu právě tyto faktory mohou celý vývoj značně zpříjemnit. Stejně tak je markantní rozdíl v rychlosti debuggeru a celkové koncepci řešení naprogramování procesoru.
21
Uživatelské rozhraní geologické ústředny Literatura
Literatura [1]
Reference manual for STM32F4 [online]. [cit. 2012-05-10]. http://www.st.com/internet/mcu/subclass/1521.jsp
[2]
Reference manual for STM32F2 [online]. [cit. 2012-05-10]. http://www.st.com/internet/mcu/subclass/1520.jsp
[3]
Reference manual for STM32L1 [online]. [cit. 2012-05-10]. http://www.st.com/internet/mcu/subclass/1376.jsp
[4]
Atmel QTouch [online]. [cit. 2012-05-10]. http://www.atmel.com/products/touchsolutions/touchsoftware/default.aspx
[5]
CrossWorsk manual [online]. [cit. 2012-05-10]. http://www.rowleydownload.co.uk/arm/documentation/index.htm
[6]
SEGGER J-Link manual [online]. [cit. 2012-05-10]. http://www.segger.com/j-link-edu.html
22