Obsah:

DIY Arduino binární budík: 14 kroků (s obrázky)
DIY Arduino binární budík: 14 kroků (s obrázky)

Video: DIY Arduino binární budík: 14 kroků (s obrázky)

Video: DIY Arduino binární budík: 14 kroků (s obrázky)
Video: Web Programming - Computer Science for Business Leaders 2016 2024, Červenec
Anonim
DIY Arduino binární budík
DIY Arduino binární budík
DIY Arduino binární budík
DIY Arduino binární budík
DIY Arduino binární budík
DIY Arduino binární budík

Jsou to opět klasické binární hodiny! Ale tentokrát s ještě více doplňkovými funkcemi! V tomto pokynu vám ukážu, jak vytvořit binární budík s Arduinem, který vám může ukázat nejen čas, ale datum, měsíc, dokonce i s funkcí časovače a budíku, které lze také použít jako noční lampu! Bez dalších okolků můžeme začít!

Poznámka: Tento projekt nevyužívá modul RTC, takže přesnost závisí na desce, kterou jste použili. Zahrnul jsem nápravný mechanismus, který bude opravovat posun času v určitém časovém období, ale budete muset experimentovat, abyste našli správnou hodnotu pro časové období (Více o tom níže), a dokonce i s nápravným mechanismem se bude stále unášet po dlouhou dobu (ve srovnání s bez jednoho). Pokud má někdo zájem, neváhejte implementovat použití modulu RTC v tomto projektu

Zásoby

5mm LED (jakékoli barvy, použil jsem 13 bílých LED s jednou RGB LED jako indikátorem) --- 14 ks

Arduino Nano (ostatní mohou fungovat) --- 1 ks

Mikrospínač --- 1 ks

Malý kousek hliníkové fólie

Montážní deska (pro skříň, ale můžete si navrhnout vlastní)

Kus bílého papíru (nebo jiné barvy)

Nějaká plastová fólie (ta použitá jako obálka knihy)

Svazek drátů

Bzučák --- 1ks

NPN tranzistor --- 1ks

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

Napájení projektu (použil jsem li-on baterii)

5050 LED pásek a posuvný spínač (volitelně)

Krok 1: Připojte obvod

Připojte obvod!
Připojte obvod!

Tento krok rozdělím na:

1) Část bzučáku

2) Panel LED

3) Přepínač (tlačítko)

4) LED pásek

5) Kapacitní snímač

6) Napájení

7) Připojte je všechny k Arduinu

Většinou se jedná pouze o krok „následujte schematicky“. Podívejte se tedy na výše uvedené schéma nebo si jej dokonce stáhněte a vytiskněte!

Krok 2: Příprava části bzučáku

Příprava části bzučáku
Příprava části bzučáku
Příprava části bzučáku
Příprava části bzučáku
Příprava části bzučáku
Příprava části bzučáku

Pokud jste s Arduino používali bzučák dříve, budete vědět, že pokud jej připojíme přímo k Arduinu, nebude dostatečně hlasitý. Potřebujeme tedy zesilovač. Ke konstrukci zesilovače potřebujeme tranzistor NPN (v zásadě bude fungovat jakýkoli NPN, použil jsem S9013, protože jsem ho dostal ze starého projektu) a nějaký odpor k omezení proudu. Pro začátek nejprve identifikujte kolektor, emitor a základnu tranzistoru. K tomu bude stačit trochu googlování datového listu. Poté připájejte kolektor tranzistoru k zápornému pólu bzučáku. Na kladný konec bzučáku k němu jen připájíme kousek drátu, abychom jej mohli později připájet k našemu Arduinu. Poté připájejte odpor 500R (nebo jakoukoli podobnou hodnotu odporu) k základně tranzistoru a z rezistoru připájejte další kus drátu pro budoucí použití. Nakonec připájejte dva rezistory 10R v sérii k emitoru tranzistoru a připojte další vodič z odporů.

Opravdu, podívejte se na schéma.

p/s: V době psaní tohoto článku pořád nevím, jak vybrat odpor pro tranzistor. Hodnota, kterou jsem použil, je vybrána empiricky.

Krok 3: Příprava panelu LED

Příprava LED panelu
Příprava LED panelu
Příprava LED panelu
Příprava LED panelu
Příprava LED panelu
Příprava LED panelu

Podle toho zapojte diody LED a odpor do desky prototypu a připájejte. A je to. Postupujte podle schématu. Pokud vás zajímají rozestupy, které jsem použil, 3 otvory od sebe pro každý sloupec a dva otvory od sebe pro každý řádek (viz obrázek). A kontrolka LED? Zapojil jsem to náhodně.

Po připájení LED a rezistoru k desce spojte všechny kladné svorky LED dohromady. Poté pájejte vodiče jeden po druhém na každý odpor na záporných svorkách LED, abychom je mohli později připájet k Arduinu.

POZNÁMKA: Tento krok vás může zmást. Pamatujte, místo toho, abychom spojili veškerou zem, spojíme všechny kladné svorky dohromady a záporné svorky k jednotlivému kolíku na Arduinu. Jako zem proto používáme pin Arduino GPIO, nikoli Vcc. V případě, že jej omylem připojíte zpět, nedělejte si starosti. Ve funkci ledcontrol můžete upravit všechny hodnoty HIGH až LOW a LOW až HIGH.

Krok 4: Příprava přepínače (tlačítko ve skutečnosti)

Příprava přepínače (tlačítko ve skutečnosti)
Příprava přepínače (tlačítko ve skutečnosti)
Příprava přepínače (tlačítko ve skutečnosti)
Příprava přepínače (tlačítko ve skutečnosti)
Příprava přepínače (tlačítko ve skutečnosti)
Příprava přepínače (tlačítko ve skutečnosti)

Pro přepínač (budu tomu říkat přepínač, protože jsem použil mikrospínač, ale víte, že je to tlačítko) potřebujeme stahovací odpor 4k7 a samozřejmě samotný spínač. Ach, nezapomeňte připravit nějaké dráty. Začněte pájením odporu a kousku drátu na společnou zem (COM) mikrospínače. Poté připájejte další kus drátu k normálně otevřenému (NO) mikrospínače. Nakonec k rezistoru připojte další vodič. Zajistěte horkým lepidlem.

Koutek znalostí: Proč potřebujeme stahovací odpor?

"Pokud odpojíte digitální I/O pin od všeho, LED může blikat nepravidelně. Důvodem je, že vstup je" plovoucí " - to znamená, že se náhodně vrátí buď HIGH nebo LOW. Proto potřebujete pull -up nebo stahovací odpor v obvodu. “- Zdroj: webová stránka Arduino

Krok 5: Příprava LED pásku

Příprava LED pásku
Příprava LED pásku
Příprava LED pásku
Příprava LED pásku

LED pásek je pro boční lampu, která je volitelná. Stačí zapojit LED pásek a posuvný spínač do série, nic zvláštního.

Krok 6: Příprava kapacitního senzoru

Příprava kapacitního senzoru
Příprava kapacitního senzoru
Příprava kapacitního senzoru
Příprava kapacitního senzoru
Příprava kapacitního senzoru
Příprava kapacitního senzoru
Příprava kapacitního senzoru
Příprava kapacitního senzoru

Dobře, podívejte se na obrázek. V zásadě se chystáme připojit drát k malému kousku hliníkové fólie (protože hliníkovou fólii nelze pájet) a poté ji nalepit na malý kousek montážní desky. Laskavá připomínka, ujistěte se, že hliníkovou fólii úplně nepropásnete. Ponechte část vystavenou přímému kontaktu.

Krok 7: Příprava napájecího zdroje

Příprava napájecího zdroje
Příprava napájecího zdroje
Příprava napájecího zdroje
Příprava napájecího zdroje
Příprava napájecího zdroje
Příprava napájecího zdroje

Vzhledem k tomu, že jsem jako napájecí zdroj používal li-on baterii, potřebuji modul TP4056 pro nabíjení a ochranu a konvertor boost pro převod napětí na 9v. Pokud jste se rozhodli použít 9V nástěnný adaptér, možná budete potřebovat DC konektor, nebo jej přímo připojit. Všimněte si, že hodnota odporu pro zesilovač je navržena pro 9V a pokud chcete použít jiné napětí, možná budete muset změnit odpor.

Krok 8: Připojte je k Arduinu

Jejich připojení k Arduinu
Jejich připojení k Arduinu
Jejich připojení k Arduinu
Jejich připojení k Arduinu
Jejich připojení k Arduinu
Jejich připojení k Arduinu

Postupujte podle schématu! Postupujte podle schématu! Postupujte podle schématu!

Nepřipojujte špatný kolík, jinak to bude divné.

Krok 9: Příloha

Ohrada
Ohrada
Ohrada
Ohrada
Ohrada
Ohrada
Ohrada
Ohrada

Rozměr mého návrhu je 6,5 cm*6,5 cm*8 cm, takže je trochu objemný. Skládá se z předního okna pro LED displej a horního okna pro noční lampu. Můj návrh viz obrázky.

Krok 10: Čas programování

Image
Image
Čas programování!
Čas programování!

Stáhněte si níže moji skicu a nahrajte ji do svého Arduina. Pokud nevíte, jak to udělat, neobtěžujte se dělat tento projekt! Ne, dělám si srandu, tady je k tomu dobrý návod: Nahrajte skicu do arduina

Poté otevřete sériový monitor a měli byste vidět, jak vydává aktuální čas. Chcete -li nastavit čas, postupujte takto.

Nastavení hodiny: h, XX - kde xx je aktuální hodina

Chcete -li nastavit minutu: min, XX - xx je aktuální minuta

Chcete -li nastavit druhé: s, XX

Nastavení data: d, XX

Nastavení měsíce: po, XX

Když je proveden výše uvedený komentář, měl by vám vrátit hodnotu, kterou jste právě nastavili. (Například když nastavíte hodinu s h, 15, měla by se vrátit Hour: 15 na sériovém monitoru.

U kapacitního senzoru bude možná nutné jej kalibrovat, než bude fungovat. Chcete-li to provést, dvakrát stiskněte mikrospínač a podívejte se na sériový monitor. Mělo by vygenerovat spoustu čísel. Nyní přiložte prst na kapacitní senzor a podívejte se, jak si všimněte rozsahu čísla. Dále upravte proměnnou „captrigger“. Řekněme, že po stisknutí získáte 20-30, poté nastavte captrigger na 20.

Skica používá knihovnu ADCTouch, ujistěte se, že jste ji nainstalovali.

Krok 11: Opravný mechanismus

Časové období pro nápravný mechanismus v mém kódu je nastaveno na čas, který je pro mě přesný. Pokud čas stále není přesný, musíte změnit hodnotu proměnné „corrdur“

Corrdur je nyní v poslední aktualizaci výchozí na 0.

Hodnota corrdur znamená, kolik milisekund trvá zpomalení jedné sekundy

Chcete -li zjistit hodnotu kordu, použijte vzorec:

2000/(r-x)/x)

kde x = skutečná doba uplynulého času a y = doba uplynulého času hodin, obojí za sekundu

Chcete -li zjistit hodnotu x a y, musíte udělat malý experiment.

Nastavte čas hodin na skutečný čas a zaznamenejte počáteční čas (skutečný počáteční čas a počáteční čas hodin by měl být stejný). Po chvíli (několik hodin) zaznamenejte konečný skutečný čas a konečný čas hodin.

x = skutečný konečný čas-počáteční čas a y = hodiny konečný čas-počáteční čas

Poté změňte hodnotu corrdur v kódu a znovu načtěte do Arduina.

Potom opakujte test a tentokrát se vzorec změnil na:

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

Kde xay je stejná věc jako dříve, zatímco z je aktuální hodnota kordu.

Nahrajte znovu a proveďte test znovu a znovu, dokud nebude pro vás dostatečně přesný.

V případě, že se vaše hodiny stále zrychlují, i když je corrdur nastaven na 0 (to znamená žádný opravný mechanismus), musíte změnit druhé ++ na druhé- v části opravného mechanismu kódu (komentoval jsem to), nastavit corrdur na 0, pak najdi č. milisekundy trvá zrychlení jedné sekundy.

Krok 12: Jak používat všechny funkce

Image
Image

Režim můžete změnit stisknutím mikrospínače.

V prvním režimu jednoduše zobrazuje čas. Pokud kontrolka bliká 1krát za sekundu, alarm je vypnutý. Pokud 2krát za sekundu, alarm je zapnutý. V prvním režimu můžete alarm odložit na 10 minut stisknutím kapacitního senzoru.

V druhém režimu zobrazuje datum. Lisování kapacitního senzoru nedělá nic.

Ve třetím režimu můžete nastavit časovač. Stisknutím kapacitního senzoru se zapne časovač a měli byste vidět blikající kontrolku. Kapacitní senzor slouží také k nastavení času časovače. Rozsah časovače je 1 minuta až 59 minut.

Ve čtvrtém režimu můžete nastavit hodinu budíku pomocí kapacitního senzoru

V pátém režimu můžete nastavit minutu alarmu pomocí kapacitního senzoru.

V šestém režimu se stisknutím kapacitního senzoru resetuje minuta na 30 a sekunda na 0 bez změny hodiny. To znamená, že dokud se vaše hodiny neposunou o více než 30 minut, můžete je v tomto režimu znovu kalibrovat.

Sedmý režim je režim nedělat nic v případě, že se kapacitní snímač při nabíjení porouchá.

Chcete-li alarm vypnout, stiskněte mikrospínač. (NEJNOVĚJŠÍ AKTUALIZACE SOUČÁSTÍ ALARMU SNOOZE)

A co číst hodiny? Je to snadné! Čtení binárních hodin - Wikihow Zpočátku se můžete cítit divně, ale zvyknete si na to!

Krok 13: Závěr

Závěr
Závěr
Závěr
Závěr

Proč jsem zahájil tento projekt. Zpočátku je to proto, že mám staré digitální hodinky, které leží kolem a chci z nich udělat budík. Bohužel se ukázalo, že staré hodinky jsou rozbité. Takže jsem byl rád, proč nevybudovat jeden pomocí Arduina? S trochou vyhledávání na Google jsem našel tento projekt binárních hodin bez RTC na instruct od Cello62. Nemá však funkci budíku, kterou chci, a tak kód vezmu a upravím sám. A projekt je na světě. Navíc jsem nedávno viděl, jak hodinová soutěž běží podle pokynů, což mi dalo ještě větší motivaci to udělat. Každopádně je to stále můj první projekt využívající Arduino, takže spousta možných vylepšení.

Budoucí vylepšení:

1) Použijte RTC

2) Nastavte budík nebo čas nebo časovač bezdrátově!

3) Na jakoukoli funkci myslím

Krok 14: Aktualizace: Po jednom týdnu používání

Aktualizace: Po týdnu používání
Aktualizace: Po týdnu používání
Aktualizace: Po týdnu používání
Aktualizace: Po týdnu používání
Aktualizace: Po týdnu používání
Aktualizace: Po týdnu používání

Kromě zjevného problému - posunu času, další, který bych řekl, je spotřeba energie. Nejprve vůbec zvýším napětí na 9 V, které pak bude snižovat lineární regulátor v Arduinu. Lineární regulátor je velmi neefektivní. Hodiny trvají pouze JEDEN DEN. To znamená, že ho musím nabíjet každý den. To není největší problém, dokud si neuvědomíte, že celý systém je účinný jen asi z 50%. Vzhledem k tomu, že moje baterie je 2 000 mAh, byl bych schopen vypočítat plýtvání energií každý den.

Ztráta energie = (7,4 Wh*10%)+(7,4 Wh*90%*50%) = 4,07 Wh za den

To je 1,486 kWh za rok! Lze z toho vařit 283 g vody (od 25 C do 100 C)? Ale každopádně budu zlepšovat účinnost hodin. Způsob, jak toho dosáhnout, je nepoužívat lineární regulátor vůbec. To znamená, že musíme upravit posilovač převodu na výstup 5V přímo do 5V pinu na Arduinu. Dále, abych ještě více minimalizoval plýtvání energií, musím odstranit dvě LED na desce (pin13 a napájení), protože budou ztrácet 0,95 Wh za den. Bohužel jsem v pájení SMD naprosto bezradný, takže jediný způsob, jak to udělat, je odříznout kolejnici na desce. Poté musím odstranit rezistor emitoru na bzučáku a noční lampě (LED pás nefunguje při 5V). Znamená to však, že se musíte této úžasné funkce vzdát? Ne! Máte zde dvě možnosti: Použijte normální 5mm LED diodu nebo použijte 5V LED pásek. Ale pro mě jsem se už cítil unavený tím, že jsem celý minulý týden dělal tento projekt, a tak jsem se rozhodl této funkce vzdát. Použil jsem však spínač původně pro funkci osvětlení pro zapnutí nebo vypnutí panelu hodin k další úspoře energie, ale nakonec LED bliká, když jej vypnu. Stala se chyba funkcí? Nevím (někdo ví, prosím, řekněte mi níže).

Na konci úpravy nyní hodiny trvají déle než 2 dny!

Dále mám méně vážný problém s hodinami. Během nabíjení by se kapacitní senzor zbláznil, takže přidávám další režim, který nedělá nic.

Pokud jde o posun času, protože je velmi nepohodlné připojovat se k počítači každý den, abych jej resetoval, přidal jsem další režim, který nastaví minutu na 30 a sekundu na 0. To znamená, že byste jej mohli resetovat o půl druhé každou hodinu!

Doporučuje: