Kazalo:

Binarna budilka Arduino DIY: 14 korakov (s slikami)
Binarna budilka Arduino DIY: 14 korakov (s slikami)

Video: Binarna budilka Arduino DIY: 14 korakov (s slikami)

Video: Binarna budilka Arduino DIY: 14 korakov (s slikami)
Video: CS50 2013 - Week 9 2024, November
Anonim
Binarna budilka Arduino DIY
Binarna budilka Arduino DIY
Binarna budilka Arduino DIY
Binarna budilka Arduino DIY
Binarna budilka Arduino DIY
Binarna budilka Arduino DIY

Spet je klasična binarna ura! A tokrat s še večjo dodatno funkcijo! V tem navodilu vam bom pokazal, kako z Arduinom zgraditi binarno budilko, ki vam lahko pokaže ne le čas, ampak datum, mesec, tudi s časovnikom in alarmnimi funkcijami, ki jih lahko uporabite tudi kot nočno svetilko! Brez odlašanja začnimo!

Opomba: Ta projekt ne uporablja modula RTC, zato je natančnost odvisna od plošče, ki ste jo uporabili. Vključil sem korekcijski mehanizem, ki bo popravil časovni premik v določenem časovnem obdobju, vendar boste morali eksperimentirati, da poiščete pravilno vrednost za časovno obdobje (več o tem spodaj), in tudi s korekcijskim mehanizmom se bo še vedno premikal dolgo časa (v primerjavi z brez). Če koga zanima, lahko v ta projekt implementira uporabo modula RTC

Zaloge

5 mm LED (katere koli barve, uporabil sem 13 belih LED z eno LED RGB kot indikator) --- 14 kosov

Arduino Nano (drugi lahko delujejo) --- 1 kos

Mikro stikalo --- 1 kos

Majhen kos aluminijaste folije

Montažna plošča (za ohišje, vendar jo lahko oblikujete sami)

Kos belega papirja (ali katere koli druge barve)

Nekaj plastične folije (tista, ki se uporablja kot naslovnica knjige)

Kup žic

Zvočni signal --- 1 kos

NPN tranzistor --- 1 kos

Upori 6k8 --- 14 kosov, 500R --- 1 kos, 20R (10Rx2) --- 1 kos, 4k7 --- 1 kos

Napajanje za projekt (uporabil sem li-on baterijo)

5050 LED trak in drsno stikalo (neobvezno)

1. korak: Priključite vezje

Povežite vezje!
Povežite vezje!

Ta korak bom razdelil na:

1) Del zvočnika

2) LED plošča

3) Stikalo (potisni gumb)

4) LED trak

5) Senzor kapacitivnosti

6) Napajanje

7) Vse povežite z Arduinom

Najpogosteje je to le korak po shemi. Zato si oglejte zgornjo shemo ali jo celo prenesite in natisnite!

2. korak: Priprava dela z zvočnikom

Priprava dela z zvočnikom
Priprava dela z zvočnikom
Priprava dela z zvočnikom
Priprava dela z zvočnikom
Priprava dela z zvočnikom
Priprava dela z zvočnikom

Če ste z Arduinom že uporabljali brenčalo, boste vedeli, da če ga priključimo neposredno na Arduino, ne bo dovolj glasen. Zato potrebujemo ojačevalnik. Za izdelavo ojačevalnika potrebujemo NPN tranzistor (v bistvu bo deloval kateri koli NPN, uporabil sem S9013, ker sem ga dobil iz starega projekta) in nekaj uporov, ki omejujejo tok. Za začetek najprej identificirajte zbiralnik, oddajnik in osnovo tranzistorja. Nekaj googlanja podatkovnega lista bo delovalo za to. Nato zbiralnik tranzistorja spajkajte na negativni priključek brenčalnika. Na pozitivnem priključku brenčalca smo mu le spajkali kos žice, da ga lahko kasneje spajkamo na naš Arduino. Po tem prilepite upor 500R (ali katero koli podobno vrednost upora) na osnovo tranzistorja in iz upora, spajkajte še en kos žice za prihodnjo uporabo. Na koncu dva zaponka 10R zaporedno zapojite z oddajnikom tranzistorja in priključite drugo žico iz uporov.

Res, glej shemo.

p/s: V času pisanja tega še vedno ne vem, kako izbrati upor za tranzistor. Vrednost, ki sem jo uporabil, je izbrana empirično.

3. korak: Priprava LED plošče

Priprava LED plošče
Priprava LED plošče
Priprava LED plošče
Priprava LED plošče
Priprava LED plošče
Priprava LED plošče

LED -diode in upor ustrezno priklopite v prototipno ploščo in spajkajte. To je to. Sledite shemi. Če vas zanima razmik, ki sem ga uporabil, 3 luknje narazen za vsak stolpec in dve luknji narazen za vsako vrstico (glejte sliko). In indikatorska LED? Naključno sem ga priključil.

Ko spajate LED in upor na ploščo, povežite vse pozitivne sponke LED. Nato spajajte žice eno za drugo na vsak upor na negativnih sponkah LED, da jih lahko kasneje spajkamo na Arduino.

OPOMBA: Ta korak se lahko zmede. Ne pozabite, da namesto da vse ozemljitve povežemo, povežemo vse pozitivne sponke skupaj in negativni terminal s posameznim zatičem na Arduinu. Tako za ozemljitev uporabljamo pin Arioino GPIO, ne Vcc. Če slučajno priključite nazaj, ne skrbite. V funkciji ledcontrol lahko spremenite vse vrednosti HIGH do LOW in LOW do HIGH.

4. korak: Priprava stikala (dejansko gumb)

Priprava stikala (dejansko gumb)
Priprava stikala (dejansko gumb)
Priprava stikala (dejansko gumb)
Priprava stikala (dejansko gumb)
Priprava stikala (dejansko gumb)
Priprava stikala (dejansko gumb)

Za stikalo (imenoval ga bom stikalo, ker sem uporabil mikro stikalo, vendar veste, da je to gumb), potrebujemo 4k7 spustni upor in seveda samo stikalo. Ah, ne pozabite pripraviti nekaj žic. Začnite tako, da upor in kos žice spajkate na skupno maso (COM) mikro stikala. Nato prilepite še en kos žice na normalno odprt (NO) mikro stikala. Na koncu na upor priključite še eno žico. Zavarujte ga z vročim lepilom.

Kotiček znanja: Zakaj potrebujemo spustni upor?

"Če odklopite digitalni V/I pin od vsega, lahko LED neredno utripa. To je zato, ker je vhod" lebdeč " - to pomeni, da se bo naključno vrnil bodisi VISOKO ali NIZKO. Zato potrebujete vlečni ali izvlečni upor v tokokrogu. " - Vir: Arduino spletno mesto

5. korak: Priprava LED traku

Priprava LED traku
Priprava LED traku
Priprava LED traku
Priprava LED traku

LED trak je namenjen stranski svetilki, ki ni obvezna. Samo zaporedno povežite LED trak in drsno stikalo, nič posebnega.

6. korak: Priprava senzorja kapacitivnosti

Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti
Priprava senzorja kapacitivnosti

Ok glej sliko. V bistvu bomo žico pritrdili na majhen kos aluminijaste folije (ker aluminijaste folije ni mogoče spajkati), nato pa jo pritrditi na majhen kos montažne plošče. Lep opomnik, pazite, da aluminijaste folije ne zalepite popolnoma. Del tega pustite izpostavljenega za neposreden stik.

7. korak: Priprava napajalnika

Priprava napajalnika
Priprava napajalnika
Priprava napajalnika
Priprava napajalnika
Priprava napajalnika
Priprava napajalnika

Ker sem za napajanje uporabljal li-on baterijo, potrebujem modul TP4056 za polnjenje in zaščito ter ojačevalni pretvornik za pretvorbo napetosti v 9v. Če ste se odločili za uporabo 9V stenskega adapterja, boste morda potrebovali vtičnico DC ali pa jo preprosto priključite. Upoštevajte, da je vrednost upora za ojačevalnik zasnovana za 9 V in če želite uporabiti drugo napetost, boste morda morali upor spremeniti.

8. korak: Povežite jih z Arduinom

Povežite jih z Arduinom
Povežite jih z Arduinom
Povežite jih z Arduinom
Povežite jih z Arduinom
Povežite jih z Arduinom
Povežite jih z Arduinom

Sledite shemi! Sledite shemi! Sledite shemi!

Ne priključite napačnega zatiča, sicer bo postalo čudno.

9. korak: ohišje

Ohišje
Ohišje
Ohišje
Ohišje
Ohišje
Ohišje
Ohišje
Ohišje

Dimenzija moje zasnove je 6,5 cm*6,5 cm*8 cm, zato je nekoliko obsežna. Sestavljeno je iz sprednjega okna za LED zaslon in zgornjega okna za nočno svetilko. Za moj dizajn si oglejte slike.

10. korak: Čas programiranja

Image
Image
Čas programiranja!
Čas programiranja!

Prenesite mojo skico spodaj in jo naložite v svoj Arduino. Če ne veste, kako to storiti, se nikar ne lotite tega projekta! Ne, hecam se, tukaj je dobra vadnica: naložite skico v arduino

Nato odprite serijski monitor in videli boste, da prikazuje trenutni čas. To nastavite tako, da nastavite čas.

Za nastavitev ure: h, XX - kjer je xx trenutna ura

Za nastavitev minute: min, XX - xx je trenutna minuta

Za nastavitev sekunde: s, XX

Za nastavitev datuma: d, XX

Za nastavitev meseca: pon, XX

Ko je zgornji komentar izveden, vam mora vrniti vrednost, ki ste jo pravkar nastavili. (Na primer, ko nastavite uro s h, 15, mora vrniti uro: 15 na serijskem monitorju.

Za senzor kapacitivnosti ga boste morda morali umeriti, preden bo deloval. Če želite to narediti, dvakrat pritisnite mikro stikalo in poglejte v serijski monitor. Izpisati mora kup številk. Zdaj postavite prst na senzor kapacitivnosti in si oglejte obseg številke. Nato spremenite spremenljivko "captrigger". Recimo, da ob pritisku dobite 20-30, nato nastavite captrigger na 20.

Skica uporablja knjižnico ADCTouch, preverite, ali ste jo namestili.

11. korak: Popravljalni mehanizem

Časovno obdobje za korektivni mehanizem v moji kodi je nastavljeno na tisto, ki je zame natančno. Če čas še vedno ni točen, morate spremeniti vrednost spremenljivke "corrdur"

Corrdur je v zadnji posodobitvi privzeto nastavljen na 0.

Vrednost corrdur pomeni, koliko milisekund traja, da upočasnite eno sekundo

Če želite izvedeti vrednost corrdurja, uporabite formulo:

2000/(y-x)/x)

kjer je x = dejansko trajanje pretečenega časa in y = trajanje pretečenega časa ure, tako v sekundi

Če želite ugotoviti vrednost x in y, morate narediti majhen poskus.

Čas ure nastavite na dejanski čas in zabeležite začetni čas (dejanski začetni čas in začetni čas ure morata biti enaka). Čez nekaj časa (nekaj ur) zabeležite končni dejanski čas in končni čas ure.

x = dejanski končni čas-začetni čas in y = ura končni čas-začetni čas

Nato spremenite vrednost corrdurja v kodi in jo znova naložite v Arduino.

Nato ponovite test in tokrat se je formula spremenila v:

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

Kjer sta x in y enaka kot prej, z pa trenutna vrednost korrdurja.

Naložite znova in ponovite test, dokler vam ne bo dovolj natančen.

V primeru, da se vaša ura še vedno pospešuje, je tudi corrdur nastavljen na 0 (pomeni, da ni popravnega mehanizma), morate spremeniti drugo ++ na drugo- v delu kode v korektivnem mehanizmu (komentiral sem jo), nastavite corrdur na 0, potem poišči št. milisekunde, da pospešite eno sekundo.

12. korak: Kako uporabljati vse funkcije

Image
Image

Način lahko spremenite s pritiskom na mikro stikalo.

V prvem načinu preprosto prikaže čas. Če kontrolna lučka utripa enkrat na sekundo, je alarm izklopljen. Če 2 -krat na sekundo, je alarm vklopljen. Alarm lahko v prvem načinu preložite za 10 minut s pritiskom na senzor kapacitivnosti.

V drugem načinu prikaže datum. S pritiskom na kapacitivni senzor ne naredite nič.

V tretjem načinu lahko nastavite časovnik. S pritiskom na senzor kapacitivnosti se bo vklopil časovnik in prikazal bo lučka, ki je začela utripati. Senzor kapacitivnosti se uporablja tudi za nastavitev časa časovnika. Časovnik je od 1 minute do 59 minut.

V četrtem načinu lahko nastavite uro alarma s senzorjem kapacitivnosti

V petem načinu lahko nastavite minuto alarma s senzorjem kapacitivnosti.

V šestem načinu pritiska na kapacitivni senzor ponastavite minuto na 30 in sekundo na 0 brez spreminjanja ure. To pomeni, da dokler se vaša ura ne premika več kot 30 minut, jo lahko znova umerite s tem načinom.

Sedmi način je način »ne naredi nič«, če senzor kapacitivnosti med polnjenjem izpade.

Oh, če želite opustiti alarm, samo pritisnite mikro stikalo. (NAJNOVEJŠE POSVEŠEVANJE, DA VKLJUČUJE ALOGNO SNOOZE)

Kaj pa branje ure? To je enostavno! Branje binarne ure - Wikihow Morda se boste sprva počutili čudno, vendar se boste tega navadili!

13. korak: Zaključek

Zaključek
Zaključek
Zaključek
Zaključek

Zakaj sem začel ta projekt. Sprva je to zato, ker imam naokoli staro digitalno uro in jo želim spremeniti v budilko. Na žalost se je stara ura pokvarila. Tako sem si mislil, zakaj ne bi zgradil enega z uporabo Arduina? Z malo Googlovega iskanja sem našel ta projekt binarne ure brez RTC -ja, ki ga je poučil Cello62. Vendar pa nima želene funkcije budilke, zato vzamem kodo in jo spremenim sam. In projekt se je rodil. Poleg tega sem pred kratkim videl, da tekmovanje v urah poteka po navodilih, kar mi je dalo še več motivacije za to. Kakorkoli že, to je še vedno moj prvi projekt z uporabo Arduina, zato kup možnih izboljšav.

Prihodnje izboljšanje:

1) Uporabite RTC

2) Brezžično nastavite alarm ali čas ali časovnik!

3) Ne glede na funkcijo, na katero pomislim

14. korak: Posodobitev: po enem tednu uporabe

Posodobitev: po enem tednu uporabe
Posodobitev: po enem tednu uporabe
Posodobitev: po enem tednu uporabe
Posodobitev: po enem tednu uporabe
Posodobitev: po enem tednu uporabe
Posodobitev: po enem tednu uporabe

Poleg očitne težave - časovni odmik, bi rekel, da je naslednja poraba energije. Najprej povečam napetost do 9v, ki jo bo linearni regulator v Arduinu nato znižal. Linearni regulator je zelo neučinkovit. Ura traja le EN DAN. To pomeni, da ga moram vsak dan polniti. To ni največji posel, dokler ne ugotovite, da je celoten sistem le približno 50% učinkovit. Glede na to, da je moja baterija 2000mAh, bi lahko vsak dan izračunal porabo energije.

Poraba energije = (7,4Wh*10%)+(7,4Wh*90%*50%) = 4,07Wh na dan

To je 1.486 kWh na leto! To lahko uporabimo za kuhanje 283 g vode (od 25 C do 100 C)? Vseeno bom izboljšal učinkovitost ure. To lahko storite tako, da linearnega regulatorja sploh ne uporabljate. To pomeni, da moramo ojačevalni pretvornik prilagoditi za izhod 5V neposredno v 5V pin na Arduinu. Nato, da še dodatno zmanjšam porabo energije, moram odstraniti dve vgrajeni LED (pin13 in napajanje), saj bosta porabili 0,95 Wh na dan. Na žalost nisem popolnoma sposoben spajkanja SMD, zato je edini način, da to storim, to, da odrežem tirnico na plošči. Po tem moram odstraniti oddajniški upor na zvočniku in nočno svetilko (LED trak ne deluje pri 5V). Toda ali to pomeni, da se morate odreči tej neverjetni funkciji? Ne! Tu imate dve izbiri: uporabite običajno 5 mm LED diodo ali uporabite 5V LED trak. Toda zame sem se že počutil utrujeno, ker sem ves ta teden delal ta projekt, zato sem se odločil, da se tej funkciji odrečem. Vendar sem prvotno uporabil stikalo za funkcijo svetlobe za vklop ali izklop plošče ure za nadaljnji prihranek energije, vendar LED na koncu utripa, ko ga izklopim. Je hrošč postala funkcija? Ne vem (kdo ve, naj mi pove spodaj).

Na koncu spremembe ura zdaj traja več kot 2 dni!

Naslednjič imam manj resne težave z uro. Med polnjenjem bi senzor kapacitete ponorel, zato dodam še en način, ki ne naredi popolnoma nič.

Kar zadeva časovni premik, ker je zelo neprijetno, da se vsak dan povežete z računalnikom, da ga ponastavite, sem dodal še en način, ki bo nastavil minuto na 30 in sekundo na 0. To pomeni, da jo lahko ponastavite ob pol druge ure!

Priporočena: