Sadržaj:

Arduino binarni budilnik, uradi sam: 14 koraka (sa slikama)
Arduino binarni budilnik, uradi sam: 14 koraka (sa slikama)

Video: Arduino binarni budilnik, uradi sam: 14 koraka (sa slikama)

Video: Arduino binarni budilnik, uradi sam: 14 koraka (sa slikama)
Video: Урок 99. Создание цифровых часов Arduino с использованием ЖК-дисплея DS3231 и семисегментного дисплея. 2024, Novembar
Anonim
Arduino binarni budilnik, uradi sam
Arduino binarni budilnik, uradi sam
Arduino binarni budilnik, uradi sam
Arduino binarni budilnik, uradi sam
Arduino binarni budilnik, uradi sam
Arduino binarni budilnik, uradi sam

Opet klasični binarni sat! Ali ovaj put s još više dodatnih funkcija! U ovom uputstvu pokazat ću vam kako izgraditi binarni budilnik sa Arduinom koji vam može pokazati ne samo vrijeme, već i datum, mjesec, čak i sa mjeračem vremena i alarmnim funkcijama koje se mogu koristiti i kao noćna svjetiljka! Bez odlaganja krenimo!

Napomena: Ovaj projekat ne koristi RTC modul, pa tačnost zavisi od ploče koju ste koristili. Uključio sam korektivni mehanizam koji će ispraviti vremenski pomak u određenom vremenskom periodu, ali morat ćete eksperimentirati kako biste pronašli ispravnu vrijednost za određeni vremenski period (više o tome u nastavku), pa čak i s korektivnim mehanizmom i dalje će se mijenjati dugo vremena (u poređenju sa bez njega). Ako nekoga zanima, slobodno implementirajte upotrebu RTC modula u ovaj projekt

Supplies

LED 5 mm (bilo koje boje, koristio sam 13 bijelih LED sa jednom RGB LED indikatorom) --- 14 kom

Arduino Nano (drugi mogu raditi) --- 1 kom

Mikroprekidač --- 1 kom

Mali komad aluminijske folije

Ploča za montažu (za kućište, ali slobodno dizajnirajte sami)

Komad bijelog papira (ili bilo koje druge boje)

Neki plastični film (onaj koji se koristi kao naslovnica knjige)

Gomila žica

Zujalica --- 1 kom

NPN tranzistor --- 1kom

Otpornici 6k8 --- 14 kom, 500R --- 1 kom, 20R (10Rx2) --- 1 kom, 4k7 --- 1kom

Napajanje za projekat (koristio sam li-on bateriju)

5050 LED traka i klizni prekidač (opcionalno)

Korak 1: Spojite krug

Spojite krug!
Spojite krug!

Ovaj korak ću podijeliti na:

1) Dio zujalice

2) LED panel

3) Prekidač (dugme za pritiskanje)

4) LED traka

5) Senzor kapaciteta

6) Napajanje

7) Spojite ih sve na Arduino

Većinu vremena ovo je samo korak "slijedite shematski". Zato pogledajte gornju shemu ili je čak preuzmite i ispišite!

Korak 2: Priprema dijela zujalice

Priprema dijela zujalice
Priprema dijela zujalice
Priprema dijela zujalice
Priprema dijela zujalice
Priprema dijela zujalice
Priprema dijela zujalice

Ako ste već koristili zujalicu s Arduinom, znat ćete da ako ga spojimo izravno na Arduino neće biti dovoljno glasan. Zato nam treba pojačalo. Za konstrukciju pojačala potreban nam je NPN tranzistor (u osnovi će raditi svaki NPN, koristio sam S9013 jer sam ga dobio iz starog projekta) i neki otpornik za ograničavanje struje. Za početak prvo identificirajte kolektor, emiter i bazu tranzistora. Malo googlanja sa podatkovnom tablicom će uspjeti za ovo. Zatim lemite kolektor tranzistora na negativni terminal zujalice. Na pozitivnom terminalu zujalice samo smo mu lemili komad žice kako bismo ga kasnije mogli lemiti na naš Arduino. Nakon toga, lemite otpornik 500R (ili bilo koju sličnu vrijednost otpornika) na bazu tranzistora i od otpornika, lemite drugi komad žice za buduću upotrebu. Na kraju, lemite dva 10R otpornika uzastopno s odašiljačem tranzistora i spojite drugu žicu s otpornika.

Zaista, pogledajte shemu.

p/s: Još uvijek ne znam kako odabrati otpornik za tranzistor u vrijeme pisanja ovoga. Vrijednost koju sam koristio odabrana je empirijski.

Korak 3: Priprema LED ploče

Priprema LED ploče
Priprema LED ploče
Priprema LED ploče
Priprema LED ploče
Priprema LED ploče
Priprema LED ploče

U skladu s tim uključite LED diode i otpornik u ploču za izradu prototipa i lemite. To je to. Slijedite shemu. U slučaju da vas zanima razmak koji sam koristio, 3 rupe odvojene za svaku kolonu i dvije rupe za svaki red (pogledajte sliku). A LED indikator? Uključio sam ga nasumično.

Nakon lemljenja LED dioda i otpornika na ploču, spojite sve pozitivne priključke LED dioda zajedno. Zatim lemite žice jednu po jednu na svaki otpornik na negativnim stezaljkama LED -a kako bismo ih kasnije mogli lemiti na Arduino.

NAPOMENA: Ovaj korak bi vas mogao zbuniti. Upamtite, umjesto povezivanja svih uzemljenja, povezujemo sve pozitivne terminale zajedno i negativni terminal s pojedinačnim pinom na Arduinu. Stoga za uzemljenje koristimo Arduino GPIO pin, a ne Vcc. U slučaju da ga slučajno povežete unatrag, ne brinite. Možete promijeniti sve HIGH do LOW i LOW do HIGH u LEDcontrol funkciji.

Korak 4: Priprema prekidača (zapravo taster)

Priprema prekidača (zapravo taster)
Priprema prekidača (zapravo taster)
Priprema prekidača (zapravo taster)
Priprema prekidača (zapravo taster)
Priprema prekidača (zapravo taster)
Priprema prekidača (zapravo taster)

Za prekidač (nazvat ću ga prekidačem jer sam koristio mikroprekidač, ali znate da je to gumb), potreban nam je 4k7 padajući otpornik i, naravno, sam prekidač. Ah, ne zaboravite pripremiti neke žice. Počnite lemljenjem otpornika i komada žice na zajedničko uzemljenje (COM) mikroprekidača. Zatim lemite još jedan komad žice na normalno otvoren (NO) mikro prekidača. Na kraju, pričvrstite drugu žicu na otpornik. Učvrstite ga vrućim ljepilom.

Ugao znanja: Zašto nam je potreban padajući otpornik?

"Ako odvojite digitalni U/I pin od svega, LED dioda može treptati neredovito. To je zato što je ulaz" plutajući " - to jest, nasumično će se vratiti ili VISOKO ili NISKO. Zato vam je potrebno povlačenje ili povlačni otpornik u krugu. " - Izvor: Arduino web mjesto

Korak 5: Priprema LED trake

Priprema LED trake
Priprema LED trake
Priprema LED trake
Priprema LED trake

LED traka je za bočnu lampu kreveta, koja je opcionalna. Samo spojite LED traku i klizni prekidač zajedno u seriju, ništa posebno.

Korak 6: Priprema senzora kapaciteta

Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti
Priprema senzora kapacitivnosti

Ok pogledajte sliku. U osnovi ćemo samo pričvrstiti žicu na mali komad aluminijske folije (jer se aluminijska folija ne može zalemiti), a zatim je zalijepiti na mali komad montažne ploče. Ljubazni podsjetnik, pazite da aluminijsku foliju ne zalijepite u potpunosti. Ostavite dio izloženog radi direktnog kontakta.

Korak 7: Priprema izvora napajanja

Priprema izvora napajanja
Priprema izvora napajanja
Priprema izvora napajanja
Priprema izvora napajanja
Priprema izvora napajanja
Priprema izvora napajanja

Budući da sam za napajanje koristio li-on bateriju, potreban mi je modul TP4056 za punjenje i zaštitu, te pretvarač za pretvaranje napona u 9v. Ako ste odlučili koristiti zidni adapter od 9V, možda će vam trebati DC utičnica ili ga jednostavno spojite izravno. Imajte na umu da je vrijednost otpornika za pojačalo dizajnirana za 9V, a ako želite koristiti drugi napon, možda ćete morati promijeniti otpornik.

Korak 8: Povežite ih s Arduinom

Povezivanje s Arduinom
Povezivanje s Arduinom
Povezivanje s Arduinom
Povezivanje s Arduinom
Povezivanje s Arduinom
Povezivanje s Arduinom

Slijedite shemu! Slijedite shemu! Slijedite shemu!

Nemojte spajati pogrešan pin ili će stvari postati čudne.

Korak 9: Ograđivanje

Enclosure
Enclosure
Enclosure
Enclosure
Enclosure
Enclosure
Enclosure
Enclosure

Dimenzija mog dizajna je 6,5 cm*6,5 cm*8 cm, tako da je malo glomazan. Sastoji se od prednjeg prozora za LED ekran i gornjeg prozora za noćnu lampu. Za moj dizajn, pogledajte slike.

Korak 10: Vrijeme programiranja

Image
Image
Vreme programiranja!
Vreme programiranja!

Preuzmite moju skicu ispod i prenesite je na svoj Arduino. Ako ne znate kako to učiniti, nemojte se truditi raditi ovaj projekt! Ne, samo se šalim, evo dobrog vodiča o tome: Otpremi skicu na arduino

Zatim otvorite serijski monitor i trebali biste vidjeti da prikazuje trenutno vrijeme. Evo kako to učiniti da postavite vrijeme.

Za postavljanje sata: h, XX - gdje je xx trenutni sat

Za postavljanje minuta: min, XX - xx je trenutni minut

Za postavljanje sekunde: s, XX

Za postavljanje datuma: d, XX

Za postavljanje mjeseca: pon, XX

Kada se gornji komentar izvrši, trebao bi vam vratiti vrijednost koju ste upravo postavili. (Na primjer, kada postavite sat sa h, 15, on bi trebao vratiti sat: 15 na serijskom monitoru.

Za senzor kapaciteta, možda ćete ga morati kalibrirati prije nego što počne raditi. Da biste to učinili, dvaput pritisnite mikro prekidač i pogledajte serijski monitor. Trebalo bi ispisati gomilu brojeva. Sada stavite prst na senzor kapacitivnosti i pogledajte zabilježite raspon broja. Zatim izmijenite varijablu "captrigger". Recimo da dobijete 20-30 kada pritisnete, a zatim postavite captrigger na 20.

Skica koristi biblioteku ADCTouch, provjerite jeste li je instalirali.

Korak 11: Korektivni mehanizam

Vremenski period za korektivni mehanizam u mom kodu postavljen je na onaj koji je za mene tačan. Ako vrijeme još uvijek nije točno, morate promijeniti vrijednost varijable "corrdur"

Corrdur je sada zadnja nadogradnja na 0 u posljednjem ažuriranju.

Vrijednost corrdura znači koliko milisekundi je potrebno da se uspori jedna sekunda

Da biste saznali vrijednost korrdura, upotrijebite formulu:

2000/(y-x)/x)

gdje je x = stvarno trajanje proteklog vremena i y = trajanje proteklog sata, oboje u sekundama

Da biste pronašli vrijednost x i y, morate napraviti mali eksperiment.

Postavite vrijeme sata na stvarno vrijeme i zabilježite početno vrijeme (stvarno početno vrijeme i početno vrijeme sata trebaju biti isti). Nakon nekog vremena (nekoliko sati) zabilježite konačno stvarno vrijeme i konačno vrijeme sata.

x = stvarno konačno vrijeme-početno vrijeme i y = konačno vrijeme početno vrijeme

Zatim promijenite vrijednost corrdura u kodu i ponovo ga učitajte u Arduino.

Zatim ponovite test i ovaj put se formula promijenila u:

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

Gdje su x i y ista stvar kao i prije, dok je z trenutna vrijednost kordura.

Ponovo učitajte i ponavljajte test sve dok vam ne bude dovoljno precizan.

U slučaju da se vaš sat i dalje ubrzava, čak je i corrdur postavljen na 0 (znači da nema korektivnog mehanizma), morate promijeniti drugi ++ u drugi-- u dijelu koda u korektivnom mehanizmu (komentirao sam ga), postavite corrdur na 0, onda pronađite br. milisekunde potrebno je za ubrzanje jedne sekunde.

Korak 12: Kako koristiti sve funkcije

Image
Image

Način rada možete promijeniti pritiskom na mikro prekidač.

U prvom načinu rada jednostavno prikazuje vrijeme. Ako indikatorska lampica treperi jednom u sekundi, alarm je isključen. Ako je 2 puta u sekundi, alarm je uključen. Alarm možete odgoditi na 10 minuta u prvom načinu rada pritiskom na senzor kapacitivnosti.

U drugom načinu rada prikazuje datum. Pritiskom na kapacitivni senzor ne radite ništa.

U trećem načinu rada možete postaviti mjerač vremena. Pritiskom na osjetnik kapacitivnosti uključit će se mjerač vremena i trebali biste vidjeti da je indikatorska lampica počela treptati. Senzor kapaciteta također se koristi za postavljanje vremena tajmera. Raspon tajmera je od 1 minute do 59 minuta.

U četvrtom načinu rada možete podesiti sat alarma pomoću senzora kapaciteta

U petom načinu rada možete postaviti alarmni minut pomoću kapacitivnog senzora.

U šestom načinu rada, pritiskom na osjetnik kapacitivnosti minute će se vratiti na 30, a drugi na 0 bez promjene sata. To znači da sve dok vam sat ne hoda više od 30 minuta, možete ga ponovo kalibrirati pomoću ovog načina rada.

Sedmi način rada je način rada "ne radi ništa" u slučaju da se kapacitivni senzor pokvari tijekom punjenja.

Oh, da biste odbacili alarm, samo pritisnite mikro prekidač. (NAJNOVIJE AŽURIRANJE ZA UKLJUČIVANJE SNIMKE ALARMA)

Pa, šta kažeš na čitanje sata? To je lako! Čitanje binarnog sata - Wikihow Možda ćete se isprva osjećati čudno, ali naviknut ćete se na to!

Korak 13: Zaključak

Zaključak
Zaključak
Zaključak
Zaključak

Zašto sam započeo ovaj projekat. U početku je to zato što imam stari digitalni sat koji leži i želim ga pretvoriti u budilicu. Nažalost, ispostavilo se da je stari sat pokvaren. Pa sam pomislio zašto ne napraviti jedan koristeći Arduino? Uz malo google pretraživanja, pronašao sam ovaj projekat binarnog sata bez RTC -a na uputstvu Cello62. Međutim, nema željenu funkciju budilnika, pa uzimam kôd i sam ga mijenjam. I projekat je rođen. Štaviše, nedavno sam video kako se takmičenje u satovima izvodi na instrukcijama, što mi je dalo još više motiva za to. U svakom slučaju, ovo je još uvijek moj prvi projekt koji koristi Arduino, pa hrpa mogućih poboljšanja.

Buduće poboljšanje:

1) Koristite RTC

2) Bežično podesite alarm ili vrijeme ili mjerač vremena!

3) Na koju god funkciju mislim

Korak 14: Ažuriranje: Nakon jedne sedmice upotrebe

Ažuriranje: Nakon jedne sedmice upotrebe
Ažuriranje: Nakon jedne sedmice upotrebe
Ažuriranje: Nakon jedne sedmice upotrebe
Ažuriranje: Nakon jedne sedmice upotrebe
Ažuriranje: Nakon jedne sedmice upotrebe
Ažuriranje: Nakon jedne sedmice upotrebe

Osim očitog problema - vremenskog pomaka, sljedeći koji bih rekao je potrošnja energije. Prvo, pojačavam napon do 9v, koji će tada biti smanjen linearnim regulatorom u Arduinu. Linearni regulator je vrlo neefikasan. Sat traje samo JEDAN DAN. To znači da ga moram puniti svaki dan. To nije najveći posao sve dok ne shvatite da je cijeli sistem samo oko 50% efikasan. S obzirom da mi je baterija 2000mAh, mogao bih izračunati potrošnju energije svaki dan.

Potrošena snaga = (7,4Wh*10%)+(7,4Wh*90%*50%) = 4,07Wh dnevno

To je 1.486kWh godišnje! To se može upotrijebiti za kuhanje 283 g vode (od 25 C do 100 C)? Ali u svakom slučaju, poboljšaću efikasnost sata. Način da to učinite je da uopće ne koristite linearni regulator. To znači da moramo prilagoditi pretvarač pojačanja za izlaz 5V izravno u 5V pin na Arduinu. Zatim, kako bih dodatno smanjio potrošnju energije, moram ukloniti dvije ugrađene LED diode (pin13 i napajanje) jer će trošiti 0,95Wh dnevno. Nažalost, nemam pojma o SMD lemljenju pa je jedini način da to učinim presjecanje šine na ploči. Nakon toga moram ukloniti otpornik emitera na zujalici i noćnu lampu (LED traka ne radi na 5V). No, znači li to da se morate odreći te nevjerojatne osobine? Ne! Ovdje imate dva izbora: Upotrijebite normalnu LED diodu od 5 mm ili 5 LED traku. Ali za mene, već sam se osjećao umorno radeći ovaj projekt cijelu prošlu sedmicu, pa sam odlučio odustati od ove funkcije. Međutim, prvobitno sam koristio prekidač za svjetlosnu funkciju za uključivanje ili isključivanje ploče sata radi daljnje uštede energije, ali LED dioda na kraju treperi kad ga isključim. Greška je postala funkcija? Ne znam (ako neko zna, molim vas da mi kaže dole).

Na kraju izmjene, sat sada traje više od 2 dana!

Sljedeće imam manje ozbiljan problem sa satom. Tijekom punjenja, senzor kapaciteta bi poludio, pa dodajem još jedan način rada koji ne radi ništa.

Što se tiče pomaka vremena, budući da je vrlo nezgodno svakodnevno se priključivati na računalo kako bi ga resetirali, dodao sam još jedan način rada koji će postaviti minutu na 30, a sekundu na 0. To znači da biste je mogli resetirati pola sata kasnije!

Preporučuje se: