Sadržaj:
- Korak 1: Razmišljajte o ideji
- Korak 2: Skiciranje i materijali
- Korak 3: Izrada vanjskog kućišta
- Korak 4: Lasersko rezanje vanjskog kućišta
- Korak 5: Sastavite to zajedno
- Korak 6: Kodiranje
- Korak 7: Elektronika
- Korak 8: Završni
Video: Jutarnji kolega: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
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
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
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
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
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
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 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
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:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način stvaranja igre, osobito nečega poput zagonetke, vizualnog romana ili avanturističke igre
Broj koraka: 17 koraka
الكشف عن عن أنواع المحاليل: محمدآل سعودالكشف عن المحاليل رابط الفديو
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom Instructableu ćemo izvršiti detekciju lica na Raspberry Pi 4 sa Shunya O/S pomoću knjižnice Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja s
Kako napraviti brojač koraka?: 3 koraka (sa slikama)
Kako napraviti brojač koraka?: Nekada sam se dobro snašao u mnogim sportovima: hodanje, trčanje, vožnja bicikla, igranje badmintona itd. Volim jahanje da bih brzo putovao. Pa, pogledaj moj trbušni trbuh … Pa, u svakom slučaju, odlučujem ponovno početi vježbati. Koju opremu trebam pripremiti?
Jutarnji stroj: 5 koraka (sa slikama)
Jutarnji stroj: Jeste li se ikada ujutro probudili uz dosadni alarm, a zatim ste pješice otišli sve do kuhinje samo da biste pokušali uliti svoje piće. Pa ne gledaj dalje! Ova instrukcija će vas naučiti kako napraviti stroj koji ne može