INHOUDSOPGAWE:

Morning Buddy: 8 stappe
Morning Buddy: 8 stappe

Video: Morning Buddy: 8 stappe

Video: Morning Buddy: 8 stappe
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Julie
Anonim
Image
Image

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

Skets en materiaal
Skets en materiaal

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

Skets en materiaal
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

Die skep van die buitenste omhulsel
Die skep van die buitenste omhulsel
Die skep van die buitenste omhulsel
Die skep van die buitenste omhulsel

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

Lasersny van die buitenste omhulsel
Lasersny van 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

Saamvoeg
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

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
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

Finale
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: