Taula de continguts:

Amic del matí: 8 passos
Amic del matí: 8 passos

Vídeo: Amic del matí: 8 passos

Vídeo: Amic del matí: 8 passos
Vídeo: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, De novembre
Anonim
Image
Image

Algunes persones tenen horaris molt ocupats, cosa que facilita l’oblit d’una o dues coses. Amb aquest despertador, podeu configurar diverses alarmes per mantenir-vos al dia. El rellotge funciona les 24 hores i tot el que heu de fer és programar-lo perquè s’activi a les diferents hores del dia que s’adaptin al vostre horari. Quan feu això, apareixeran a la pantalla LCD els temps que hàgiu definit, de manera que pugueu comprovar que estiguin bé i que us serveixin de recordatori addicional.

Pas 1: Pluja d’idees sobre la idea

Esbossos i materials
Esbossos i materials

Quan intentàvem resoldre el problema, vam fer servir el mètode de les espines de peix per fer-nos una idea i va resultar amb el despertador.

Pas 2: esbossos i materials

Esbossos i materials
Esbossos i materials

Durant aquest pas hem intentat fer una llista de totes les coses que creiem que necessitaríem per a l'electrònica i la carcassa exterior. A continuació, se’ns va fer un esbós de com volíem que fos el despertador i de com muntaríem la carcassa exterior.

Pas 3: creació de la carcassa exterior

Creació de la carcassa Outter
Creació de la carcassa Outter
Creació de la carcassa Outter
Creació de la carcassa Outter

Per al primer prototip només volia veure com encaixaven les articulacions dels dits, de manera que vaig utilitzar una caixa de sabates i no vaig fer mesures exactes.

Pas 4: tall per làser de la carcassa exterior

Tall per làser de la carcassa exterior
Tall per làser de la carcassa exterior

Per al segon prototip volia obtenir mesures exactes i vaig haver de crear un pdf per enviar-lo al tallador làser. Per fer-ho, he utilitzat el lloc web de l’aplicació Box Box, https://boxdesigner.connectionlab.org. Al lloc web, aleshores vaig introduir les dimensions tridimensionals de la caixa, el gruix del material, les unitats de mesura i el tipus de fitxer que volia que creés. Les dimensions de les caixes eren de 7,5 x 3 x 5 in i vaig utilitzar un material acrílic de 1/8 de gruix. Les mesures de les osques de les articulacions dels dits es van configurar automàticament per fer 0,44675 polzades. He seleccionat la versió pdf perquè aquest és el tipus de fitxer que llegeix un tallador làser i volia fer alguns canvis al fitxer. Vaig canviar els colors de la línia a vermell, de manera que el tallador làser sabria retallar-los en lloc de gravar la forma i vaig afegir una caixa rectangular amb unes dimensions de 3,92 polzades per 1,56 polzades sobre el que anava a ser la peça frontal del Caixa. També he afegit un rectangle retallat amb unes dimensions d’1 x 0,5 polzades a la peça lateral dreta de la part inferior per servir com a obertura del cable connectat al despertador. Per últim he afegit tres obertures circulars a la part superior dels dos brunzidors i del botó. Les obertures del brunzidor tenien un diàmetre de 0,5 polzades i l’obertura del botó de 0,375 polzades.

Pas 5: ajuntar-lo

Posant-ho en comú
Posant-ho en comú

Quan es van retallar totes les peces, vaig utilitzar una xeringa i una cola acrílica per segellar-les. Vaig mantenir les peces juntes i vaig deixar anar la cola entre les osques per unir els costats, però la part superior no es va enganxar.

Pas 6: Codi

Introducció:

Aquest projecte es va codificar mitjançant el llenguatge c ++ del programari IDE Arduino. El microcontrolador utilitzat va ser el NodeMCU amb l’ESP8266. Per a aquest projecte, necessitaríem una manera de mantenir el temps amb precisió, un so de so, un sistema d'alarma per fer sonar l'alarma i una pantalla per mostrar el temps i les hores d'alarma. Per obtenir el codi complet, consulteu aquest enllaç

Importació de biblioteques

Primer de tot, hem d’importar les biblioteques necessàries.

#include "RTClib.h"

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

Variables d'inici

A continuació, hem d'iniciar variables per a més endavant, assignar la disposició dels pins per als botons del brunzidor, configurar el RTC i configurar l'adreça I2C de la pantalla LCD.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; botó int int = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte"} int hora d'inici; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int hora1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int hour2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int hour3 = 0; int min3 = 0; int alarma = 0; int ByteReceived; char recivedChar; byte const numChars = 32; char receivedChars [numChars];

Configuració

A continuació, hem de tenir una funció que iniciï tots els processos necessaris. En aquesta funció, hem d’iniciar la pantalla LCD i imprimir els primers temps, fer una funció més petita que doni temps reals a l’RTC si encara no la té i engegar el monitor sèrie.

configuració nul·la () {

#ifndef ESP8266 while (! Serial); #endif if (! rtc.begin ()) {Serial.println ("No s'ha pogut trobar RTC"); mentre que (1); } if (rtc.lostPower ()) {Serial.println ("RTC ha perdut energia, permetem establir l'hora!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // fa activar Baklight. lcd.clear (); // Esborra la impressió LCD lcd ("00:00"); // mostra a la pantalla LCD després de pujar el codi lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Temps"); lcd.setCursor (10, 1); lcd.print ("Alarma 1"); lcd.setCursor (0, 3); lcd.print ("Alarma 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Alarma 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (botó, INPUT); // Estableix un pin per al botó de silenci pinMode (buzzer1, OUTPUT); // definiu un pin per a la sortida del brunzidor pinMode (buzzer2, OUTPUT); // definiu un pin per a la sortida del brunzidor Serial.begin (9600); Serial.println ("Temps d'entrada d'alarmes en format HHMM sense espai entre alarmes"); hora d’inici = millis () / 1000; }

Recepció de dades

Ara, hem de ser capaços de rebre les hores d’alarma. Per fer-ho, hem creat una funció per rebre les dades del monitor sèrie i emmagatzemar-les en una matriu.

void recvWithEndMarker () {

static int ndx = 0; String timein = Serial.readString (); per a (ndx = 0; timein [ndx]; ndx ++) {ReceChars [ndx] = timein [ndx]; } receivedChars [ndx] = '\ 0'; Serial.print (receivedChars); }

Configuració d'alarmes

El següent pas és poder configurar alarmes. Aquí teniu el codi de l'alarma 1. Per a les alarmes 2 i 3, es va repetir el mateix procés amb alguns canvis de número.

/ * Alarma 1 * /

recvWithEndMarker (); int h, m; for (h = 0; h <2; h ++) {ahours1 [h] = ReceChars [h]; } per a (m = 2; m <4; m ++) {amins1 [m-2] = cares rebudes [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); hora1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (hora1); Serial.print (min1);

Buzzer / Button

Un cop fet això, hem de fer que el timbre s'apagui quan el temps real i el temps d'alarma siguin iguals. També en aquest pas fem un botó de posposició que atura el timbre mentre el manteniu premut.

/ * Botó Silenci * /

int silenci; int b; b = digitalRead (2); if (b == BAIX) {silenci = 1; } else {silenci = 0; } / * Inicia l'alarma * / if (hores == hora1 && mins == min1) {alarma = 1; } else if (hores == hora2 && mins == min2) {alarma = 1; } else if (hores == hora3 && mins == min3) {alarma = 1; } else {alarm = 0; silenci = 0; } if (alarm == 1 && silence == 0) {tone (buzzer1, 4000, 1000); to (brunzidor 2, 4000, 1000); retard (1000); noTone (buzzer1); noTone (buzzer2); retard (1000); }

Temps d'impressió

Finalment, hem d’imprimir les hores d’alarma i el temps real a la pantalla LCD.

Data i hora ara = rtc.now ();

int hours = (now.hour ()); int mins = (ara.minut ()); / * Hora de l’alarma en format 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); / * Temps de visualització des de RTC * / lcd.setCursor (0, 0); lcd.print (hores); lcd.print (":"); lcd.print (minuts);

Pas 7: electrònica

Electrònica
Electrònica
Electrònica
Electrònica
Electrònica
Electrònica

Hi ha diverses peces de l'electrònica d'aquest projecte, tal com es veu a la llista de materials. La primera imatge és un esquema de l'electrònica final del projecte. La segona imatge és el nostre disseny electrònic final. La tercera imatge és del nostre projecte enmig del segon prototip.

Per començar, connecteu el NodeMCU a l’extrem de la tauleta de verificació. A continuació, haureu de connectar la resta d’electrònics al NodeMCU i al tauler de suport. Comenceu connectant la pantalla LCD als pins D1 per a SCL i D2 per a SDA. La pantalla LCD permetrà a l'usuari veure l'hora actual i els horaris d'alarma establerts. Ara feu connectar els vostres brunzidors als pins D3 i D6. Els brunzidors permetran que l'alarma alerti l'usuari quan s'hagi assolit l'hora establerta. Ara heu d’adjuntar un botó per permetre l’aturada de l’alarma. Connecteu aquest botó per fixar D4. Ara connectareu el rellotge en temps real a la taula de treball. Connecteu el rellotge en temps real perquè utilitzi els mateixos pins SDA i SCL que s’utilitzen per a la pantalla LCD.

Pas 8: final

Final
Final

Si heu seguit la informació donada, el vostre projecte pot semblar la imatge anterior. Us desitgem sort en els vostres intents de recrear aquest projecte i, quan hàgiu acabat el projecte, us animem a compartir imatges i comentaris amb nosaltres als comentaris. Gràcies i molta sort companys de creació.

Recomanat: