Indholdsfortegnelse:
- Trin 1: Brainstorming af ideen
- Trin 2: Skitsering og materialer
- Trin 3: Oprettelse af yderkabinettet
- Trin 4: Laserskæring af det ydre kabinet
- Trin 5: Sæt det sammen
- Trin 6: Kode
- Trin 7: Elektronik
- Trin 8: Endelig
Video: Morgenkammerat: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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
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
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
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
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
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
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
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:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)