Indholdsfortegnelse:

DIY Arduino binær vækkeur: 14 trin (med billeder)
DIY Arduino binær vækkeur: 14 trin (med billeder)

Video: DIY Arduino binær vækkeur: 14 trin (med billeder)

Video: DIY Arduino binær vækkeur: 14 trin (med billeder)
Video: 10 ЭЛЕКТРОННЫХ МОДУЛЕЙ ИЗ КИТАЯ С АЛИЭКСПРЕСС. КОНКУРС. 2024, November
Anonim
DIY Arduino binær vækkeur
DIY Arduino binær vækkeur
DIY Arduino binær vækkeur
DIY Arduino binær vækkeur
DIY Arduino binær vækkeur
DIY Arduino binær vækkeur

Det er det klassiske binære ur igen! Men denne gang med endnu flere ekstra funktioner! I denne instruktive vil jeg vise dig, hvordan du bygger et binært vækkeur med Arduino, der ikke kun kan vise dig tid, men dato, måned, selv med timer og alarmfunktioner, der også kan bruges som sengelampe! Lad os komme i gang uden videre!

Bemærk: Dette projekt bruger ikke et RTC -modul, så nøjagtigheden afhænger af det bord, du har brugt. Jeg har inkluderet en korrigerende mekanisme, der vil korrigere tidsdrift over en bestemt periode, men du bliver nødt til at eksperimentere rundt for at finde den korrekte værdi for tidsperioden (mere om dette nedenfor), og selv med korrigerende mekanisme vil den stadig glide over lang tid (sammenlignet med uden en). Hvis nogen er interesseret, er du velkommen til at implementere brugen af RTC -modul i dette projekt

Forbrugsvarer

5 mm LED (af enhver farve, jeg brugte 13 hvide lysdioder med en RGB LED som indikator) --- 14 stk

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

Mikrokontakt --- 1 stk

Lille stykke aluminiumsfolie

Monteringsbræt (til kabinet, men design gerne dit eget)

Stykke hvidt papir (eller enhver anden farve)

Noget plastfilm (den bruges som omslag til bog)

Flok ledninger

Summer --- 1 stk

NPN transistor --- 1 stk

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

Strømforsyning til projektet (jeg brugte li-on batteri)

5050 LED -strip og en skydekontakt (valgfri)

Trin 1: Tilslut kredsløbet

Tilslut kredsløbet!
Tilslut kredsløbet!

Jeg deler dette trin op i:

1) summeren

2) LED -panelet

3) kontakten (trykknap)

4) LED -strimmel

5) Kapacitanssensoren

6) Strømforsyning

7) Tilslut dem alle til Arduino

For det meste er dette bare et "følg skematisk" trin. Så tjek skematisk ovenfor eller download og udskriv det endda!

Trin 2: Forberedelse af summeren

Forberedelse af summeren
Forberedelse af summeren
Forberedelse af summeren
Forberedelse af summeren
Forberedelse af summeren
Forberedelse af summeren

Hvis du har brugt summer med Arduino før, ved du, at hvis vi forbinder det direkte med Arduino, vil det ikke være højt nok. Så vi har brug for en forstærker. For at konstruere forstærkeren har vi brug for en NPN -transistor (stort set enhver NPN vil fungere, jeg brugte S9013, fordi jeg fik den fra et gammelt projekt), og en vis modstand for at begrænse strømmen. For at starte skal du først identificere kollektoren, emitteren og bunden af transistoren. En lille smule googling af databladet virker til dette. Lod derefter transistorens kollektor til summerens negative terminal. På summerens positive terminal lodder vi bare et stykke ledning til det, så vi senere kan lodde det til vores Arduino. Herefter loddes 500R (eller en lignende modstandsværdi) modstand til bunden af transistoren og fra modstanden, loddes endnu et stykke ledning til fremtidig brug. Endelig loddes de to 10R -modstande i serie til transistorens emitter og tilslutter en anden ledning fra modstandene.

Se virkelig skematisk.

p/s: Jeg ved stadig ikke rigtig, hvordan jeg skal vælge modstand til transistor på det tidspunkt, jeg skrev dette. Den værdi, jeg brugte, vælges empirisk.

Trin 3: Forberedelse af LED -panelet

Klargøring af LED -panelet
Klargøring af LED -panelet
Forberedelse af LED -panelet
Forberedelse af LED -panelet
Forberedelse af LED -panelet
Forberedelse af LED -panelet

Sæt lysdioderne og modstanden i prototypebordet i overensstemmelse hermed og lod. Det er det. Følg skematisk. Hvis du er interesseret i afstanden, jeg brugte, 3 huller fra hinanden for hver kolonne og to huller fra hinanden for hver række (se billedet). Og indikatorlampen? Jeg tilsluttede det tilfældigt.

Efter lodning af lysdioder og modstand til tavlen skal du forbinde alle de positive terminaler på lysdioder sammen. Derefter loddes lodtråde en efter en til hver af modstanden ved de negative terminaler på lysdioder, så vi kan lodde dem til Arduino senere.

BEMÆRK: Du kan blive forvirret over dette trin. Husk i stedet for at forbinde al jord sammen, forbinder vi alle positive terminaler sammen og negative terminaler til den enkelte pin på Arduino. Således bruger vi Arduino GPIO -stiften som jorden, ikke Vcc. Hvis du ved et uheld forbinder det baglæns, skal du ikke bekymre dig. Du kan ændre alt HIGH til LOW og LOW til HIGH i LED -kontrolfunktionen.

Trin 4: Forberedelse af kontakten (trykknap faktisk)

Klargøring af kontakten (trykknap faktisk)
Klargøring af kontakten (trykknap faktisk)
Klargøring af kontakten (trykknap faktisk)
Klargøring af kontakten (trykknap faktisk)
Klargøring af kontakten (trykknap faktisk)
Klargøring af kontakten (trykknap faktisk)

Til kontakten (jeg kalder det switch, fordi jeg brugte mikro-switch, men du ved, at det er trykknap), har vi brug for en 4k7 pull-down modstand og selvfølgelig selve kontakten. Ah, glem ikke at forberede nogle ledninger. Start med at lodde modstanden og et stykke ledning til mikrocontaktens fælles jord (COM). Derefter loddes endnu et stykke ledning til den normalt åbne (NO) af mikrokontakten. Slut endelig en anden ledning til modstanden. Fastgør det med lidt varm lim.

Videnshjørne: Hvorfor har vi brug for en pull-down-modstand?

"Hvis du afbryder den digitale I/O -pin fra alt, kan LED'en blinke uberegneligt. Dette skyldes, at indgangen er" flydende " - det vil sige, at den tilfældigt vender tilbage enten HØJ eller LAV. Derfor har du brug for en pull -up eller nedtrækningsmodstand i kredsløbet. " - Kilde: Arduino websted

Trin 5: Forberedelse af LED Strip

Forberedelse af LED Strip
Forberedelse af LED Strip
Forberedelse af LED Strip
Forberedelse af LED Strip

LED -strip er til sengelampe, som er valgfri. Tilslut bare LED -strimmel og skydekontakt i serie, ikke noget særligt.

Trin 6: Forberedelse af kapacitanssensoren

Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren
Klargøring af kapacitanssensoren

Ok se billedet. Grundlæggende vil vi bare vedhæfte tråden til et lille stykke aluminiumsfolie (fordi aluminiumsfolie ikke kan loddes) og tape den derefter på et lille stykke monteringsbræt. Venlig påmindelse, sørg for at du ikke tape aluminiumsfolien helt fast. Lad noget af det blive udsat for direkte kontakt.

Trin 7: Forberedelse af strømforsyningen

Forberedelse af strømforsyningen
Forberedelse af strømforsyningen
Forberedelse af strømforsyningen
Forberedelse af strømforsyningen
Forberedelse af strømforsyningen
Forberedelse af strømforsyningen

Da jeg brugte li-on batteri som strømforsyning, har jeg brug for et TP4056-modul til opladning og beskyttelse og en boost-konverter til at konvertere spændingen til 9v. Hvis du besluttede at bruge 9V vægadapter, har du muligvis brug for et DC -stik, eller bare tilslutte det direkte. Bemærk, at modstandsværdien for forstærkeren er designet til 9V, og hvis du vil bruge anden spænding, skal du muligvis ændre modstanden.

Trin 8: Tilslut dem til Arduino

Tilslutter dem til Arduino
Tilslutter dem til Arduino
Tilslutter dem til Arduino
Tilslutter dem til Arduino
Tilslutter dem til Arduino
Tilslutter dem til Arduino

Følg skematisk! Følg skematisk! Følg skematisk!

Tilslut ikke den forkerte pin, ellers bliver tingene underlige.

Trin 9: Kapsling

Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet

Dimensionen på mit design er 6,5 cm*6,5 cm*8 cm, så det er lidt omfangsrigt. Den består af et frontvindue til LED -display og topvindue til sengelampen. For mit design, se billeder.

Trin 10: Programmeringstid

Image
Image
Programmeringstid!
Programmeringstid!

Download min skitse herunder og upload til din Arduino. Hvis du ikke ved, hvordan du gør dette, gider du ikke gøre dette projekt! Næh bare sjov, her er en god tutorial om det: Upload skitse til arduino

Åbn derefter den serielle skærm, og du skal se den udsende den aktuelle tid. Sådan gør du for at indstille tiden.

Sådan indstilles time: h, XX - hvor xx er den aktuelle time

Sådan indstilles minut: min, XX - xx er det aktuelle minut

For at indstille sekund: s, XX

For at indstille dato: d, XX

For at indstille måned: man, XX

Når ovenstående kommentar er udført, skulle den returnere dig den værdi, du lige har angivet. (For eksempel når du indstiller time med h, 15, skal den returnere Time: 15 i den serielle skærm.

For kapacitanssensoren skal du muligvis kalibrere den, før den fungerer. For at gøre dette skal du trykke to gange på mikrokontakten og se på den serielle skærm. Det skal udsende en masse numre. Sæt nu fingeren på kapacitanssensoren, og se noter rækkevidden af nummeret. Rediger derefter variablen "captrigger". Lad os sige, at du får 20-30, når du trykker på det, og sæt derefter captrigger til 20.

Skitsen bruger ADCTouch -bibliotek, sørg for at du har installeret det.

Trin 11: Korrigerende mekanisme

Perioden for korrektionsmekanisme i min kode er indstillet til den, der er nøjagtig for mig. Hvis tiden stadig ikke er præcis, skal du ændre værdien af variablen "corrdur"

Corrdur er nu standard til 0 i den seneste opdatering.

Værdien af corrdur betyder, hvor mange millisekunder der skal til for at bremse et sekund

For at finde ud af værdien af corrdur, brug formlen:

2000/(y-x)/x)

hvor x = den faktiske varighed af tiden, der er gået, og y = den tid, der er gået for uret, begge i sekund

For at finde værdien af x og y skal du lave et lille eksperiment.

Indstil urets tid til den faktiske tid, og registrer den første tid (den faktiske starttid og urets starttid bør være den samme). Efter et stykke tid (få timer) registreres den endelige faktiske tid og urets sidste tid.

x = faktisk sluttid-indledende tid og y = ur sidste tid-starttid

Skift derefter værdien af corrdur i koden, og upload igen til Arduino.

Gentag derefter testen, og denne gang ændrede formlen til:

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

Hvor x og y er det samme som før, mens z er den aktuelle corrdur -værdi.

Upload igen, og foretag testen igen og igen, indtil den er præcis nok til dig.

Hvis dit ur stadig fremskynder selv corrdur er indstillet til 0 (betyder ingen korrigerende mekanisme), skal du ændre den anden ++ til anden- i korrigeringsmekanismens del af koden (jeg kommenterede det), indstil corrdur til 0, find derefter nej. millisekund tager det at fremskynde et sekund.

Trin 12: Sådan bruges alle funktioner

Image
Image

Du kan skifte tilstand ved at trykke på mikrokontakten.

I den første tilstand viser den simpelthen tid. Hvis indikatorlampen blinker 1 gang i sekundet, er alarmen slukket. Hvis 2 gange i sekundet, er alarmen slået til. Du kan slumre alarmen i 10 minutter i første tilstand ved at trykke på kapacitanssensoren.

I anden tilstand viser den dato. At trykke på kapacitanssensoren gør ingenting.

I tredje tilstand kan du indstille timer. Ved at trykke på kapacitanssensoren tændes timeren, og du skal se indikatorlampen begynde at blinke. Kapacitanssensor bruges også til at indstille timertiden. Timerens rækkevidde er 1 minut til 59 minutter.

I fjerde tilstand kan du indstille alarmtiden ved hjælp af kapacitanssensor

I femte tilstand kan du indstille alarmminutten ved hjælp af kapacitanssensor.

I sjette tilstand vil tryk på kapacitanssensoren nulstille minut til 30 og sekund til 0 uden at ændre time. Det betyder, så længe dit ur ikke driver mere end 30 minutter, kan du kalibrere det igen ved hjælp af denne tilstand.

Syvende tilstand er gør ingenting -funktionen, hvis kapacitanssensoren glider ud under opladning.

Åh, for at afbryde alarmen, skal du bare trykke på mikrokontakten. (SENESTE OPDATERING TIL AT INKLUDE ALARM SNOOZE)

Hvad med at læse uret? Det er nemt! Læsning af binært ur - Wikihow Du kan føle dig mærkelig i starten, men du får brug for det!

Trin 13: Konklusion

Konklusion
Konklusion
Konklusion
Konklusion

Hvorfor startede jeg dette projekt. I første omgang er det fordi jeg har et gammelt digitalt ur, der ligger og jeg vil gøre det til et vækkeur. Desværre viser det gamle ur sig at være gået i stykker. Så jeg var ligesom hvorfor ikke bygge en ved hjælp af Arduino? Med en lille smule google -søgning fandt jeg dette binære urprojekt uden RTC på instruerbart af Cello62. Det har dog ikke den vækkeurfunktion, jeg ønsker, så jeg tager koden og ændrer den selv. Og projektet er født. Desuden så jeg urkonkurrencen kører på instruerbar for nylig, hvilket gav mig endnu mere motivation til at gøre dette. Anyway, dette er stadig mit første projekt, der bruger Arduino, så masser af mulige forbedringer.

Fremtidig forbedring:

1) Brug RTC

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

3) Uanset hvilken funktion jeg tænker på

Trin 14: Opdatering: Efter en uges brug

Opdatering: Efter en uges brug
Opdatering: Efter en uges brug
Opdatering: Efter en uges brug
Opdatering: Efter en uges brug
Opdatering: Efter en uges brug
Opdatering: Efter en uges brug

Bortset fra det åbenlyse problem - tidsdrift, er det næste, jeg vil sige, strømforbrug. Først og fremmest træder jeg spændingen op til 9v, som derefter vil blive trappet ned af den lineære regulator i Arduino. Den lineære regulator er meget ineffektiv. Uret holder kun en DAG. Det betyder, at jeg skal genoplade det hver dag. Det er ikke den største aftale, før du indser, at hele systemet kun er omkring 50% effektivt. I betragtning af at mit batteri er 2000mAh, ville jeg være i stand til at beregne den spild, der spildes hver dag.

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

Det er 1,486kWh om året! Det kan bruges til at koge 283 g vand (fra 25 C til 100 C)? Men alligevel vil jeg forbedre effektiviteten af uret. Måden at gøre dette på er slet ikke at bruge den lineære regulator. Det betyder, at vi skal justere boost -konverteren til at output 5V direkte i 5V pin på Arduino. For derefter at minimere den spild, der er spildt endnu, skal jeg fjerne de to indbyggede LED (pin13 og strøm), da de spilder 0,95Wh om dagen. Desværre er jeg helt noob på SMD lodning, så den eneste måde for mig at gøre dette på er at skære skinnen på brættet. Efter dette skal jeg fjerne emittermodstanden på summeren og sengelampen (LED -strimmel virker ikke ved 5V). Men betyder det, at du skal opgive den fantastiske funktion? Ingen! Du har to valg her: Brug den normale 5mm LED -diode, eller brug 5V LED -strimmel. Men for mig følte jeg allerede træt af at lave dette projekt i hele sidste uge, så jeg besluttede at opgive denne funktion. Jeg brugte imidlertid kontakten oprindeligt til lysfunktionen til at tænde eller slukke urpanelet for yderligere at spare energi, men ender med at LED'en blinker, når jeg slukker den. Bug blive funktion? Jeg ved det ikke (nogen ved det, fortæl mig det herunder).

Ved afslutningen af ændringen holder uret nu i mere end 2 dage!

Dernæst har jeg et mindre alvorligt problem med uret. Under opladning ville kapacitanssensoren gå amok, så jeg tilføjer en anden tilstand, der ikke gør noget.

Med hensyn til tidsdrift, da det er meget ubelejligt at tilslutte computeren til hverdag for at nulstille den, har jeg tilføjet en anden tilstand, der sætter minut til 30 og andet til 0. Det betyder, at du kan nulstille den på halv tre timer!

Anbefalede: