Innholdsfortegnelse:

Morning Buddy: 8 trinn
Morning Buddy: 8 trinn

Video: Morning Buddy: 8 trinn

Video: Morning Buddy: 8 trinn
Video: It’s Raining Tacos [Reanimated] 2024, November
Anonim
Image
Image

Noen mennesker har veldig travle tidsplaner, noe som gjør det enkelt å glemme en eller to ting. Med denne vekkerklokken kan du stille inn flere alarmer for å holde deg i rute. Klokken går døgnet rundt, og alt du trenger å gjøre er å programmere den til å gå av på de forskjellige tidspunktene på dagen som passer til timeplanen din. Når du gjør dette, vil tidene du har angitt dukke opp på LCD -skjermen, slik at du kan kontrollere at de er riktige og tjene som en ekstra påminnelse.

Trinn 1: Brainstorming av ideen

Skisse og materialer
Skisse og materialer

Da vi prøvde å løse problemet, brukte vi fiskebeinsmetoden til å komme med en idé og resulterte i vekkerklokken vår.

Trinn 2: Skisse og materialer

Skisse og materialer
Skisse og materialer

I løpet av dette trinnet prøvde vi å lage en liste over alle tingene vi trodde vi ville trenge for elektronikken og ytterhuset. Så kom vi med en skisse av hvordan vi ville at vekkerklokken skulle se ut og hvordan vi skulle montere ytterkabinettet.

Trinn 3: Opprette ytterkabinettet

Opprette ytterkabinettet
Opprette ytterkabinettet
Opprette ytterkabinettet
Opprette ytterkabinettet

For den første prototypen ville jeg bare se hvordan fingerleddene ville passe sammen, så jeg brukte en skokasse og brukte ikke eksakte målinger.

Trinn 4: Laserskjæring av ytterhuset

Laserskjæring av ytterhuset
Laserskjæring av ytterhuset

For den andre prototypen ønsket jeg å få nøyaktige målinger og måtte lage en pdf for å sende til laserskjæreren. For å gjøre dette brukte jeg et nettsted for å lage bokser, https://boxdesigner.connectionlab.org. På det nettstedet skrev jeg deretter inn 3D-dimensjonene på esken, tykkelsen på materialet vårt, måleenhetene og hvilken filtype jeg ønsket at den skulle lage. Boksenes dimensjoner var 7,5 x 3 x 5 tommer, og jeg brukte en 1/8 i tykt akrylmateriale. Målingene i fingerleddet hakk ble deretter automatisk konfigurert til å være 0,46875 tommer. Jeg valgte pdf -versjonen fordi det er typen fil som en laserskærer leser, og jeg ønsket å gjøre noen endringer i Adobe i filen. Jeg endret linjefarger til rødt, slik at laserskjæreren ville vite å kutte dem ut i stedet for å gravere formen, og jeg la til en rektangelboks med dimensjoner på 3,92 tommer med 1,56 tommer på det som skulle bli frontstykket på eske. Jeg la også til et rektangel som var kuttet ut med dimensjonene 1in x 0,5in på høyre sidestykke nederst for å tjene som en åpning for ledningen som er koblet til vekkerklokken. Sist la jeg til tre sirkulære åpninger øverst for de to summerne og knappen. Summeråpningene hadde en diameter på 0,5 tommer og knappåpningen var 0,375 tommer.

Trinn 5: Sette det sammen

Sette det sammen
Sette det sammen

Da alle bitene var kuttet ut, brukte jeg en sprøyte og akryllim for å forsegle den. Jeg holdt bitene sammen og dryppet limet mellom hakkene for å gjøre sidene sammen, men toppen ble ikke limt ned.

Trinn 6: Kode

Introduksjon:

Dette prosjektet ble kodet med språket c ++ på Arduino IDE -programvaren. Mikrokontrolleren som ble brukt var NodeMCU med ESP8266. For dette prosjektet trenger vi en måte å nøyaktig beholde tiden, en summer til å høres, et alarmsystem for å få alarmen til å surre og en skjerm for å vise tiden alle og alarmtidene. For hele koden, se denne lenken

Importere biblioteker

Først av alt må vi importere de nødvendige bibliotekene.

#include "RTClib.h"

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

Starter variabler

Deretter må vi starte variabler for senere, tildele pin -layout for summer -knappene, sette opp RTC og angi LCD -skjermens I2C -adresse.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int summer1 = 12; const int summer2 = 0; const int -knapp = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"} int starttid; int aktivitetstid; int prevoustime = 0; char ahours1 [3]; røye amins1 [3]; int time1 = 0; int min1 = 0; røye time2 [3]; røye -aminer2 [3]; int time2 = 0; int min2 = 0; røye ahours3 [3]; røyeamin3 [3]; int time3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char mottattChar; const byte numChars = 32; røye mottattChars [numChars];

Oppsett

Deretter må vi ha en funksjon som starter alle nødvendige prosesser. I denne funksjonen må vi starte opp LCD -en og skrive ut første ganger, lage en mindre funksjon som gir RTC sanntid hvis den ikke allerede har den, og starte den serielle skjermen.

ugyldig oppsett () {

#ifndef ESP8266 mens (! Serial); #endif if (! rtc.begin ()) {Serial.println ("Kunne ikke finne RTC"); mens (1); } if (rtc.lostPower ()) {Serial.println ("RTC mistet strøm, lar oss angi tiden!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // gjør Baklight PÅ. lcd.clear (); // Sletter LCD lcd.print ("00:00"); // visning på LCD etter opplasting av kode 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 (knapp, INNGANG); // Sett en pin for stillhetsknappen pinMode (summer 1, OUTPUT); // sett en pin for summer output pinMode (summer 2, OUTPUT); // sett en pin for summer output Serial.begin (9600); Serial.println ("Inngangstid for alarmer i HHMM -format uten mellomrom mellom alarmer"); starttid = millis ()/1000; }

Mottar data

Nå må vi kunne motta alarmtidene. For å gjøre det opprettet vi en funksjon for å motta dataene fra den serielle skjermen og lagre dem i en matrise.

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 (receivedChars); }

Angi alarmer

Det neste trinnet er å kunne stille inn alarmer. Her er koden for alarm 1. For alarm 2 og 3 ble den samme prosessen gjentatt med noen få tallendringer.

/* Alarm 1*/

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

Summer/knapp

Når det er gjort, må vi få summeren til å gå av når sanntid og alarmtid er lik. Også i dette trinnet lager vi en snooze -lignende knapp som stopper summeren mens du holder den.

/ * Silence -knapp */

int stillhet; int b; b = digitalRead (2); hvis (b == LAV) {stillhet = 1; } annet {stillhet = 0; } / * Start alarm * / if (timer == time1 && min == min1) {alarm = 1; } annet hvis (timer == time2 && minutter == min2) {alarm = 1; } annet hvis (timer == time3 && minutter == min3) {alarm = 1; } annet {alarm = 0; stillhet = 0; } hvis (alarm == 1 && stillhet == 0) {tone (summer1, 4000, 1000); tone (summer 2, 4000, 1000); forsinkelse (1000); noTone (summer1); noTone (summer2); forsinkelse (1000); }

Utskriftstider

Til slutt må vi skrive ut alarmtider og sanntid til LCD -skjermen.

DateTime nå = rtc.now ();

int timer = (nå. time ()); int minutter = (nå. minutt ()); / * Alarmtid i 00:00 -format */ 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);

Trinn 7: Elektronikk

Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk

Det er flere deler til elektronikken til dette prosjektet, som det fremgår av materialforslaget. Det første bildet er en skjematisk oversikt over prosjektets siste elektronikk. Det andre bildet er vår siste elektroniske design. Det tredje bildet er av prosjektet vårt midt i den andre prototypen.

For å begynne å feste NodeMCU til den fjerne enden av brødbrettet. Du må deretter koble all din andre elektronikk til NodeMCU og brødbrett. Begynn med å koble LCD -skjermen til pinnene D1 for SCL og D2 for SDA. LCD -skjermen lar brukeren se gjeldende tid og de angitte alarmtidene. Få en ledning til å koble summerne til pinnene D3 og D6. Summerene lar alarmen varsle brukeren når den angitte tiden er nådd. Du må nå feste en knapp for å la alarmen bli stoppet. Fest denne knappen for å feste D4. Nå vil du feste sanntidsklokken din til brødbrettet. Koble sanntidsklokken slik at den bruker de samme SDA- og SCL-pinnene som ble brukt for LCD-skjermen.

Trinn 8: Finale

Endelig
Endelig

Hvis du har fulgt informasjonen gitt, kan prosjektet ditt se ut som bildet ovenfor. Vi ønsker deg lykke til i dine forsøk på å gjenskape dette prosjektet, og når du har fullført prosjektet oppfordrer vi deg til å dele bilder og kommentarer med oss i kommentarene. Takk og lykke til andre Makers.

Anbefalt: