Innholdsfortegnelse:
- Trinn 1: Brainstorming av ideen
- Trinn 2: Skisse og materialer
- Trinn 3: Opprette ytterkabinettet
- Trinn 4: Laserskjæring av ytterhuset
- Trinn 5: Sette det sammen
- Trinn 6: Kode
- Trinn 7: Elektronikk
- Trinn 8: Finale
Video: Morning Buddy: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
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
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
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
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
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
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
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
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:
Study Buddy: 10 trinn
Study Buddy: Denne instruktøren forklarer hvordan du lager en kompis. Funksjonen til denne studiekameraten er å hjelpe tenåringer mellom 14 og 18 år med å lære å planlegge og studere. Målet er at roboten kan lære med elevene. Trekket er malt i
Ingeniører Buddy Bluetooth Kbd og mus .: 3 trinn
Engineers Buddy Bluetooth Kbd and Mouse .: Engineers Buddy USB-tastatur og musemulatormodul. Denne praktiske lille enheten, med sin blåtannstilkobling, gjør din Android-telefon/nettbrett til en trådløs fjernkontroll for hvilken som helst datamaskin. Det gir Android -enheten din kontroll over all HID -komp
Bygg 3D -trykte Arduino Social Robot Buddy: 9 trinn
Bygg 3D -trykt Arduino Social Robot Buddy: Buddy er en 3D -trykt arduino sosial robot. Han samhandler med verden ved å bruke en ultralydsensor for å kartlegge sitt nærområde. Når noe endrer seg i miljøet hans, reagerer han. Han kan bli overrasket eller nysgjerrig og noen ganger litt aggressiv
Lat 301 Dart Buddy !: 5 trinn
Lazy 301 Dart Buddy !: Romkameratene mine og jeg arvet nylig et banket darttavle … Vi begynte å utforske spill som 301, der hver spiller starter på 301 poeng kommer seg ned til null poeng i løpet av noen få runder . Dette var morsomt, men å skrive på
Morning & Night Light: 4 trinn
Morning & Night Light: Dette er et selvlaget papirlys som brukes både morgen og kveld