Turinys:

„Pasidaryk pats“„Arduino“dvejetainis žadintuvas: 14 žingsnių (su nuotraukomis)
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas: 14 žingsnių (su nuotraukomis)

Video: „Pasidaryk pats“„Arduino“dvejetainis žadintuvas: 14 žingsnių (su nuotraukomis)

Video: „Pasidaryk pats“„Arduino“dvejetainis žadintuvas: 14 žingsnių (su nuotraukomis)
Video: Станок с ЧПУ на Arduino своими руками 2024, Liepa
Anonim
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas
„Pasidaryk pats“„Arduino“dvejetainis žadintuvas

Tai vėl klasikinis dvejetainis laikrodis! Bet šį kartą su dar daugiau papildomų funkcijų! Šioje pamokoje aš jums parodysiu, kaip sukurti dvejetainį žadintuvą su „Arduino“, kuris gali rodyti ne tik laiką, bet ir datą, mėnesį, net su laikmačiu ir žadintuvo funkcijomis, kurios taip pat gali būti naudojamos kaip naktinė lempa! Nedvejodami pradėkime!

Pastaba: Šiame projekte nenaudojamas RTC modulis, todėl tikslumas priklauso nuo jūsų naudojamos plokštės. Įtraukiau taisomąjį mechanizmą, kuris ištaisys laiko poslinkį per tam tikrą laikotarpį, tačiau turėsite eksperimentuoti, kad surastumėte tinkamą tam tikro laikotarpio vertę (daugiau apie tai žemiau), ir net naudojant taisomąjį mechanizmą jis vis tiek nukryps per ilgą laiką (palyginti su be jo). Jei kam nors įdomu, šiame projekte galite naudoti RTC modulį

Prekės

5 mm šviesos diodas (bet kokios spalvos, aš naudoju 13 baltų šviesos diodų su vienu RGB šviesos diodu kaip indikatorius) --- 14 vnt

„Arduino Nano“(kiti gali veikti) --- 1 vnt

Mikro jungiklis --- 1 vnt

Mažas aliuminio folijos gabalas

Montavimo lenta (gaubtui, bet nesivaržykite kurti savo)

Balto popieriaus gabalas (arba bet kokios kitos spalvos)

Kažkokia plastikinė plėvelė (naudojama kaip knygos viršelis)

Laidų krūva

Garsinis signalas --- 1 vnt

NPN tranzistorius --- 1 vnt

Rezistoriai 6k8 --- 14 vnt., 500R --- 1 vnt., 20R (10Rx2) --- 1 vnt., 4k7 --- 1 vnt

Maitinimas projektui (naudojau ličio bateriją)

5050 LED juostelė ir slankiklis (pasirinktinai)

1 žingsnis: prijunkite grandinę

Prijunkite grandinę!
Prijunkite grandinę!

Šį žingsnį skirsiu į:

1) garsinio signalo dalis

2) LED skydelis

3) Jungiklis (mygtukas)

4) LED juostelė

5) Talpos jutiklis

6) Maitinimo šaltinis

7) Prijunkite juos visus prie „Arduino“

Dažniausiai tai tik „sekite schemą“. Taigi peržiūrėkite aukščiau pateiktą schemą arba net atsisiųskite ir atsispausdinkite!

2 žingsnis: „Buzzer“dalies paruošimas

„Buzzer“dalies paruošimas
„Buzzer“dalies paruošimas
„Buzzer“dalies paruošimas
„Buzzer“dalies paruošimas
„Buzzer“dalies paruošimas
„Buzzer“dalies paruošimas

Jei anksčiau naudojote garsinį signalą su „Arduino“, žinosite, kad jei jį prijungsime tiesiai prie „Arduino“, jis nebus pakankamai garsus. Taigi mums reikia stiprintuvo. Norėdami sukurti stiprintuvą, mums reikia NPN tranzistoriaus (iš esmės bet koks NPN veiks, aš naudoju S9013, nes jį gavau iš seno projekto) ir šiek tiek rezistoriaus, kad apribotumėte srovę. Norėdami pradėti, pirmiausia nustatykite tranzistoriaus kolektorių, emiterį ir pagrindą. Tam tikslui šiek tiek patikslinus duomenų lapą „Google“. Tada lituokite tranzistoriaus kolektorių prie neigiamo garsinio signalo gnybto. Prie teigiamo garsinio signalo gnybto mes tiesiog lituojame vielos gabalėlį, kad vėliau galėtume jį prilituoti prie „Arduino“. Po to lituokite 500R (arba bet kokios panašios rezistoriaus vertės) rezistorių prie tranzistoriaus pagrindo ir iš rezistoriaus lituokite kitą vielos gabalą, kad galėtumėte naudoti ateityje. Galiausiai, lituokite du 10R rezistorius nuosekliai prie tranzistoriaus emiterio ir prijunkite kitą laidą iš rezistorių.

Tiesą sakant, žiūrėkite į schemą.

p/s: Aš vis dar nežinau, kaip pasirinkti rezistorių tranzistoriui tuo metu, kai rašiau tai. Naudota vertė parenkama empiriškai.

3 žingsnis: LED skydelio paruošimas

LED skydelio paruošimas
LED skydelio paruošimas
LED skydelio paruošimas
LED skydelio paruošimas
LED skydelio paruošimas
LED skydelio paruošimas

Prijunkite šviesos diodus ir rezistorių prie prototipų plokštės ir lituokite. Viskas. Sekite schemą. Jei jus domina mano naudojamas tarpas, 3 skylės kiekvienam stulpeliui ir dvi skylės kiekvienai eilutei (žr. Paveikslėlį). Ir indikatorius LED? Aš jį prijungiau atsitiktinai.

Lituodami šviesos diodus ir rezistorių prie plokštės, prijunkite visus teigiamus šviesos diodų gnybtus. Tada lituokite laidus po vieną prie kiekvieno rezistoriaus prie neigiamų šviesos diodų gnybtų, kad vėliau galėtume juos lituoti į „Arduino“.

PASTABA: šį veiksmą galite supainioti. Atminkite, kad vietoj to, kad sujungtumėte visą žemę, mes sujungiame visus teigiamus gnybtus ir neigiamą gnybtą prie atskiro „Arduino“kaiščio. Taigi kaip gruntą naudojame „Arduino GPIO“kaištį, o ne „Vcc“. Jei netyčia prijungsite atgal, nesijaudinkite. LEDControl funkcijoje galite pakeisti visus HIGH į LOW ir LOW į HIGH.

4 žingsnis: jungiklio paruošimas (iš tikrųjų mygtukas)

Jungiklio paruošimas (iš tikrųjų mygtukas)
Jungiklio paruošimas (iš tikrųjų mygtukas)
Jungiklio paruošimas (iš tikrųjų mygtukas)
Jungiklio paruošimas (iš tikrųjų mygtukas)
Jungiklio paruošimas (iš tikrųjų mygtukas)
Jungiklio paruošimas (iš tikrųjų mygtukas)

Jungikliui (aš jį vadinsiu jungikliu, nes naudojau mikro jungiklį, bet žinote, kad tai yra mygtukas), mums reikia 4k7 ištraukiamojo rezistoriaus ir, žinoma, paties jungiklio. Ak, nepamirškite paruošti kai kurių laidų. Pradėkite lituodami rezistorių ir vielos gabalą prie bendro jungiklio įžeminimo (COM). Tada lituokite kitą vielos gabalą prie įprastai atidaryto (jungiklio) mikro jungiklio. Galiausiai prie rezistoriaus pritvirtinkite kitą laidą. Pritvirtinkite jį karštais klijais.

Žinių kampelis: kodėl mums reikia ištraukiamojo rezistoriaus?

"Jei nuo visko atjungsite skaitmeninį įvesties/išvesties kaištį, šviesos diodas gali netikėtai mirksėti. Taip yra todėl, kad įvestis yra" plaukiojanti " - tai yra, ji atsitiktinai grįš arba AUKŠTA, arba ŽEMA. Štai kodėl jums reikia traukti ištraukiamas rezistorius grandinėje ". - Šaltinis: „Arduino“svetainė

5 žingsnis: LED juostos paruošimas

LED juostos paruošimas
LED juostos paruošimas
LED juostos paruošimas
LED juostos paruošimas

LED juostelė skirta lovos šoninei lempai, kuri neprivaloma. Tiesiog serijiniu būdu prijunkite LED juostelę ir slankiklį, nieko ypatingo.

6 žingsnis: Talpos jutiklio paruošimas

Talpos jutiklio paruošimas
Talpos jutiklio paruošimas
Talpos jutiklio paruošimas
Talpos jutiklio paruošimas
Talpos jutiklio paruošimas
Talpos jutiklio paruošimas
Talpos jutiklio paruošimas
Talpos jutiklio paruošimas

Gerai, žiūrėkite paveikslėlį. Iš esmės mes tik pritvirtinsime vielą prie mažo aliuminio folijos gabalo (nes aliuminio folijos negalima lituoti), tada užklijuokite ją ant mažos tvirtinimo plokštės. Malonus priminimas, įsitikinkite, kad visiškai neužklijavote aliuminio folijos. Palikite dalį jo atviro tiesioginio kontakto.

7 žingsnis: Maitinimo šaltinio paruošimas

Maitinimo šaltinio paruošimas
Maitinimo šaltinio paruošimas
Maitinimo šaltinio paruošimas
Maitinimo šaltinio paruošimas
Maitinimo šaltinio paruošimas
Maitinimo šaltinio paruošimas

Kadangi kaip maitinimo šaltinį naudojau ličio bateriją, man reikia įkrovimui ir apsaugai skirto TP4056 modulio ir padidinimo keitiklio, kad įtampa būtų pakeista į 9 V. Jei nusprendėte naudoti 9V sieninį adapterį, jums gali prireikti nuolatinės srovės lizdo arba tiesiog jį prijungti. Atminkite, kad stiprintuvo rezistoriaus vertė yra 9 V, o jei norite naudoti kitą įtampą, gali tekti pakeisti rezistorių.

8 veiksmas: prijunkite juos prie „Arduino“

Jungimas prie „Arduino“
Jungimas prie „Arduino“
Jungimas prie „Arduino“
Jungimas prie „Arduino“
Jungimas prie „Arduino“
Jungimas prie „Arduino“

Sekite schemą! Sekite schemą! Sekite schemą!

Nejunkite netinkamo kaiščio, kitaip viskas bus keista.

9 žingsnis: gaubtas

Korpusas
Korpusas
Korpusas
Korpusas
Korpusas
Korpusas
Korpusas
Korpusas

Mano dizaino matmenys yra 6,5 cm*6,5 cm*8 cm, todėl jis yra šiek tiek nepatogus. Jį sudaro priekinis langas LED ekranui ir viršutinis langas prie naktinės lempos. Mano dizainą rasite nuotraukose.

10 žingsnis: laiko programavimas

Image
Image
Programavimo laikas!
Programavimo laikas!

Atsisiųskite mano eskizą žemiau ir įkelkite į „Arduino“. Jei nežinote, kaip tai padaryti, nesivaržykite įgyvendinti šio projekto! Na, juokauju, čia yra gera pamoka: Įkelkite eskizą į arduino

Tada atidarykite nuoseklųjį monitorių ir turėtumėte pamatyti, kad jis išleidžia dabartinį laiką. Norėdami nustatyti laiką, štai kaip tai padaryti.

Norėdami nustatyti valandą: h, XX - kur xx yra dabartinė valanda

Norėdami nustatyti minutę: min, XX - xx yra dabartinė minutė

Norėdami nustatyti antrą: s, XX

Norėdami nustatyti datą: d, XX

Norėdami nustatyti mėnesį: pirmadienis, XX

Vykdant aukščiau pateiktą komentarą, jis turėtų grąžinti ką tik nustatytą vertę. (Pavyzdžiui, kai nustatote valandą su h, 15, serijiniame monitoriuje ji turėtų grąžinti valandą: 15.

Norint, kad talpos jutiklis veiktų, gali tekti jį sukalibruoti. Norėdami tai padaryti, du kartus paspauskite mikro jungiklį ir pažiūrėkite į nuoseklųjį monitorių. Jis turėtų išvesti daugybę skaičių. Dabar uždėkite pirštą ant talpos jutiklio ir atkreipkite dėmesį į skaičiaus diapazoną. Tada pakeiskite kintamąjį „captrigger“. Tarkime, kad paspaudus gausite 20–30, tada nustatykite „captrigger“į 20.

Eskizas naudoja ADCTouch biblioteką, įsitikinkite, kad ją įdiegėte.

11 žingsnis: taisomasis mechanizmas

Korekcinio mechanizmo laikotarpis mano kode nustatytas taip, kad būtų tikslus man. Jei laikas vis dar nėra tikslus, turite pakeisti kintamojo „corrdur“vertę

Naujausiame atnaujinime „Corrdur“dabar numatytasis yra 0.

„Corrdur“vertė reiškia, kiek milisekundžių reikia norint sulėtinti vieną sekundę

Norėdami sužinoti corrdur vertę, naudokite formulę:

2000/(y-x)/x)

kur x = faktinė praleisto laiko trukmė ir y = laikrodžio laiko trukmė, abu - sekundėmis

Norėdami rasti x ir y reikšmę, turite atlikti nedidelį eksperimentą.

Nustatykite laikrodžio laiką pagal faktinį laiką ir įrašykite pradinį laiką (faktinis pradinis laikas ir pradinis laikrodžio laikas turi būti vienodi). Po kurio laiko (kelių valandų) įrašykite galutinį faktinį laiką ir laikrodžio galutinį laiką.

x = faktinis galutinis laikas-pradinis laikas ir y = laikrodžio galutinis laikas-pradinis laikas

Tada pakeiskite kodo „corrdur“vertę ir iš naujo įkelkite į „Arduino“.

Tada pakartokite testą ir šį kartą formulė pasikeitė į:

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

Kur x ir y yra tas pats, kas anksčiau, o z yra dabartinė Corrdur reikšmė.

Įkelkite dar kartą ir kartokite testą, kol jis bus pakankamai tikslus.

Jei jūsų laikrodis vis dar pagreitėja, net jei Corrdur yra nustatytas į 0 (reiškia, kad nėra taisomojo mechanizmo), turite pakeisti antrąjį ++ į antrąjį- taisomojo mechanizmo kodo dalyje (aš jį pakomentavau), nustatykite corrdur į 0, tada raskite Nr. milisekundės reikia pagreitinti vieną sekundę.

12 veiksmas: kaip naudotis visomis funkcijomis

Image
Image

Režimą galite pakeisti paspausdami mikro jungiklį.

Pirmuoju režimu jis tiesiog rodo laiką. Jei indikatoriaus lemputė mirksi 1 kartą per sekundę, signalas išjungtas. Jei 2 kartus per sekundę, signalizacija įjungta. Galite atidėti žadintuvą 10 minučių pirmuoju režimu, paspausdami talpos jutiklį.

Antruoju režimu rodoma data. Paspaudus talpos jutiklį nieko nedaroma.

Trečiuoju režimu galite nustatyti laikmatį. Paspaudus talpos jutiklį, įjungsite laikmatį ir pamatysite, kad pradės mirksėti indikatoriaus lemputė. Talpos jutiklis taip pat naudojamas laikmačio laikui nustatyti. Laikmačio diapazonas yra nuo 1 minutės iki 59 minučių.

Ketvirtuoju režimu galite nustatyti žadintuvo valandą naudodami talpos jutiklį

Penktuoju režimu galite nustatyti žadintuvo minutę naudodami talpos jutiklį.

Įjungus šeštąjį režimą, paspaudus talpos jutiklį, minutė bus nustatyta į 30, o antra - į 0, nekeičiant valandos. Tai reiškia, kad kol jūsų laikrodis neslenka per 30 minučių, galite jį iš naujo kalibruoti naudodami šį režimą.

Septintasis režimas yra „nieko nedaryti“režimas, jei įkrovimo metu sugenda talpos jutiklis.

O, jei norite atmesti signalą, tiesiog paspauskite mikro jungiklį. (NAUJAUSIAS ATNAUJINIMAS, ĮSKAIČIANT ALARM SNOOZE)

Na, o kaip skaityti laikrodį? Tai lengva! Dvejetainio laikrodžio skaitymas - „Wikihow“Iš pradžių galite jaustis keistai, bet priprasite!

13 žingsnis: Išvada

Išvada
Išvada
Išvada
Išvada

Kodėl aš pradėjau šį projektą. Iš pradžių taip yra todėl, kad turiu seną skaitmeninį laikrodį ir noriu jį paversti žadintuvu. Deja, senasis laikrodis pasirodė sugedęs. Taigi man buvo įdomu, kodėl gi ne sukurti jo naudojant „Arduino“? Šiek tiek „Google“paieškoje radau šį dvejetainio laikrodžio projektą be RTC, kurį nurodė „Cello62“. Tačiau jame nėra norimos žadintuvo funkcijos, todėl paimu kodą ir pats jį modifikuoju. Ir projektas gimsta. Be to, neseniai pamačiau laikrodžio konkursą, kuris vyko pagal instrukcijas, ir tai suteikė man dar daugiau motyvacijos tai daryti. Bet kokiu atveju, tai vis dar yra mano pirmasis projektas naudojant „Arduino“, taigi daugybė galimų patobulinimų.

Būsimas patobulinimas:

1) Naudokite RTC

2) Nustatykite žadintuvą arba laiką ar laikmatį belaidžiu būdu!

3) Kad ir apie kokias savybes galvočiau

14 veiksmas: atnaujinimas: po savaitės naudojimo

Atnaujinimas: po savaitės naudojimo
Atnaujinimas: po savaitės naudojimo
Atnaujinimas: po savaitės naudojimo
Atnaujinimas: po savaitės naudojimo
Atnaujinimas: po savaitės naudojimo
Atnaujinimas: po savaitės naudojimo

Be akivaizdžios problemos - laiko nuokrypio, kita, sakyčiau, yra energijos suvartojimas. Visų pirma, aš pakeliu įtampą iki 9 V, kurią tada sumažins linijinis reguliatorius Arduino. Linijinis reguliatorius yra labai neefektyvus. Laikrodis trunka tik VIENĄ DIENĄ. Tai reiškia, kad turiu jį įkrauti kiekvieną dieną. Tai nėra didžiausias sandoris, kol nesuprantate, kad visa sistema yra tik apie 50% efektyvi. Atsižvelgiant į tai, kad mano akumuliatorius yra 2000 mAh, galėčiau apskaičiuoti kasdien iššvaistomą galią.

Švaistoma energija = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh per dieną

Tai yra 1,486 kWh per metus! Tai galima panaudoti verdant 283 g vandens (nuo 25 C iki 100 C)? Bet vistiek aš pagerinsiu laikrodžio efektyvumą. Tai galima padaryti visiškai nenaudojant linijinio reguliatoriaus. Tai reiškia, kad turime sureguliuoti padidinimo keitiklį, kad jis išvestų 5 V tiesiai į 5 V kaištį „Arduino“. Be to, norėdamas dar labiau sumažinti švaistomą energiją, turiu pašalinti du borto šviesos diodus (kaištį 13 ir maitinimą), nes jie išeikvos 0,95 Wh per dieną. Deja, aš visiškai nekenčiu SMD litavimo, todėl vienintelis būdas tai padaryti yra nupjauti bėgį ant lentos. Po to turiu pašalinti spinduliuotės rezistorių iš garsinio signalo ir naktinės lempos (LED juostelė neveikia esant 5 V įtampai). Bet ar tai reiškia, kad turite atsisakyti šios nuostabios savybės? Ne! Čia yra du pasirinkimai: naudokite įprastą 5 mm LED diodą arba 5 V LED juostą. Bet man jau jaučiausi pavargęs, kad visą praeitą savaitę vykdžiau šį projektą, todėl nusprendžiau atsisakyti šios funkcijos. Tačiau iš pradžių naudojau jungiklį, skirtą šviesos funkcijai įjungti arba išjungti laikrodžio skydelį, kad būtų sutaupyta daugiau energijos, tačiau galiausiai LED mirksi, kai jį išjungiu. Klaida tapo funkcija? Nežinau (kas žino, pasakykite man žemiau).

Pasibaigus modifikacijai, laikrodis dabar tarnauja daugiau nei 2 dienas!

Toliau turiu mažiau rimtą laikrodžio problemą. Įkrovimo metu talpos jutiklis išprotėtų, todėl pridedu kitą režimą, kuris visiškai nieko nedaro.

Kalbant apie laiko poslinkį, tai yra labai nepatogu kiekvieną dieną prijungti prie kompiuterio, kad jį iš naujo nustatytumėte, todėl pridėjau dar vieną režimą, kuris nustatys minutę iki 30 ir sekundę iki 0. Tai reiškia, kad galite jį iš naujo nustatyti bet kurią valandą!

Rekomenduojamas: