Sadržaj:

Jutarnji kolega: 8 koraka
Jutarnji kolega: 8 koraka

Video: Jutarnji kolega: 8 koraka

Video: Jutarnji kolega: 8 koraka
Video: Кондитер Дети». Сезон 2. Выпуск 8. Торт для Ольги Бузовой. 2024, Srpanj
Anonim
Image
Image

Neki ljudi imaju jako zauzet raspored, što olakšava zaboraviti jednu ili dvije stvari. Pomoću ovog budilnika možete postaviti više alarma kako biste bili na rasporedu. Sat radi 24 sata i sve što trebate učiniti je programirati ga da se aktivira u različito doba dana koje odgovara vašem rasporedu. Kada to radite, vremena koja ste postavili pojavit će se na LCD zaslonu, tako da možete provjeriti jesu li 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

Tijekom 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 njezino 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 uklopiti, 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 upisao trodimenzionalne dimenzije kutije, debljinu našeg materijala, mjerne jedinice i vrstu datoteke koju želim stvoriti. Dimenzije kutija bile su 7,5 x 3 x 5 inča, a ja sam koristio 1/8 debeli akrilni materijal. Mjerenja zareza u zglobovima prstiju tada su automatski konfigurirana na 0,46875 inča. Odabrao sam verziju pdf -a 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 graviranja oblika, i dodao sam pravokutnu kutiju dimenzija 3,92 inča za 1,56 inča na ono što će biti prednji dio kutija. Dodao sam i pravokutnik izrezan dimenzija 1 in 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 gumb. Otvori zujalice imali su promjer 0,5 inča, a otvor gumba 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. 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 je projekt kodiran korištenjem jezika c ++ na Arduino IDE softveru. Korišteni mikrokontroler bio je NodeMCU s ESP8266. Za ovaj projekt potreban nam je način za točno zadržavanje vremena, zvučni signal, alarmni sustav koji uzrokuje zujanje alarma i zaslon za prikaz svih vremena i vremena alarma. Za potpuni kôd pogledajte ovu vezu

Uvoz knjižnica

Prvo, moramo uvesti potrebne knjižnice.

#include "RTClib.h"

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

Pokretanje varijabli

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

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int zujalica1 = 12; const int zujalica2 = 0; const int gumb = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"} int starttime; int aktivno vrijeme; int prevoustime = 0; char ahours1 [3]; ugljeni amini1 [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 je primioChar; 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 stvarno vrijeme ako ga već nema, te 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, dopuštamo 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 (gumb, ULAZ); // Postavi pin za gumb tišine pinMode (zujalica1, OUTPUT); // postavlja pin za izlaz zujalice pinMode (zujalica2, OUTPUT); // postavljanje pina za izlaz zujalice Serial.begin (9600); Serial.println ("Ulazno vrijeme alarma u HHMM formatu bez razmaka između alarma"); vrijeme početka = millis ()/1000; }

Primanje 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; Niz timein = Serial.readString (); za (ndx = 0; timein [ndx]; ndx ++) {primljenoOdlomci [ndx] = timein [ndx]; } receivedChars [ndx] = '\ 0'; Serijski.ispis (primljenoOdjelovi); }

Postavljanje alarma

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

/* Alarm 1*/

recvWithEndMarker (); int h, m; za (h = 0; h <2; h ++) {ahours1 [h] = primljenoOdjelovi [h]; } za (m = 2; m <4; m ++) {amins1 [m-2] = primljenoOdlomci [m]; } ahours1 [h] = '\ 0'; amini1 [m-2] = '\ 0'; Serijski.ispis (ahours1); Serijski.ispis (amini1); sat1 = atoi (sati1); min1 = atoi (amini1); Serijski.tisak (sat1); Serijski.ispis (min1);

Zvučni signal/gumb

Kad je to učinjeno, potrebno je ugasiti zujalicu kada su realno vrijeme i vrijeme alarma jednaki. Također u ovom koraku izrađujemo gumb za odgodu koji zaustavlja zvučni signal dok ga držite.

/ * Gumb 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); }

Vrijeme ispisa

Na kraju, moramo ispisati vrijeme alarma i stvarno vrijeme na LCD zaslon.

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 (amini1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.tisak (amini2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.tisak (amini3); / * Vrijeme prikaza iz RTC -a */ lcd.setCursor (0, 0); lcd.tisak (sati); lcd.print (":"); lcd.tisak (min);

Korak 7: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Elektronika ovog projekta ima više dijelova, što se vidi iz materijala. Prva slika je shema završne 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 ploče. Zatim ćete morati povezati svu svoju drugu elektroniku s NodeMCU -om i matičnom pločom. Počnite povezivanjem LCD zaslona s 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 s pinovima D3 i D6. Zujalice će omogućiti alarmu da upozori korisnika kada dođe do postavljenog vremena. Sada morate priložiti gumb kako biste omogućili zaustavljanje alarma. Pričvrstite ovaj gumb na pin D4. Sada ćete svoj sat u stvarnom vremenu pričvrstiti na ploču. Ožičite sat u stvarnom vremenu tako da koristi iste SDA i SCL pinove koji se koriste za LCD zaslon.

Korak 8: Završni

Konačno
Konačno

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 i sretno kolege tvorci.

Preporučeni: