Cuprins:

Morning Buddy: 8 pași
Morning Buddy: 8 pași

Video: Morning Buddy: 8 pași

Video: Morning Buddy: 8 pași
Video: 8+ month baby food/kids snacks/green gram porridge/#shorts 2024, Iulie
Anonim
Image
Image

Unii oameni au programe foarte încărcate, ceea ce face ușor să uiți un lucru unul sau două. Cu acest ceas cu alarmă puteți seta mai multe alarme pentru a vă menține la timp. Ceasul funcționează 24 de ore și tot ce trebuie să faceți este să-l programați să se declanșeze la diferitele ore ale zilei care se potrivesc programului dvs. Când faceți acest lucru, orele pe care le-ați setat vor apărea pe ecranul LCD, astfel încât să puteți verifica pentru a vă asigura că au dreptate și a servi ca un memento suplimentar.

Pasul 1: Brainstorming ideea

Schițare și materiale
Schițare și materiale

Când încercam să rezolvăm problema, am folosit metoda osului de pește pentru a veni cu o idee și a rezultat cu ceasul cu alarmă.

Pasul 2: Schițare și materiale

Schițare și materiale
Schițare și materiale

În acest pas am încercat să facem o listă cu toate lucrurile pe care credeam că le vom avea nevoie pentru electronică și carcasă exterioară. Apoi am venit cu o schiță a ceea ce am vrut să arate ceasul cu alarmă și cum am asambla carcasa sa exterioară.

Pasul 3: Crearea carcasei Outter

Crearea carcasei Outter
Crearea carcasei Outter
Crearea carcasei Outter
Crearea carcasei Outter

Pentru primul prototip am vrut doar să văd cum se potrivesc articulațiile degetelor, așa că am folosit o cutie de pantofi și nu am folosit măsurători exacte.

Pasul 4: Tăierea cu laser a carcasei exterioare

Tăierea cu laser a carcasei exterioare
Tăierea cu laser a carcasei exterioare

Pentru al doilea prototip am vrut să obțin măsurători exacte și a trebuit să creez un pdf pentru a-l trimite la dispozitivul de tăiat cu laser. Pentru a face acest lucru, am folosit un site web pentru aplicația box maker, https://boxdesigner.connectionlab.org. Pe acel site am introdus apoi dimensiunile 3D ale cutiei, grosimea materialului nostru, unitățile de măsură și ce tip de fișier am vrut să creeze. Dimensiunile cutiilor erau de 7,5 in x 3 in x 5 in si am folosit un material acrilic de 1/8 in grosime. Măsurătorile crestăturilor articulațiilor degetelor au fost apoi configurate automat pentru a fi de 0,48,875 țoli. Am selectat versiunea pdf, deoarece acesta este tipul de fișier pe care îl citește un dispozitiv de tăiere cu laser și am vrut să fac câteva modificări în Adobe la fișier. Am schimbat culorile liniei în roșu, astfel încât dispozitivul de tăiat cu laser să știe să le taie în loc să graveze forma și am adăugat o cutie dreptunghiulară cu dimensiunile de 3,92 inchi pe 1,56 in pe ceea ce urma să fie partea din față a cutie. Am adăugat, de asemenea, un dreptunghi decupat cu dimensiuni de 1 inch cu 0,5 inch în partea dreaptă din partea de jos pentru a servi drept deschidere pentru cablul conectat la ceasul deșteptător. În cele din urmă am adăugat trei deschideri circulare în partea de sus pentru cele două buzzere și buton. Deschiderile buzzerului aveau un diametru de 0,5 inci și deschiderea butonului era de 0,375 inci.

Pasul 5: Puneți-l împreună

Punând laolaltă
Punând laolaltă

Când toate bucățile au fost tăiate, am folosit o seringă și un adeziv acrilic pentru a-l sigila împreună. Am ținut piesele împreună și am picurat adezivul între crestături pentru a face părțile împreună, dar partea superioară nu a fost lipită.

Pasul 6: Cod

Introducere:

Acest proiect a fost codificat folosind limbajul c ++ pe software-ul Arduino IDE. Microcontrolerul utilizat a fost NodeMCU cu ESP8266. Pentru acest proiect, am avea nevoie de o modalitate de a păstra cu precizie timpul, de un sunet sonor, de un sistem de alarmă care să provoace alarma sonoră și de un ecran pentru a afișa ora și orele de alarmă. Pentru codul complet, consultați acest link

Importul bibliotecilor

În primul rând, trebuie să importăm bibliotecile necesare.

#include "RTClib.h"

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

Inițierea variabilelor

Apoi, trebuie să inițiem variabile pentru mai târziu, să atribuim aspectul pinului pentru butoanele buzzer, să configurăm RTC și să setăm adresa I2C a afișajului LCD.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; butonul const int = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă"} în ora de începere; int activetime; int prevoustime = 0; char ahours1 [3]; amine char1 [3]; int ora1 = 0; int min1 = 0; char ahours2 [3]; amine char2 [3]; int hour2 = 0; int min2 = 0; char ahours3 [3]; amine char3 [3]; int hour3 = 0; int min3 = 0; alarma int = 0; int ByteReceived; char recivedChar; const byte numChars = 32; char jasotChars [numChars];

Înființat

Apoi, trebuie să avem o funcție care pornește toate procesele necesare. În această funcție, trebuie să pornim ecranul LCD și să imprimăm timpii inițiali, să facem o funcție mai mică care să ofere RTC în timp real dacă nu o are deja și să pornim monitorul serial.

configurare nulă () {

#ifndef ESP8266 while (! Serial); #endif if (! rtc.begin ()) {Serial.println ("Nu s-a putut găsi RTC"); în timp ce (1); } if (rtc.lostPower ()) {Serial.println ("RTC a pierdut puterea, să setăm ora!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // activează Baklight. lcd.clear (); // Șterge LCD lcd.print („00:00”); // afișare pe LCD după încărcarea codului lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print („Ora”); lcd.setCursor (10, 1); lcd.print ("Alarma 1"); lcd.setCursor (0, 3); lcd.print ("Alarma 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Alarma 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (buton, INPUT); // Setați un pin pentru butonul de tăcere pinMode (buzzer1, OUTPUT); // setați un pin pentru ieșirea buzzer pinMode (buzzer2, OUTPUT); // setați un pin pentru ieșirea buzzer Serial.begin (9600); Serial.println ("Timpul de intrare al alarmelor în format HHMM fără spațiu între alarme"); ora de start = milis () / 1000; }

Primirea datelor

Acum, trebuie să putem primi orele de alarmă. Pentru aceasta am creat o funcție pentru a primi datele de pe monitorul serial și a le stoca într-o matrice.

void recvWithEndMarker () {

static int ndx = 0; String timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {jasotChars [ndx] = timein [ndx]; } receivedChars [ndx] = '\ 0'; Serial.print (jasotChars); }

Setarea alarmelor

Următorul pas este să puteți seta alarme. Iată codul pentru alarma 1. Pentru alarmele 2 și 3, același proces a fost repetat cu câteva modificări ale numărului.

/ * Alarma 1 * /

recvWithEndMarker (); int h, m; for (h = 0; h <2; h ++) {ahours1 [h] = receivedChars [h]; } pentru (m = 2; m <4; m ++) {amins1 [m-2] = primitChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); ora1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (ora1); Serial.print (min1);

Buzzer / Buton

După ce am făcut acest lucru, trebuie să facem soneria să se oprească când timpul real și alarma sunt egale. De asemenea, în acest pas, facem un buton de amânare care oprește soneria în timp ce îl țineți apăsat.

/ * Buton Silence * /

tăcerea int; int b; b = digitalRead (2); if (b == LOW) {tăcere = 1; } altceva {tăcere = 0; } / * Porniți alarma * / if (ore == oră1 && mins == min1) {alarmă = 1; } else if (oră == oră2 && mins == min2) {alarmă = 1; } else if (oră == oră3 && mins == min3) {alarmă = 1; } else {alarm = 0; tăcerea = 0; } if (alarm == 1 && silence == 0) {ton (buzzer1, 4000, 1000); ton (buzzer2, 4000, 1000); întârziere (1000); noTone (buzzer1); noTone (buzzer2); întârziere (1000); }

Timpuri de imprimare

În cele din urmă, trebuie să imprimăm orele de alarmă și timpul real pe ecranul LCD.

DateTime acum = rtc.now ();

orele int = (now.hour ()); int mins = (now.minute ()); / * Ora alarmei în format 00:00 * / 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 (amins2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * Afișare timp de la RTC * / lcd.setCursor (0, 0); lcd.print (ore); lcd.print (":"); lcd.print (minute);

Pasul 7: Electronică

Electronică
Electronică
Electronică
Electronică
Electronică
Electronică

Există mai multe piese în electronica acestui proiect, așa cum se vede în lista de materiale. Prima imagine este o schemă a proiectelor electronice finale. A doua imagine este designul nostru electronic final. A treia imagine este a proiectului nostru în mijlocul celui de-al doilea prototip.

Pentru a începe, atașați-vă NodeMCU la capătul îndepărtat al panoului de verificare. Apoi, va trebui să vă conectați toate celelalte componente electronice la NodeMCU și panou. Începeți prin conectarea ecranului LCD la pinii D1 pentru SCL și D2 pentru SDA. Ecranul LCD va permite utilizatorului să vadă ora curentă și orele de alarmă setate. Acum, puneți un fir care să conecteze buzzerele la pinii D3 și D6. Buzzer-urile vor permite alarma să alerteze utilizatorul când a fost atins timpul stabilit. Acum trebuie să atașați un buton pentru a permite oprirea alarmei. Atașați acest buton la pinul D4. Acum, veți atașa ceasul dvs. în timp real la panou. Conectați ceasul în timp real, astfel încât să utilizeze aceiași pini SDA și SCL utilizați pentru afișajul LCD.

Pasul 8: Final

Final
Final

Dacă ați urmărit informațiile oferite, proiectul dvs. ar putea arăta ca imaginea de mai sus. Vă dorim noroc în încercările dvs. de a recrea acest proiect și, după ce ați finalizat proiectul, vă încurajăm să ne împărtășiți fotografii și remarci în comentarii. Vă mulțumim și mult succes colegi Makers.

Recomandat: