Sisukord:

DIY Arduino binaarne äratuskell: 14 sammu (piltidega)
DIY Arduino binaarne äratuskell: 14 sammu (piltidega)

Video: DIY Arduino binaarne äratuskell: 14 sammu (piltidega)

Video: DIY Arduino binaarne äratuskell: 14 sammu (piltidega)
Video: SKR Pro v1.1 - Reprap Discount Smart Controller 2024, November
Anonim
DIY Arduino binaarne äratuskell
DIY Arduino binaarne äratuskell
DIY Arduino binaarne äratuskell
DIY Arduino binaarne äratuskell
DIY Arduino binaarne äratuskell
DIY Arduino binaarne äratuskell

See on jälle klassikaline binaarkell! Seekord aga veelgi suurema lisafunktsiooniga! Selles juhendis näitan teile, kuidas ehitada Arduinoga binaarne äratuskell, mis näitab teile mitte ainult kellaaega, vaid kuupäeva, kuud, isegi taimeri ja äratusfunktsioonidega, mida saab kasutada ka öölambina! Ilma pikema jututa alustame!

Märkus. See projekt ei kasuta RTC -moodulit, nii et täpsus sõltub kasutatavast tahvlist. Olen lisanud parandusmehhanismi, mis korrigeerib ajanihet teatud aja jooksul, kuid peate ajavahemiku õige väärtuse leidmiseks katsetama (selle kohta lähemalt allpool) ja isegi parandusmehhanismi korral triivib see ikkagi pika aja jooksul (kui võrrelda ilma selleta). Kui keegi on huvitatud, rakendage selles projektis RTC -mooduli kasutamine

Tarvikud

5 mm LED (mis tahes värvi, kasutasin 13 valget LED-i koos ühe RGB LED-ga indikaatorina) --- 14 tk

Arduino Nano (teised võivad töötada) --- 1 tk

Mikrolüliti --- 1 tk

Väike tükk alumiiniumfooliumi

Paigalduslaud (korpuse jaoks, kuid kujundage julgelt oma)

Tükk valget paberit (või muud värvi)

Mõni plastkile (seda kasutatakse raamatu kaanena)

Hunnik juhtmeid

Signaal --- 1 tk

NPN transistor --- 1tk

Takistid 6k8 --- 14 tk, 500R --- 1 tk, 20R (10Rx2) --- 1 tk, 4k7 --- 1tk

Projekti toiteallikas (kasutasin liitiumakut)

5050 LED -riba ja liuglüliti (valikuline)

Samm: ühendage vooluring

Ühendage vooluring!
Ühendage vooluring!

Jagan selle sammu järgmisteks osadeks:

1) summeri osa

2) LED -paneel

3) Lüliti (nupp)

4) LED -riba

5) mahtuvusandur

6) Toide

7) Ühendage need kõik Arduinoga

Enamasti on see lihtsalt "järgige skemaatilist" sammu. Nii et vaadake ülaltoodud skeemi või isegi laadige see alla ja printige!

2. samm: summeri osa ettevalmistamine

Sumina osa ettevalmistamine
Sumina osa ettevalmistamine
Sumina osa ettevalmistamine
Sumina osa ettevalmistamine
Sumina osa ettevalmistamine
Sumina osa ettevalmistamine

Kui olete varem Arduinoga helisignaali kasutanud, teate, et kui ühendame selle otse Arduinoga, pole see piisavalt vali. Seega vajame võimendit. Võimendi konstrueerimiseks vajame NPN -transistorit (põhimõtteliselt töötab iga NPN, ma kasutasin S9013, kuna sain selle vanast projektist) ja mõnda takisti, et voolu piirata. Alustuseks tuvastage esmalt transistori kollektor, emitter ja alus. Natuke andmelehe guugeldamist aitab see. Seejärel jootke transistori kollektor summeri negatiivse klemmi külge. Signaali positiivses klemmis jootame selle külge lihtsalt traaditüki, et saaksime selle hiljem oma Arduino külge jootma hakata. Pärast seda jootke takisti 500R (või mis tahes sama väärtusega takisti) transistori alusele ja takistist, jootke teine traat, et seda tulevikus kasutada. Lõpuks jootke kaks 10R takistit järjestikku transistori emitteriga ja ühendage takistitest veel üks juhe.

Tõesti, vaadake skeemi.

p/s: Seda kirjutades ei tea ma siiani tegelikult, kuidas valida transistorile takisti. Minu kasutatav väärtus valitakse empiiriliselt.

Samm: LED -paneeli ettevalmistamine

LED -paneeli ettevalmistamine
LED -paneeli ettevalmistamine
LED -paneeli ettevalmistamine
LED -paneeli ettevalmistamine
LED -paneeli ettevalmistamine
LED -paneeli ettevalmistamine

Ühendage valgusdioodid ja takisti vastavalt prototüüpimisplaadile ja jootke. See on kõik. Järgige skeemi. Kui olete huvitatud minu kasutatavast vahekaugusest, tehke iga veeru jaoks 3 auku ja iga rea jaoks kaks auku (vt pilti). Ja indikaator LED? Ühendasin selle juhuslikult.

Pärast valgusdioodide ja takisti jootmist plaadile ühendage kõik valgusdioodide positiivsed klemmid kokku. Seejärel jootke juhtmed ükshaaval iga LED -i negatiivsete klemmide takisti juurde, et saaksime need hiljem Arduino külge jootma hakata.

MÄRKUS. See samm võib teid segadusse ajada. Pidage meeles, et kogu maanduse ühendamise asemel ühendame kõik positiivsed klemmid ja negatiivse klemmi Arduino üksiku tihvtiga. Seega kasutame maapinnana Arduino GPIO tihvti, mitte Vcc -d. Kui ühendate selle kogemata tahapoole, ärge muretsege. LED -juhtimisfunktsioonis saate muuta kõik HIGH olekuks LOW ja LOW to HIGH.

Samm: lüliti ettevalmistamine (tegelikult nupp)

Lüliti ettevalmistamine (tegelikult nupp)
Lüliti ettevalmistamine (tegelikult nupp)
Lüliti ettevalmistamine (tegelikult nupp)
Lüliti ettevalmistamine (tegelikult nupp)
Lüliti ettevalmistamine (tegelikult nupp)
Lüliti ettevalmistamine (tegelikult nupp)

Lüliti jaoks (ma nimetan seda lülitiks, sest ma kasutasin mikrolülitit, aga teate, et see on nupp), vajame 4k7 tõmbetakistit ja muidugi lülitit ennast. Ah, ärge unustage juhtmeid ette valmistada. Alustuseks jootke takisti ja juhtmetükk mikrolüliti ühisesse maasse (COM). Seejärel jootke teine juhtmetükk mikrolüliti normaalselt avatud (NO) külge. Lõpuks kinnitage takisti külge veel üks traat. Kinnitage see kuuma liimiga.

Teadmiste nurk: miks me vajame tõmbetakistit?

"Kui ühendate digitaalse sisend-/väljundpistiku kõigest lahti, võib valgusdiood vilguda ebaühtlaselt. Seda seetõttu, et sisend on" hõljuv " - see tähendab, et see naaseb juhuslikult kas kõrgele või madalale. Sellepärast vajate tõmbamist või ahelas olev tõmbetakisti. " - Allikas: Arduino veebisait

Samm: LED -riba ettevalmistamine

LED -riba ettevalmistamine
LED -riba ettevalmistamine
LED -riba ettevalmistamine
LED -riba ettevalmistamine

LED -riba on voodi küljelambi jaoks, mis on valikuline. Lihtsalt ühendage LED -riba ja liuglüliti järjestikku, pole midagi erilist.

6. samm: mahtuvusanduri ettevalmistamine

Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine
Mahtuvusanduri ettevalmistamine

Ok, vaata pilti. Põhimõtteliselt kinnitame traadi väikese alumiiniumfooliumi tüki külge (kuna alumiiniumfooliumi ei saa joota), seejärel kleepige see teibile väikese kinnitusplaadi külge. Meeldetuletus, veenduge, et te ei kleepiks alumiiniumfooliumi täielikult kinni. Jätke osa sellest otseseks kontaktiks.

Samm: toiteallika ettevalmistamine

Toiteallika ettevalmistamine
Toiteallika ettevalmistamine
Toiteallika ettevalmistamine
Toiteallika ettevalmistamine
Toiteallika ettevalmistamine
Toiteallika ettevalmistamine

Kuna kasutasin toiteallikana liitiumakut, vajan laadimiseks ja kaitseks TP4056 moodulit ning pingemuundurit pinge 9v muundamiseks. Kui otsustasite kasutada 9 V seinaadapterit, võib teil olla vaja alalisvoolu pistikut või lihtsalt ühendada see otse. Pange tähele, et võimendi takisti väärtus on kavandatud 9 V jaoks ja kui soovite kasutada muud pinget, peate võib -olla takistit vahetama.

Samm: ühendage need Arduinoga

Nende ühendamine Arduinoga
Nende ühendamine Arduinoga
Nende ühendamine Arduinoga
Nende ühendamine Arduinoga
Nende ühendamine Arduinoga
Nende ühendamine Arduinoga

Järgige skeemi! Järgige skeemi! Järgige skeemi!

Ärge ühendage vale tihvti, muidu lähevad asjad imelikuks.

9. samm: ümbris

Korpus
Korpus
Korpus
Korpus
Korpus
Korpus
Korpus
Korpus

Minu disaini mõõtmed on 6,5 cm*6,5 cm*8 cm, seega on see pisut mahukas. See koosneb LED -ekraani esiaknast ja öölambi ülemisest aknast. Minu kujunduse jaoks vaadake pilte.

10. samm: aja programmeerimine

Image
Image
Programmeerimise aeg!
Programmeerimise aeg!

Laadige alla minu eskiis ja laadige see üles oma Arduino. Kui te ei tea, kuidas seda teha, ärge viitsige seda projekti teha! Nali naljaks, siin on hea õpetus selle kohta: laadige eskiis üles arduino

Seejärel avage seeriamonitor ja peaksite nägema, et see väljastab praeguse aja. Kellaaja määramiseks toimige järgmiselt.

Tunni seadmiseks: h, XX - kus xx on praegune tund

Minuti seadmiseks: min, XX - xx on praegune minut

Teiseks seadmiseks: s, XX

Kuupäeva määramiseks: d, XX

Kuu määramiseks: esmaspäev, XX

Kui ülaltoodud kommentaar täidetakse, peaks see teile tagastama just määratud väärtuse. (Näiteks kui määrate tunni nupuga h, 15, peaks see jadaekraanil tagastama tunni: 15.

Mahtuvusanduri puhul peate võib -olla selle tööks kalibreerima. Selleks vajutage kaks korda mikrolülitit ja vaadake jadamonitori. See peaks väljastama hulga numbreid. Nüüd pange sõrm mahtuvusandurile ja vaadake, kas numbrivahemik on teadlik. Seejärel muutke muutujat "captrigger". Oletame, et vajutades saate 20–30, seejärel määrake captrigger väärtuseks 20.

Visand kasutab ADCTouchi teeki, veenduge, et see oleks installitud.

11. samm: parandusmehhanism

Minu koodi parandusmehhanismi ajavahemik on minu jaoks täpne. Kui aeg pole ikka veel täpne, peate muutuja "corrdur" väärtust muutma

Corrdur on nüüd uusimas värskenduses vaikimisi 0.

Corrduri väärtus tähendab, mitu millisekundit kulub ühe sekundi aeglustamiseks

Corrduri väärtuse väljaselgitamiseks kasutage valemit:

2000/(y-x)/x)

kus x = möödunud aja tegelik kestus ja y = kellaaja kestus, mõlemad sekundis

X ja y väärtuse leidmiseks peate tegema väikese katse.

Seadistage kellaaeg tegelikule ajale ja salvestage esialgne aeg (tegelik esialgne aeg ja kella algusaeg peaksid olema samad). Mõne aja pärast (mõni tund) registreerige lõplik tegelik aeg ja kella lõplik aeg.

x = tegelik lõplik aeg-esialgne aeg ja y = kella lõplik aeg-algusaeg

Seejärel muutke koodis corrduri väärtust ja laadige uuesti Arduino.

Seejärel korrake testi ja seekord muutus valem järgmiselt:

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

Kus x ja y on sama asi nagu varem, samas kui z on praegune korrduri väärtus.

Laadige uuesti üles ja tehke testi ikka ja jälle, kuni see on teie jaoks piisavalt täpne.

Juhul, kui teie kell ikka kiirendab, isegi kui Corrdur on seatud väärtusele 0 (tähendab, et parandusmehhanismi pole), peate muutma koodi+ parandusmehhanismis teise ++ sekundiks (kommenteerisin seda), määrama corrdur väärtuseks 0, siis leidke nr. millisekundist kulub ühe sekundi kiirendamiseks.

12. samm: kuidas kasutada kõiki funktsioone

Image
Image

Režiimi saate muuta, vajutades mikrolülitit.

Esimesel režiimil kuvab see lihtsalt aega. Kui märgutuli vilgub 1 kord sekundis, on alarm välja lülitatud. Kui 2 korda sekundis, on alarm sisse lülitatud. Esimeses režiimis saate äratuse 10 minutiks edasi lükata, vajutades mahtuvusandurit.

Teisel režiimil kuvatakse kuupäev. Mahtuvusanduri vajutamine ei tee midagi.

Kolmandas režiimis saate taimeri seadistada. Vajutades mahtuvusandurit, lülitatakse taimer sisse ja peaksite nägema, et indikaatortuli hakkab vilkuma. Mahtuvusandurit kasutatakse ka taimeri aja seadmiseks. Taimeri vahemik on 1 minut kuni 59 minutit.

Neljandal režiimil saate äratustunde määrata mahtuvusanduri abil

Viiendal režiimil saate äratusminutit määrata mahtuvusanduri abil.

Kuuendal režiimil nullitakse mahtuvusanduri vajutamisel minut 30 -le ja sekund 0 -le ilma tunde muutmata. See tähendab, et kui teie kell ei liigu üle 30 minuti, saate selle režiimi abil uuesti kalibreerida.

Seitsmes režiim on mitte midagi tegemise režiim juhuks, kui mahtuvusandur laadimise ajal välja kukub.

Äratuse lõpetamiseks vajutage lihtsalt mikrolülitit. (VIIMANE VÄRSKENDUS, MIS KAASAB ALARM SNOOZE)

Kuidas oleks kella lugemisega? See on lihtne! Binaarkella lugemine - Wikihow Esialgu võite end imelikult tunda, kuid hakkate sellega harjuma!

13. samm: järeldus

Järeldus
Järeldus
Järeldus
Järeldus

Miks ma selle projektiga alustasin. Esialgu on see sellepärast, et mul on vana digikell, mis lamab, ja ma tahan selle äratuskellaks muuta. Kahjuks osutus vana kell katki. Nii et ma mõtlesin, miks mitte ehitada seda Arduino abil? Veidi google'i otsingu abil leidsin selle binaarkella projekti ilma RTC -ta Cello62 juhendamisel. Sellel pole aga soovitud äratuskella funktsiooni, seega võtan koodi ja muudan seda ise. Ja projekt sünnib. Lisaks nägin hiljuti kellavõistlust juhendatavalt, mis andis mulle veelgi rohkem motivatsiooni seda teha. Igatahes on see ikkagi minu esimene Arduino kasutav projekt, nii et hulgaliselt võimalikke täiustusi.

Edasine parandamine:

1) Kasutage RTC -d

2) Seadistage äratus või aeg või taimer juhtmevabalt!

3) Ükskõik millist funktsiooni ma mõtlen

14. samm: värskendamine: pärast ühe nädala kasutamist

Värskendus: pärast ühe nädala kasutamist
Värskendus: pärast ühe nädala kasutamist
Värskendus: pärast ühe nädala kasutamist
Värskendus: pärast ühe nädala kasutamist
Värskendus: pärast ühe nädala kasutamist
Värskendus: pärast ühe nädala kasutamist

Lisaks ilmselgele probleemile - aja triivile, oleks järgmine, mida ma ütleksin, energiatarbimine. Esiteks tõstan ma pinge kuni 9 V, mille seejärel Arduino lineaarne regulaator vähendab. Lineaarne regulaator on väga ebaefektiivne. Kell kestab vaid ÜKS PÄEV. See tähendab, et pean seda iga päev laadima. See pole suurim tehing enne, kui mõistate, et kogu süsteem on ainult umbes 50% tõhusam. Arvestades, et mu aku on 2000 mAh, suudaksin arvutada iga päev raisatud energiat.

Energia raiskamine = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh päevas

See on 1,486 kWh aastas! Seda saab kasutada 283 g vee (25 ° C kuni 100 ° C) keetmiseks? Aga igal juhul parandan ma kella efektiivsust. Selleks tuleb lineaarset regulaatorit üldse mitte kasutada. See tähendab, et peame reguleerima võimendusmuundurit 5V väljundiks otse Arduino 5V kontakti. Järgmiseks, et raisatud energiat veelgi minimeerida, pean eemaldama kaks pardal olevat LED -i (pin13 ja toide), kuna need raiskavad 0,95 Wh päevas. Kahjuks olen SMD jootmisel täiesti noob, nii et ainus viis seda teha on laua rööpa lõikamine. Pärast seda pean eemaldama helisignaali takisti summutil ja öölambi (LED -riba ei tööta 5 V juures). Kuid kas see tähendab, et peate sellest hämmastavast funktsioonist loobuma? Ei! Siin on teil kaks valikut: kasutage tavalist 5 mm LED -dioodi või 5 V LED -riba. Kuid minu jaoks tundsin end juba väsinud selle projekti tegemisel terve eelmise nädala, nii et otsustasin sellest funktsioonist loobuda. Energia säästmiseks kasutasin siiski kellapaneeli sisse- või väljalülitamiseks algselt valgusfunktsiooni jaoks mõeldud lülitit, kuid lõpuks lülitan LED välja, kui selle välja lülitan. Bug muutunud funktsiooniks? Ma ei tea (keegi teab, palun öelge mulle allpool).

Muudatuse lõppedes kestab kell nüüd üle 2 päeva!

Järgmisena on mul kellaga vähem tõsine probleem. Laadimise ajal läheks mahtuvusandur hulluks, nii et lisan veel ühe režiimi, mis ei tee midagi.

Mis puutub aja triivimisse, siis kuna selle lähtestamiseks on arvutiga iga päev väga ebamugav ühendada, olen lisanud veel ühe režiimi, mis määrab minutiks 30 ja sekundiks 0. See tähendab, et saate selle igal pool tundi tagasi nullida!

Soovitan: