Indholdsfortegnelse:

Morgenkammerat: 8 trin
Morgenkammerat: 8 trin

Video: Morgenkammerat: 8 trin

Video: Morgenkammerat: 8 trin
Video: 【田舎ひとり暮らし】朝5時から始まる田舎の夏の日々 #177 2024, November
Anonim
Image
Image

Nogle mennesker har meget travle skemaer, hvilket gør det let at glemme en eller to ting. Med dette vækkeur kan du indstille flere alarmer for at holde dig på skemaet. Uret kører 24 timer, og alt du skal gøre er at programmere det til at gå ud på de forskellige tidspunkter på dagen, der passer til din tidsplan. Når du gør dette, vil de tidspunkter, du har indstillet, dukke op på LCD -skærmen, så du kan kontrollere, om de er rigtige, og tjene som en ekstra påmindelse.

Trin 1: Brainstorming af ideen

Skitsering og materialer
Skitsering og materialer

Da vi forsøgte at løse problemet, brugte vi fiskebenmetoden til at komme med en idé og resulterede i vores vækkeur.

Trin 2: Skitsering og materialer

Skitsering og materialer
Skitsering og materialer

Under dette trin forsøgte vi at lave en liste over alle de ting, vi troede, vi skulle bruge til elektronikken og yderhuset. Derefter kom vi med en skitse af, hvordan vi ville have vækkeuret til at se ud, og hvordan vi ville samle dets ydre kabinet.

Trin 3: Oprettelse af yderkabinettet

Oprettelse af yderkabinettet
Oprettelse af yderkabinettet
Oprettelse af yderkabinettet
Oprettelse af yderkabinettet

Til den første prototype ville jeg bare se, hvordan fingerleddene ville passe sammen, så jeg brugte en skokasse og brugte ikke nøjagtige mål.

Trin 4: Laserskæring af det ydre kabinet

Laserskæring af yderkappen
Laserskæring af yderkappen

Til den anden prototype ønskede jeg at få nøjagtige målinger og måtte oprette en pdf, der skulle sendes til laserskæreren. For at gøre dette brugte jeg et websted til en box maker -app, https://boxdesigner.connectionlab.org. På dette websted indtastede jeg derefter boksens 3D-dimensioner, tykkelsen på vores materiale, måleenhederne, og hvilken filtype jeg ville have, at den skulle oprette. Kassens dimensioner var 7,5 x 3 x 5 tommer, og jeg brugte en 1/8 i tykt akrylmateriale. Målingerne af fingerledets hak blev derefter automatisk konfigureret til at være 0,46875 tommer. Jeg valgte pdf -versionen, fordi det er den type fil, som en laserskærer læser, og jeg ville foretage nogle ændringer i Adobe til filen. Jeg ændrede linjefarverne til rød, så laserskæreren ville vide at skære dem ud i stedet for at indgravere formen, og jeg tilføjede en rektangelboks med dimensioner på 3,92 tommer med 1,56 tommer på, hvad der skulle være forstykket på boks. Jeg tilføjede også et rektangel, der er skåret ud med målene 1in x 0,5in i på højre sidestykke i bunden for at tjene som en åbning til ledningen, der er forbundet til vækkeuret. Sidst tilføjede jeg tre cirkulære åbninger øverst til de to summer og knappen. Summeråbningerne havde en diameter på 0,5 tommer og knapåbningen var 0,375 tommer.

Trin 5: Sæt det sammen

At sætte det sammen
At sætte det sammen

Da alle stykker var skåret ud, brugte jeg en sprøjte og akryllim til at forsegle det sammen. Jeg holdt stykkerne sammen og dryppede limen ind mellem hakene for at lave siderne sammen, men toppen blev ikke limet ned.

Trin 6: Kode

Introduktion:

Dette projekt blev kodet ved hjælp af sproget c ++ på Arduino IDE -softwaren. Den anvendte mikrokontroller var NodeMCU med ESP8266. Til dette projekt ville vi have brug for en måde til nøjagtigt at holde tiden, en summer til at lyde, et alarmsystem, der får alarmen til at summe, og en skærm til at vise tiden alle og alarmtiderne. Se den fulde kode på dette link

Import af biblioteker

Først og fremmest skal vi importere de nødvendige biblioteker.

#include "RTClib.h"

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

Initiering af variabler

Dernæst skal vi starte variabler til senere, tildele pin -layoutet til summer -knapperne, konfigurere RTC og indstille LCD -displayets I2C -adresse.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; const int -knap = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"} int starttid; int aktivtid; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int time1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int time2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int time3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char modtagetChar; const byte numChars = 32; char modtagetChars [numChars];

Opsætning

Dernæst skal vi have en funktion, der starter alle de nødvendige processer. I denne funktion skal vi starte LCD'et og udskrive indledende tider, lave en mindre funktion, der giver RTC realtid, hvis den ikke allerede har den, og starte den serielle skærm.

ugyldig opsætning () {

#ifndef ESP8266 mens (! Seriel); #endif if (! rtc.begin ()) {Serial.println ("RTC kunne ikke findes"); mens (1); } hvis (rtc.lostPower ()) {Serial.println ("RTC mistede strøm, lad os indstille tiden!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // gør Baklight ON. lcd.clear (); // Sletter LCD lcd.print ("00:00"); // display på LCD efter kode upload lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Tid"); 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 (knap, INDGANG); // Indstil en pin til stilhedsknappen pinMode (summer 1, OUTPUT); // indstil en pin til summer output pinMode (summer 2, OUTPUT); // indstil en pin til summer output Serial.begin (9600); Serial.println ("Inputtid for alarmer i HHMM -format uden plads mellem alarmer"); starttid = millis ()/1000; }

Modtagelse af data

Nu skal vi kunne modtage alarmtiden. For at gøre det oprettede vi en funktion til at modtage dataene fra den serielle skærm og gemme dem i et array.

void recvWithEndMarker () {

statisk int ndx = 0; String timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {receivedChars [ndx] = timein [ndx]; } receivedChars [ndx] = '\ 0'; Serial.print (modtagetChars); }

Indstilling af alarmer

Det næste trin er at kunne indstille alarmer. Her er koden til alarm 1. For alarm 2 og 3 blev den samme proces gentaget med et par talændringer.

/* Alarm 1*/

recvWithEndMarker (); int h, m; for (h = 0; h <2; h ++) {ahours1 [h] = modtagetChars [h]; } for (m = 2; m <4; m ++) {amins1 [m-2] = modtagetChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); time1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (time1); Seriel.print (min1);

Summer/knap

Når det er gjort, skal vi få summeren til at slukke, når realtid og alarmtid er ens. Også i dette trin laver vi en snooze -lignende knap, der stopper summeren, mens du holder den.

/ * Stilhedsknap */

int stilhed; int b; b = digitalRead (2); hvis (b == LAV) {tavshed = 1; } andet {tavshed = 0; } / * Start alarm * / hvis (timer == time1 && minutter == min1) {alarm = 1; } ellers hvis (timer == time2 && minutter == min2) {alarm = 1; } ellers hvis (timer == time3 && minutter == min3) {alarm = 1; } andet {alarm = 0; stilhed = 0; } hvis (alarm == 1 && stilhed == 0) {tone (summer 1, 4000, 1000); tone (summer 2, 4000, 1000); forsinkelse (1000); noTone (summer 1); noTone (buzzer2); forsinkelse (1000); }

Udskrivningstider

Endelig skal vi udskrive alarmtider og realtid til LCD -skærmen.

DateTime nu = rtc.now ();

int timer = (nu. time ()); int minutter = (nu. minut ()); / * Alarmtid i formatet 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); / * Visningstid fra RTC */ lcd.setCursor (0, 0); lcd.print (timer); lcd.print (":"); lcd.print (minutter);

Trin 7: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Der er flere stykker til elektronikken i dette projekt, som det ses i styklisten. Det første billede er en skematisk af projektets endelige elektronik. Det andet billede er vores endelige elektroniske design. Det tredje billede er af vores projekt midt i den anden prototype.

For at begynde at vedhæfte din NodeMCU til den yderste ende af dit brødbræt. Du skal derefter tilslutte al din anden elektronik til NodeMCU og brødbræt. Start med at tilslutte din LCD -skærm til benene D1 til SCL og D2 til SDA. LCD'et giver brugeren mulighed for at se det aktuelle tidspunkt og de indstillede alarmtider. Få nu en ledning til at forbinde dine summer til stifterne D3 og D6. Buzzerne tillader alarmen at advare brugeren, når den indstillede tid er nået. Du skal nu vedhæfte en knap, så alarmen kan stoppes. Vedhæft denne knap til pin D4. Nu vil du vedhæfte dit ur i realtid til brødbrættet. Tilslut real-time uret, så det bruger de samme SDA- og SCL-ben, der bruges til LCD-displayet.

Trin 8: Endelig

Final
Final

Hvis du har fulgt oplysningerne, kan dit projekt ligne billedet ovenfor. Vi ønsker dig held og lykke i dine forsøg på at genskabe dette projekt, og når du har gennemført dit projekt, opfordrer vi dig til at dele billeder og bemærkninger med os i kommentarerne. Tak og held og lykke andre Makers.

Anbefalede: