Kazalo:

Jutranji kolega: 8 korakov
Jutranji kolega: 8 korakov

Video: Jutranji kolega: 8 korakov

Video: Jutranji kolega: 8 korakov
Video: Эта мощная практика поможет избавиться от долгов и кредитов. Как избавиться и привлечь деньги 2024, Julij
Anonim
Image
Image

Nekateri ljudje imajo zelo natrpan urnik, zaradi česar lahko na nekaj pozabite. S to budilko lahko nastavite več alarmov, ki vas bodo vodili po urniku. Ura deluje 24 ur in vse, kar morate storiti, je, da jo nastavite, da se izklopi ob različnih urah dneva, ki ustrezajo vašemu urniku. Ko to delate, se na LCD zaslonu pojavijo nastavljeni časi, tako da lahko preverite, ali so pravilni, in vam služijo kot dodaten opomnik.

1. korak: možganska nevihta o ideji

Skice in materiali
Skice in materiali

Ko smo poskušali rešiti težavo, smo z metodo ribjih kosti prišli do ideje in na koncu dobili budilko.

2. korak: Skiciranje in materiali

Skice in materiali
Skice in materiali

Med tem korakom smo poskušali narediti seznam vseh stvari, za katere smo mislili, da jih potrebujemo za elektroniko in zunanje ohišje. Nato smo pripravili skico, kako želimo videti budilka in kako bomo sestavili njeno zunanje ohišje.

3. korak: Ustvarjanje zunanjega ohišja

Ustvarjanje zunanjega ohišja
Ustvarjanje zunanjega ohišja
Ustvarjanje zunanjega ohišja
Ustvarjanje zunanjega ohišja

Pri prvem prototipu sem želel samo videti, kako bi se spoji prstov združili, zato sem uporabil škatlo za čevlje in nisem uporabil natančnih mer.

4. korak: Lasersko rezanje zunanjega ohišja

Lasersko rezanje zunanjega ohišja
Lasersko rezanje zunanjega ohišja

Za drugi prototip sem hotel dobiti natančne meritve in ustvariti pdf, ki sem ga poslal laserskemu rezalniku. Za to sem uporabil spletno mesto aplikacije za izdelavo škatel, https://boxdesigner.connectionlab.org. Na tem spletnem mestu sem nato vnesel tridimenzionalne dimenzije škatle, debelino našega materiala, merske enote in vrsto datoteke, ki jo želim ustvariti. Dimenzije škatel so bile 7,5 x 3 x 5 palcev, jaz pa sem uporabil 1/8 debelega akrilnega materiala. Meritve zarezov prstnih sklepov so bile nato samodejno nastavljene na 0,46875 palcev. Različico pdf sem izbral, ker je to vrsta datoteke, ki jo laserski rezalnik bere, in želel sem v datoteko narediti nekaj sprememb v adobe. Barve črt sem spremenil v rdečo, tako da jih je laserski rezalnik rad izrezal, namesto da bi graviral obliko, in dodal pravokotno škatlo z dimenzijami 3,92 palca za 1,56 palca na tistem, kar bo sprednji del škatla. Prav tako sem na desni stranski del na dnu dodal izrezan pravokotnik z dimenzijami 1 x 0,5 palca, ki bo služil kot odprtina za kabel, povezan z budilko. Nazadnje sem dodal tri krožne odprtine na vrhu za dva brenčalnika in gumb. Odprtine brenčal so imele premer 0,5 palca, odprtina gumba pa 0,375 palca.

5. korak: Sestavite skupaj

Sestavljanje skupaj
Sestavljanje skupaj

Ko so bili vsi kosi izrezani, sem jih skupaj z brizgo in akrilnim lepilom zapečatil. Kose sem držal skupaj in med zareze kapljal lepilo, da so bile stranice skupaj, vendar vrh ni bil zlepljen.

6. korak: Koda

Uvod:

Ta projekt je bil kodiran z jezikom c ++ v programski opremi Arduino IDE. Uporabljen mikrokrmilnik je bil NodeMCU z ESP8266. Za ta projekt bi potrebovali način za natančno merjenje časa, zvočni signal, alarmni sistem, ki bi sprožil alarm, in zaslon za prikaz časa in časa alarma. Celotno kodo najdete na tej povezavi

Uvoz knjižnic

Najprej moramo uvoziti potrebne knjižnice.

#include "RTClib.h"

#include "Wire.h" #include #include #include #include

Zagon spremenljivk

Nato moramo spremeniti spremenljivke za pozneje, dodeliti razporeditev nožic za gumbe brenčalca, nastaviti RTC in nastaviti naslov I2C LCD zaslona.

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; const int gumb = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"nedelja", "ponedeljek", "torek", "sreda", "četrtek", "petek", "sobota"} int začetni čas; int activetime; int prevoustime = 0; char ahours1 [3]; ogljikovi amini1 [3]; int ura1 = 0; int min1 = 0; char ahours2 [3]; ogljikovi amini2 [3]; int ura2 = 0; int min2 = 0; char ahours3 [3]; ogljikovi amini3 [3]; int ura3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char prejelChar; const bajt numChars = 32; char prejelChars [numChars];

Nastaviti

Nato moramo imeti funkcijo, ki zažene vse potrebne procese. Pri tej funkciji moramo zagnati LCD in natisniti začetne čase, narediti manjšo funkcijo, ki daje RTC v realnem času, če je še nima, in zagnati serijski monitor.

void setup () {

#ifndef ESP8266 while (! Serijski); #endif if (! rtc.begin ()) {Serial.println ("RTC ni mogoče najti"); medtem ko (1); } if (rtc.lostPower ()) {Serial.println ("RTC je izgubil moč, nastavimo čas!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))}} lcd.init (); lcd.backlight (); // vklopi Baklight. lcd.clear (); // Počisti LCD lcd.print ("00:00"); // prikaz na LCD -ju po nalaganju kode lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Čas"); lcd.setCursor (10, 1); lcd.print ("Alarm 1"); lcd.setCursor (0, 3); lcd.print ("Alarm 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Alarm 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (gumb, VHOD); // Nastavite pin za gumb za tišino pinMode (buzzer1, OUTPUT); // nastavimo pin za izhod brenčal pinMode (buzzer2, OUTPUT); // nastavimo pin za izhod brenčalnika Serial.begin (9600); Serial.println ("Vhodni čas alarmov v formatu HHMM brez presledka med alarmi"); čas začetka = milis ()/1000; }

Prejemanje podatkov

Zdaj moramo biti sposobni prejemati alarmne čase. V ta namen smo ustvarili funkcijo za sprejem podatkov iz serijskega monitorja in njihovo shranjevanje v matriko.

void recvWithEndMarker () {

statični int ndx = 0; Niz timein = Serial.readString (); za (ndx = 0; timein [ndx]; ndx ++) {prejetoChars [ndx] = timein [ndx]; } prejetoChars [ndx] = '\ 0'; Serial.print (prejetoChars); }

Nastavitev alarmov

Naslednji korak je nastavitev alarmov. Tu je koda za alarm 1. Za alarm 2 in 3 se je isti postopek ponovil z nekaj spremembami številk.

/* Alarm 1*/

recvWithEndMarker (); int h, m; za (h = 0; h <2; h ++) {ahours1 [h] = prejetoChars [h]; } za (m = 2; m <4; m ++) {amins1 [m-2] = prejetoChars [m]; } ahours1 [h] = '\ 0'; amini1 [m-2] = '\ 0'; Serial.print (ahours1); Serijski.tisk (amini1); ura1 = atoi (ur1); min1 = atoi (amini1); Serial.print (ura 1); Serijski.tisk (min1);

Zvočni signal/gumb

Ko to storimo, moramo zvočni signal izklopiti, ko sta realni čas in čas alarma enaka. Tudi v tem koraku naredimo gumb za dremež, ki ustavi zvočni signal, medtem ko ga držite.

/ * Gumb za utišanje */

int tišina; int b; b = digitalRead (2); če (b == NIZKA) {tišina = 1; } else {tišina = 0; } / * Začni alarm * / if (ure == ura1 && min == min1) {alarm = 1; } drugače če (ure == ura2 && min == min2) {alarm = 1; } drugače če (ure == ura3 && min == min3) {alarm = 1; } else {alarm = 0; tišina = 0; } if (alarm == 1 && tišina == 0) {ton (buzzer1, 4000, 1000); ton (zvočni signal2, 4000, 1000); zamuda (1000); noTone (zvočni signal1); noTone (zvočni signal2); zamuda (1000); }

Časi tiskanja

Nazadnje moramo na LCD -zaslon natisniti čas alarma in realni čas.

DateTime zdaj = rtc.now ();

int ure = (now.hour ()); int min = (now.minute ()); / * Čas alarma v formatu 00:00 */ lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amini1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (amini2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amini3); / * Prikaz časa iz RTC */ lcd.setCursor (0, 0); lcd.print (ure); lcd.print (":"); lcd.tisk (min);

7. korak: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Elektronika tega projekta vsebuje več delov, kot je razvidno iz gradiva. Prva slika je shema končne elektronike projektov. Druga slika je naša končna elektronska zasnova. Tretja podoba je našega projekta sredi drugega prototipa.

Za začetek pritrdite svoj NodeMCU na skrajni konec vaše plošče. Nato boste morali vso svojo drugo elektroniko povezati z NodeMCU in ploščo. Začnite tako, da svoj LCD zaslon priključite na nožice D1 za SCL in D2 za SDA. LCD zaslon bo uporabniku omogočil ogled trenutnega časa in nastavljenih časov alarma. Zdaj naj žice povežejo vaše brenčalce z zatiči D3 in D6. Zvočniki bodo alarmu omogočili, da uporabnika opozori, ko je dosežen nastavljeni čas. Zdaj morate priložiti gumb, da omogočite ustavitev alarma. Ta gumb pritrdite na pin D4. Zdaj boste svojo uro v realnem času pritrdili na ploščo. Povežite uro v realnem času tako, da uporablja iste zatiče SDA in SCL, ki jih uporabljate za LCD zaslon.

8. korak: Končno

Končno
Končno

Če ste upoštevali podane podatke, bo vaš projekt morda izgledal kot zgornja slika. Želimo vam veliko sreče pri poskusih ponovnega ustvarjanja tega projekta, po zaključku projekta pa vas vabimo, da v komentarjih delite slike in pripombe z nami. Hvala in srečno kolegi ustvarjalci.

Priporočena: