Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2017:hid-prez [2018/01/14 17:18] Miroslav Děcký [Vývoj HW] |
2017:hid-prez [2018/01/14 20:28] (aktuální) Miroslav Děcký [Závěr] |
||
---|---|---|---|
Řádek 34: | Řádek 34: | ||
==== Rozšiřující destička ==== | ==== Rozšiřující destička ==== | ||
- | Prezentér má umožnit použít ukazovátko, přepínat snímky, zapínat prezentaci, zatmavit prezentaci. K tomu je nutné mít dostatek tlačítek. na FRDM-KL25z je k dispozici pouze tlačítko reset, je tedy nutné vyrobit rozšiřující dceřinou destičku s tlačítky. | + | Prezentér má umožnit použít ukazovátko, přepínat snímky, zapínat prezentaci, zatmavit prezentaci. K tomu je nutné mít dostatek tlačítek. Na FRDM-KL25z je k dispozici pouze tlačítko reset, je tedy nutné vyrobit rozšiřující dceřinou destičku s tlačítky. |
=== Seznam součástek: === | === Seznam součástek: === | ||
Řádek 41: | Řádek 41: | ||
* [[https://www.gme.cz/oboustranny-kolik-s1g20-2-54mm|Oboustranný kolík S1G20 2,54mm ]] 1ks | * [[https://www.gme.cz/oboustranny-kolik-s1g20-2-54mm|Oboustranný kolík S1G20 2,54mm ]] 1ks | ||
- | Schéma zapojení rozšiřující destičky je jednoduché, obsahuje dva samostatné hřebínkové konektory, jeden můžeme ponechat nezapojen, zajišťuje pouze stabilitu modulu, k druhému, jsou připojeny mikrospínače, celé schéma je zobrazeno na obrázku níže: | + | Schéma zapojení rozšiřující destičky je jednoduché, obsahuje dva samostatné hřebínkové konektory, jeden můžeme ponechat nezapojený, zajišťuje pouze stabilitu modulu, k druhému jsou připojeny mikrospínače, celé schéma je zobrazeno na obrázku níže: |
{{ :2017:hid-prez:schema.png?400 }} | {{ :2017:hid-prez:schema.png?400 }} | ||
Výhodou kombinace THT hřebínků a SMD mikrotlačítek je, že výsledná destička je jednostranný plošný spoj. Kritické je dodržení rozteče konektorů. Potřebné rozměry jsou na obrázku plošného spoje okótovány níže. | Výhodou kombinace THT hřebínků a SMD mikrotlačítek je, že výsledná destička je jednostranný plošný spoj. Kritické je dodržení rozteče konektorů. Potřebné rozměry jsou na obrázku plošného spoje okótovány níže. | ||
- | Kompletní podklady (sch i brd soubory) jsou k dispozici ke stažení z [2]. | + | Kompletní podklady v programu Eagle 6.6.0 jsou k dispozici ke stažení. |
+ | |||
+ | {{ :2017:hid-prez:prezenter_vyrobni_podklady.zip |}} | ||
{{ :2017:hid-prez:pcb.png?400 |}} | {{ :2017:hid-prez:pcb.png?400 |}} | ||
Řádek 54: | Řádek 57: | ||
- | Je třeba si dát pozor na určité speciální piny, Piny vyvedení na tyto arduino konektory nejsou „volné“, ale mohou obsahovat například připojenou RGB led diodu, případně hodiny pro debugger. | + | Je třeba si dát pozor na určité speciální piny, piny vyvedené na tyto arduino konektory nejsou vždy „volné“, ale mohou obsahovat například připojenou RGB led diodu, případně hodiny pro debugger. |
V první verzi DPS toto nebylo dodrženo a jedno tlačítko bylo spojeno právě s LED na destičce freedom. Tato chyba byla opravena, a výše prezentované schéma i PCB (případně data ke stažení) již tuto chybku neobsahují. | V první verzi DPS toto nebylo dodrženo a jedno tlačítko bylo spojeno právě s LED na destičce freedom. Tato chyba byla opravena, a výše prezentované schéma i PCB (případně data ke stažení) již tuto chybku neobsahují. | ||
- | Foto výsledného přípravku s KL25z je na obrázku níže, jedná se ovšem o první verzi, | + | Foto výsledného přípravku s KL25z je na obrázku níže, jedná se ovšem o první verzi. |
{{ :2017:hid-prez:kl25z_pripravek_lezato.jpg?400 |}} | {{ :2017:hid-prez:kl25z_pripravek_lezato.jpg?400 |}} | ||
Řádek 64: | Řádek 67: | ||
Firma NXP dodává pro své mikrokontroléry knihovní balíček SDK. Tyto knihovní balíčky pro jednotlivé vývojové platformy, nebo čisté mikrokontroléry lze stahovat po registraci pomocí MCUXpresso aplikace z webu [[https://mcuxpresso.nxp.com/en/select|zde]]. | Firma NXP dodává pro své mikrokontroléry knihovní balíček SDK. Tyto knihovní balíčky pro jednotlivé vývojové platformy, nebo čisté mikrokontroléry lze stahovat po registraci pomocí MCUXpresso aplikace z webu [[https://mcuxpresso.nxp.com/en/select|zde]]. | ||
- | Součástí knihovního balíku pro FRDM-KL25z jsou taktéž demoaplikace. Pro implementaci USB HID zařízení je k dispozici několik aplikací. Jelikož prezentační zařízení využívá kromě tlačítek myši, taktéž klávesové zkratky klávesnice jako výchozí demoaplikace byla zvolena verze kompozitního zařízení MYŠ a KLÁVESNICE. | + | Součástí knihovního balíku pro FRDM-KL25z jsou taktéž demoaplikace. Pro implementaci USB HID zařízení je k dispozici několik aplikací. Jelikož prezentační zařízení využívá kromě tlačítek myši taktéž klávesové zkratky klávesnice, jako výchozí demoaplikace byla zvolena verze kompozitního zařízení MYŠ a KLÁVESNICE. |
=== Funkce prezentéru === | === Funkce prezentéru === | ||
- | Každé funkce prezentéru odpovídá klávesová zkratka jednotlivé funkce shrnuje následující tabulka: | + | Každé funkci prezentéru odpovídá klávesová zkratka. Jednotlivé funkce shrnuje následující tabulka: |
{{:2017:hid-prez:kl25z_pripravek_lezato_cisla.jpg?400 |}} | {{:2017:hid-prez:kl25z_pripravek_lezato_cisla.jpg?400 |}} | ||
Řádek 77: | Řádek 80: | ||
| 3. | Ukazovátko | Levé tlačítko myši | | | 3. | Ukazovátko | Levé tlačítko myši | | ||
| 4. | Spustit prezentaci | F5 | | | 4. | Spustit prezentaci | F5 | | ||
- | | 5. | Začernění | B | | + | | 5. | Začernění | B | |
Prezentér pro pohyb ukazovátka po ploše prezentace využívá akcelerometru MMA8451Q, který je osazen na FRDM-KL25z. | Prezentér pro pohyb ukazovátka po ploše prezentace využívá akcelerometru MMA8451Q, který je osazen na FRDM-KL25z. | ||
Řádek 110: | Řádek 113: | ||
</code> | </code> | ||
Proměnné dirLR a dirUD uchovávají aktuální požadavek na pohyb ve dvou osách, a jsou dále propagovány do obslužných funkcí USB aplikace. | Proměnné dirLR a dirUD uchovávají aktuální požadavek na pohyb ve dvou osách, a jsou dále propagovány do obslužných funkcí USB aplikace. | ||
- | Původní myšlenka, že velikost náklonu by měnila rychlost pohybu kurzoru byla po otestování zavržena a ponechána rychlost posunu na pevnou hodnotu. | + | Původní myšlenka, že velikost náklonu by měnila rychlost pohybu kurzoru, byla po otestování zavržena a rychlost posunu ponechána na pevnou hodnotu. |
V budoucnu by bylo možné otestovat změnu rychlosti posunu na dotykovém slideru. | V budoucnu by bylo možné otestovat změnu rychlosti posunu na dotykovém slideru. | ||
- | Pro obsluhu tlačítek, byla napsána následující funkce. Tlačítka jsou obsluhovány tak, aby bylo nutné pro listování prezentací opakovaně mačkat tlačítka. Díky této úpravě, je možné minimalizovat ochrannou dobu pro detekci stisku a zároveň předejít nechtěnému listování o více listů prezentace: | + | Makro ANGLE_THRESHOLD slouží pro nastavení oblasti, kdy má kurzor stát, jedná se tedy o citlivost na malý náklon. Díky řešení pomocí makra je možné jednoduchou změnou z jednoho místa ovlivnit všechny směry současně. |
+ | |||
+ | Pro obsluhu tlačítek byla napsána následující funkce. Tlačítka jsou obsluhována tak, aby bylo nutné pro listování prezentací opakovaně mačkat tlačítka. Díky této úpravě je možné minimalizovat ochrannou dobu pro detekci stisku a zároveň předejít nechtěnému listování o více listů prezentace. Tato logika obsluhuje pouze tlačítka pro listování v prezentaci, její spuštění a zatmavení. Tlačítko ukazovátka má zvláštní obsluhu, viz dále. | ||
<code c> | <code c> | ||
Řádek 156: | Řádek 161: | ||
</code> | </code> | ||
- | Obsluha tlačítka ukazovátka má specifickou obsluhu. | + | Obsluha tlačítka ukazovátka má specifickou podobu. |
- | Pro zapnutí funkce ukazovátka je nutné držet levé tlačítko myši >1s a po dobu ukazování neuvolnit. Tento přístup se mi jeví jakožto nevhodný. Z tohoto důvodu důvodu je implementována logika, klopného obvodu, kdy první stisk tlačítka aktivuje "levé tlačítko myši" a až následující stisk tuto funkci uvolní - není tedy nutné při prezentaci křečovitě držet mikrospínač. | + | Pro zapnutí funkce ukazovátka je nutné držet levé tlačítko myši >1s a po celou dobu ukazování neuvolnit. Tento přístup se mi jeví jakožto nevhodný. Z tohoto důvodu je implementována logika klopného obvodu, kdy první stisk tlačítka aktivuje "levé tlačítko myši" a až následující stisk tuto funkci uvolní - není tedy nutné při prezentaci křečovitě držet mikrospínač. |
<code c> | <code c> | ||
if (!GPIO_ReadPinInput(PLUG_BOARD_GPIO, SW_LEFT_BUTTON_PIN)) | if (!GPIO_ReadPinInput(PLUG_BOARD_GPIO, SW_LEFT_BUTTON_PIN)) | ||
Řádek 176: | Řádek 181: | ||
</code> | </code> | ||
- | Takto předpřipravená data jsou dále předávána do aplikace pro obsluhu USB HID zařízení, které posílá data do počítače. | + | Takto předpřipravená data jsou dále předávána do části aplikace pro obsluhu USB HID zařízení, která posílá data do počítače. |
+ | |||
+ | Celý výše uvedený kód se odehrává v hlavní smyčce programu. | ||
=== USB HID === | === USB HID === | ||
Řádek 182: | Řádek 189: | ||
FRDM-KL25z je osazena dvěma USBmini konektory, jeden slouží pro programování, případně sériovou komunikaci s KL25 a druhý je vyveden přímo z USB periferie mikrokontroléru KL25z. | FRDM-KL25z je osazena dvěma USBmini konektory, jeden slouží pro programování, případně sériovou komunikaci s KL25 a druhý je vyveden přímo z USB periferie mikrokontroléru KL25z. | ||
- | Jako výchozí bod, pro implementaci kompozitního USB HID zařízení posloužil demonstrační projekt z knihovního balíku SDK2.2. Tento projekt pohyboval kurzorem myši po monitoru ve tvaru obdélníka a pomocí kláves PAGE UP a PAGE DOWN pohyboval stránkou nahoru a dolů. | + | Jako výchozí bod pro implementaci kompozitního USB HID zařízení posloužil demonstrační projekt z knihovního balíku SDK2.2. Tento projekt pohyboval kurzorem myši po monitoru ve tvaru obdélníka a pomocí kláves PAGE UP a PAGE DOWN pohyboval stránkou nahoru a dolů. |
Celá aplikace s USB HID funkcionalitou byla implementována do předpřipravené části projektu s tlačítky a akcelerometrem. | Celá aplikace s USB HID funkcionalitou byla implementována do předpřipravené části projektu s tlačítky a akcelerometrem. | ||
- | Následovalo otestování funkčnosti obou spojených funkcí, po této fázi, došlo k upravě funkcí pro zasílání dat skrz USB: | + | Následovalo otestování funkčnosti obou spojených funkcí, po této fázi došlo k upravě funkcí pro zasílání dat skrz USB: |
<code c> | <code c> | ||
Řádek 248: | Řádek 255: | ||
} | } | ||
</code> | </code> | ||
- | Jak je vidět z kódu výše, případné rozšíření na dynamickou změnu rychlosti pohybu kurzoru není problém. Postačí místo konstanty použít proměnnou. | + | Jak je vidět z kódu výše, případné rozšíření na dynamickou změnu rychlosti pohybu kurzoru je v případě požadavku na toto chování možné. |
+ | |||
+ | Kompletní projekt prezentéru ve vývojovém prostředí IAR 7.80.4 je k dispozici ke stažení: | ||
+ | {{ :2017:hid-prez:prezenter_iar.zip |}} | ||
Řádek 254: | Řádek 264: | ||
====== Video s demonstrací funkčnosti ====== | ====== Video s demonstrací funkčnosti ====== | ||
+ | Pro demonstraci funkčnosti jsem natočil následující video. | ||
+ | |||
+ | {{youtube>dMbCDBqjDh0?medium}} | ||
---- | ---- | ||
Řádek 260: | Řádek 273: | ||
Předložený projekt prezentačního zařízení se podařilo dokončit do plně použitelného stavu. Hlavním problémem zůstávají použité klávesové zkratky, při vývoji jsem nalezl na [[https://support.office.com/en-ie/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0|stránkách podpory office]], že zatmavení prezentace pro office 2007 a vyšší je klávesová zkratka "B" a opětovným stiskem "B" dojde k návratu. Při vývoji byl použit PowerPoint verze 2016 a toto chování se potvrdilo. | Předložený projekt prezentačního zařízení se podařilo dokončit do plně použitelného stavu. Hlavním problémem zůstávají použité klávesové zkratky, při vývoji jsem nalezl na [[https://support.office.com/en-ie/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0|stránkách podpory office]], že zatmavení prezentace pro office 2007 a vyšší je klávesová zkratka "B" a opětovným stiskem "B" dojde k návratu. Při vývoji byl použit PowerPoint verze 2016 a toto chování se potvrdilo. | ||
- | Bohužel, na některých PowerPointech tato zkratka není plně funkční, návrat z černé obrazovky je možný stiskem libovolného tlačítka pro pohyb v prezentaci (tj 1. nebo 2.) tento stisk způsobí návrat do prezentace, nikoliv její přelistování. Důvod je mi neznámý, bohužel vlastní zařízení s tímto chování nemám. | + | Bohužel na některých PowerPointech tato zkratka není plně funkční, návrat z černé obrazovky je možný stiskem libovolného tlačítka pro pohyb v prezentaci (tj 1. nebo 2.), tento stisk způsobí návrat do prezentace, nikoliv její přelistování. Důvod je mi neznámý, bohužel vlastní zařízení s tímto chování nemám. |
- | Při testování funkčnosti (Viz video výše) si můžete povšimnout relativity času, kdy "stisk delší než 1s" je opravdu nepříjemně dlouhá doba pro zapnutí ukazovátka. Pohyb pomocí akcelerometru je bezproblémový, jen vyžaduje trochu cviku, přesnost pohybu s laserovým ukazovátkem nelze srovnávat. | + | Při testování funkčnosti (viz video výše) si můžete povšimnout relativity času, kdy "stisk delší než 1s" je opravdu nepříjemně dlouhá doba pro zapnutí ukazovátka. Pohyb pomocí akcelerometru je bezproblémový, jen vyžaduje trochu cviku, přesnost pohybu s laserovým ukazovátkem nelze srovnávat. |
Zařízení je tedy po otestování plně funkční, základní účel plně splnilo - otestovat možnosti USB HID Demoaplikace pro potřeby mé diplomové práce. Největší očekávání jsem měl k ukazovátku, které by umožnilo být při prezentaci čelem k publiku, bez nutnosti otáčet se na projekční plochu, ovšem rychlost a přesnost ukazování je u laserového ukazovátka výrazně lepší. | Zařízení je tedy po otestování plně funkční, základní účel plně splnilo - otestovat možnosti USB HID Demoaplikace pro potřeby mé diplomové práce. Největší očekávání jsem měl k ukazovátku, které by umožnilo být při prezentaci čelem k publiku, bez nutnosti otáčet se na projekční plochu, ovšem rychlost a přesnost ukazování je u laserového ukazovátka výrazně lepší. | ||
Řádek 270: | Řádek 283: | ||
[1] Obrázek arduino konektory: https://os.mbed.com/media/uploads/GregC/frdm-kl25z_headers2.png | [1] Obrázek arduino konektory: https://os.mbed.com/media/uploads/GregC/frdm-kl25z_headers2.png | ||
- | [2] Podkldady pro výrobu plošného spoje s tlačítky ke stažení: XXXXX | + | [2] https://support.office.com/en-us/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0 |
+ | |||
+ | [3] MCUXpresso online SDK builder : https://mcuxpresso.nxp.com/en/select | ||
- | [3] https://support.office.com/en-us/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0 |