Innholdsfortegnelse:

DIY Arduino binær vekkerklokke: 14 trinn (med bilder)
DIY Arduino binær vekkerklokke: 14 trinn (med bilder)

Video: DIY Arduino binær vekkerklokke: 14 trinn (med bilder)

Video: DIY Arduino binær vekkerklokke: 14 trinn (med bilder)
Video: Logic Gates Learning Kit #2 - Transistor Demo 2024, Juli
Anonim
DIY Arduino binær vekkerklokke
DIY Arduino binær vekkerklokke
DIY Arduino binær vekkerklokke
DIY Arduino binær vekkerklokke
DIY Arduino binær vekkerklokke
DIY Arduino binær vekkerklokke

Det er den klassiske binære klokken igjen! Men denne gangen med enda mer tilleggsfunksjon! I denne instruksen vil jeg vise deg hvordan du bygger en binær vekkerklokke med Arduino som ikke bare kan vise deg tid, men dato, måned, selv med timer og alarmfunksjoner som også kan brukes som nattlampe! Uten videre må vi komme i gang!

Merk: Dette prosjektet bruker ikke en RTC -modul, så nøyaktigheten avhenger av ombordet du brukte. Jeg har inkludert en korrigerende mekanisme som vil korrigere tidsdrift over en viss tidsperiode, men du må eksperimentere rundt for å finne riktig verdi for tidsperioden (Mer om dette nedenfor), og selv med korrigerende mekanisme vil den fortsatt drive over lang tid (sammenlignet med uten en). Hvis noen er interessert, må du gjerne implementere bruken av RTC -modulen i dette prosjektet

Rekvisita

5 mm LED (av hvilken som helst farge, jeg brukte 13 hvite lysdioder med en RGB LED som indikator) --- 14 stk

Arduino Nano (andre kan fungere) --- 1 stk

Mikrobryter --- 1 stk

Lite stykke aluminiumsfolie

Monteringsbrett (for innkapsling, men design gjerne ditt eget)

Stykke hvitt papir (eller annen farge)

Noe plastfilm (den som ble brukt som omslag på boken)

En haug med ledninger

Summer --- 1 stk

NPN transistor --- 1 stk

Motstander 6k8 --- 14 stk, 500R --- 1 stk, 20R (10Rx2) --- 1 stk, 4k7 --- 1stk

Strømforsyning til prosjektet (jeg brukte li-on batteri)

5050 LED -stripe og glidebryter (valgfritt)

Trinn 1: Koble til kretsen

Koble til kretsen!
Koble til kretsen!

Jeg vil dele dette trinnet inn i:

1) Summer -delen

2) LED -panelet

3) Bryteren (trykknapp)

4) LED -stripe

5) Kapasitanssensoren

6) Strømforsyning

7) Koble dem alle til Arduino

Mesteparten av tiden er dette bare et "følg skjematisk" trinn. Så sjekk skjemaet ovenfor eller last ned og skriv den ut!

Trinn 2: Klargjøring av summerdelen

Klargjøre summeren
Klargjøre summeren
Klargjøre summeren
Klargjøre summeren
Klargjøre summeren
Klargjøre summeren

Hvis du har brukt summer med Arduino før, vet du at hvis vi kobler den direkte til Arduino, vil den ikke være høy nok. Så vi trenger en forsterker. For å konstruere forsterkeren trenger vi en NPN -transistor (i utgangspunktet vil en hvilken som helst NPN fungere, jeg brukte S9013 fordi jeg fikk den fra et gammelt prosjekt), og litt motstand for å begrense strømmen. For å starte, identifiser først kollektoren, emitteren og basen til transistoren. Litt googling av databladet vil fungere for dette. Deretter loddes samleren til transistoren til den negative terminalen på summeren. På den positive terminalen på summeren lodder vi bare et stykke ledning til det, slik at vi kan lodde det til Arduino senere. Etter dette lodder du 500R (eller en lignende verdi av motstand) motstanden til basen på transistoren og fra motstanden, og lodder et annet stykke ledning for fremtidig bruk. Til slutt lodder du de to 10R -motstandene i serie til transistorens sender og kobler en annen ledning fra motstandene.

Se virkelig skjematisk.

s/s: Jeg vet fortsatt ikke hvordan jeg skal velge motstand for transistoren på det tidspunktet jeg skrev dette. Verdien jeg brukte er valgt empirisk.

Trinn 3: Forberede LED -panelet

Forbereder LED -panelet
Forbereder LED -panelet
Forbereder LED -panelet
Forbereder LED -panelet
Forbereder LED -panelet
Forbereder LED -panelet

Koble lysdiodene og motstanden til prototypebrettet deretter og loddetinn. Det er det. Følg skjemaet. Hvis du er interessert i avstanden jeg brukte, 3 hull fra hverandre for hver kolonne og to hull fra hverandre for hver rad (se bildet). Og indikatorlampen? Jeg plugget den tilfeldig.

Etter lodding av lysdiodene og motstanden til brettet, kobler du alle de positive terminalene til lysdiodene sammen. Deretter loddetrådene en etter en til hver av motstanden ved de negative terminalene på lysdioder, slik at vi kan lodde dem til Arduino senere.

MERK: Du kan bli forvirret på dette trinnet. Husk at i stedet for å koble all jord sammen, kobler vi alle positive terminaler sammen og negative terminaler til den enkelte pinnen på Arduino. Dermed bruker vi Arduino GPIO -pinnen som bakken, ikke Vcc. Hvis du ved et uhell kobler den bakover, ikke bekymre deg. Du kan endre HIGH til LOW og LOW til HIGH i LED -kontrollfunksjonen.

Trinn 4: Klargjøre bryteren (trykknapp faktisk)

Klargjøre bryteren (trykknapp faktisk)
Klargjøre bryteren (trykknapp faktisk)
Klargjøre bryteren (trykknapp faktisk)
Klargjøre bryteren (trykknapp faktisk)
Klargjøre bryteren (trykknapp faktisk)
Klargjøre bryteren (trykknapp faktisk)

For bryteren (jeg kaller det switch fordi jeg brukte mikrobryter, men du vet at det er en trykknapp), trenger vi en nedtrekksmotstand på 4 k7 og selvfølgelig selve bryteren. Ah, ikke glem å forberede noen ledninger. Start med å lodde motstanden og et stykke ledning til felles jord (COM) til mikrobryteren. Deretter loddes et annet stykke ledning til mikrobryteren som normalt åpnes (NO). Fest til slutt en annen ledning til motstanden. Fest den med litt varmt lim.

Kunnskapshjørne: Hvorfor trenger vi en nedtrekksmotstand?

"Hvis du kobler den digitale I/O -pinnen fra alt, kan det hende at LED -en blinker uberegnelig. Dette er fordi inngangen er" flytende " - det vil si at den tilfeldig vil returnere enten HØY eller LAV. Derfor trenger du en pull -up eller nedtrekksmotstand i kretsen. " - Kilde: Arduino nettsted

Trinn 5: Forbereder LED -stripe

Forbereder LED -stripe
Forbereder LED -stripe
Forbereder LED -stripe
Forbereder LED -stripe

LED -stripe er til sengelampe, som er valgfri. Bare koble LED -stripe og skyvebryter sammen i serie, ikke noe spesielt.

Trinn 6: Forberedelse av kapasitanssensoren

Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren
Klargjøre kapasitanssensoren

Ok, se bildet. I utgangspunktet skal vi bare feste ledningen til et lite stykke aluminiumsfolie (fordi aluminiumsfolie ikke kan loddes) og teip den på et lite stykke monteringsbrett. Vennlig påminnelse, pass på at du ikke tape aluminiumsfolien helt. La noe av det være utsatt for direkte kontakt.

Trinn 7: Klargjøre strømforsyningen

Klargjøre strømforsyningen
Klargjøre strømforsyningen
Klargjøre strømforsyningen
Klargjøre strømforsyningen
Klargjøre strømforsyningen
Klargjøre strømforsyningen

Siden jeg brukte li-on batteri som strømforsyning, trenger jeg en TP4056-modul for lading og beskyttelse, og en boost-omformer for å konvertere spenningen til 9v. Hvis du bestemte deg for å bruke 9V veggadapter, trenger du kanskje en DC -kontakt, eller bare koble den direkte. Vær oppmerksom på at motstandsverdien for forsterkeren er designet for 9V, og hvis du vil bruke annen spenning, må du kanskje endre motstanden.

Trinn 8: Koble dem til Arduino

Koble dem til Arduino
Koble dem til Arduino
Koble dem til Arduino
Koble dem til Arduino
Koble dem til Arduino
Koble dem til Arduino

Følg skjemaet! Følg skjemaet! Følg skjemaet!

Ikke koble til feil pin, ellers blir det rart.

Trinn 9: Vedlegg

Innhegning
Innhegning
Innhegning
Innhegning
Innhegning
Innhegning
Innhegning
Innhegning

Dimensjonen til designet mitt er 6,5 cm*6,5 cm*8 cm, så det er litt klumpete. Den består av et frontvindu for LED -display og toppvindu for nattlampen. For design, se bilder.

Trinn 10: Programmeringstid

Image
Image
Programmeringstid!
Programmeringstid!

Last ned skissen min nedenfor og last opp til din Arduino. Hvis du ikke vet hvordan du gjør dette, ikke bry deg om å gjøre dette prosjektet! Nei, jeg tuller, her er en god opplæring om det: Last opp skisse til arduino

Åpne deretter seriell skjerm, og du skal se at den viser gjeldende tid. Slik gjør du det for å angi klokkeslettet.

For å stille time: h, XX - der xx er gjeldende time

For å angi minutt: min, XX - xx er gjeldende minutt

For å angi andre: s, XX

For å sette dato: d, XX

For å angi måned: man, XX

Når kommentaren ovenfor er utført, bør den returnere verdien du nettopp har angitt. (For eksempel når du angir time med h, 15, bør den returnere Time: 15 i den serielle skjermen.

For kapasitanssensoren må du kanskje kalibrere den før den fungerer. For å gjøre dette, trykk to ganger på mikrobryteren og se på den serielle skjermen. Det bør levere en haug med tall. Sett nå fingeren på kapasitanssensoren, og se noter rekkevidden til nummeret. Deretter endrer du variabelen "captrigger". La oss si at du får 20-30 når du trykker på den, og sett deretter captrigger til 20.

Skissen bruker ADCTouch -biblioteket, sørg for at du har installert det.

Trinn 11: Korrigeringsmekanisme

Tidsperioden for korrigerende mekanisme i koden min er satt til den som er nøyaktig for meg. Hvis tiden fremdeles ikke er nøyaktig, må du endre verdien til variabelen "corrdur"

Corrdur er nå standard til 0 i siste oppdatering.

Verdien av corrdur betyr hvor mange millisekunder det tar å bremse ned ett sekund

For å finne ut verdien av corrdur, bruk formelen:

2000/(y-x)/x)

der x = faktisk varighet av tid som er gått og y = tid som har gått på klokken, begge i andre

For å finne verdien av x og y, må du gjøre et lite eksperiment.

Still klokkeslettet til den faktiske tiden og registrer den første tiden (faktisk starttid og klokkeslett bør være den samme). Etter en stund (noen timer) kan du registrere den siste faktiske tiden og den siste klokken.

x = faktisk sluttid-initialtid og y = klokke-sluttid-initialtid

Endre deretter verdien av corrdur i koden og last opp på nytt til Arduino.

Gjenta deretter testen, og denne gangen ble formelen endret til:

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

Hvor x og y er det samme som før, mens z er gjeldende korrigeringsverdi.

Last opp igjen og gjør testen om og om igjen til den er presis nok for deg.

Hvis klokken din fremdeles fremskynder selv om corrdur er satt til 0 (betyr ingen korrigeringsmekanisme), må du endre den andre ++ til andre- i korrigeringsmekanismedelen av koden (jeg kommenterte det), sett corrdur til 0, finn deretter nei. millisekund tar det å få fart på ett sekund.

Trinn 12: Slik bruker du alle funksjonene

Image
Image

Du kan endre modus ved å trykke på mikrobryteren.

I den første modusen viser den bare tid. Hvis indikatorlampen blinker 1 gang i sekundet, er alarmen slått av. Hvis 2 ganger per sekund, er alarmen på. Du kan slumre alarmen i 10 minutter i første modus ved å trykke på kapasitanssensoren.

I andre modus viser den dato. Trykk på kapasitanssensoren gjør ingenting.

I tredje modus kan du stille inn tidtaker. Hvis du trykker på kapasitanssensoren, slås timeren på, og du bør se indikatorlampen begynne å blinke. Kapasitanssensor brukes også til å stille tidtakeren. Tidsområdet er fra 1 minutt til 59 minutter.

I fjerde modus kan du stille alarmtid ved hjelp av kapasitanssensor

I femte modus kan du stille alarmminutt ved hjelp av kapasitanssensor.

I sjette modus vil et trykk på kapasitanssensoren nullstille minuttet til 30 og det andre til 0 uten å endre timen. Det betyr at så lenge klokken ikke går over 30 minutter, kan du kalibrere den på nytt ved hjelp av denne modusen.

Syvende modus er gjør ingenting -modus hvis kapasitanssensoren glir ut under lading.

Å, for å avbryte alarmen, bare trykk på mikrobryteren. (SENESTE OPPDATERING FOR ALARM SNOOZE)

Hva med å lese klokken? Det er lett! Lese binær klokke - Wikihow Du kan føle deg rar i begynnelsen, men du blir vant til det!

Trinn 13: Konklusjon

Konklusjon
Konklusjon
Konklusjon
Konklusjon

Hvorfor jeg startet dette prosjektet. I utgangspunktet er det fordi jeg har en gammel digital klokke som ligger og jeg vil gjøre den til en vekkerklokke. Dessverre viser den gamle klokken seg å være ødelagt. Så jeg var som hvorfor ikke bygge en ved hjelp av Arduino? Med litt google -søk fant jeg dette binære klokke -prosjektet uten RTC på instruerbart av Cello62. Den har imidlertid ikke vekkerfunksjonen jeg ønsker, så jeg tar koden og endrer den selv. Og prosjektet er født. Videre så jeg at klokkekonkurransen kjørte på instruerbar nylig, noe som ga meg enda mer motivasjon til å gjøre dette. Uansett, dette er fortsatt mitt første prosjekt som bruker Arduino, så mange mulige forbedringer.

Fremtidig forbedring:

1) Bruk RTC

2) Still alarm eller tid eller timer trådløst!

3) Uansett hvilken funksjon jeg tenker på

Trinn 14: Oppdatering: Etter en ukes bruk

Oppdatering: Etter en ukes bruk
Oppdatering: Etter en ukes bruk
Oppdatering: Etter en ukes bruk
Oppdatering: Etter en ukes bruk
Oppdatering: Etter en ukes bruk
Oppdatering: Etter en ukes bruk

Bortsett fra det åpenbare problemet - tidsdrift, er det neste jeg vil si strømforbruk. Først og fremst trapper jeg spenningen opp til 9v, som deretter trappes ned av den lineære regulatoren i Arduino. Den lineære regulatoren er veldig ineffektiv. Klokken varer bare EN DAG. Det betyr at jeg må lade den hver dag. Det er ikke den største avtalen før du innser at hele systemet bare er omtrent 50% effektivt. Gitt at batteriet mitt er 2000mAh, vil jeg kunne beregne strømforbruket hver dag.

Strømforbruk = (7,4Wh*10%)+(7,4Wh*90%*50%) = 4,07Wh om dagen

Det er 1.486kWh per år! Den kan brukes til å koke 283 g vann (fra 25 C til 100 C)? Men uansett skal jeg forbedre klokkens effektivitet. Måten å gjøre dette på er å ikke bruke den lineære regulatoren i det hele tatt. Det betyr at vi må justere boost -omformeren til å sende 5V direkte inn i 5V -pinnen på Arduino. For å minimere bortkastet strøm ytterligere må jeg fjerne de to LED -lampene om bord (pin13 og strøm), da de vil kaste bort 0,95Wh per dag. Dessverre er jeg helt noob på SMD -lodding, så den eneste måten for meg å gjøre dette på er å kutte skinnen på brettet. Etter dette må jeg fjerne emittermotstanden på summeren og nattlampen (LED -stripe fungerer ikke ved 5V). Men betyr det at du må gi opp den fantastiske funksjonen? Nei! Du har to valg her: Bruk den vanlige 5 mm LED -dioden, eller bruk 5V LED -stripen. Men for meg følte jeg allerede sliten for å gjøre dette prosjektet hele forrige uke, så jeg bestemte meg for å gi opp denne funksjonen. Imidlertid brukte jeg bryteren opprinnelig for lysfunksjonen for å slå på eller av klokkepanelet for å spare energi ytterligere, men ender med at LED -en blinker når jeg slår den av. Bug bli funksjon? Jeg vet ikke (noen vet, vennligst fortell meg det nedenfor).

På slutten av endringen varer klokken nå i mer enn 2 dager!

Neste gang har jeg et mindre alvorlig problem med klokken. Under lading ville kapasitanssensoren blitt gal, så jeg legger til en annen modus som gjør ingenting.

Når det gjelder tidsdrift, siden det er veldig upraktisk å koble til datamaskinen hver dag for å tilbakestille den, har jeg lagt til en annen modus som setter minuttet til 30 og andre til 0. Det betyr at du kan tilbakestille det halv to timer!

Anbefalt: