Tartalomjegyzék:

DIY Arduino bináris ébresztőóra: 14 lépés (képekkel)
DIY Arduino bináris ébresztőóra: 14 lépés (képekkel)

Videó: DIY Arduino bináris ébresztőóra: 14 lépés (képekkel)

Videó: DIY Arduino bináris ébresztőóra: 14 lépés (képekkel)
Videó: как сделать Propeller LED Pendulum Clock, используя Arduino NANO, JLCPCB 2024, Július
Anonim
DIY Arduino bináris ébresztőóra
DIY Arduino bináris ébresztőóra
DIY Arduino bináris ébresztőóra
DIY Arduino bináris ébresztőóra
DIY Arduino bináris ébresztőóra
DIY Arduino bináris ébresztőóra

Ez megint a klasszikus bináris óra! De ezúttal még több kiegészítő funkcióval! Ebben a tanulságosban megmutatom, hogyan lehet bináris ébresztőórát készíteni az Arduino -val, amely nemcsak az időt, hanem a dátumot, a hónapot is mutatja, még az időzítővel és az ébresztő funkciókkal is, amelyek éjjeli lámpaként is használhatók! Minden további nélkül kezdjük el!

Megjegyzés: Ez a projekt nem használ RTC modult, így a pontosság a használt kártyától függ. Mellékeltem egy korrekciós mechanizmust, amely korrigálja az időeltolódást egy bizonyos idő alatt, de kísérleteznie kell, hogy megtalálja az adott időszak megfelelő értékét (erről bővebben alább), és még a korrekciós mechanizmussal is eltolódik hosszú időn keresztül (összehasonlítva anélkül). Ha valakit érdekel, bátran alkalmazza az RTC modul használatát ebben a projektben

Kellékek

5 mm-es LED (bármilyen színű, 13 fehér LED-et használtam egy RGB LED-del jelzőként) --- 14 db

Arduino Nano (mások működhetnek) --- 1 db

Mikrokapcsoló --- 1 db

Kis darab alumínium fólia

Szerelőlap (szekrényhez, de bátran tervezzen sajátot)

Egy darab fehér papír (vagy bármilyen más színű)

Néhány műanyag fólia (a könyv borítója)

Egy csomó vezeték

Zümmögő --- 1db

NPN tranzisztor --- 1db

Ellenállások 6k8 --- 14 db, 500R --- 1 db, 20R (10Rx2) --- 1 db, 4k7 --- 1db

Tápegység a projekthez (Li-on akkumulátort használtam)

5050 LED szalag és csúszókapcsoló (opcionális)

Lépés: Csatlakoztassa az áramkört

Csatlakoztassa az áramkört!
Csatlakoztassa az áramkört!

Ezt a lépést a következőkre osztom:

1) A zümmögő rész

2) A LED panel

3) A kapcsoló (nyomógomb)

4) LED szalag

5) A kapacitásérzékelő

6) Tápegység

7) Csatlakoztassa mindegyiket az Arduino -hoz

A legtöbb esetben ez csak egy "kövesse a sematikus" lépést. Tehát nézze meg a fenti vázlatot, vagy töltse le és nyomtassa ki!

2. lépés: A zümmögő rész előkészítése

A zümmögő rész előkészítése
A zümmögő rész előkészítése
A zümmögő rész előkészítése
A zümmögő rész előkészítése
A zümmögő rész előkészítése
A zümmögő rész előkészítése

Ha már korábban is használt zümmögőt az Arduino -val, akkor tudni fogja, hogy ha közvetlenül az Arduino -hoz csatlakoztatjuk, akkor nem lesz elég hangos. Tehát szükségünk van egy erősítőre. Az erősítő megépítéséhez szükségünk van egy NPN tranzisztorra (alapvetően bármely NPN működni fog, én az S9013 -at használtam, mert a régi projektből kaptam), és egy ellenállást az áram korlátozására. Kezdésként először azonosítsa a tranzisztor kollektorát, kibocsátóját és bázisát. Ehhez egy kis google -zás az adatlapon működik. Ezután forrasztja a tranzisztor kollektorát a zümmögő negatív termináljához. A zümmögő pozitív terminálján csak egy huzaldarabot forrasztunk hozzá, hogy később forraszthassuk az Arduino -hoz. Ezt követően forrasztja az 500R (vagy hasonló értékű ellenállás) ellenállást a tranzisztor bázisához, és az ellenállásból forrasztjon egy másik huzaldarabot a későbbi használatra. Végül forrasztja sorba a két 10R ellenállást a tranzisztor emitteréhez, és csatlakoztasson egy másik vezetéket az ellenállásokból.

Tényleg, nézze meg a vázlatot.

p/s: Még mindig nem igazán tudom, hogyan válasszam ki az ellenállást a tranzisztorhoz, amikor ezt írtam. Az általam használt értéket empirikusan választják ki.

3. lépés: A LED panel előkészítése

A LED panel előkészítése
A LED panel előkészítése
A LED panel előkészítése
A LED panel előkészítése
A LED panel előkészítése
A LED panel előkészítése

Csatlakoztassa a LED -eket és az ellenállást a prototípus -táblához, és forrasztja be. Ez az. Kövesse a sémát. Abban az esetben, ha érdekli az általam használt távolság, az egyes oszlopoktól 3, az egyes soroktól két lyuk távolságra (lásd a képet). És a jelző LED? Véletlenül bedugtam.

A LED -ek és az ellenállás forrasztása után csatlakoztassa egymáshoz a LED -ek összes pozitív kapcsát. Ezután forrasztjon vezetéket egyenként az ellenállásokhoz a LED -ek negatív kivezetésein, hogy később forraszthassuk őket az Arduino -hoz.

MEGJEGYZÉS: Ezt a lépést összezavarhatja. Ne feledje, ahelyett, hogy az összes földet összekapcsolná, az összes pozitív kivezetést és a negatív kivezetést az Arduino egyedi csapjához kössük. Így az Arduino GPIO tűt használjuk földelésként, nem a Vcc -t. Ha véletlenül visszafelé csatlakoztatja, ne aggódjon. A ledcontrol funkcióban a HIGH -t LOW -ra és LOW -HIGH -ra módosíthatja.

4. lépés: A kapcsoló előkészítése (valójában nyomógomb)

A kapcsoló előkészítése (valójában nyomógomb)
A kapcsoló előkészítése (valójában nyomógomb)
A kapcsoló előkészítése (valójában nyomógomb)
A kapcsoló előkészítése (valójában nyomógomb)
A kapcsoló előkészítése (valójában nyomógomb)
A kapcsoló előkészítése (valójában nyomógomb)

A kapcsolóhoz (kapcsolónak fogom hívni, mert mikrokapcsolót használtam, de tudod, hogy nyomógomb), szükségünk van egy 4k7-es lehúzható ellenállásra és természetesen magára a kapcsolóra. Ne felejtsd el előkészíteni a vezetékeket. Kezdje azzal, hogy az ellenállást és a drótdarabot forrasztja a mikrokapcsoló közös földjére (COM). Ezután forrasztjon egy másik huzaldarabot a mikrokapcsoló normálisan nyitott (NO) nyílásához. Végül csatlakoztasson egy másik vezetéket az ellenálláshoz. Rögzítse valamilyen forró ragasztóval.

Tudássarok: Miért van szükségünk lehúzható ellenállásra?

"Ha mindenről lekapcsolja a digitális I/O érintkezőt, akkor a LED hibásan villoghat. Ez azért van, mert a bemenet" lebeg " - vagyis véletlenszerűen visszatér HIGH vagy LOW. Ezért van szükség felhúzásra, ill. lehúzható ellenállás az áramkörben. " - Forrás: Arduino weboldal

5. lépés: A LED csík előkészítése

LED szalag előkészítése
LED szalag előkészítése
LED szalag előkészítése
LED szalag előkészítése

A LED szalag az ágy oldali lámpához való, amely opcionális. Csatlakoztassa sorba a LED szalagot és a csúszó kapcsolót, semmi különös.

6. lépés: A kapacitásérzékelő előkészítése

A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése
A kapacitásérzékelő előkészítése

Ok nézd meg a képet. Alapvetően csak a huzalt rögzítjük egy kis darab alumíniumfóliához (mert az alumínium fóliát nem lehet forrasztani), majd ragasztjuk egy kis szerelőlapra. Kedves emlékeztető, ügyeljen arra, hogy ne ragasztja le teljesen az alumínium fóliát. Hagyja egy részét szabadon közvetlen érintkezés céljából.

7. lépés: A tápegység előkészítése

A tápegység előkészítése
A tápegység előkészítése
A tápegység előkészítése
A tápegység előkészítése
A tápegység előkészítése
A tápegység előkészítése

Mivel lítium-ion akkumulátort használtam tápegységként, szükségem van egy TP4056 modulra a töltéshez és a védelemhez, valamint egy erősítő konverterre, amely a feszültséget 9 V-ra alakítja. Ha úgy döntött, hogy 9V -os fali adaptert használ, akkor szükség lehet egy DC aljzatra, vagy csak közvetlenül csatlakoztassa. Vegye figyelembe, hogy az erősítő ellenállási értéke 9 V -ra van tervezve, és ha más feszültséget szeretne használni, akkor lehet, hogy cserélnie kell az ellenállást.

8. lépés: Csatlakoztassa őket Arduino -hoz

Csatlakoztatás Arduino -hoz
Csatlakoztatás Arduino -hoz
Csatlakoztatás Arduino -hoz
Csatlakoztatás Arduino -hoz
Csatlakoztatás Arduino -hoz
Csatlakoztatás Arduino -hoz

Kövesse a sémát! Kövesse a sémát! Kövesse a sémát!

Ne csatlakoztassa a rossz tűt, különben a dolgok furcsák lesznek.

9. lépés: Melléklet

Burkolat
Burkolat
Burkolat
Burkolat
Burkolat
Burkolat
Burkolat
Burkolat

A tervem mérete 6,5 cm*6,5 cm*8 cm, így egy kicsit terjedelmes. Elülső ablakból áll, amely LED kijelzőt és felső ablakot tartalmaz az éjjeli lámpához. A tervezéshez lásd a képeket.

10. lépés: Az idő programozása

Image
Image
Programozási idő!
Programozási idő!

Töltse le az alábbi vázlatomat, és töltse fel az Arduino -jába. Ha nem tudja, hogyan kell ezt megtenni, ne foglalkozzon ezzel a projekttel! Nah csak vicceltem, itt egy jó oktatóanyag róla: Tölts fel vázlatot az arduino -ba

Ezután nyissa meg a soros monitort, és látnia kell, hogy az aktuális időt adja ki. Az idő beállításához tegye a következőket.

Az óra beállítása: h, XX - ahol xx az aktuális óra

A perc beállítása: min, XX - xx az aktuális perc

Második beállításához: s, XX

A dátum beállításához: d, XX

A hónap beállításához: hétfő, XX

A fenti megjegyzés végrehajtásakor vissza kell adnia az Ön által beállított értéket. (Ha például az órát a h, 15 gombbal állítja be, akkor az óra: 15 értéket kell visszaadnia a soros monitoron.

A kapacitásérzékelő esetében kalibrálnia kell, mielőtt működne. Ehhez nyomja meg kétszer a mikrokapcsolót, és nézze meg a soros monitort. Egy csomó számot kell kiadnia. Most tegye az ujját a kapacitásérzékelőre, és nézze meg, vegye figyelembe a számtartományt. Ezután módosítsa a "captrigger" változót. Tegyük fel, hogy megnyomáskor 20-30-at kap, majd állítsa a captriggert 20-ra.

A vázlat használja az ADCTouch könyvtárat, győződjön meg róla, hogy telepítette.

11. lépés: Javító mechanizmus

A korrekciós mechanizmus időtartama a kódomban az, amely számomra pontos. Ha az idő még mindig nem pontos, módosítania kell a "corrdur" változó értékét

A Corrdur most alapértelmezés szerint 0 a legújabb frissítésben.

A corrdur értéke azt jelenti, hogy hány milliszekundum szükséges egy másodperc lelassításához

A corrdur értékének megállapításához használja a következő képletet:

2000/(y-x)/x)

ahol x = az eltelt idő tényleges időtartama és y = az óra eltelt ideje, mindkettő másodpercben

Az x és y értékének megtalálásához egy kis kísérletet kell végrehajtania.

Állítsa be az óra idejét a tényleges időre, és jegyezze fel a kezdő időt (a tényleges kezdeti időnek és az óra kezdési idejének azonosnak kell lennie). Egy idő után (néhány óra) jegyezze fel a végső tényleges időt és az óra végső idejét.

x = tényleges végső idő-kezdeti idő és y = óra utolsó idő-kezdeti idő

Ezután módosítsa a corrdur értékét a kódban, és töltse fel újra az Arduino -ra.

Ezután ismételje meg a tesztet, és ezúttal a képlet a következőre változott:

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

Ahol x és y ugyanaz, mint korábban, míg z az aktuális corrdur érték.

Töltse fel újra, és végezze el a tesztet újra és újra, amíg az nem elég pontos az Ön számára.

Abban az esetben, ha az óra még mindig gyorsul, akkor is a corrdur 0-ra van állítva (azt jelenti, hogy nincs korrekciós mechanizmus), a második ++- t másodikká kell változtatnia- a kód korrekciós mechanizmusának részében (megjegyzést tettem), állítsa a corrdur-t 0-ra, akkor keresse meg a sz. ezredmásodperc alatt felgyorsul egy másodperc.

12. lépés: Az összes funkció használata

Image
Image

Módot válthat a mikrokapcsoló megnyomásával.

Az első módban egyszerűen az időt jeleníti meg. Ha a jelzőfény másodpercenként 1 -szer villog, a riasztás ki van kapcsolva. Ha másodpercenként kétszer, a riasztó be van kapcsolva. Az ébresztést 10 percre elhalaszthatja az első üzemmódban a kapacitásérzékelő megnyomásával.

Második módban a dátumot jeleníti meg. A kapacitásérzékelő megnyomása semmit sem tesz.

A harmadik módban beállíthatja az időzítőt. A kapacitásérzékelő megnyomása bekapcsolja az időzítőt, és látnia kell, hogy a jelzőfény villogni kezd. A kapacitásérzékelő az időzítő beállítására is használható. Az időzítő tartománya 1 perc és 59 perc között van.

A negyedik módban a riasztási órát a kapacitásérzékelő segítségével állíthatja be

Az ötödik üzemmódban beállíthatja a riasztási percet a kapacitásérzékelő segítségével.

A hatodik üzemmódban a kapacitásérzékelő megnyomásával a perc 30 -ra, a másodperc pedig 0 -ra áll vissza az óra megváltoztatása nélkül. Ez azt jelenti, hogy mindaddig, amíg az órája nem sodródik 30 perc felett, újrakalibrálhatja ezt az üzemmódot.

A hetedik mód a „semmit sem tesz” mód arra az esetre, ha a kapacitásérzékelő villog a töltés során.

A riasztás elvetéséhez csak nyomja meg a mikrokapcsolót. (A LEGÚJABB FRISSÍTÉS A RIASZTÁSI SNOOZE -T BETARTVA)

Nos, mit szólnál az óra olvasásához? Könnyű! Bináris óra olvasása - Wikihow Elsőre furcsán érezheti magát, de majd megszokja!

13. lépés: Következtetés

Következtetés
Következtetés
Következtetés
Következtetés

Miért kezdtem el ezt a projektet. Kezdetben azért, mert van egy régi digitális órám, amely heverészik, és szeretném ébresztőórává alakítani. Sajnos a régi óra töröttnek bizonyult. Szóval arra gondoltam, miért nem építünk egyet Arduino segítségével? Egy kis google kereséssel megtaláltam ezt a bináris óra projektet RTC nélkül, a Cello62 utasítására. Azonban nem rendelkezik a kívánt ébresztőóra funkcióval, ezért előveszem a kódot, és magam módosítom. És megszületik a projekt. Sőt, nemrég láttam, hogy az óra verseny taníthatóan fut, ami még több motivációt adott ehhez. Mindenesetre ez még mindig az első projektem, amelyben Arduino -t használok, szóval rengeteg lehetséges fejlesztés.

Jövőbeli javulás:

1) Használjon RTC -t

2) Állítsa be az ébresztést vagy az időt vagy az időzítőt vezeték nélkül!

3) Bármilyen tulajdonságra gondolok

14. lépés: Frissítés: Egy hét használat után

Frissítés: Egy hét használat után
Frissítés: Egy hét használat után
Frissítés: Egy hét használat után
Frissítés: Egy hét használat után
Frissítés: Egy hét használat után
Frissítés: Egy hét használat után

Eltekintve a nyilvánvaló problémától - időeltolódástól, a következő, amit mondanék, az energiafogyasztás. Először is, a feszültséget 9 V -ra állítom fel, amelyet az Arduino -i lineáris szabályozó csökkent. A lineáris szabályozó nagyon nem hatékony. Az óra csak EGY NAPOT bír. Ez azt jelenti, hogy minden nap fel kell töltenem. Ez nem a legnagyobb üzlet, amíg fel nem ismeri, hogy a teljes rendszer csak körülbelül 50% -os hatékonysággal rendelkezik. Tekintettel arra, hogy az akkumulátorom kapacitása 2000 mAh, képes lennék kiszámítani a mindennap kárba vitt energiát.

Elpazarolt energia = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh naponta

Ez 1,486 kWh évente! Ezzel fel lehet főzni 283 g vizet (25 C -ról 100 C -ra)? De mindenesetre javítani fogom az óra hatékonyságát. Ennek módja az, hogy egyáltalán nem használja a lineáris szabályozót. Ez azt jelenti, hogy az erősítő átalakítót 5 V -os kimenetre kell állítanunk, közvetlenül az Arduino 5 V -os érintkezőjébe. Továbbá, hogy még tovább csökkentsem az elvesztegetett energiát, el kell távolítanom a fedélzeten lévő két LED -et (13 -as érintkező és tápellátás), mivel ezek napi 0,95 Wh energiát pazarolnak. Sajnos teljesen elfogult vagyok az SMD forrasztásában, így az egyetlen módja ennek a vágás a vágányon. Ezt követően el kell távolítanom a zümmögő emitter ellenállását és az éjjeli lámpát (a LED szalag nem működik 5V -nál). De ez azt jelenti, hogy le kell mondania erről a csodálatos tulajdonságról? Nem! Itt két lehetőség közül választhat: Használja a normál 5 mm -es LED diódát vagy az 5 V LED szalagot. De számomra már fáradtnak éreztem magam, hogy egész múlt héten ezt a projektet végeztem, ezért úgy döntöttem, hogy feladom ezt a funkciót. Azonban a kapcsolót eredetileg a világítás funkcióhoz használtam az óra panel be- vagy kikapcsolásához, hogy tovább takarítsuk meg az energiát, de végül a LED villog, amikor kikapcsolom. Bug funkcióvá vált? Nem tudom (bárki tudja, kérem, mondja meg alább).

A módosítás végén az óra több mint 2 napig tart!

Legközelebb egy kevésbé komoly problémám van az órával. Töltés közben a kapacitásérzékelő megőrülne, ezért hozzáadok egy másik módot, amely teljesen semmit sem tesz.

Ami az időeltolódást illeti, mivel nagyon kényelmetlen minden nap a számítógéphez csatlakoztatni, hogy visszaállítsa azt, hozzáadtam egy másik módot, amely a percet 30 -ra, a másodpercet pedig 0 -ra állítja. Ez azt jelenti, hogy bármelyik óra félkor visszaállíthatja!

Ajánlott: