INHOUDSOPGAWE:

DIY Arduino binêre wekker: 14 stappe (met foto's)
DIY Arduino binêre wekker: 14 stappe (met foto's)

Video: DIY Arduino binêre wekker: 14 stappe (met foto's)

Video: DIY Arduino binêre wekker: 14 stappe (met foto's)
Video: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, November
Anonim
DIY Arduino binêre wekker
DIY Arduino binêre wekker
DIY Arduino binêre wekker
DIY Arduino binêre wekker
DIY Arduino binêre wekker
DIY Arduino binêre wekker

Dit is weer die klassieke binêre klok! Maar hierdie keer met nog meer bykomende funksie! In hierdie instruksies sal ek u wys hoe u 'n binêre wekker met Arduino kan bou, wat u nie net tyd, maar datum, maand, selfs met timer en alarmfunksies kan wys nie, wat ook as bedlampie gebruik kan word! Sonder meer, laat ons begin!

Opmerking: hierdie projek maak nie gebruik van 'n RTC -module nie, dus die akkuraatheid hang af van die bord wat u gebruik het. Ek het 'n regstellende meganisme ingesluit wat tydsverskuiwing oor 'n sekere tydperk sal regstel, maar u sal moet eksperimenteer om die korrekte waarde vir die tydsduur te vind (meer hieroor hieronder), en selfs met regstellende meganisme sal dit steeds dryf oor 'n lang tyd (in vergelyking met sonder een). As iemand belangstel, kan u die gebruik van die RTC -module in hierdie projek implementeer

Voorrade

5 mm LED (van enige kleur, ek gebruik 13 wit LED's met een RGB LED as aanwyser) --- 14 stuks

Arduino Nano (ander werk moontlik) --- 1 stuks

Mikro-skakelaar --- 1 stuks

Klein stukkie aluminiumfoelie

Monteerbord (vir omhulsel, maar ontwerp gerus u eie)

Stukkie wit papier (of enige ander kleur)

'N Paar plastiekfilms (die een wat as boekomslag gebruik word)

Klomp drade

Gonser --- 1 stuks

NPN transistor --- 1 stuks

Weerstanden 6k8 --- 14 stuks, 500R --- 1 stuks, 20R (10Rx2) --- 1 stuks, 4k7 --- 1 stuks

Kragtoevoer vir die projek (ek het 'n Li-on-battery gebruik)

5050 LED -strook en 'n skuifskakelaar (opsioneel)

Stap 1: Koppel die stroombaan

Koppel die stroombaan!
Koppel die stroombaan!

Ek sal hierdie stap verdeel in:

1) Die gonser deel

2) Die LED -paneel

3) Die skakelaar (drukknoppie)

4) LED -strook

5) Die kapasitansiesensor

6) Kragtoevoer

7) Koppel almal aan Arduino

Meestal is dit slegs 'n 'volg die skematiese' stap. Kyk dus na die skema hierbo of laai dit af en druk dit af!

Stap 2: Berei die gonsdeel voor

Voorbereiding van die gonser deel
Voorbereiding van die gonser deel
Voorbereiding van die gonser deel
Voorbereiding van die gonser deel
Voorbereiding van die gonser deel
Voorbereiding van die gonser deel

As u al voorheen 'n zoemer met Arduino gebruik het, weet u dat dit nie hard genoeg sal wees as ons dit direk met Arduino koppel nie. Ons benodig dus 'n versterker. Om die versterker te bou, benodig ons 'n NPN -transistor (basies sal enige NPN werk, ek het S9013 gebruik omdat ek dit van 'n ou projek gekry het) en 'n weerstand om die stroom te beperk. Om te begin, identifiseer eers die kollektor, emitter en basis van die transistor. 'N Bietjie googling van die datablad sal hiervoor werk. Soldeer dan die kollektor van die transistor aan die negatiewe terminaal van die zoemer. By die positiewe terminaal van die zoemer, soldeer ons net 'n stuk draad daaraan sodat ons dit later aan ons Arduino kan soldeer. Soldeer daarna die weerstand van 500R (of enige soortgelyke weerstand) aan die basis van die transistor en aan die weerstand, soldeer nog 'n stuk draad vir toekomstige gebruik. Soldeer uiteindelik die twee 10R -weerstand in serie aan die emitter van die transistor en verbind nog 'n draad van die weerstande.

Verwys regtig na skematiese.

p/s: Ek weet nog steeds nie presies hoe om 'n weerstand vir die transistor te kies nie. Die waarde wat ek gebruik het, word empiries gekies.

Stap 3: Berei die LED -paneel voor

Berei die LED -paneel voor
Berei die LED -paneel voor
Berei die LED -paneel voor
Berei die LED -paneel voor
Berei die LED -paneel voor
Berei die LED -paneel voor

Koppel die LED's en weerstand dienooreenkomstig aan die prototipe bord en soldeer. Dis dit. Volg die skematiese. As u belangstel in die spasiëring wat ek gebruik het, drie gate uitmekaar vir elke kolom en twee gate uitmekaar vir elke ry (sien prentjie). En die aanwyser -LED? Ek het dit lukraak ingeprop.

Nadat die LED's en weerstand aan die bord gesoldeer is, verbind al die positiewe terminale van LED's aan mekaar. Vervolgens soldeer drade een vir een na elk van die weerstand by die negatiewe terminale van LED's, sodat ons dit later aan Arduino kan soldeer.

LET WEL: hierdie stap kan moontlik deurmekaar raak. Onthou, in plaas daarvan om alle grond saam te koppel, verbind ons alle positiewe terminale saam en die negatiewe terminaal met die individuele pen op Arduino. Ons gebruik dus die Arduino GPIO -pen as grond, nie Vcc nie. Moenie bekommerd wees as u dit per ongeluk agteruit koppel nie. U kan al die HIGH na LOW en LOW na HIGH verander in die ledcontrol -funksie.

Stap 4: Die skakelaar voorberei (eintlik die drukknop)

Die skakelaar voorberei (eintlik die knoppie)
Die skakelaar voorberei (eintlik die knoppie)
Die skakelaar voorberei (eintlik die knoppie)
Die skakelaar voorberei (eintlik die knoppie)
Die skakelaar voorberei (eintlik die knoppie)
Die skakelaar voorberei (eintlik die knoppie)

Vir die skakelaar (ek sal dit skakelaar noem omdat ek 'n mikroskakelaar gebruik het, maar u weet dat dit 'n drukknop is), benodig ons 'n aftrekweerstand van 4 k7 en natuurlik die skakelaar self. Ag, moenie vergeet om 'n paar drade voor te berei nie. Begin deur die weerstand en 'n stuk draad aan die gemeenskaplike grond (COM) van die mikroskakelaar te soldeer. Soldeer dan nog 'n stuk draad aan die normaalweg oopgemaak (NO) van die mikroskakelaar. Heg laastens nog 'n draad aan die weerstand. Bevestig dit met 'n bietjie warm gom.

Kennishoek: waarom het ons 'n aftrekweerstand nodig?

"As u die digitale I/O -pen van alles ontkoppel, kan die LED onreëlmatig knip. Dit is omdat die invoer" dryf " - dit wil sê, dit sal willekeurig HIGH of LOW terugkeer. Daarom moet u optrek of aftrekweerstand in die stroombaan. " - Bron: Arduino-webwerf

Stap 5: Berei LED -strook voor

Voorbereiding van LED -strook
Voorbereiding van LED -strook
Voorbereiding van LED -strook
Voorbereiding van LED -strook

LED -strook is vir die bedlampie, opsioneel. Koppel net die LED -strook en die skuifskakelaar in serie, niks spesiaals nie.

Stap 6: Voorbereiding van die kapasitansiesensor

Voorbereiding van die kapasitansiesensor
Voorbereiding van die kapasitansiesensor
Voorbereiding van die kapasitansiesensor
Voorbereiding van die kapasitansiesensor
Voorbereiding van die kapasitansie sensor
Voorbereiding van die kapasitansie sensor
Voorbereiding van die kapasitansie sensor
Voorbereiding van die kapasitansie sensor

Ok, verwys na die prentjie. Eintlik gaan ons die draad net aan 'n klein stukkie aluminiumfoelie heg (want aluminiumfoelie kan nie gesoldeer word nie) en plak dit dan op 'n klein stuk monteerbord. Onthou, maak seker dat u die aluminiumfoelie nie heeltemal plak nie. Laat 'n deel daarvan blootgestel vir direkte kontak.

Stap 7: Voorbereiding van die kragtoevoer

Voorbereiding van die kragtoevoer
Voorbereiding van die kragtoevoer
Voorbereiding van die kragtoevoer
Voorbereiding van die kragtoevoer
Voorbereiding van die kragtoevoer
Voorbereiding van die kragtoevoer

Aangesien ek 'n Li-on-battery as kragtoevoer gebruik het, benodig ek 'n TP4056-module vir laai en beskerming, en 'n hupstootomskakelaar om die spanning na 9v om te skakel. As u besluit het om 'n 9V -muuradapter te gebruik, benodig u moontlik 'n DC -aansluiting of koppel dit direk. Let daarop dat die weerstandwaarde vir die versterker ontwerp is vir 9V en as u ander spanning wil gebruik, moet u die weerstand moontlik verander.

Stap 8: Verbind hulle met Arduino

Koppel hulle aan Arduino
Koppel hulle aan Arduino
Koppel hulle aan Arduino
Koppel hulle aan Arduino
Koppel hulle aan Arduino
Koppel hulle aan Arduino

Volg die skema! Volg die skema! Volg die skema!

Moenie die verkeerde pen aansluit nie, anders word dinge vreemd.

Stap 9: Omhulsel

Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel

Die grootte van my ontwerp is 6,5 cm*6,5 cm*8 cm, so dit is 'n bietjie lywig. Dit bestaan uit 'n voorruit vir LED -skerm en 'n boonste venster vir die bedlamp. Raadpleeg foto's vir my ontwerp.

Stap 10: programmeertyd

Image
Image
Programmeertyd!
Programmeertyd!

Laai my skets hieronder af en laai dit op na u Arduino. As u nie weet hoe u dit moet doen nie, moet u nie hierdie projek doen nie! Ek maak net 'n grap, hier is 'n goeie handleiding: laai skets op na arduino

Maak dan die seriële monitor oop, en u moet die huidige tyd sien. Hier is hoe u dit kan doen om die tyd in te stel.

Om uur in te stel: h, XX - waar xx die huidige uur is

Om minuut in te stel: min, XX - xx is die huidige minuut

Om tweede te stel: s, XX

Om datum vas te stel: d, XX

Om maand in te stel: ma, XX

As bogenoemde opmerking uitgevoer word, moet dit die waarde wat u pas gestel het, aan u teruggee. (As u byvoorbeeld uur met h, 15 stel, moet Uur: 15 in die seriële monitor terugkeer.

Vir die kapasitansiesensor moet u dit moontlik kalibreer voordat dit werk. Om dit te doen, druk twee keer op die mikroskakelaar en kyk na die seriële monitor. Dit moet 'n klomp getalle lewer. Plaas nou u vinger op die kapasitansiesensor en let op die omvang van die getal. Pas dan die veranderlike "captrigger" aan. Gestel jy kry 20-30 as jy daarop druk, en stel dan captrigger op 20.

Gebruik die ADCTouch -biblioteek in die skets, maak seker dat u dit geïnstalleer het.

Stap 11: Regstellende meganisme

Die tydsduur vir die regstellende meganisme in my kode is ingestel op die een wat vir my akkuraat is. As die tyd nog nie akkuraat is nie, moet u die waarde van die veranderlike "corrdur" verander

Die corrdur is nou standaard op 0 in die nuutste opdatering.

Die waarde van corrdur beteken hoeveel millisekondes dit neem om een sekonde te vertraag

Gebruik die formule om die waarde van corrdur uit te vind:

2000/(y-x)/x)

waar x = werklike tydsverloop en y = tydsverloop van die klok, beide in tweede

Om die waarde van x en y te vind, moet u 'n bietjie eksperimenteer.

Stel die tyd van die horlosie op die werklike tyd en teken die aanvanklike tyd aan (die werklike aanvangstyd en die aanvangstyd moet dieselfde wees). Teken na 'n rukkie ('n paar uur) die finale werklike tyd en die finale tyd van die klok aan.

x = werklike finale tyd-aanvanklike tyd en y = klok finale tyd-aanvanklike tyd

Verander dan die waarde van corrdur in die kode en laai weer op na die Arduino.

Herhaal dan die toets en hierdie keer het die formule verander na:

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

Waar x en y dieselfde ding is as voorheen, terwyl z die huidige corrdur -waarde is.

Laai weer op en doen die toets telkens totdat dit presies genoeg is vir u.

As u horlosie nog steeds versnel, selfs corrdur op 0 gestel is (beteken geen regstellende meganisme nie), moet u die tweede ++ na tweede verander- in die regstellende meganisme deel van die kode (ek het kommentaar gelewer), stel corrdur op 0, vind dan die nr. van 'n millisekonde neem dit om 'n sekonde te bespoedig.

Stap 12: Hoe om al die funksies te gebruik

Image
Image

U kan die modus verander deur op die mikroskakelaar te druk.

In die eerste modus vertoon dit eenvoudig tyd. As die aanwyserlig 1 keer per sekonde flikker, is die alarm af. As die alarm 2 keer per sekonde is, is die alarm aan. U kan die alarm vir 10 minute in die eerste modus sluimer deur op die kapasitansiesensor te druk.

In die tweede modus word die datum vertoon. Deur op die kapasitansiesensor te druk, doen niks.

In die derde modus kan u die timer instel. Deur op die kapasitansiesensor te druk, word die timer aangeskakel en die aanwyserlig moet begin flikker. Kapasiteitsensor word ook gebruik om die tydtyd in te stel. Die tydreikwydte is 1 minuut tot 59 minute.

In die vierde modus kan u die alarmuur instel met behulp van kapasitansiesensor

In die vyfde modus kan u die alarmminuut instel met behulp van kapasitansiesensor.

In die sesde modus, as u op die kapasitansiesensor druk, word die minuut teruggestel op 30 en die tweede na 0 sonder om die uur te verander. Dit is gemeen, solank u horlosie nie meer as 30 minute loop nie, kan u dit met hierdie modus herkalibreer.

Die sewende modus is 'niksdoen' -modus, as die kapasitansiesensor uitkom tydens die laai.

Om die alarm uit te skakel, druk net op die mikroskakelaar. (LAATSTE UPDATE OM ALARM SNOOZE IN TE SLUIT)

Wel, hoe gaan dit met die lees van die klok? Dit is maklik! Lees Binary Clock - Wikihow U voel aanvanklik dalk vreemd, maar u sal daaraan gewoond raak!

Stap 13: Gevolgtrekking

Afsluiting
Afsluiting
Afsluiting
Afsluiting

Waarom ek met hierdie projek begin het. Dit is aanvanklik omdat ek 'n ou digitale horlosie het en ek wil dit in 'n wekker verander. Ongelukkig blyk die ou horlosie stukkend te wees. Ek wou dus nie een bou met Arduino nie? Met 'n bietjie Google -soektog, vind ek hierdie binêre klokprojek sonder RTC op instruksies van Cello62. Dit het egter nie die gewenste wekkerfunksie nie, so ek neem die kode en verander dit self. En die projek word gebore. Boonop het ek die klokwedstryd onlangs op instruksies sien loop, wat my nog meer motivering gegee het om dit te doen. Dit is in elk geval nog steeds my eerste projek wat Arduino gebruik, so baie moontlike verbeterings.

Toekomstige verbetering:

1) Gebruik RTC

2) Stel alarm of tyd of timer draadloos in!

3) Wat ook al die funksie waaraan ek dink

Stap 14: Opdatering: Na 'n week se gebruik

Opdatering: Na 'n week se gebruik
Opdatering: Na 'n week se gebruik
Opdatering: Na 'n week se gebruik
Opdatering: Na 'n week se gebruik
Opdatering: Na 'n week se gebruik
Opdatering: Na 'n week se gebruik

Afgesien van die voor die hand liggende probleem - tydsverloop, is die volgende een die kragverbruik. Eerstens verhoog ek die spanning tot 9v, wat dan deur die lineêre reguleerder in Arduino verlaag word. Die lineêre reguleerder is baie ondoeltreffend. Die klok hou net EEN DAG. Dit beteken dat ek dit elke dag moet herlaai. Dit is nie die grootste ooreenkoms voordat u besef dat die hele stelsel slegs ongeveer 50% doeltreffend is nie. Aangesien my battery 2000mAh is, kan ek die vermorsde krag elke dag bereken.

Vermorsde krag = (7,4Wh*10%)+(7,4Wh*90%*50%) = 4,07Wh per dag

Dit is 1,486kWh per jaar! Dit kan gebruik word om 283 g water (van 25 C tot 100 C) te kook? Maar in elk geval, ek gaan die doeltreffendheid van die klok verbeter. Die manier om dit te doen is om glad nie die lineêre reguleerder te gebruik nie. Dit beteken dat ons die boost -omskakelaar moet aanpas om 5V direk in die 5V -pen op Arduino te lewer. Om die krag wat nog meer vermors word, te verminder, moet ek die twee LED's aan boord verwyder (pin13 en krag), aangesien dit 0,95Wh per dag sal mors. Ongelukkig is ek glad nie in SMD soldeer nie, so die enigste manier om dit te doen is om die spoor op die bord te sny. Hierna moet ek die emitterweerstand op die zoemer en die bedlampie verwyder (LED -strook werk nie by 5V nie). Maar beteken dit dat u die wonderlike funksie moet prysgee? Geen! U het hier twee keuses: Gebruik die normale 5 mm LED -diode, of gebruik 'n 5V LED -strook. Maar vir my was ek al moeg daarvoor om die afgelope week hierdie projek te doen, so ek het besluit om hierdie funksie op te gee. Ek het egter die skakelaar oorspronklik gebruik vir die ligfunksie om die horlosiepaneel aan of uit te skakel om energie verder te bespaar, maar uiteindelik beland die LED wanneer ek dit afskakel. Gogga funksie geword? Ek weet nie (enigiemand weet, vertel my hieronder).

Aan die einde van die wysiging hou die klok nou meer as 2 dae!

Ek het 'n minder ernstige probleem met die horlosie. Tydens die laai sal die kapasitansiesensor mal word, so ek voeg 'n ander modus by wat niks doen nie.

Wat tydsverskuiwing betref, aangesien dit baie ongemaklik is om elke dag by die rekenaar aan te sluit om dit terug te stel, het ek 'n ander modus bygevoeg, wat die minuut op 30 en die tweede na 0. Dit beteken dat u dit half elf uur kan herstel!

Aanbeveel: