Sadržaj:

Jutarnji prijatelj: 8 koraka
Jutarnji prijatelj: 8 koraka

Video: Jutarnji prijatelj: 8 koraka

Video: Jutarnji prijatelj: 8 koraka
Video: ГНИЛОБАН ждал ОЖИВЛЕНИЯ 8 лет в гараже | ВОССТАНОВИЛИ мертвеца DODGE RAM VAN B3500 2024, Juli
Anonim
Image
Image

Neki ljudi imaju vrlo zauzet raspored, što olakšava zaborav na jednu ili dvije stvari. Pomoću ovog budilnika možete postaviti više alarma kako biste bili u skladu sa rasporedom. Sat radi 24 sata i sve što trebate učiniti je programirati ga da se uključuje u različito doba dana koje odgovara vašem rasporedu. Kada ovo radite, vremena koja ste postavili pojavit će se na LCD ekranu, tako da možete provjeriti da li su u pravu i poslužiti kao dodatni podsjetnik.

Korak 1: Razmišljajte o ideji

Skice i materijali
Skice i materijali

Kada smo pokušavali riješiti problem, koristili smo metodu riblje kosti da bismo došli do ideje i rezultirali budilicom.

Korak 2: Skiciranje i materijali

Skice i materijali
Skice i materijali

Tokom ovog koraka pokušali smo napraviti popis svih stvari za koje smo mislili da će nam trebati za elektroniku i vanjsko kućište. Zatim smo smislili skicu kako želimo da izgleda budilica i kako ćemo sastaviti njegovo vanjsko kućište.

Korak 3: Izrada vanjskog kućišta

Izrada vanjskog kućišta
Izrada vanjskog kućišta
Izrada vanjskog kućišta
Izrada vanjskog kućišta

Za prvi prototip samo sam htio vidjeti kako će se zglobovi prstiju spojiti, pa sam koristio kutiju za cipele i nisam koristio točna mjerenja.

Korak 4: Lasersko rezanje vanjskog kućišta

Lasersko rezanje vanjskog kućišta
Lasersko rezanje vanjskog kućišta

Za drugi prototip želio sam dobiti točna mjerenja i morao sam stvoriti pdf za slanje laserskom rezaču. Da bih to učinio, koristio sam web stranicu aplikacije za izradu kutija, https://boxdesigner.connectionlab.org. Na toj sam web stranici zatim unio trodimenzionalne dimenzije kutije, debljinu našeg materijala, mjerne jedinice i vrstu datoteke koju želim stvoriti. Dimenzije kutija su bile 7,5 x 3 x 5 inča, a ja sam koristio 1/8 debelog akrilnog materijala. Mjerenja zareza u zglobovima prstiju tada su automatski konfigurirana na 0,46875 inča. Odabrao sam pdf verziju jer je to vrsta datoteke koju laserski rezač čita i htio sam unijeti neke izmjene u Adobe datoteku. Promijenio sam boje linija u crvenu, kako bi ih laserski rezač znao izrezati umjesto urezivanja oblika, i dodao sam pravokutnu kutiju dimenzija 3,92 inča za 1,56 inča na ono što će biti prednji dio box. Dodao sam i pravokutnik izrezan dimenzija 1 inč sa 0,5 inča na desnom bočnom dijelu pri dnu koji će poslužiti kao otvor za kabel spojen na budilicu. Na kraju sam dodao tri kružna otvora na vrhu za dva zujalice i dugme. Otvori zujalice imali su promjer 0,5 inča, a otvor dugmeta 0,375 inča.

Korak 5: Sastavite to zajedno

Sastavljajući to zajedno
Sastavljajući to zajedno

Kad su svi dijelovi izrezani, upotrijebio sam ih štrcaljkom i akrilnim ljepilom za spajanje. Držao sam komade zajedno i kapao ljepilo između zareza kako bi strane bile spojene, ali vrh nije bio zalijepljen.

Korak 6: Kodiranje

Uvod:

Ovaj projekt je kodiran jezikom c ++ na Arduino IDE softveru. Korišteni mikrokontroler bio je NodeMCU sa ESP8266. Za ovaj projekt potreban nam je način za precizno praćenje vremena, zvučni signal, alarmni sistem koji uzrokuje zujanje alarma i zaslon za prikaz svih vremena i vremena alarma. Za potpuni kôd pogledajte ovu vezu

Uvoz biblioteka

Prvo, moramo uvesti potrebne biblioteke.

#include "RTClib.h"

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

Iniciranje varijabli

Zatim moramo pokrenuti varijable za kasnije, dodijeliti raspored pinova za dugmad zujalice, postaviti RTC i postaviti I2C adresu LCD ekrana.

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int zujalica1 = 12; const int zujalica2 = 0; const int dugme = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"} int starttime; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int sat1 = 0; int min1 = 0; char ahours2 [3]; ugljeni amini2 [3]; int sat2 = 0; int min2 = 0; char ahours3 [3]; ugljeni amini3 [3]; int sat3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char recievedChar; const bajt numChars = 32; char je primioChars [numChars];

Postaviti

Zatim moramo imati funkciju koja pokreće sve potrebne procese. U ovoj funkciji moramo pokrenuti LCD i ispisati početna vremena, napraviti manju funkciju koja daje RTC -u realno vrijeme ako ga već nema i pokrenuti serijski monitor.

void setup () {

#ifndef ESP8266 while (! Serijski); #endif if (! rtc.begin ()) {Serial.println ("Nije moguće pronaći RTC"); while (1); } if (rtc.lostPower ()) {Serial.println ("RTC je izgubio napajanje, dozvoljavamo postavljanje vremena!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))}} lcd.init (); lcd.backlight (); // uključuje Baklight. lcd.clear (); // Briše LCD lcd.print ("00:00"); // prikaz na LCD -u nakon učitavanja koda lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Vrijeme"); 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 (dugme, ULAZ); // Postavljanje pin -a za dugme tišine pinMode (zujalica1, OUTPUT); // postavlja pin za izlaz zujalice pinMode (zujalica2, OUTPUT); // postavlja pin za izlaz zujalice Serial.begin (9600); Serial.println ("Ulazno vrijeme alarma u HHMM formatu bez razmaka između alarma"); starttime = millis ()/1000; }

Prijem podataka

Sada moramo biti u mogućnosti primiti vrijeme alarma. Da bismo to učinili, stvorili smo funkciju za primanje podataka sa serijskog monitora i njihovo spremanje u niz.

void recvWithEndMarker () {

statički int ndx = 0; String timein = Serial.readString (); za (ndx = 0; timein [ndx]; ndx ++) {primljenoChars [ndx] = timein [ndx]; } primljenoChars [ndx] = '\ 0'; Serial.print (receivedChars); }

Podešavanje alarma

Sljedeći korak je mogućnost postavljanja alarma. Ovdje je kôd za alarm 1. Za alarm 2 i 3 isti proces je ponovljen s nekoliko promjena broja.

/* Alarm 1*/

recvWithEndMarker (); int h, m; za (h = 0; h <2; h ++) {ahours1 [h] = primljenoChars [h]; } za (m = 2; m <4; m ++) {amini1 [m-2] = primljeni znakovi [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); sat1 = atoi (sati1); min1 = atoi (amini1); Serial.print (sat1); Serial.print (min1);

Zvučni signal/dugme

Kad to učinite, moramo učiniti da se zvučni signal isključi kad su realno vrijeme i vrijeme alarma jednaki. Takođe u ovom koraku pravimo dugme za odlaganje koje zaustavlja zvučni signal dok ga držite.

/ * Dugme za utišavanje */

int tišina; int b; b = digitalRead (2); if (b == LOW) {tišina = 1; } else {tišina = 0; } / * Pokreni alarm * / if (sati == sat1 && min == min1) {alarm = 1; } else if (sati == hour2 && mins == min2) {alarm = 1; } else if (sati == hour3 && mins == min3) {alarm = 1; } else {alarm = 0; tišina = 0; } if (alarm == 1 && tišina == 0) {ton (zujalica1, 4000, 1000); ton (zujalica2, 4000, 1000); kašnjenje (1000); noTone (zujalica1); noTone (zujalica2); kašnjenje (1000); }

Printing Times

Konačno, moramo odštampati vrijeme alarma i realno vrijeme na LCD ekranu.

DateTime now = rtc.now ();

int sati = (now.hour ()); int min = (now.minute ()); / * Vrijeme alarma u 00:00 formatu */ lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amins1); 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); / * Vrijeme prikaza iz RTC -a */ lcd.setCursor (0, 0); lcd.print (sati); lcd.print (":"); lcd.print (min);

Korak 7: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Elektronika ovog projekta ima više dijelova, što se vidi u opisu materijala. Prva slika je shema finalne elektronike projekata. Druga slika je naš konačni elektronički dizajn. Treća slika je našeg projekta usred drugog prototipa.

Za početak priključite svoj NodeMCU na krajnji kraj vaše matične ploče. Zatim ćete morati spojiti svu svoju drugu elektroniku na NodeMCU i matičnu ploču. Počnite povezivanjem LCD ekrana sa pinovima D1 za SCL i D2 za SDA. LCD će omogućiti korisniku da vidi trenutno vrijeme i postavljena vremena alarma. Sada neka žica poveže vaše zujalice sa pinovima D3 i D6. Zvučni signali će omogućiti alarmu da upozori korisnika kada dođe do postavljenog vremena. Sada morate priložiti dugme kako biste omogućili zaustavljanje alarma. Pričvrstite ovo dugme na pin D4. Sada ćete svoj sat u stvarnom vremenu pričvrstiti na ploču. Ožičite sat u realnom vremenu tako da koristi iste SDA i SCL pinove koji se koriste za LCD ekran.

Korak 8: Završni

Final
Final

Ako ste slijedili navedene podatke, vaš projekt može izgledati kao gornja slika. Želimo vam sreću u pokušajima ponovnog stvaranja ovog projekta, a kad završite svoj projekt, potičemo vas da u komentarima podijelite slike i primjedbe s nama. Hvala vam i sretno kolege tvorci.

Preporučuje se: