Sisällysluettelo:

Aamukaveri: 8 vaihetta
Aamukaveri: 8 vaihetta

Video: Aamukaveri: 8 vaihetta

Video: Aamukaveri: 8 vaihetta
Video: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Heinäkuu
Anonim
Image
Image

Joillakin ihmisillä on erittäin kiireinen aikataulu, mikä helpottaa yhden tai kahden asian unohtamista. Tämän herätyskellon avulla voit asettaa useita hälytyksiä pitämään sinut aikataulussa. Kello toimii 24 kertaa ja sinun tarvitsee vain ohjelmoida se sammumaan aikataulusi mukaiseksi eri vuorokaudenajaksi. Kun teet tämän, asettamasi ajat ilmestyvät nestekidenäyttöön, jotta voit tarkistaa, että ne ovat oikein ja toimivat lisämuistutuksena.

Vaihe 1: Idean aivoriihi

Luonnos ja materiaalit
Luonnos ja materiaalit

Kun yritimme ratkaista ongelmaa, keksimme idean kalakaulamenetelmällä ja saimme aikaan herätyskellomme.

Vaihe 2: Luonnos ja materiaalit

Luonnos ja materiaalit
Luonnos ja materiaalit

Tämän vaiheen aikana yritimme tehdä luettelon kaikista asioista, joita ajattelimme tarvitsevan elektroniikalle ja ulkokuorelle. Sitten keksimme luonnoksen siitä, miltä halusimme herätyskellon näyttävän ja kuinka kokoamme sen ulkokuoren.

Vaihe 3: Ulkopuolen kotelon luominen

Ulkopuolen kotelon luominen
Ulkopuolen kotelon luominen
Ulkopuolen kotelon luominen
Ulkopuolen kotelon luominen

Ensimmäistä prototyyppiä varten halusin vain nähdä, kuinka sormiliitokset sopivat yhteen, joten käytin kenkälaatikkoa enkä käyttänyt tarkkoja mittauksia.

Vaihe 4: Ulkokuoren laserleikkaus

Ulkokuoren laserleikkaus
Ulkokuoren laserleikkaus

Toista prototyyppiä varten halusin saada tarkat mitat ja jouduin luomaan pdf -tiedoston lähettämään laserleikkurille. Tätä varten käytin laatikkosovelluksen verkkosivustoa https://boxdesigner.connectionlab.org. Sivustolle annoin sitten laatikon kolmiulotteiset mitat, materiaalimme paksuuden, mittayksiköt ja minkä tyyppisen tiedoston halusin luoda. Laatikoiden mitat olivat 7,5 x 3 x 5 tuumaa ja käytin 1/8 paksua akryylimateriaalia. Sorminivelen lovien mitat määritettiin sitten automaattisesti 0,46875 tuumaksi. Valitsin pdf -version, koska se on sellainen tiedostotyyppi, jota laserleikkuri lukee, ja halusin tehdä joitakin muutoksia Adobe -tiedostoon. Vaihdoin viivan värit punaisiksi, jotta laserleikkuri tietäisi leikata ne pois sen sijaan, että kaivertaisin muodon, ja lisäsin suorakulmion laatikon, jonka mitat olivat 3,92 x 1,56 tuumaa siitä, mikä tulee olemaan laatikko. Lisäsin myös suorakulmion, jonka mitat olivat 1 tuumaa ja 0,5 tuumaa oikealla puolella olevaan alaosaan, jotta se toimisi herätyskelloon liitetyn johdon aukona. Viimeisenä lisäsin kolme pyöreää aukkoa yläosassa molemmille summerille ja painikkeelle. Summerin aukkojen halkaisija oli 0,5 tuumaa ja painikkeen aukko oli 0,375 tuumaa.

Vaihe 5: Yhdistäminen

Yhdistäminen
Yhdistäminen

Kun kaikki palaset leikattiin, tiivistin ne ruiskulla ja akryyliliimalla. Pidin palat yhdessä ja tiputin liimaa lovien väliin, jotta sivut saisivat yhteen, mutta yläosa ei ollut liimattu alas.

Vaihe 6: Koodi

Johdanto:

Tämä projekti koodattiin Arduino IDE -ohjelmiston kielellä c ++. Käytetty mikro-ohjain oli NodeMCU ja ESP8266. Tätä projektia varten tarvitsemme tavan pitää aika tarkasti, summerin soida, hälytysjärjestelmän, joka saa hälytyksen soimaan, ja näytön, joka näyttää kaiken ajan ja hälytysajat. Koko koodi löytyy tästä linkistä

Kirjastojen tuonti

Ensinnäkin meidän on tuotava tarvittavat kirjastot.

#include "RTClib.h"

#Sisällytä "Wire.h" #Sisällytä #Sisällytä #Sisällytä #Sisällytä

Muuttujien käynnistäminen

Seuraavaksi meidän on aloitettava muuttujat myöhempää käyttöä varten, määritettävä summerin painikkeiden asettelu, määritettävä RTC ja asetettava nestekidenäytön I2C -osoite.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int summeri1 = 12; const int summeri2 = 0; const int -painike = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"} int aloitusaika; int toiminta -aika; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int tunti1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int tunti2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int tunti3 = 0; int min3 = 0; int hälytys = 0; int ByteReceived; char vastaanotettuChar; const tavu numChars = 32; char vastaanotettuChars [numChars];

Perustaa

Seuraavaksi meillä on oltava toiminto, joka käynnistää kaikki tarvittavat prosessit. Tässä toiminnossa meidän on käynnistettävä nestekidenäyttö ja tulostettava alkamisajat, tehtävä pienempi toiminto, joka antaa RTC: lle reaaliaikaisen, jos sillä ei vielä ole sitä, ja käynnistettävä sarjamonitori.

void setup () {

#ifndef ESP8266 while (! Serial); #endif if (! rtc.begin ()) {Serial.println ("RTC: tä ei löytynyt"); kun taas (1); } if (rtc.lostPower ()) {Serial.println ("RTC katkaisi virran, asetetaan aika!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.taustavalo (); // kytkee Baklightin päälle. lcd.clear (); // Poistaa nestekidenäytön lcd.print ("00:00"); // näyttö nestekidenäytöllä koodin lataamisen jälkeen lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Aika"); lcd.setCursor (10, 1); lcd.print ("Hälytys 1"); lcd.setCursor (0, 3); lcd.print ("Hälytys 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Hälytys 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (painike, INPUT); // Aseta nasta hiljaisuuspainikkeelle pinMode (summeri1, OUTPUT); // aseta nasta summerin ulostulolle pinMode (summeri2, OUTPUT); // aseta nasta summerin ulostulolle Serial.begin (9600); Serial.println ("Hälytysten syöttöaika HHMM -muodossa ilman hälyttimien välistä tilaa"); aloitusaika = millis ()/1000; }

Tietojen vastaanottaminen

Nyt meidän on kyettävä vastaanottamaan hälytysajat. Tätä varten loimme toiminnon, joka vastaanottaa tiedot sarjamonitorista ja tallentaa ne taulukkoon.

void recvWithEndMarker () {

staattinen int ndx = 0; Merkkijono timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {gotChars [ndx] = timein [ndx]; } ReceiveChars [ndx] = '\ 0'; Sarjajälki (vastaanotetut merkit); }

Hälytysten asettaminen

Seuraava askel on hälytysten asettaminen. Tässä on hälytyksen 1 koodi. Hälytyksille 2 ja 3 sama prosessi toistettiin muutamalla numeromuutoksella.

/* Hälytys 1*/

recvWithEndMarker (); int h, m; for (h = 0; h <2; h ++) {ahours1 [h] = vastaanotetut merkit [h]; } for (m = 2; m <4; m ++) {amins1 [m-2] = vastaanotetut merkit [m]; } tuntia1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); tunti1 = atoi (tuntia1); min1 = atoi (amiinit1); Sarjajälki (tunti1); Sarjanjälki (min1);

Summeri/painike

Kun tämä on tehty, meidän on saatava summeri soimaan, kun reaaliaikainen ja hälytysaika ovat samat. Myös tässä vaiheessa teemme torkun kaltaisen painikkeen, joka pysäyttää summerin, kun pidät sitä painettuna.

/ * Hiljaisuuspainike */

int hiljaisuus; int b; b = digitalRead (2); jos (b == LOW) {hiljaisuus = 1; } muu {hiljaisuus = 0; } / * Käynnistyshälytys * / if (tuntia == tunti1 && minuutit == min1) {hälytys = 1; } muu jos (tuntia == tunti2 && minuutit == min2) {hälytys = 1; } else if (tuntia == tunti3 && minuutit == min3) {hälytys = 1; } muu {hälytys = 0; hiljaisuus = 0; } if (hälytys == 1 && hiljaisuus == 0) {ääni (summeri1, 4000, 1000); ääni (summeri2, 4000, 1000); viive (1000); noTone (summeri1); noTone (summeri2); viive (1000); }

Tulostusajat

Lopuksi meidän on tulostettava hälytysajat ja reaaliaika LCD -näytölle.

DateTime now = rtc.now ();

int tuntia = (nyt.tunti ()); int mins = (nyt.minute ()); / * Hälytysaika muodossa 00:00 */ 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); / * Näyttöaika RTC: stä */ lcd.setCursor (0, 0); lcd.print (tuntia); lcd.print (":"); lcd.print (min);

Vaihe 7: Elektroniikka

Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka

Tämän projektin elektroniikassa on useita kappaleita, kuten materiaaliluettelosta käy ilmi. Ensimmäinen kuva on kaavio projektin lopullisesta elektroniikasta. Toinen kuva on viimeinen sähköinen suunnittelumme. Kolmas kuva on projektistamme toisen prototyypin keskellä.

Aloita kiinnittämällä NodeMCU -laite leipälautasi ääripäähän. Sinun on sitten liitettävä kaikki muu elektroniikka NodeMCU -laitteeseen ja leipälevyyn. Aloita liittämällä LCD -näyttö SCL -liittimiin D1 ja SDA -liittimiin D2. Nestekidenäytön avulla käyttäjä voi nähdä nykyisen ajan ja asetetut hälytysajat. Pyydä nyt lanka yhdistämään summeri nastoihin D3 ja D6. Summerit antavat hälytyksen ilmoittaa käyttäjälle, kun asetettu aika on saavutettu. Sinun on nyt liitettävä painike hälytyksen pysäyttämiseksi. Kiinnitä tämä painike nastaan D4. Nyt kiinnität reaaliaikaisen kellosi leipälevyyn. Kytke reaaliaikainen kello niin, että se käyttää samoja SDA- ja SCL-nastoja kuin LCD-näyttö.

Vaihe 8: Lopullinen

Lopullinen
Lopullinen

Jos olet seurannut annettuja tietoja, projektisi saattaa näyttää yllä olevasta kuvasta. Toivotamme onnea yrityksellesi luoda tämä projekti uudelleen ja kun olet saanut projektisi päätökseen, kehotamme sinua jakamaan kuvia ja huomautuksia kanssamme kommenteissa. Kiitos ja onnea tekijät.

Suositeltava: