Tartalomjegyzék:

Reggeli haver: 8 lépés
Reggeli haver: 8 lépés

Videó: Reggeli haver: 8 lépés

Videó: Reggeli haver: 8 lépés
Videó: ▶️ Заезжий молодец - Мелодрама | Фильмы и сериалы - Русские мелодрамы 2024, Július
Anonim
Image
Image

Vannak, akiknek nagyon sűrű a menetrendjük, ami miatt könnyen elfelejthetünk egy -két dolgot. Ezzel az ébresztőórával több ébresztést is beállíthat, hogy tartsa az ütemtervet. Az óra 24-szer működik, és mindössze annyit kell tennie, hogy beprogramozza, hogy a nap különböző időpontjaiban induljon el. Amikor ezt megteszi, a beállított időpontok megjelennek az LCD -képernyőn, így ellenőrizheti, hogy helyesek -e, és extra emlékeztetőként szolgálnak -e.

1. lépés: Az ötlet ötletelése

Rajzolás és anyagok
Rajzolás és anyagok

Amikor megpróbáltuk megoldani a problémát, a halcsont -módszerrel ötleteltünk, és megkaptuk az ébresztőórát.

2. lépés: Vázlatkészítés és anyagok

Rajzolás és anyagok
Rajzolás és anyagok

E lépés során megpróbáltunk listát készíteni mindarról, amiről úgy gondoltuk, hogy szükségünk lesz az elektronikára és a külső burkolatra. Aztán vázlatot készítettünk arról, hogy milyennek szeretnénk az ébresztőórát, és hogyan szereljük össze a külső burkolatát.

3. lépés: A külső burkolat létrehozása

A külső burkolat létrehozása
A külső burkolat létrehozása
A külső burkolat létrehozása
A külső burkolat létrehozása

Az első prototípusnál csak látni akartam, hogyan illeszkednek össze az ujjízületek, ezért cipősdobozt használtam, és nem használtam pontos méréseket.

4. lépés: A külső burkolat lézeres vágása

A külső burkolat lézeres vágása
A külső burkolat lézeres vágása

A második prototípushoz pontos méréseket akartam kérni, és létre kellett hoznom egy pdf -t, amelyet elküldhetek a lézervágónak. Ehhez egy dobozkészítő alkalmazás webhelyét használtam, https://boxdesigner.connectionlab.org. Ezen a weboldalon megadtam a doboz 3-D méretét, anyagunk vastagságát, mértékegységeit és azt, hogy milyen típusú fájlt szeretnék létrehozni. A dobozok mérete 7,5 x 3 x 5 hüvelyk volt, és 1/8 vastag akril anyagot használtam. Az ujjízületi bemetszések méréseit ezután automatikusan 0,46875 hüvelykre állították be. Azért választottam a pdf verziót, mert ez az a fájltípus, amelyet a lézervágó olvas, és néhány változtatást akartam végrehajtani a fájlban. A vonal színeit vörösre változtattam, hogy a lézervágó tudja, hogy kivágja őket, ahelyett, hogy az alakot gravírozná, és hozzáadtam egy téglalap alakú dobozt, amelynek mérete 3,92 x 1,56 hüvelyk volt, ami a készülék elülső darabja lesz. doboz. Hozzáadtam egy téglalapot is, amelynek mérete 1 hüvelyk és 0,5 hüvelyk volt a jobb oldali alján, hogy nyílásként szolgáljon az ébresztőórához csatlakoztatott vezetékhez. Végül három kör alakú nyílást adtam hozzá a két zümmögő és a gomb tetejéhez. A zümmögőnyílások átmérője 0,5 hüvelyk, a gombnyílás pedig 0,375 hüvelyk.

5. lépés: Összeállítás

Összerakása
Összerakása

Amikor az összes darabot kivágták, fecskendővel és akril ragasztóval lezártam. Összefogtam a darabokat és csepegtettem a ragasztót a bevágások közé, hogy összeálljanak az oldalak, de a tetejét nem ragasztották le.

6. lépés: Kód

Bevezetés:

Ezt a projektet az Arduino IDE szoftver c ++ nyelvével kódolták. Az alkalmazott mikrovezérlő a NodeMCU volt az ESP8266-mal. Ehhez a projekthez szükségünk lenne egy módra az idő pontos tartására, egy hangjelző hangjelzésére, egy riasztórendszerre, amely a riasztást megszólalná, és egy képernyőre, amely megjeleníti az összes időt és a riasztási időket. A teljes kódot ezen a linken találja:

Könyvtárak importálása

Először is importálnunk kell a szükséges könyvtárakat.

#include "RTClib.h"

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

Változók kezdeményezése

Ezután be kell állítanunk a változókat a későbbiekhez, hozzá kell rendelnünk a zümmögő gombok tűelrendezését, be kell állítanunk az RTC -t, és be kell állítanunk az LCD kijelző I2C címét.

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int zümmögő1 = 12; const int zümmögő2 = 0; const int gomb = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"} int starttime; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int óra1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int óra2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int óra3 = 0; int min3 = 0; int riasztás = 0; int ByteReceived; char megkaptaChar; const byte numChars = 32; char kapottChars [számChars];

Beállít

Ezután rendelkeznünk kell egy olyan funkcióval, amely elindítja az összes szükséges folyamatot. Ennél a funkciónál el kell indítanunk az LCD -t, és ki kell nyomtatnunk a kezdeti időket, el kell végeznünk egy kisebb funkciót, amely valós idejű RTC -t ad, ha még nem rendelkezik vele, és be kell indítanunk a soros monitort.

void setup () {

#ifndef ESP8266 while (! Sorozat); #endif if (! rtc.begin ()) {Serial.println ("Nem található RTC"); míg (1); } if (rtc.lostPower ()) {Serial.println ("Az RTC elvesztette az áramot, állítsuk be az időt!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // bekapcsolja a Baklightot. lcd.clear (); // Törli az LCD lcd.print -et ("00:00"); // megjelenítés LCD -n a kód feltöltése után lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Idő"); lcd.setCursor (10, 1); lcd.print ("1. riasztás"); lcd.setCursor (0, 3); lcd.print ("2. riasztás"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("3. riasztás"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (gomb, INPUT); // PIN -kód beállítása a némagombhoz pinMode (zümmögő1, OUTPUT); // beállít egy tűt a zümmögő kimenetéhez pinMode (zümmögő2, OUTPUT); // beállít egy tűt a zümmögő kimenethez Serial.begin (9600); Serial.println ("Riasztások beviteli ideje HHMM formátumban, szóközök nélkül"); starttime = millis ()/1000; }

Adatok fogadása

Most meg kell tudnunk fogadni a riasztási időket. Ehhez létrehoztunk egy függvényt, amely megkapja az adatokat a soros monitorról, és tömbben tárolja.

void recvWithEndMarker () {

statikus int ndx = 0; Karakterlánc timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {gavoChars [ndx] = timein [ndx]; } ReceiveChars [ndx] = '\ 0'; Serial.print (ReceiveChars); }

Riasztások beállítása

A következő lépés a riasztások beállítása. Itt található az 1. riasztás kódja. A 2. és 3. riasztáshoz ugyanaz a folyamat megismétlődött néhány számváltoztatással.

/* 1. riasztás*/

recvWithEndMarker (); int h, m; for (h = 0; h <2; h ++) {ahours1 [h] = kapottChars [h]; } for (m = 2; m <4; m ++) {amins1 [m-2] = kapottChars [m]; } óra1 [h] = '\ 0'; amin1 [m-2] = '\ 0'; Soros.nyomtatás (órák1); Serial.print (amins1); óra1 = atoi (óra1); min1 = atoi (amin1); Soros.nyomtatás (óra1); Soros.nyomtatás (min1);

Zümmögő/gomb

Ha ez megtörtént, akkor a hangjelzést akkor kell kikapcsolnunk, amikor a valós és a riasztási idő megegyezik. Ebben a lépésben is létrehozunk egy szundi gombot, amely leállítja a csengőt, miközben lenyomva tartja.

/ * Csend gomb */

int csend; int b; b = digitalRead (2); ha (b == LOW) {csend = 1; } else {csend = 0; } / * Indítási riasztás * / if (óra == óra1 && perc == perc1) {riasztás = 1; } else if (óra == óra2 &&perc == min2) {riasztás = 1; } else if (óra == óra3 &&perc == min3) {riasztás = 1; } else {riasztás = 0; csend = 0; } if (riasztás == 1 && csend == 0) {hang (zümmögő1, 4000, 1000); hangjelzés (zümmögő2, 4000, 1000); késleltetés (1000); noTone (zümmögő1); noTone (zümmögő2); késleltetés (1000); }

Nyomtatási idők

Végül ki kell nyomtatnunk a riasztási időket és a valós idejű időt az LCD képernyőre.

DateTime now = rtc.now ();

int óra = (most.óra ()); int mins = (most.perc ()); / * Riasztási idő 00:00 formátumban */ lcd.setCursor (10, 0); lcd.print (órák1); 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); / * Megjelenítési idő az RTC -ből */ lcd.setCursor (0, 0); lcd.print (óra); lcd.print (":"); lcd.print (perc);

7. lépés: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Ennek a projektnek az elektronikájában több darab is található, amint az az anyaglistában is látható. Az első kép a projekt végső elektronikájának vázlata. A második kép a végső elektronikus tervezésünk. A harmadik kép a projektünkről készült, a második prototípus közepén.

Kezdésként csatlakoztassa a NodeMCU -t a kenyeretábla túlsó végéhez. Ezután csatlakoztatnia kell az összes többi elektronikát a NodeMCU -hoz és a kenyértáblához. Először csatlakoztassa az LCD -képernyőt a SC1 D1 és SDA SD2 tűkhöz. Az LCD segítségével a felhasználó láthatja az aktuális időt és a beállított ébresztési időket. Most egy vezetékkel csatlakoztassa a zümmögőket a D3 és D6 csapokhoz. A hangjelzők lehetővé teszik, hogy a riasztó figyelmeztesse a felhasználót a beállított idő elérésekor. Most csatlakoztatnia kell egy gombot a riasztás leállításához. Csatlakoztassa ezt a gombot a D4 tűhöz. Most rögzíti a valós idejű óráját a kenyértáblához. Csatlakoztassa a valós idejű órát úgy, hogy ugyanazokat az SDA és SCL érintkezőket használja, mint az LCD kijelző.

8. lépés: döntő

Végső
Végső

Ha követte a megadott információkat, a projekt úgy nézhet ki, mint a fenti képen. Sok sikert kívánunk a projekt újrateremtéséhez, és miután befejezte a projektet, javasoljuk, hogy ossza meg velünk képeket és megjegyzéseket megjegyzésekben. Köszönöm és sok sikert készítőtársaimnak.

Ajánlott: