INHOUDSOPGAWE:
- Stap 1: dinkskrum oor die idee
- Stap 2: Skets en materiaal
- Stap 3: Skep die buitekas
- Stap 4: Laserknip die buitenste omhulsel
- Stap 5: Saamvoeg
- Stap 6: Kode
- Stap 7: Elektronika
- Stap 8: Finale
Video: Morning Buddy: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Sommige mense het baie besige skedules, wat dit maklik maak om iets te vergeet. Met hierdie wekker kan u verskeie alarms stel om u op skedule te hou. Die klok loop 24 uur en al wat u hoef te doen, is om dit te programmeer om op die verskillende tye van die dag wat by u skedule pas, af te gaan. As u dit doen, verskyn die tye wat u ingestel het op die LCD -skerm, sodat u kan kyk of dit reg is en as 'n ekstra herinnering dien.
Stap 1: dinkskrum oor die idee
Toe ons probeer om die probleem op te los, het ons die visbeenmetode gebruik om 'n idee te kry en met ons wekker gelei.
Stap 2: Skets en materiaal
Tydens hierdie stap het ons probeer om 'n lys te maak van al die dinge wat ons gedink het ons nodig sou hê vir die elektronika en buitekas. Toe kom ons met 'n skets van hoe ons wil hê die wekker moet lyk en hoe ons die buitenste omhulsel sal saamstel.
Stap 3: Skep die buitekas
Vir die eerste prototipe wou ek net sien hoe die vingergewrigte bymekaar pas, so ek het 'n skoenboks gebruik en nie presiese metings gebruik nie.
Stap 4: Laserknip die buitenste omhulsel
Vir die tweede prototipe wou ek presiese metings kry en moes ek 'n pdf maak om na die lasersnyer te stuur. Om dit te doen, gebruik ek 'n webwerf vir die vervaardiger van 'n boks, https://boxdesigner.connectionlab.org. Op die webwerf het ek dan die 3D-afmetings van die boks ingevoer, die dikte van ons materiaal, die meeteenhede en watter tipe lêer ek wil hê dit moet skep. Die afmetings van die bokse was 7.5 in x 3 in x 5 in en ek het 'n 1/8 dik dik akriel materiaal gebruik. Die afmetings van die vingergewrig -kerf is dan outomaties ingestel op 0,46875 duim. Ek het die pdf -weergawe gekies, want dit is die tipe lêer wat 'n lasersnyer lees en ek wou 'n paar veranderinge aanbring in Adobe se lêer. Ek het die lynkleure in rooi verander, sodat die lasersnyer sou weet om dit uit te sny in plaas van om die vorm te graveer, en ek het 'n reghoekige boks met 'n afmeting van 3,92 in by 1,56 in bygevoeg op wat die voorste stuk van die boks. Ek het ook 'n reghoek aan die onderkant van die regterkant aan die onderkant bygevoeg om 'n opening te maak vir die koord wat aan die wekker gekoppel is. Laastens het ek drie sirkelvormige openinge aan die bokant bygevoeg vir die twee gonsers en die knoppie. Die gonsopings het 'n deursnee van 0,5 duim en die knoppieopening was 0,375 duim.
Stap 5: Saamvoeg
Toe al die stukke uitgesny is, het ek 'n spuit en akrielgom gebruik om dit te verseël. Ek het die stukke bymekaar gehou en die gom tussen die kerf ingegooi om die kante bymekaar te maak, maar die bokant was nie vasgeplak nie.
Stap 6: Kode
Inleiding:
Hierdie projek is gekodeer met behulp van die taal c ++ op Arduino IDE -sagteware. Die gebruikte mikrobeheerder was die NodeMCU met die ESP8266. Vir hierdie projek benodig ons 'n manier om die tyd akkuraat te hou, 'n gonser om te klink, 'n alarmstelsel om die alarm te laat gons en 'n skerm om die tyd en die alarmtyd te wys. Raadpleeg hierdie skakel vir die volledige kode
Die invoer van biblioteke
Eerstens moet ons die nodige biblioteke invoer.
#sluit "RTClib.h" in
#include "Wire.h" #include #include #include #include
Inisieer veranderlikes
Vervolgens moet ons veranderlikes begin vir later, die penuitleg vir die zoemerknoppies toewys, die RTC opstel en die I2C -adres van die LCD -skerm instel.
LiquidCrystal_I2C lcd (0x27, 20, 4);
const int gonser1 = 12; const int gonser2 = 0; const int knoppie = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"} int aanvangstyd; int aktiewe tyd; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int uur1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int uur2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int uur3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char ontvangChar; const byte numChars = 32; char ontvangChars [numChars];
Stel op
Vervolgens moet ons 'n funksie hê wat al die nodige prosesse begin. In hierdie funksie moet ons die LCD begin en die eerste tye druk, 'n kleiner funksie maak wat die RTC real -time gee as dit nog nie beskikbaar is nie, en die seriële monitor begin.
ongeldige opstelling () {
#ifndef ESP8266 terwyl (! Serial); #endif as (! rtc.begin ()) {Serial.println ("RTC kon nie gevind word nie"); terwyl (1); } if (rtc.lostPower ()) {Serial.println ("RTC het krag verloor, laat ons die tyd bepaal!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // maak Baklight AAN. lcd.clear (); // Maak LCD lcd.print ("00:00") skoon; // vertoon op LCD na oplaai van lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Tyd"); 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 (knoppie, INVOER); // Stel 'n speld in vir die stilte -knoppie pinMode (zoemer1, UITGANG); // stel 'n pen in vir die uitgang van pin -mode vir gonser (buzzer2, OUTPUT); // stel 'n pen in vir die uitvoer van die gonserie Serial.begin (9600); Serial.println ("Invoertyd van alarms in HHMM -formaat sonder spasie tussen alarms"); begintyd = millis ()/1000; }
Ontvangs van data
Nou moet ons die alarmtye kan ontvang. Om dit te kan doen, het ons 'n funksie geskep om die data van die seriële monitor te ontvang en in 'n skikking te stoor.
void recvWithEndMarker () {
statiese int ndx = 0; String timein = Serial.readString (); vir (ndx = 0; timein [ndx]; ndx ++) {receivedChars [ndx] = timein [ndx]; } receivedChars [ndx] = '\ 0'; Serial.print (ontvangChars); }
Stel alarms in
Die volgende stap is om alarms in te stel. Hier is die kode vir alarm 1. Vir alarm 2 en 3 is dieselfde proses herhaal met 'n paar aantal veranderings.
/* Alarm 1*/
recvWithEndMarker (); int h, m; vir (h = 0; h <2; h ++) {ahours1 [h] = receivedChars [h]; } vir (m = 2; m <4; m ++) {amins1 [m-2] = ontvangenChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Reeks.afdruk (uur 1); Serial.print (amins1); uur1 = atoi (ahours1); min1 = atoi (amins1); Reeks.afdruk (uur1); Reeks.afdruk (min1);
Gonser/knoppie
Met dit klaar, moet ons die gonser laat afgaan as reële tyd en alarmtyd gelyk is. In hierdie stap maak ons ook 'n snooze -knoppie wat die zoemer stop terwyl u dit hou.
/ * Stilte -knoppie */
int stilte; int b; b = digitalRead (2); as (b == LAAG) {stilte = 1; } anders {stilte = 0; } / * Begin alarm * / as (ure == uur1 && minute == min1) {alarm = 1; } anders as (ure == uur2 && minute == min2) {alarm = 1; } anders as (ure == uur3 && minute == min3) {alarm = 1; } anders {alarm = 0; stilte = 0; } as (alarm == 1 && stilte == 0) {toon (zoemer1, 4000, 1000); toon (gonser2, 4000, 1000); vertraging (1000); noTone (gonser1); noTone (gonser2); vertraging (1000); }
Druk tye
Uiteindelik moet ons die alarmtye en reële tyd op die LCD -skerm druk.
DateTime nou = rtc.now ();
int ure = (nou.uur ()); int minute = (nou.minute ()); / * Alarmtyd in 00:00 -formaat */ 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); / * Vertoon tyd van RTC */ lcd.setCursor (0, 0); lcd.print (ure); lcd.print (":"); lcd.print (min);
Stap 7: Elektronika
Daar is veelvuldige stukke aan die elektronika van hierdie projek, soos gesien in die materiaalverslag. Die eerste beeld is 'n skema van die finale elektronika van die projekte. Die tweede beeld is ons finale elektroniese ontwerp. Die derde beeld is van ons projek te midde van die tweede prototipe.
Heg u NodeMCU aan die einde van u broodbord aan. U moet dan al u ander elektronika aan die NodeMCU en die broodbord koppel. Koppel u LCD -skerm aan penne D1 vir SCL en D2 vir SDA. Met die LCD kan die gebruiker die huidige tyd en die vasgestelde alarmtye sien. Koppel nou 'n draad aan die speldjies D3 en D6. Met die gonsers kan die alarm die gebruiker waarsku wanneer die vasgestelde tyd bereik is. U moet nou 'n knoppie heg om die alarm te laat stop. Heg hierdie knoppie aan om D4 vas te maak. Nou heg u u intydse horlosie aan die broodbord. Bedraad die intydse klok sodat dit dieselfde SDA- en SCL-penne gebruik wat vir die LCD-skerm gebruik word.
Stap 8: Finale
As u die gegewe inligting gevolg het, kan u projek soos die prent hierbo lyk. Ons wens u geluk met u pogings om hierdie projek te herskep, en as u u projek voltooi het, moedig ons u aan om foto's en opmerkings met ons te deel in die kommentaar. Dankie en sterkte mede -makers.
Aanbeveel:
Bestudeer Buddy: 10 stappe
Study Buddy: Hierdie instruksie verduidelik hoe u 'n studdy buddy kan maak. Die funksie van hierdie studiemaat is om tieners tussen die ouderdomme van 14 en 18 te help om te leer hoe om te beplan en te studeer. Die doel is dat die robot saam met die studente kan leer. Die omslag is geverf in 'n
Ingenieurs Buddy Bluetooth Kbd en muis: 3 stappe
Engineers Buddy Bluetooth Kbd and Mouse .: Engineers Buddy USB-sleutelbord en muisemulator-module.Hierdie handige klein toestel, met sy bloutand-verbinding, verander jou Android-selfoon/tablet in 'n draadlose afstandsbediening vir enige rekenaar. Dit gee u Android -toestel beheer oor alle HID -toestelle
Bou van die 3D -gedrukte Arduino Social Robot Buddy: 9 stappe
Die bou van die 3D -gedrukte Arduino Social Robot Buddy: Buddy is 'n 3D -gedrukte arduino sosiale robot. Hy het interaksie met die wêreld deur 'n ultrasoniese sensor te gebruik om sy onmiddellike omgewing in kaart te bring. As iets in sy omgewing verander, reageer hy. Hy kan verbaas of nuuskierig wees en soms 'n bietjie aggressief
Lui 301 Dart Buddy !: 5 stappe
Lazy 301 Dart Buddy !: Ek en my kollegas se kamermaats het onlangs 'n pylbord geërf … Ons het speletjies soos 301 begin verken, waarin elke speler op 301 punte begin afloop na 'n nulpunt in die loop van 'n paar rondes. . Dit was lekker, maar ek skryf oor
Bartender's Buddy: an @ Home Creative Switch: 6 stappe
Bartender's Buddy: an @ Home Creative Switch: Het jy al ooit by jouself gedink terwyl jy gaste tuis onthaal het … " Gee - ek wens ek het 'n unieke manier gehad om my gas te wys wanneer hul drank die optimale drinkbeker bereik het. .. " ? Nou kan u hierdie wens verwesenlik, met die