Përmbajtje:

Shoku i mëngjesit: 8 hapa
Shoku i mëngjesit: 8 hapa

Video: Shoku i mëngjesit: 8 hapa

Video: Shoku i mëngjesit: 8 hapa
Video: Noizy x Stresi - Medalioni (Official Video) 2024, Korrik
Anonim
Image
Image

Disa njerëz kanë orare shumë të ngarkuara, gjë që e bën të lehtë të harrosh një ose dy gjëra. Me këtë orë me zile mund të vendosni alarme të shumta për t'ju mbajtur në orar. Ora funksionon 24 orë dhe gjithçka që duhet të bëni është të programoni që ajo të fiket në periudha të ndryshme të ditës që i përshtaten orarit tuaj. Kur e bëni këtë, kohët që keni caktuar do të shfaqen në ekranin LCD, në mënyrë që të kontrolloni që të siguroheni që ata kanë të drejtë dhe të shërbejnë si një kujtesë shtesë.

Hapi 1: Brainstorming Ideja

Skicimi dhe materialet
Skicimi dhe materialet

Kur po përpiqeshim të zgjidhnim çështjen, ne përdorëm metodën e kockës së peshkut për të dalë me një ide dhe rezultoi me orën tonë të alarmit.

Hapi 2: Skicimi dhe materialet

Skicimi dhe materialet
Skicimi dhe materialet

Gjatë këtij hapi ne u përpoqëm të bënim një listë të të gjitha gjërave që mendonim se do të na duheshin për pajisjet elektronike dhe shtresën e jashtme. Pastaj dolëm me një skicë të asaj që donim të dukej ora e alarmit dhe se si do të montonim veshjen e saj të jashtme.

Hapi 3: Krijimi i kutisë së jashtme

Krijimi i kutisë së jashtme
Krijimi i kutisë së jashtme
Krijimi i zorrës së jashtme
Krijimi i zorrës së jashtme

Për prototipin e parë thjesht doja të shihja se si nyjet e gishtërinjve do të përshtaten së bashku, kështu që unë përdor një kuti këpucësh dhe nuk përdor matje të sakta.

Hapi 4: Prerja e zorrës së jashtme me lazer

Prerja e zorrës së jashtme me lazer
Prerja e zorrës së jashtme me lazer

Për prototipin e dytë doja të merrja matjet e sakta dhe duhej të krijoja një pdf për ta dërguar te prestari lazer. Për ta bërë këtë, unë përdor një faqe në internet të aplikacionit të krijuesit të kutive, https://boxdesigner.connectionlab.org. Në atë faqe interneti unë pastaj futa dimensionet 3-D të kutisë, trashësinë e materialit tonë, njësitë matëse dhe çfarë lloj skedari doja të krijonte. Dimensionet e kutive ishin 7.5 në x 3 në x 5 in dhe unë kam përdorur një 1/8 në material të trashë akrilik. Matjet e nyjeve të gishtit u konfiguruan automatikisht të ishin 0.46875 inç. Zgjodha versionin pdf sepse ky është lloji i skedarit që lexon një prestar lazer dhe doja të bëja disa ndryshime në adobe në skedar. Ndryshova ngjyrat e linjës në të kuqe, në mënyrë që prerësja lazer të dijë t'i prerë ato në vend që të gdhendë formën, dhe shtova një kuti drejtkëndëshe me dimensione 3.92 in me 1.56 in në atë që do të ishte pjesa e përparme e kuti Shtova gjithashtu një drejtkëndësh të prerë me dimensione 1 inç në 0.5 in në pjesën e djathtë në pjesën e poshtme për të shërbyer si një hapje për kordonin e lidhur me orën e alarmit. Së fundi shtova tre hapje rrethore në krye për dy gumëzhitësit dhe butonin. Hapjet e ziles kishin një diametër prej 0.5 inç dhe hapja e butonit ishte 0.375 inç.

Hapi 5: Vendosja së bashku

Duke e vënë atë së bashku
Duke e vënë atë së bashku

Kur të gjitha pjesët u prenë, unë përdor një shiringë dhe ngjitës akrilik për ta mbyllur atë së bashku. I mbajta pjesët së bashku dhe i hodha ngjitësin në mes të vrimave për të bërë anët së bashku, por pjesa e sipërme nuk ishte ngjitur poshtë.

Hapi 6: Kodi

Prezantimi:

Ky projekt u kodua duke përdorur gjuhën c ++ në softuerin Arduino IDE. Mikrokontrolluesi i përdorur ishte NodeMCU me ESP8266. Për këtë projekt do të kishim nevojë për një mënyrë për të mbajtur me saktësi kohën, një zile që të tingëllojë, një sistem alarmi që shkakton zhurmën e alarmit dhe një ekran për të shfaqur të gjithë kohën dhe orët e alarmit. Për kodin e plotë referojuni kësaj lidhjeje

Importimi i bibliotekave

Para së gjithash, ne duhet të importojmë bibliotekat e nevojshme.

#përfshi "RTClib.h"

#përfshi "Wire.h" #Include #Include #Include #Include

Inicimi i Variablave

Tjetra ne duhet të fillojmë ndryshoret për më vonë, të caktojmë paraqitjen e kunjave për butonat e ziles, të vendosim RTC dhe të vendosim adresën I2C të ekranit LCD.

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; butoni const int = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"E Diel", "E Hënë", "E Martë", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"} në fillim; int aktive; int paraprake = 0; char ahours1 [3]; aminet char1 [3]; int orë1 = 0; int min1 = 0; char ahours2 [3]; aminat char2 [3]; int orë2 = 0; int min2 = 0; char ahours3 [3]; aminat char3 [3]; int orë3 = 0; int min3 = 0; int alarm = 0; int ByteReceptuar; char marreChar; const byte numChars = 32; char moriChars [numChars];

Konfigurimi

Tjetra, ne duhet të kemi një funksion që fillon të gjitha proceset e nevojshme. Në këtë funksion, ne duhet të fillojmë ekranin LCD dhe të printojmë kohët fillestare, të bëjmë një funksion më të vogël që i jep RTC kohë reale nëse nuk e ka atë dhe të fillojmë monitorin serik.

void setup () {

#ifndef ESP8266 ndërsa (! Serial); #endif if (! rtc.begin ()) {Serial.println ("Nuk mund të gjej RTC"); ndërsa (1); } if (rtc.lostPower ()) {Serial.println ("RTC humbi fuqinë, lejon të caktojmë kohën!"); rtc.adjust (DataTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd. backlight (); // e bën Baklight ON. lcd.qartë (); // Pastron LCD lcd.print ("00:00"); // shfaqja në LCD pas ngarkimit të kodit lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Koha"); 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 ("Alarmi 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.filloj (); pinMode (butoni, INPUT); // Vendosni një kunj për butonin e heshtjes pinMode (buzzer1, OUTPUT); // vendosni një kunj për daljen e sinjalit pinMode (buzzer2, OUTPUT); // vendosni një kunj për daljen e ziles Serial.begin (9600); Serial.println ("Koha e futjes së alarmeve në formatin HHMM pa hapësirë midis alarmeve"); koha e fillimit = millis ()/1000; }

Marrja e të dhënave

Tani, ne duhet të jemi në gjendje të marrim kohën e alarmit. Për ta bërë këtë, ne krijuam një funksion për të marrë të dhënat nga monitori serik dhe për t'i ruajtur ato në një grup.

void recvWithEndMarker () {

statike int ndx = 0; String timein = Serial.readString (); për (ndx = 0; timein [ndx]; ndx ++) {marrëChars [ndx] = timein [ndx]; } moriChars [ndx] = '\ 0'; Serial.print (marrëChars); }

Vendosja e alarmeve

Hapi tjetër është aftësia për të vendosur alarme. Këtu është kodi për alarmin 1. Për alarmin 2 dhe 3 i njëjti proces u përsërit me disa ndryshime në numër.

/* Alarm 1*/

recvWithEndMarker (); int h, m; për (h = 0; h <2; h ++) {orë 1 [h] = marrëChars [h]; } për (m = 2; m <4; m ++) {amina1 [m-2] = marrëChars [m]; } ahours1 [h] = '\ 0'; aminat1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); orë1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (orë 1); Serial.print (min1);

Zile/Buton

Me të bërë këtë, ne duhet ta bëjmë zilen të fiket kur koha reale dhe koha e alarmit janë të barabarta. Gjithashtu në këtë hap ne bëjmë një buton snooze like që ndalon zilen ndërsa ju e mbani atë.

/ * Butoni i heshtjes */

int heshtje; int b; b = digitalRead (2); nëse (b == LOW) {heshtje = 1; } else {heshtje = 0; } / * Fillo Alarmin * / nëse (orë == orë1 && mins == min1) {alarm = 1; } tjetër nëse (orë == orë2 && mins == min2) {alarm = 1; } tjetër nëse (orë == orë3 && mins == min3) {alarm = 1; } else {alarm = 0; heshtje = 0; } if (alarm == 1 && heshtje == 0) {ton (zile 1, 4000, 1000); toni (zile 2, 4000, 1000); vonesa (1000); noTone (zile 1); noTone (zile2); vonesa (1000); }

Kohët e Shtypjes

Së fundi, ne duhet të printojmë kohën e alarmit dhe kohën reale në ekranin LCD.

DataTime tani = rtc.now ();

orë int = (tani. orë ()); int mins = (tani.minute ()); / * Koha e alarmit në formatin 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 (aminat2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * Koha e shfaqjes nga RTC */ lcd.setCursor (0, 0); lcd.print (orë); lcd.print (":"); lcd.print (mins);

Hapi 7: Elektronikë

Elektronikë
Elektronikë
Elektronikë
Elektronikë
Elektronikë
Elektronikë

Ka pjesë të shumta në elektronikën e këtij projekti, siç shihet në faturën e materialeve. Imazhi i Parë është një skemë e elektronikës përfundimtare të projekteve. Imazhi i dytë është dizajni ynë elektronik përfundimtar. Imazhi i Tretë është i projektit tonë në mes të prototipit të dytë.

Për të filluar bashkëngjitni NodeMCU -në tuaj në skajin e skajit tuaj të bukës. Atëherë do t'ju duhet të lidhni të gjitha pajisjet tuaja elektronike me NodeMCU dhe tabelën e bukës. Filloni duke e lidhur ekranin tuaj LCD me kunjat D1 për SCL dhe D2 për SDA. LCD do t'i lejojë përdoruesit të shohë kohën aktuale dhe orët e caktuara të alarmit. Tani keni një tel që lidh buzzers tuaj me kunjat D3 dhe D6. Gumëzhitësit do të lejojnë që alarmi të paralajmërojë përdoruesin kur të ketë arritur koha e caktuar. Tani duhet të bashkëngjitni një buton për të lejuar që alarmi të ndalet. Bashkangjiteni këtë buton në kunjin D4. Tani do ta lidhni orën tuaj në kohë reale në tryezën e bukës. Lidhni orën në kohë reale në mënyrë që të përdorë të njëjtat kunja SDA dhe SCL të përdorura për ekranin LCD.

Hapi 8: Përfundimtar

Përfundimtare
Përfundimtare

Nëse keni ndjekur informacionin e dhënë projekti juaj mund të duket si imazhi i mësipërm. Ne ju dëshirojmë fat në përpjekjet tuaja për të rikrijuar këtë projekt dhe kur të keni përfunduar projektin tuaj ju inkurajojmë të ndani fotografi dhe vërejtje me ne në komente. Faleminderit dhe suksese shokët krijues.

Recommended: