Innehållsförteckning:

Morgonkompis: 8 steg
Morgonkompis: 8 steg

Video: Morgonkompis: 8 steg

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

Vissa människor har mycket hektiska scheman, vilket gör det lätt att glömma en sak en eller två. Med denna väckarklocka kan du ställa in flera larm för att hålla dig på schemat. Klockan går 24 timmar och allt du behöver göra är att programmera den så att den går av vid de olika tidpunkterna på dagen som passar ditt schema. När du gör detta kommer de tider du har ställt in att dyka upp på LCD -skärmen, så att du kan kontrollera att de är rätt och fungera som en extra påminnelse.

Steg 1: Brainstorming av idén

Skiss och material
Skiss och material

När vi försökte lösa problemet använde vi fiskbenmetoden för att komma på en idé och resulterade med vår väckarklocka.

Steg 2: Skiss och material

Skiss och material
Skiss och material

Under detta steg försökte vi göra en lista över alla de saker vi trodde att vi skulle behöva för elektroniken och ytterhöljet. Sedan kom vi med en skiss över hur vi ville att väckarklockan skulle se ut och hur vi skulle montera dess ytterhölje.

Steg 3: Skapa ytterhöljet

Skapa ytterhöljet
Skapa ytterhöljet
Skapa ytterhöljet
Skapa ytterhöljet

För den första prototypen ville jag bara se hur fingerlederna skulle passa ihop, så jag använde en skokartong och använde inte exakta mått.

Steg 4: Laserskärning av ytterhöljet

Laserskärning av ytterhöljet
Laserskärning av ytterhöljet

För den andra prototypen ville jag få exakta mått och var tvungen att skapa en pdf för att skicka till laserskäraren. För att göra detta använde jag en box maker app -webbplats, https://boxdesigner.connectionlab.org. På den webbplatsen skrev jag sedan in lådans 3D-mått, tjockleken på vårt material, måttenheterna och vilken typ av fil jag ville att den skulle skapa. Lådans mått var 7,5 x 3 tum x 5 tum och jag använde en 1/8 i tjockt akrylmaterial. Mätningarna av fingerledens skåror konfigurerades sedan automatiskt till 0,46875 tum. Jag valde pdf -versionen eftersom det är den typ av fil som en laserskärare läser och jag ville göra några ändringar i Adobe i filen. Jag ändrade linjefärgerna till rött, så att laserskäraren skulle veta att klippa ut dem istället för att gravera formen, och jag lade till en rektangelbox med måtten 3,92 tum med 1,56 tum på vad som skulle bli framstycket på låda. Jag lade också till en rektangel utskurna med måtten 1 tum för 0,5 tum in på höger sidostycke längst ner för att fungera som en öppning för sladden som är ansluten till väckarklockan. Senast lade jag till tre cirkulära öppningar överst för de två summerna och knappen. Signalöppningarna hade en diameter på 0,5 tum och knappöppningen var 0,375 tum.

Steg 5: Sätta ihop det

Sätta ihop det
Sätta ihop det

När alla bitar skars ut använde jag en spruta och akryllim för att försegla den. Jag höll ihop bitarna och droppade limet mellan skårorna för att göra sidorna ihop, men toppen limmades inte ner.

Steg 6: Kod

Introduktion:

Detta projekt kodades med språket c ++ på Arduino IDE -programvaran. Mikrostyrenheten som användes var NodeMCU med ESP8266. För detta projekt skulle vi behöva ett sätt att exakt hålla tiden, en summer för att låta, ett larmsystem för att få larmet att surra och en skärm för att visa tiden alla och larmtiden. För hela koden hänvisar du till denna länk

Importera bibliotek

Först och främst måste vi importera nödvändiga bibliotek.

#inkludera "RTClib.h"

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

Initiera variabler

Därefter måste vi initiera variabler för senare, tilldela stiftlayouten för summerna, ställ in RTC och ställ in LCD -displayens I2C -adress.

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", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"} int starttid; int activetime; int prevoustime = 0; char ahours1 [3]; röding aminer1 [3]; int tim1 = 0; int min1 = 0; char ahours2 [3]; röding aminer2 [3]; int tim2 = 0; int min2 = 0; char ahours3 [3]; röding aminer3 [3]; int tim3 = 0; int min3 = 0; int larm = 0; int ByteReceived; char mottagenChar; const byte numChars = 32; röding tas emotChars [numChars];

Uppstart

Därefter måste vi ha en funktion som startar alla nödvändiga processer. I denna funktion måste vi starta LCD -skärmen och skriva ut initialtider, göra en mindre funktion som ger RTC realtid om den inte redan har den och starta den seriella bildskärmen.

void setup () {

#ifndef ESP8266 medan (! Serial); #endif if (! rtc.begin ()) {Serial.println ("Det gick inte att hitta RTC"); medan (1); } if (rtc.lostPower ()) {Serial.println ("RTC förlorade ström, låt oss ställa in tiden!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // gör Baklight PÅ. lcd.clear (); // Rensar LCD lcd.print ("00:00"); // display på LCD efter koduppladdning 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, INGÅNG); // Ställ in en stift för tystnadsknappen pinMode (summer 1, OUTPUT); // ställ in en stift för summer output pinMode (summer 2, OUTPUT); // ställ in en stift för summer -utgång Serial.begin (9600); Serial.println ("Inmatningstid för larm i HHMM -format utan utrymme mellan larm"); starttid = millis ()/1000; }

Tar emot data

Nu måste vi kunna ta emot larmtiden. För att göra det skapade vi en funktion för att ta emot data från den seriella bildskärmen och lagra den i en array.

void recvWithEndMarker () {

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

Ställa in larm

Nästa steg är att kunna ställa in larm. Här är koden för larm 1. För larm 2 och 3 upprepades samma process med några nummerändringar.

/* Alarm 1*/

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

Summer/knapp

Med det gjort måste vi få summern att gå när realtid och alarmtid är lika. Även i detta steg gör vi en snooze -liknande knapp som stoppar summern medan du håller den.

/ * Tystnadsknapp */

int tystnad; int b; b = digitalRead (2); om (b == LÅG) {tystnad = 1; } annat {tystnad = 0; } / * Starta larm * / if (timmar == timme1 && min == min1) {alarm = 1; } annars if (timmar == tim2 && min == min2) {alarm = 1; } annars if (timmar == tim3 && min == min3) {alarm = 1; } annat {alarm = 0; tystnad = 0; } if (alarm == 1 && tystnad == 0) {ton (summer1, 4000, 1000); ton (summer 2, 4000, 1000); fördröjning (1000); noTone (summer 1); noTone (summer2); fördröjning (1000); }

Utskriftstider

Slutligen måste vi skriva ut larmtiden och realtid till LCD -skärmen.

DateTime nu = rtc.now ();

int timmar = (nu. timme ()); int min = (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 från RTC */ lcd.setCursor (0, 0); lcd.print (timmar); lcd.print (":"); lcd.print (minuter);

Steg 7: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Det finns flera delar till elektroniken i detta projekt, vilket framgår av materialförslaget. Den första bilden är en schematisk bild av projektets slutelektronik. Den andra bilden är vår sista elektroniska design. Den tredje bilden är av vårt projekt mitt i den andra prototypen.

För att börja fästa din NodeMCU längst ut på din brödbräda. Du måste då ansluta all din andra elektronik till NodeMCU och brödbräda. Börja med att ansluta din LCD -skärm till stift D1 för SCL och D2 för SDA. LCD -skärmen låter användaren se den aktuella tiden och de inställda larmtiderna. Nu har en tråd ansluta dina summer till stiften D3 och D6. Med summerna kan larmet varna användaren när den inställda tiden har uppnåtts. Du måste nu fästa en knapp för att låta larmet stoppas. Fäst den här knappen för att fästa D4. Nu ska du fästa din realtidsklocka på brödbrädan. Anslut realtidsklockan så att den använder samma SDA- och SCL-stift som används för LCD-skärmen.

Steg 8: Slutlig

Slutlig
Slutlig

Om du har följt informationen kan ditt projekt se ut som bilden ovan. Vi önskar dig lycka till i dina försök att återskapa detta projekt och när du har slutfört ditt projekt uppmuntrar vi dig att dela bilder och kommentarer med oss i kommentarerna. Tack och lycka till andra tillverkare.

Rekommenderad: