Hrátky s Arduinem Soustředění mladých fyziků a matematiků Autoři: Barbora Vosáhlová, Alžběta Štollová Vedoucí projektu: Václav Kohout Josefův Důl 2021
Anotace Projekt Hrátky s Arduinem se zaměřuje na objevování způsobů zapojení Arduina a jeho základních součástek (LEDek, tlačítek a displejů). Kromě toho se zabývá fungováním celého ústrojí a začátky programování s arduinem. Práce je uzpůsobena začátečníkům a zkoumá kolik se toho dá za necelé dva týdny naučit. Cílem bylo vytvořit alespoň 2 menší projekty, ve kterých se nově nabyté znalosti uplatní.
Poděkování Chtěli bychom poděkovat všem, kteří se podíleli na realizaci Soustředění mladých fyziků a matematiků. A také vedoucímu projektu Václavu Kohoutovi, hlavně za pomoc při modelaci a celkově při realizaci našeho projektu.
Obsah 1. Úvod... 4 2. Miniprojekty... 5 2.1. Semafor... 5 2.2. Simon Says... 5 2.3. Automatický vodovodní kohoutek... 7 3. Závěr... 10 Zdroje... 11
1. Úvod Arduino je otevřená elektronická platforma, která vznikla v roce 2005. Jedná se jednodeskový počítač, takže k Arduinu nemůžeme připojit například monitor, myš či klávesnici. Lze připojit LEDky, tlačítka, displeje z tekutých krystalů a různé senzory, jako například ultrazvukový senzor vzdálenosti nebo teploty. Arduino používá vlastní programovací jazyk, který je blízce podobný jazyku C. Napětí na Arduino desce je 5 V. V našich miniprojektech jsme používaly dva typy Arduino Uno a Arduino Nano. 4
2. Miniprojekty 2.1. Semafor Naším prvním miniprojektem byl semafor. Naším cílem bylo imitovat přechod pro chodce, který by přeskočil na zelenou vždy po zmáčknutí tlačítka. Pokud ovšem tlačítko zmáčknuté nebylo, na semaforu neustále svítila červená. Smyslem tohoto projektu bylo seznámit se s IDE Arduina a naučit se zapojovat již zmíněné základní součástky. K tomuto projektu jsme používaly Arduino Uno. Arduino jsme zapojily tak, že jsme drátkem propojily sloupeček plus na nepájivém poli s pinem +5V a sloupeček minus s GND, tedy zemí. Což znamená, že na desce máme napětí 5V, jenomže diody jsou stavěné na nižší napětí, takže budeme potřebovat rezistory, abychom LEDky nespálily. V našem případě byly rezistory přidělané rovnou k LEDkám. LEDky připojíme takovým způsobem, aby jejich katoda (nožička na které je rezistor) byla propojena s minusem, které máme spojené se Obrázek 1 první úspěšný pokus o zapojení diod zemí (GND) a její anodu spojíme s určitým pinem pomocí drátku. Pomocí těchto pinů budeme diody ovládat. Následuje zapojení tlačítka. Prvně musíme zjistit, které dva piny tlačítka jsou propojené. Poté jeden z těchto pinů propojíme se sloupečkem plus, tedy pěti volty. Druhou stranu tlačítka musíme propojit přes rezistor se sloupečkem minus a na stejné straně musíme také tlačítko spojit s pinem. Použili jsme 3 diody s rezistory a jedno tlačítko. LEDky byli v barvách červené, žluté a zelené. S tímto projektem jsme neměly žádné větší problémy. Napsaly jsme funkci, ve které se současně s červenou rozsvítila na 1 vteřinu i žlutá, obě LEDky poté zhasly a rozsvítila se zelená dioda na dobu 5 vteřin. Poté se rozsvítila znovu na vteřinu rozsvítila žlutá a semafor přeblikl zpět na červenou. Tato funkce je vyvolána vždy zmáčknutím tlačítka. 2.2. Simon Says Následujícím projektem byl náš hlavn í projekt hra Simon Says. Tato hra je inspirována hrou Simon, kterou vynalezl Ralph Baer v roce 1978. Hra se skládala ze čtyř barevných tlačítek, která se postupně rozsvítila a hráč musel tuto řadu zopakovat ve stejném pořadí. Pokud v tomto úkolu uspěl, řada se prodloužila, a tak se stávala každým kolem náročnější a náročnější. Ovšem pokud se hráč spletl, znamenalo to pro něj prohru. Tato hra se stala velkým symbolem pop kultury sedmdesátých a osmdesátých let. 5
My jsme se tuto hru rozhodly zrekonstruovat. Proto jsme se rozhodli zrecyklovat náš předchozí projekt Semafor. Jen jsme přidaly jednu LEDku, abychom měly čtyři blikající světýlka. Potřebovaly jsme, aby bylo pořadí rozsvěcejících se světýlek náhodné. Ovšem zde se naskytl malý problém funkce random, kterou jsme chtěly použít, nebyla tak úplně náhodná. První kombinace po zapnutí byla vždy stejná, což poněkud kazilo koncept hry. Nakonec jsme tento problém vyřešily pomocí funkce millis. Totiž šance, že zmáčkneme tlačítko ve stejné milisekundě není příliš vysoká. Tím jsme zajistily, že Obrázek 2 původní hra SImon problikávání LEDky bylo opravdu náhodné. Následovně jsme zajistily, aby jedna LEDka nemohla bliknout dvakrát za sebou a to proto, že jsme to stejné potřebovaly poté zajistit u tlačítek, aby kdyby omylem hráč zmáčkl jedno tlačítko víckrát, tak mu to druhé zmáčknutí již nezapočítalo. Což by byl problém, kdyby LEDka mohla bliknout dvakrát za sebou. Nakonec jsme pořadí rozsvěcejících se diod zaznamenaly do pole, abychom měly s čím porovnat pořadí zmáčknutých tlačítek. Následujícím krokem bylo zapojení tlačítek. Tlačítko, které nám na desce zůstalo od semaforu se stalo tlačítkem startovacím, kterým hráč mohl odstartovat každé kolo, tedy Obrázek 3 první zapojení hry Obrázek 4 detail zapojení sekvenci blikajících diod. Dále jsme připojily další čtyři tlačítka, reprezentující vždy jednu diodu. Potřebovaly jsme zaznamenat pořadí, ve kterém hráč tlačítka stiskl do dalšího pole a samozřejmě zajistit, aby bylo každé tlačítko možné zmáčknout jen jednou a také, aby se vždy zaznamenala jen první hodnota, aby nezáleželo na tom, jak dlouho tlačítko hráč drží. Dalším důležitým bodem bylo porovnat, jestli se pořadí tlačítek rovná pořadí blikajících diod. Toto již nebylo tak složité, jelikož jsme si obě hodnoty ukládaly do polí, které nám již stačila pouze porovnat. Také jsme ovšem chtěli hru postupně stěžovat, aby byla složitější a nebyla tak monotónní. Proto pokaždé, když hráč zmáčknul všechna tlačítka správně, postoupil do dalšího levelu. Znamená to, že se sekvence blikání o jedno rozsvícení prodloužila. Ovšem aby tako sekvence nemohla jít do nekonečna a hra rychle odsýpala, maximální délka řady bliknutí je 6. Poté se začne zrychlovat mezičas mezi bliknutími, čímž se stále stává každý level 6
těžším a těžším. A aby hra měla konec, rozhodly jsme se, že při dosáhnutí skóre 100 hra končí a hráč vyhrává. Skóre je počet správně zmáčknutých tlačítek za všechna kola dohromady. Samozřejmě bylo také potřeba připojit nějaký displej, aby mohl hráč sledovat své celkové skóre a také kolik tlačítek z kolika správně zmáčkl v minulém kole. K tomu jsme použily displej z tekutých krystalů. Abychom mohli tento displej ovládat musely jsme si stáhnout speciální knihovnu LiquidCrystal. Nakonec jsme už jen potřebovaly displej připojit s našemu Arduinu. Při zapnutí hry se na displeji objeví pozdrav a poté na něm hráč vidí své skóre z minulého kola a své celkové skóre. Úplně poslední třešničkou na dortu bylo vytvoření dvou různých režimů. A to proto, aby měl hráč širší výběr a skóre se dalo opravdu porovnávat a neukazovalo jen, jak dlouho hráč u hry vydrží. První režim se jmenuje Easy Peasy Mode. V tomto režimu hráč nemůže prohrát. Takže pokud se splete stále pokračuje na stejném levelu a skóre mu zůstává a ztratit ho může jen tak, že by vyresetoval celou hru. Druhým režimem, je režim KILLER MODE. Tato obtížnost znamená jedna chyba = konec hry. Pokud se hráč splete, byť jen jednou, celý jeho dosavadní postup se zruší a začíná znovu na prvním levelu se skórem 0. Výběr těchto dvou režimů se hráči objeví na displeji hned při spuštění a vybere si zmáčknutím prvního či druhého tlačítka. (první tlačítko = Easy Peasy Mode, druhé tlačítko = KILLER MODE). Poté už režim nemůže změnit, pokud by neresetoval celou hru. Veškeré doplňky zmíněné ve dvou posledních odstavcích byly vymyšleny až Obrázek 5 finální zapojení s displejem a baterií za pochodu. Hra samotná nemusí obsahovat ani displej, ani dva režimy, to bylo přidáno pouze pro lepší orientaci a lepší herní zážitek. 2.3. Automatický vodovodní kohoutek Druhý větší projekt, vodovodní kohoutek, nás napadl, když jsme se dozvěděly, že je k dispozici ultrazvukový senzor vzdálenosti. Náš plán bylo vytvořit kopii toho, co je možné spatřit téměř na všech veřejných toaletách. Počítaly jsme s tím, že to určitě bude obtížnější než Simon Says, hlavně z konstrukčního hlediska. Simon Says jsme ponechaly na Arduinu samotném, a tudíž nebylo třeba ho nějak upravovat. V případě kohoutku jsme musely uvažovat, odkud kam poteče voda a kam dát veškerou elektroniku. 7
Nevěděly jsme si poněkud rady právě s místem k uschování vody, ale nakonec jsme vymyslely řešení vytvořit kádinku, ze které voda poteče kohoutkem ven a opět se bude vracet zpět. Tímto způsobem nedojde k žádným ztrátám vody a pro naše účely je to zcela vyhovující. Všechny externí součástky byly vyrobeny na 3D tiskárně. Jedná se o: krabičku rozdělenou na 2 části (jednu část na elektroniku a druhou část na vodu), umyvadlo a malé víko. Uvnitř se ukrývá baterka, hadička, čerpadlo, senzor a Arduino. Obrázek 6 čerpadlo vytištěné na 3D tiskárně Původně jsme měly v plánu vytisknout si čerpadlo na 3D tiskárně, takže jsme si našly model na internetu, ale nakonec jsme se rozhodly pro již složené čerpadlo, které se koupilo. Jak je krabička rozdělená, tak v menší části se Obrázek 7 součástky umyvadla nachází Arduino, které ovšem musí být napájeno externě pomocí USB kabelu (z počítače nebo powerbanky). V této části se nachází i baterka, která pohání čerpadlo. Do vedlejší větší části odtéká voda z umyvadélka a také se zde nachází čerpadlo, které poté vodu pohání zpět do kohoutku. Senzor vzdálenosti je umístěn na víčku pod kohoutkem. V přepážce mezi dvěma částmi jsou dva otvory. Prvním prochází hadička vzhůru do kohoutku, druhý je určen pro kabel, který vede od čerpadla k baterce. Tyto otvory jsme se snažili vytvořit dostatečně vysoko nad vodní hladinou, abychom neriskovaly vniknutí vody do elektronické části. Přesto nám otvor na drátek přišel nebezpečně nízko, takže jsme ho pro jistotu zaizolovaly sekundovým lepidlem. S modelováním ve Fusionu jsme měly značné potíže, ale nakonec se nám vše povedlo úspěšně dát dohromady. Celkově se nám párkrát stalo, že nám úplně přesně nevycházely rozměry. Takže jsme například část, do které patřil senzor musely tisknout na dvakrát, protože se nám tam napoprvé nevešel. Také s otvorem, který sloužil k zapojení Arduina k počítači, jsme měly problém. Jelikož jsme při měření změřily jen konektor a zapomněly jsme započítat, že je dále širší. Takže jsme následovně museli otvor manuálně zvětšit. 8
Co se programovací části týče, pomocí 4 drátků jsme propojily senzor s Arduinem. Abychom mohly testovat náš program před tím, než do něj zapojíme i čerpadlo, rozhodly jsme se zapojit jednu LEDku, která se rozsvítila vždy, když jsme se k senzoru přiblížily na méně než deset centimetrů. Nakonec jsme také nastavily, že pokud by od senzoru náhodou v době zapnutí LEDky přišla hodnota větší než 10 cm, ale hned se zase objevila menší, tak aby se LEDka nevypla. Toto jsme nastavily proto, aby když již bude připojené čerpadlo, nedocházelo k častému rychlému zapínání (resp. vypínání) případnými chybami senzoru. Obrázek 8 Arduino se senzorem vzdálenosti Při testování čerpadla jsme zjistily, že při napětí 5 V protéká čerpadlem proud přibližně 0,5 A, což je více než povolený proud Arduinem (200 ma). Proto jsme situaci řešily spínáním druhého zdroje (ploché 4,5V baterie) pomocí tranzistoru. Nakonec už nám zbývalo jen umyvadélko seskládat dohromady, vše přilepit na svá místa a vše sešroubovat dohromady. Obrázek 9 umyvadlo v kompletní verzi Obrázek 10 elektronická část umyvadla 9
3. Závěr Projekt nás naučil, jak funguje Arduino a základní obvody. Výsledkem byly tři miniprojekty, což dokonce předčilo náš původní cíl. Ovšem existuje nekonečně mnoho dalších projektů, které by se daly s Arduinem uskutečnit, kdybychom měly nekonečně mnoho času. 10
Zdroje Lekce 12 - Arduino - Jazyk 2. itnetwork.cz - Ajťácká sociální síť a materiálová základna pro C#, Java, PHP, HTML, CSS, JavaScript a další. [online]. Copyright 2021 itnetwork.cz. Veškerý obsah webu [cit. 14.07.2021]. Dostupné z: https://www.itnetwork.cz/hardware-pc/arduino/arduino-stavba-jazyka-2 Co je to Arduino?. Úvodní stránka - Bastlírna HWKITCHEN [online]. [cit. 14.07.2021] Dostupné z: https://bastlirna.hwkitchen.cz/co-je-to-arduino/ Ultrazvukový měřič vzdálenosti HY-SRF05 Návody Drátek. Webový magazín o ARDUINU Návody Drátek [online]. [cit. 14.07.2021] Dostupné z: https://navody.dratek.cz/navody-k-produktum/ultrazvukovy-meric-vzdalenosti-hysrf05.htm LCD Displej Návody Drátek. Webový magazín o ARDUINU Návody Drátek [online]. [cit. 14.07.2021] Dostupné z: https://navody.dratek.cz/zaciname-s-arduinem/lcddisplej.html Simon (game) - Wikipedia. [online]. [cit. 14.07.2021] Dostupné z: https://en.wikipedia.org/wiki/simon_(game) 11