Čo je vo vnútri? Robí to niečo? Vtipná aplikácia, ktorú si môžete zhotoviť sami.
1. Ako to funguje
- Hlavný kovový prepínač je napojený na Arduino nano a jeho stav je monitorovaný. Podľa aktuálneho stavu prepínača sa Arduino rozhoduje. čo sa bude diať so servo motorčekom Ak je prepínač “zapnutý”, Arduino Nano pohne motorčekom a prepínač opäť vypne.
- Druhý z použitých prepínačov slúži ako zapnutie alebo vypnutie prívodu energie pre celé zariadenie (ON/OFF prepínač)
2. Zoznam komponentov a náradia
Softvér: Arduino IDE
Súbor pre 3D tlač na stiahnutie.
Komponenty
- Arduino nano
- Servo SG90
- LM7805 stabilizátor napätia 5V
- Prepínač
- Jednoduchý prepínač
- 9V baterka
- Adaptér na 9V baterku
- Prepojovacie vodiče
Dobre farebne rozoznateľné. Napríklad červený (napájanie), čierny(zem)
- Pružinka
Náradie
- Spájkovačka
- Cín
- Skrutkovač
- Lepidlo
- Brúska na vytvorenie miesta pre servo motorček a dier pre šróbiky
- Šróbiky a ich priemer do 1,5mm (V projekte bol použitý priemer 1mm)
- Nôž alebo odizolovacie kliešte
3. Schéma zapojenia
Napájacia časť sa skladá z
- 9V baterky
- Jednoduchého prepínača (2 vývody)
- Stabilizátora napätia na 5V
Hracia časť sa skladá z
- Dvojpolohového prepínača (3 vývody – 5V/ pin(D2) / GND)
- Servo SG90
4. 3D tlačené diely, úprava mechanických komponentov a montáž celej zostavy
Pred použitím stabilizátora musíme odstrániť jeho chladič ináč by sa súčiastka s ďalšími inými do nášho boxu nezmestila. Box bol navrhnutý tak, aby bol čo najkompaktnejší a zároveň chladič pri našom odbere ani nebude potrebný.
Vytlačené časti upravíme vhodne pre naše šróbiky, dbáme na veľkosti dierok s veľkou opatrnosťou. Zároveň si môžeme prispájkovať potrebné vypínače podľa schémy.
Začneme napájacou časťou. Adaptér na baterku si vhodne upravíme tak aby sme mohli červený káblik (9V) spájkovať s jednoduchým vypínačom (2 vývody). Prečo pripájame na tento vypínač 9V a nie stabilizovaných 5V pomocou nášho stabilizátora? Dôvod je jednoduchý, kebyže ovládame 5V tak by sa nám v stabilizátore určitá energia strácala, čo by ovplyvnilo výdrž baterky. Tú chceme uchovať práve na funkčnosť boxu.
Na fotke vidíme zostavený prorukt. Druhý červený káblik bude pripojený na spomínaný stabilizátor kedy bude energia tiecť len vtedy keď bude tento ‘‘hlavný“ prepínač zapnutý.
Následne sa môžeme pomocou digitálneho multimetra presvedčiť o funkčnosti prepínača ako aj stabilizátora.
Ako ďalší si pripravíme hrací spínač, ktorý prispájkujeme so zapojením podľa schémy v neskoršom štádiu keď budú prichystané ostatné komponenty. Podľa fotky smerom zhora GND (čierny), D2 (tenký červený), 5V (hrubý červený)
Na nasledujúcej fotke môžeme vidieť vytlačené časti okrem samotného boxu. Všimnime si pohyblivú časť na ktorej je priskrutkovaný držiak, ktorý bude spojený s boxom. Toto priskrutkovanie bolo zamenené pripevnením pomocou lepidla, kvôli tomu aby táto časť lepšie priľahla keď bude zavretá. S tým súvisí vytvorenie spôsobu spojenia tejto pohyblivej časti k boxu. Jedným z riešení je vytvorenie asi jedno-centimetrových paličiek ktoré budú vsunuté do boxu tak, aby sa naša pohyblivá časť stala skutočne pohyblivou.
Ako prvý budeme vkladať servo motorček. Odstránime spodnú krytku serva a zalepíme vrchnú časť serva, ktorá má tendenciu sa vysúvať. Hlavne kvôli tomu, že sme odstránili šrobíky, ktoré nedržia len spodnú krytku, ale aj časť kde sú ozubené kolieska. Najlepšie bolo v tomto prípade použiť sekundové lepidlo a časť, ktorá sa vysúva, zalepiť.
Medzi ďalšie úpravy serva patrí pripevnenie ruky, ktorá bude spínať dvojpolohový prepínač. V balení servo SG90 nájdeme potrebný materiál pre uchytenie tohto ramena vrátene šrobíkov. Ako prvé si vyberieme ručičku ako na fotke. Obstrihnutú časť vložíme dnu a následne pripevníme spomínanou skrutkou.
Vytlačený box a jeho úchytka je pre servo úzke. Pri riešení tohto problému je možné postúpiť dvoma smermi. Buď úchytky premodelujeme v programe alebo úchytky upravíme tak aby sa tam servo vošlo.
V tomto projekte bola zvolený variant číslo dva avšak odporúčam variantu číslo jeden kvôli jednoduchosti. Miesto pre servo teda úchytky majú vymodelované dierky pre skrutky . Ako môžete vidieť na predchádzajúcej fotke , šrobíky sú pripevnené najprv na servo a následne do vymodelovanej časti. Spôsob pripevnenia bol v tomto projekte riešený nie skrutkovaním šrobikov do vnútra ale ich prilepením k týmto dierkam, z dôvodu ťažkej dostupnosti pre ich skrutkovanie. Po prilepení šróbikov nasledovalo prilepenie serva k vymodelovaným častiam a to zvrchu viditeľnej ľavej a pravej časti z dôvodu lepšieho držania serva na mieste.
Pôvodnú dĺžku káblov serva upravíme podľa potrieb (cca 8-10cm). Pripevnené servo môžeme teraz prispájkovať k našej doske podľa schémy (hnedý=GND, červený=5V, žltý=D4). V tomto bode môžeme vyskúšať funkčnosť motorčeka a nastaviť pohyb ruky (v programe sú hodnoty prednastavené a mali by sedieť, ale je vhodné to vyskúšať najlepšie vložením všetkých súčiastok pre presnejšie nastavenie ramena serva).
Pripevníme prepínač napájania:
Vývody stabilizátora sú na doske označené ako VCC (5V) a GND. Tieto vývody môžeme prispájkovať na dosku Arduino na piny 5V a GND. Zároveň môžeme na dosku prispájkovať aj pripravený hrací spínač a to na piny GND, D2 a 5V podľa predošlých inštrukcii. Po pripojení všetkých potrebných komponentov na dosku a skúške programu, hlavne spomínaného serva a hracieho spínača, ju môžeme pripevniť na určené miesto. Doska sa tak isto môže zaskrutkovať (náročnejší postup) alebo prilepiť. V projekte bola doska prilepená.
V zadaní komponentov bola spomenutá aj pružina, môžeme použiť napríklad aj pružinku z pera. Keďže servo vyhadzuje pohyblivú časť tak vysoko, že nedoľahne naspäť je potrebné túto pohyblivú časť nejakým mechanizmom pridržiavať. Na toto nám skvele poslúži práve spomínaná pružina, preto je v 3D modele vynechaná dierka. Pružinu na toto miesto dôkladne prilepíme.
Na druhú stranu spružiny si musíme nájsť miesto kde bude pripevnená. V projekte na toto pripevnenie skvelo poslúžila doska a jej piny. Spružinu sme prispájkovali na nevyužitý pin. Počas vytvárania úchytu sa uistite aby pohyblivá časť nebola prehnane prichytená ale taktiež aby nebola úplne uvoľnená.
Medzi posledné kroky patrí pripevnenie hracieho prepínača pomocou závitov nachádzajúcich sa v balení. Celú túto časť následne pripevníme k boxu a pripraveným dierkam pomocou skrutiek
Do priestoru, ktorý vidíme na predchádzajúcej fotke vložíme stabilizátor napätia a na spodnú krytku osadíme držiaky batérie a samotnú batériu. Pred nasadením poslednej spodnej krytky nastavíme súčiastky tak aby sa nám všetko zmestilo a zaskrutkujeme .
Na začiatku bola ukázaná aj táto časť boxu.
Kedže ale bráni v zatvorení boxu je vhodné ju ešte orezať podľa potreby pružiny. Poslednou úpravou je orezanie nadbytočných častí na hlavnom boxe aby box vyzeral ako na začiatočnej fotke.
5. Inštalácia potrebného softvéru
- Inštalácia softvéru Arduino IDE
Softvér Arduino si môžete bezplatne inštalovať na stránke https://www.arduino.cc/en/software
- Inštalácia manažéra dosiek
Aby sme mohli používať našu dosku (Aduino nano) musíme si nainštalovať doplnok Arduino AVR boards podľa ukážky
Ako ďalší krok si vyberieme našu dosku Arduino nano
Pripojenie dosky a výber portu
Dosku si pripojíme do USB portu a v programe si tento port vyberieme v ponuke Port
Inštalácia knižnice servo.h
Ako na to? Ako prvé si otvoríme aplikáciu Arduino. Na hornej lište môžeme vidieť ponuku nastavení programu.
Zakliknutím na položku Tools(nastavenia) sa nám ukáže jej ponuka v ktorej nás bude zaujímať ďalšia položka Manage Libraries(spravovať knižnice).
Posledným krokom bude vyhľadanie a inštalácia vhodnej knižnice pre servo podľa ukážky. Vo výbere si zvolíme najnovšiu verziu a klikneme Install (inštalovať). Po inštalácií servo knižnice alebo inej knižnice je vhodné celý program reštartovať.
6. Vysvetlenie a nahranie programu
#include <Servo.h> //Pridanie/zahrnutie knižnice Servo.h Servo servo;//Vytvorenie Servo objektu servo (Servo <vlastný názov pre servo>) int servo_pin=4;//Deklarovanie pinu pre servo (v našom prípade hodnota 4) int spinac=2; //Deklarovanie pinu pre hrací spínač (v našom prípade hodnota 2) int stav_spinac; //Deklarovanie premennej do ktorej bude ukladaný stav spínača int servo_start=9;//Začiatočná hodnota v stupňoch polohy serva (skryté) int servo_end=135;//Konečná hodnota polohy serva (spínanie spínača) void setup() { Serial.begin(9600);//Začiatok seriálovej komunikácie(dátového toku) so zámerom získania dát od arduina v serialovom okne (objekt Serial s metódou begin a hodnotou rýchlosti komunikácie v bitoch za sekundu) servo.attach(servo_pin);//Metóda attach(pripojiť) má za následok pripojenie deklarovanej premennej servo_pin s hodnotou 4 pinMode(spinac,INPUT_PULLUP);//definovanie pin módu ,teda či sa jedná o OUTPUT(vývod) alebo INPUT(prívod) . V našom prípade sme definovali INPUT_PULLUP čo znamená ,že nemusíme pripojiť rezistor k spínaču (prívod signálu) ale aktivujeme vnútorný rezistor Atmega čipu } void loop() { //program sa v tejto časti opakuje dookola zatiaľ čo void_setup() je vyvolaný iba pri zapnutí programu stav_spinac=digitalRead(spinac);//digitálne čítanie hodnoty premmenej spinac(pin na ktorom je spínač) a ukladanie do premennej stav_spinac pre zachovanie stavu spínača //Serial.println(stav_spinac); //Táto časť slúži na overenie hodnoty na pine spinac a jej vypísanie na seriálovú obrazovku. if(stav_spinac==0){ //Jedná sa o podmienku , ktorá bude splnená keď bude nameraná hodnota 0( v našom prípade to bude značiť ,že servo sa vysunie z krabičky na konečnú klikaciu poziciu) servo.write(servo_koniec); //metóda write(napíš) zabezpečí presunutie serva na danú pozíciu (konečnú pozíciu) } if(stav_spinac==1){ //Jedná sa o podmienku , ktorá bude splnená keď bude nameraná hodnota 1( v našom prípade to bude značiť ,že servo sa zasunie do krabičky na začiatočnú hodnotu) servo.write(servo_start); //metóda write(napíš) zabezpečí presunutie serva na danú pozíciu (začiatočnú pozíciu) } }
7. Analyzovanie kódu
Serialová komunikácia
Dôležité je pripomenúť spúšťanie seriálovej komunikácie v aplikácií Arduino z dôvodu zistenia hodnoty pri vypnutí alebo zapnutí hracieho spínača a teda prispôsobenie pre náš program a našu podmienku v kóde (Jeden smer vyvolá 1 a druhý 0). Našou úlohou bude zistenie stavu nášho spínača. Tento krok budeme robiť v momente kedy bude náš spínač pripojený k doske.
Dôležité je nastaviť komunikačnú rýchlosť. To docielime v pravom dolnom rohu v okne seriálového okna. Hodnotu nastavíme na 9600 baud.
Samozrejme, predtým ako budeme chcieť komunikovať s Arduinom treba doň nahrať kód. Počas nahrávania Serial monitor vypneme a zapíname ho až po nahratí kódu. Kód nahráme pomocou tlačidla Upload
Super článok, dobre vysvetlené a účinné, ďakujem.
Dobrý deň. Keď so uvidel tento blog, rozhodol som sa, že si túto “krabičku” urobím. O tlačené diely nebol problém. Keďže pri práci s arduinom
začínam, spoľahnul som sa uvedený článok a odpálil som arduino nano. Kde nastal problém som zistil neskôr. Natrafil som na dve chyby. Prvá chyba je v programe a to: riadok 7- servo start, toto je OK, ale riadok 19 je – servo koniec, musí tam byť tiež servo end. Ale dosť závažná chyba je v schéme zapojenia. Hrací spínač je zapojený nesprávne. Pri tomto zapojení dôjde ku skratu napajácieho napätia. Správne má byť zapojený
tak, že stredný pin spínača je zapojený na vstup D2 arduina a na krajné piny je zapojené plus a gnd. Po tejto oprave a oprave programu “krabička” funguje na prvý krát.