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 prijatelj: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Neki ljudi imaju vrlo zauzet raspored, što olakšava zaborav na jednu ili dvije stvari. Pomoću ovog budilnika možete postaviti više alarma kako biste bili u skladu sa rasporedom. Sat radi 24 sata i sve što trebate učiniti je programirati ga da se uključuje u različito doba dana koje odgovara vašem rasporedu. Kada ovo radite, vremena koja ste postavili pojavit će se na LCD ekranu, tako da možete provjeriti da li su 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
Tokom 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 njegovo vanjsko kućište.
Korak 3: Izrada vanjskog kućišta
Za prvi prototip samo sam htio vidjeti kako će se zglobovi prstiju spojiti, 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 unio trodimenzionalne dimenzije kutije, debljinu našeg materijala, mjerne jedinice i vrstu datoteke koju želim stvoriti. Dimenzije kutija su bile 7,5 x 3 x 5 inča, a ja sam koristio 1/8 debelog akrilnog materijala. Mjerenja zareza u zglobovima prstiju tada su automatski konfigurirana na 0,46875 inča. Odabrao sam pdf verziju 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 urezivanja oblika, i dodao sam pravokutnu kutiju dimenzija 3,92 inča za 1,56 inča na ono što će biti prednji dio box. Dodao sam i pravokutnik izrezan dimenzija 1 inč sa 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 dugme. Otvori zujalice imali su promjer 0,5 inča, a otvor dugmeta 0,375 inča.
Korak 5: Sastavite to zajedno
Kad su svi dijelovi izrezani, upotrijebio sam ih štrcaljkom i akrilnim ljepilom za spajanje. 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 projekt je kodiran jezikom c ++ na Arduino IDE softveru. Korišteni mikrokontroler bio je NodeMCU sa ESP8266. Za ovaj projekt potreban nam je način za precizno praćenje vremena, zvučni signal, alarmni sistem koji uzrokuje zujanje alarma i zaslon za prikaz svih vremena i vremena alarma. Za potpuni kôd pogledajte ovu vezu
Uvoz biblioteka
Prvo, moramo uvesti potrebne biblioteke.
#include "RTClib.h"
#include "Wire.h" #include #include #include #include
Iniciranje varijabli
Zatim moramo pokrenuti varijable za kasnije, dodijeliti raspored pinova za dugmad zujalice, postaviti RTC i postaviti I2C adresu LCD ekrana.
LiquidCrystal_I2C LCD (0x27, 20, 4);
const int zujalica1 = 12; const int zujalica2 = 0; const int dugme = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"} int starttime; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [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 recievedChar; 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 realno vrijeme ako ga već nema i 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, dozvoljavamo 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 (dugme, ULAZ); // Postavljanje pin -a za dugme tišine pinMode (zujalica1, OUTPUT); // postavlja pin za izlaz zujalice pinMode (zujalica2, OUTPUT); // postavlja pin za izlaz zujalice Serial.begin (9600); Serial.println ("Ulazno vrijeme alarma u HHMM formatu bez razmaka između alarma"); starttime = millis ()/1000; }
Prijem 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; String timein = Serial.readString (); za (ndx = 0; timein [ndx]; ndx ++) {primljenoChars [ndx] = timein [ndx]; } primljenoChars [ndx] = '\ 0'; Serial.print (receivedChars); }
Podešavanje alarma
Sljedeći korak je mogućnost postavljanja alarma. Ovdje je kôd za alarm 1. Za alarm 2 i 3 isti proces je ponovljen s nekoliko promjena broja.
/* Alarm 1*/
recvWithEndMarker (); int h, m; za (h = 0; h <2; h ++) {ahours1 [h] = primljenoChars [h]; } za (m = 2; m <4; m ++) {amini1 [m-2] = primljeni znakovi [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); sat1 = atoi (sati1); min1 = atoi (amini1); Serial.print (sat1); Serial.print (min1);
Zvučni signal/dugme
Kad to učinite, moramo učiniti da se zvučni signal isključi kad su realno vrijeme i vrijeme alarma jednaki. Takođe u ovom koraku pravimo dugme za odlaganje koje zaustavlja zvučni signal dok ga držite.
/ * Dugme 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); }
Printing Times
Konačno, moramo odštampati vrijeme alarma i realno vrijeme na LCD ekranu.
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 (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (amini2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amini3); / * Vrijeme prikaza iz RTC -a */ lcd.setCursor (0, 0); lcd.print (sati); lcd.print (":"); lcd.print (min);
Korak 7: Elektronika
Elektronika ovog projekta ima više dijelova, što se vidi u opisu materijala. Prva slika je shema finalne 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 vaše matične ploče. Zatim ćete morati spojiti svu svoju drugu elektroniku na NodeMCU i matičnu ploču. Počnite povezivanjem LCD ekrana sa 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 sa pinovima D3 i D6. Zvučni signali će omogućiti alarmu da upozori korisnika kada dođe do postavljenog vremena. Sada morate priložiti dugme kako biste omogućili zaustavljanje alarma. Pričvrstite ovo dugme na pin D4. Sada ćete svoj sat u stvarnom vremenu pričvrstiti na ploču. Ožičite sat u realnom vremenu tako da koristi iste SDA i SCL pinove koji se koriste za LCD ekran.
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 vam i sretno kolege tvorci.
Preporučuje se:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način da napravite igru, posebno nešto poput zagonetke, vizuelnog romana ili avanturističke igre
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom uputstvu ćemo izvršiti otkrivanje lica na Raspberry Pi 4 sa Shunya O/S koristeći biblioteku Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja sa
ShWelcome Box: Ponekad prijatelj: 8 koraka
ShWelcome Box: ponekad prijatelj: Tražite li preduzeće?
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima
Twitchy, tvoj prijatelj s e-otpadom: 11 koraka (sa slikama)
Twitchy, vaš prijatelj s e-otpadom: On je čistiji od hrčka, ima više ličnosti od većine gmazova i mnogo je pametniji od ovog psa koji sam imao. Osim toga, napravljen je od smeća i vrlo ga je zabavno graditi. Ljudska populacija se može (i vjerojatno je potrebno podijeliti) na