Obsah:

DIY Arduino binárny budík: 14 krokov (s obrázkami)
DIY Arduino binárny budík: 14 krokov (s obrázkami)

Video: DIY Arduino binárny budík: 14 krokov (s obrázkami)

Video: DIY Arduino binárny budík: 14 krokov (s obrázkami)
Video: Веб-программирование – информатика для руководителей бизнеса 2016 2024, November
Anonim
DIY Arduino binárne budíky
DIY Arduino binárne budíky
DIY Arduino binárne budíky
DIY Arduino binárne budíky
DIY Arduino binárne budíky
DIY Arduino binárne budíky

Opäť sú to klasické binárne hodiny! Ale tentokrát s ešte viac dodatočnými funkciami! V tomto návode vám ukážem, ako vytvoriť binárny budík s Arduino, ktorý vám môže ukazovať nielen čas, ale aj dátum, mesiac, dokonca aj s funkciami časovača a budíka, ktoré je možné použiť aj ako nočnú lampu! Bez ďalších okolkov začnime!

Poznámka: Tento projekt nevyužíva modul RTC, takže presnosť závisí od dosky, ktorú ste použili. Zahrnul som nápravný mechanizmus, ktorý bude opravovať posun času za určité časové obdobie, ale budete musieť experimentovať, aby ste našli správnu hodnotu pre časové obdobie (Viac o tom nižšie), a dokonca aj s nápravným mechanizmom sa bude stále unášať dlhší čas (v porovnaní s bez neho). Ak má niekto záujem, neváhajte implementovať použitie modulu RTC v tomto projekte

Zásoby

5mm LED (akejkoľvek farby, použil som 13 bielych LED s jednou RGB LED ako indikátorom) --- 14 ks

Arduino Nano (ostatné môžu fungovať) --- 1 ks

Mikrospínač --- 1 ks

Malý kúsok hliníkovej fólie

Montážna doska (do skrinky, ale pokojne si navrhnite vlastnú)

Kus bieleho papiera (alebo akejkoľvek inej farby)

Nejaká plastová fólia (tá, ktorá sa používa ako obálka knihy)

Zväzok drôtov

Bzučiak --- 1 ks

NPN tranzistor --- 1ks

Rezistory 6k8 --- 14 ks, 500R --- 1 ks, 20R (10Rx2) --- 1 ks, 4k7 --- 1ks

Napájanie projektu (použil som Li-on batériu)

LED pás 5050 a posuvný spínač (voliteľné)

Krok 1: Pripojte obvod

Pripojte obvod!
Pripojte obvod!

Tento krok rozdelím na:

1) Časť bzučiaka

2) Panel LED

3) Prepínač (tlačidlo)

4) LED pás

5) Kapacitný snímač

6) Napájanie

7) Pripojte ich všetky k Arduinu

Väčšinou je to len krok „postupujte podľa schémy“. Pozrite sa teda na vyššie uvedenú schému alebo si ju dokonca stiahnite a vytlačte!

Krok 2: Príprava časti bzučiaka

Príprava časti bzučiaka
Príprava časti bzučiaka
Príprava časti bzučiaka
Príprava časti bzučiaka
Príprava časti bzučiaka
Príprava časti bzučiaka

Ak ste v minulosti používali bzučiak s Arduinom, budete vedieť, že ak ho pripojíme priamo k Arduinu, nebude dostatočne hlasný. Potrebujeme teda zosilňovač. Na stavbu zosilňovača potrebujeme tranzistor NPN (v zásade bude fungovať akýkoľvek NPN, použil som S9013, pretože som ho dostal zo starého projektu) a nejaký odpor na obmedzenie prúdu. Na začiatku najskôr identifikujte kolektor, vysielač a základňu tranzistora. Na to poslúži trocha googlenia údajového listu. Potom spájkujte kolektor tranzistora so záporným pólom bzučiaka. Na kladný pól bzučiaka k nemu jednoducho pripájame kus drôtu, aby sme ho neskôr mohli spájkovať s naším Arduino. Potom spájkujte odpor 500R (alebo akúkoľvek podobnú hodnotu odporu) na základňu tranzistora a z rezistora spájajte ďalší kus drôtu na budúce použitie. Nakoniec spojte dva odpory 10R do série k emitoru tranzistora a pripojte ďalší vodič z odporov.

Naozaj si pozrite schému.

p/s: V čase, keď to píšem, stále neviem, ako vybrať odpor pre tranzistor. Hodnota, ktorú som použil, je vybraná empiricky.

Krok 3: Príprava panelu LED

Príprava panelu LED
Príprava panelu LED
Príprava panelu LED
Príprava panelu LED
Príprava panelu LED
Príprava panelu LED

Podľa toho zapojte LED diódy a odpor do prototypovej dosky a spájkujte. To je všetko. Postupujte podľa schémy. V prípade, že vás zaujímajú medzery, ktoré som použil, 3 otvory od seba pre každý stĺpik a dva otvory od seba pre každý rad (pozri obrázok). A kontrolka LED? Pripojil som to náhodne.

Po spájkovaní LED a rezistora na dosku spojte všetky kladné póly LED dohromady. Potom spájajte vodiče jeden po druhom s každým z rezistora na záporných póloch LED diód, aby sme ich mohli neskôr spájkovať s Arduinom.

POZNÁMKA: Tento krok vás môže zmiasť. Nezabudnite, že namiesto toho, aby sme spojili celú zem, spojíme všetky kladné a záporné svorky k jednotlivým kolíkom na Arduine. Ako uzemnenie teda používame pin Arduino GPIO, nie Vcc. V prípade, že ho omylom pripojíte dozadu, nebojte sa. Všetky funkcie HIGH až LOW a LOW až HIGH môžete upraviť vo funkcii ledcontrol.

Krok 4: Príprava prepínača (tlačidlo v skutočnosti)

Príprava prepínača (tlačidlo v skutočnosti)
Príprava prepínača (tlačidlo v skutočnosti)
Príprava prepínača (tlačidlo v skutočnosti)
Príprava prepínača (tlačidlo v skutočnosti)
Príprava prepínača (tlačidlo v skutočnosti)
Príprava prepínača (tlačidlo v skutočnosti)

Na prepínač (budem ho nazývať prepínačom, pretože som použil mikrospínač, ale vy viete, že je to tlačidlo) potrebujeme sťahovací odpor 4k7 a samozrejme samotný spínač. Ach, nezabudnite si pripraviť nejaké drôty. Začnite spájkovaním odporu a kúska drôtu na spoločnú zem (COM) mikrospínača. Potom pripájajte ďalší kus drôtu k normálne otvorenému (NO) mikrospínača. Nakoniec k rezistoru pripojte ďalší drôt. Zaistite ho horúcim lepidlom.

Roh znalostí: Prečo potrebujeme sťahovací odpor?

"Ak odpojíte digitálny I/O pin od všetkého, LED dióda môže blikať nepravidelne. Dôvodom je, že vstup" pláva " - to znamená, že sa náhodne vráti buď VYSOKÝ alebo NÍZKY. Preto potrebujete vyťahovací alebo sťahovací odpor v obvode. “- Zdroj: webová stránka Arduino

Krok 5: Príprava pásky LED

Príprava LED pásika
Príprava LED pásika
Príprava LED pásika
Príprava LED pásika

LED pás je pre bočné svetlo postele, ktoré je voliteľné. Stačí prepojiť LED pás a posuvný spínač dohromady v sérii, nič zvláštne.

Krok 6: Príprava kapacitného snímača

Príprava kapacitného snímača
Príprava kapacitného snímača
Príprava kapacitného snímača
Príprava kapacitného snímača
Príprava kapacitného snímača
Príprava kapacitného snímača
Príprava kapacitného snímača
Príprava kapacitného snímača

Dobre, pozrite sa na obrázok. V zásade sa chystáme pripevniť drôt na malý kúsok hliníkovej fólie (pretože hliníkovú fóliu nie je možné spájkovať) a potom ho prilepiť páskou na malý kúsok montážnej dosky. Pripomíname, že hliníkovú fóliu úplne nezlepíte. Ponechajte časť z nej odhalenú pre priamy kontakt.

Krok 7: Príprava napájacieho zdroja

Príprava napájacieho zdroja
Príprava napájacieho zdroja
Príprava napájacieho zdroja
Príprava napájacieho zdroja
Príprava napájacieho zdroja
Príprava napájacieho zdroja

Pretože som ako zdroj napájania používal batériu Li-on, potrebujem modul TP4056 na nabíjanie a ochranu a zosilňovač na premenu napätia na 9 V. Ak ste sa rozhodli použiť 9V nástenný adaptér, možno budete potrebovať konektor DC alebo ho jednoducho pripojte priamo. Všimnite si toho, že hodnota odporu pre zosilňovač je navrhnutá pre 9V a ak chcete použiť iné napätie, možno budete musieť zmeniť odpor.

Krok 8: Pripojte ich k Arduinu

Pripojte ich k Arduinu
Pripojte ich k Arduinu
Pripojte ich k Arduinu
Pripojte ich k Arduinu
Pripojte ich k Arduinu
Pripojte ich k Arduinu

Postupujte podľa schémy! Postupujte podľa schémy! Postupujte podľa schémy!

Nepripájajte nesprávny kolík, inak to bude divné.

Krok 9: Príloha

Ohrada
Ohrada
Ohrada
Ohrada
Ohrada
Ohrada
Ohrada
Ohrada

Rozmer môjho návrhu je 6,5 cm*6,5 cm*8 cm, takže je trochu objemný. Skladá sa z predného okna pre LED displej a horného okna pre nočnú lampu. Môj návrh nájdete na obrázkoch.

Krok 10: Čas na programovanie

Image
Image
Čas programovania!
Čas programovania!

Stiahnite si môj náčrt nižšie a nahrajte ho do svojho Arduina. Ak neviete, ako na to, neobťažujte sa robiť tento projekt! Nie, žartujem, tu je k tomu dobrý návod: Nahrajte skicu do arduina

Potom otvorte sériový monitor a mali by ste vidieť, ako vychádza aktuálny čas. Ak chcete nastaviť čas, postupujte takto.

Ak chcete nastaviť hodinu: h, XX - kde xx je aktuálna hodina

Ak chcete nastaviť minútu: min, XX - xx je aktuálna minúta

Nastaviť druhé: s, XX

Ak chcete nastaviť dátum: d, XX

Nastaviť mesiac: po, XX

Keď sa spustí vyššie uvedený komentár, mal by vám vrátiť hodnotu, ktorú ste práve nastavili. (Ak napríklad nastavíte hodinu pomocou h, 15, mala by sa na sériovom monitore vrátiť Hour: 15.

Pokiaľ ide o kapacitný snímač, možno ho budete musieť najskôr kalibrovať. Ak to chcete urobiť, dvakrát stlačte mikrospínač a pozrite sa na sériový monitor. Malo by to priniesť veľa čísel. Teraz priložte prst na kapacitný snímač a uvidíte, ako si všimnete rozsah čísla. Ďalej upravte premennú "captrigger". Povedzme, že po stlačení získate 20-30, potom nastavte captrigger na 20.

Náčrt používa knižnicu ADCTouch, uistite sa, že ste ju nainštalovali.

Krok 11: Opravný mechanizmus

Časový úsek pre nápravný mechanizmus v mojom kóde je nastavený na ten, ktorý je pre mňa presný. Ak čas stále nie je presný, musíte zmeniť hodnotu premennej „corrdur“

Corrdur je v najnovšej aktualizácii predvolene nastavený na 0.

Hodnota corrdur znamená, koľko milisekúnd trvá spomalenie jednej sekundy

Ak chcete zistiť hodnotu kordu, použite vzorec:

2000/(r-x)/x)

kde x = skutočná doba, ktorá uplynul, a y = doba, ktorá uplynula od času, obe v sekundách

Ak chcete nájsť hodnotu x a y, musíte urobiť malý experiment.

Nastavte čas hodín na skutočný čas a zaznamenajte počiatočný čas (skutočný počiatočný čas a počiatočný čas hodín by mali byť rovnaké). Po chvíli (niekoľko hodín) zaznamenajte konečný skutočný čas a konečný čas hodín.

x = skutočný konečný čas-počiatočný čas a y = konečný čas-počiatočný čas hodín

Potom zmeňte hodnotu corrduru v kóde a znova načítajte do Arduina.

Potom zopakujte test a tentokrát sa vzorec zmenil na:

2000/((2/z)+(y-x/x))

Kde xay je rovnaká vec ako predtým, zatiaľ čo z je aktuálna hodnota kordu.

Nahrajte znova a test robte znova a znova, kým nebude pre vás dostatočne presný.

V prípade, že sa vaše hodiny stále zrýchľujú, dokonca aj keď je corrdur nastavený na 0 (to znamená, že neexistuje žiadny opravný mechanizmus), musíte zmeniť druhé ++ na druhé- v časti kódu opravného mechanizmu (komentoval som to), nastaviť corrdur na 0, potom nájdi č. milisekundy trvá zrýchlenie jednej sekundy.

Krok 12: Ako používať všetky funkcie

Image
Image

Režim môžete zmeniť stlačením mikrospínača.

V prvom režime jednoducho zobrazuje čas. Ak kontrolka bliká 1 krát za sekundu, alarm je vypnutý. Ak 2 krát za sekundu, budík je zapnutý. V prvom režime môžete alarm odložiť na 10 minút stlačením kapacitného senzora.

V druhom režime zobrazuje dátum. Lisovací kapacitný snímač nerobí nič.

V treťom režime môžete nastaviť časovač. Stlačením kapacitného senzora sa zapne časovač a mali by ste vidieť, že kontrolka začala blikať. Kapacitný snímač sa používa aj na nastavenie času časovača. Rozsah časovača je 1 minúta až 59 minút.

V štvrtom režime môžete nastaviť hodinu budíka pomocou kapacitného senzora

V piatom režime môžete pomocou kapacitného senzora nastaviť minútu alarmu.

V šiestom režime sa stlačením kapacitného senzora resetujú minúty na 30 a sekundy na 0 bez zmeny hodiny. To znamená, že pokiaľ sa vaše hodiny neposúvajú o 30 minút, môžete ich v tomto režime znova nakalibrovať.

Siedmy režim je režim nerobiť nič v prípade, že sa kapacitný snímač pri nabíjaní vyskytne chyba.

Ak chcete alarm vypnúť, stačí stlačiť mikrospínač. (POSLEDNÁ AKTUALIZÁCIA SO ZAHRNUTÍM ALARMU SNOOZE)

Čo tak čítať hodiny? Je to ľahké! Čítanie binárnych hodín - Wikihow Možno sa budete spočiatku cítiť divne, ale zvyknete si!

Krok 13: Záver

Záver
Záver
Záver
Záver

Prečo som začal s týmto projektom. Spočiatku je to kvôli tomu, že mám staré digitálne hodinky, ktoré ležia okolo a chcem z nich urobiť budík. Staré hodinky sa bohužiaľ pokazili. Takže som bol rád, prečo si ho nevybudovať pomocou Arduina? S trochou vyhľadávania Google som našiel tento projekt s binárnymi hodinami bez RTC na pokyne od Cello62. Nemá však funkciu budíka, ktorú by som chcel, a tak kód vezmem a upravím sám. A projekt je na svete. Navyše som nedávno videl, ako prebieha hodinová súťaž podľa pokynov, čo mi dalo ešte väčšiu motiváciu to urobiť. Každopádne je to stále môj prvý projekt využívajúci Arduino, takže veľa možných vylepšení.

Budúce zlepšenie:

1) Použite RTC

2) Nastavte budík alebo čas alebo časovač bezdrôtovo!

3) Akúkoľvek funkciu si myslím

Krok 14: Aktualizácia: Po jednom týždni používania

Aktualizácia: Po týždni používania
Aktualizácia: Po týždni používania
Aktualizácia: Po týždni používania
Aktualizácia: Po týždni používania
Aktualizácia: Po týždni používania
Aktualizácia: Po týždni používania

Okrem zjavného problému - posunu času, ďalším, ktorý by som povedal, je spotreba energie. Najprv vôbec zvýšim napätie na 9 V, ktoré potom zníži lineárny regulátor v Arduine. Lineárny regulátor je veľmi neefektívny. Hodiny trvajú iba JEDEN DEŇ. To znamená, že ho musím každý deň dobíjať. To nie je najväčší problém, kým si neuvedomíte, že celý systém je účinný iba asi 50%. Vzhľadom na to, že moja batéria má 2 000 mAh, by som bol schopný vypočítať stratený výkon každý deň.

Využitá energia = (7,4 Wh*10%)+(7,4 Wh*90%*50%) = 4,07 Wh za deň

To je 1,486 kWh za rok! To sa dá použiť na varenie 283 g vody (od 25 ° C do 100 ° C)? Ale v každom prípade idem zlepšiť účinnosť hodín. Spôsob, ako to dosiahnuť, je nepoužívať lineárny regulátor vôbec. To znamená, že musíme nastaviť zosilňovač zosilňovača na výstup 5 V priamo do kolíka 5 V na Arduine. Ďalej, aby som ešte viac minimalizoval plytvanie energiou, musím odstrániť dve LED na doske (pin13 a napájanie), pretože budú míňať 0,95 Wh za deň. Nanešťastie som v spájkovaní SMD úplne bezstarostný, takže jediný spôsob, ako to urobiť, je odrezať koľajnicu na doske. Potom musím odstrániť rezistor emitora na bzučiaku a nočnej žiarovke (pásik LED nefunguje pri 5V). Znamená to však, že sa musíte vzdať tejto úžasnej funkcie? Nie! Tu máte dve možnosti: Použite normálnu 5mm LED diódu alebo použite 5V LED pás. Ale pre mňa som sa už cítil unavený z toho, že som celý tento týždeň robil tento projekt, a tak som sa rozhodol vzdať sa tejto funkcie. Spínač som však pôvodne použil na funkciu osvetlenia na zapnutie alebo vypnutie panela s hodinami, aby som ešte viac šetril energiu, ale LED dióda bliká, keď ho vypnem. Stala sa chyba funkciou? Neviem (Kto vie, prosím, dajte mi vedieť nižšie).

Na konci úpravy teraz hodiny trvajú viac ako 2 dni!

Ďalej mám menej vážny problém s hodinami. Počas nabíjania by sa kapacitný senzor zbláznil, preto pridávam ďalší režim, ktorý nerobí nič.

Pokiaľ ide o posun času, pretože je veľmi nepohodlné každodenne sa pripájať k počítaču, aby sa resetoval, pridal som ďalší režim, ktorý nastaví minútu na 30 a sekundu na 0. To znamená, že ho môžete resetovať o pol jednej každú hodinu!

Odporúča: