Tabla de contenido:

Amigo de la mañana: 8 pasos
Amigo de la mañana: 8 pasos

Video: Amigo de la mañana: 8 pasos

Video: Amigo de la mañana: 8 pasos
Video: Carta a un Amigo | Lama Rinchen Gyaltsen: "Todo es Mente" [Lección 12] 2024, Mes de julio
Anonim
Image
Image

Algunas personas tienen horarios muy ocupados, lo que hace que sea fácil olvidar una o dos cosas. Con este reloj despertador puede configurar múltiples alarmas para mantener su horario. El reloj funciona las 24 horas y todo lo que tiene que hacer es programarlo para que suene a las diferentes horas del día que se ajusten a su horario. Cuando haga esto, las horas que ha configurado aparecerán en la pantalla LCD, de modo que pueda verificar que sean correctas y servir como un recordatorio adicional.

Paso 1: Lluvia de ideas

Bocetos y materiales
Bocetos y materiales

Cuando estábamos tratando de resolver el problema, usamos el método de espina de pescado para tener una idea y el resultado fue nuestro despertador.

Paso 2: bocetos y materiales

Bocetos y materiales
Bocetos y materiales

Durante este paso, intentamos hacer una lista de todas las cosas que pensamos que necesitaríamos para la electrónica y la carcasa exterior. Luego se nos ocurrió un boceto de cómo queríamos que se viera el despertador y cómo ensamblaríamos su carcasa exterior.

Paso 3: creación de la carcasa exterior

Creación de la carcasa exterior
Creación de la carcasa exterior
Creación de la carcasa exterior
Creación de la carcasa exterior

Para el primer prototipo, solo quería ver cómo encajaban las articulaciones de los dedos, así que usé una caja de zapatos y no usé medidas exactas.

Paso 4: corte con láser de la carcasa exterior

Corte por láser de la carcasa exterior
Corte por láser de la carcasa exterior

Para el segundo prototipo, quería obtener medidas exactas y tuve que crear un pdf para enviarlo a la cortadora láser. Para hacer esto, utilicé un sitio web de la aplicación Box Maker, https://boxdesigner.connectionlab.org. En ese sitio web ingresé las dimensiones tridimensionales de la caja, el grosor de nuestro material, las unidades de medida y el tipo de archivo que quería que creara. Las dimensiones de las cajas eran 7.5 x 3 x 5 pulgadas y utilicé un material acrílico de 1/8 de espesor. Las medidas de las muescas de las articulaciones de los dedos se configuraron automáticamente en 0,46875 pulgadas. Seleccioné la versión pdf porque ese es el tipo de archivo que lee una cortadora láser y quería hacer algunos cambios en adobe al archivo. Cambié los colores de las líneas a rojo, para que el cortador láser supiera cortarlos en lugar de grabar la forma, y agregué una caja rectangular con dimensiones de 3.92 por 1.56 en lo que iba a ser la pieza frontal del caja. También agregué un rectángulo cortado con dimensiones de 1 pulgada por 0.5 pulgada en la pieza del lado derecho en la parte inferior para que sirva como una abertura para el cable conectado al despertador. Por último, agregué tres aberturas circulares en la parte superior para los dos timbres y el botón. Las aberturas del zumbador tenían un diámetro de 0,5 pulgadas y la abertura del botón era de 0,375 pulgadas.

Paso 5: Armado

Poniendo todo junto
Poniendo todo junto

Cuando corté todas las piezas, usé una jeringa y pegamento acrílico para sellarlas. Mantuve las piezas juntas y goteé el pegamento entre las muescas para unir los lados, pero la parte superior no estaba pegada.

Paso 6: Código

Introducción:

Este proyecto fue codificado usando el lenguaje c ++ en el software Arduino IDE. El microcontrolador utilizado fue el NodeMCU con el ESP8266. Para este proyecto, necesitaríamos una forma de mantener el tiempo con precisión, un timbre para que suene, un sistema de alarma para hacer que suene la alarma y una pantalla para mostrar la hora y las horas de alarma. Para obtener el código completo, consulte este enlace

Importación de bibliotecas

Lo primero es lo primero, necesitamos importar las bibliotecas necesarias.

#include "RTClib.h"

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

Iniciando Variables

A continuación, necesitamos iniciar variables para más tarde, asignar la disposición de los pines para los botones del zumbador, configurar el RTC y configurar la dirección I2C de la pantalla LCD.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; botón int const = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"} int hora de inicio; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int hora1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int hora2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int hora3 = 0; int min3 = 0; int alarma = 0; int ByteReceived; char recivedChar; const byte numChars = 32; charivedChars [numChars];

Configuración

A continuación, necesitamos tener una función que inicie todos los procesos necesarios. En esta función, necesitamos iniciar la pantalla LCD e imprimir los tiempos iniciales, hacer una función más pequeña que dé tiempo real al RTC si aún no lo tiene, e iniciar el monitor en serie.

configuración vacía () {

#ifndef ESP8266 while (! Serial); #endif if (! rtc.begin ()) {Serial.println ("No se pudo encontrar RTC"); mientras (1); } if (rtc.lostPower ()) {Serial.println ("RTC perdió energía, ¡establezcamos la hora!"); rtc.adjust (Fecha y hora (F (_ FECHA_), F (_ HORA_)))} lcd.init (); LCD luz de fondo(); // enciende Baklight. lcd.clear (); // Borra LCD lcd.print ("00:00"); // se muestra en la pantalla LCD después de cargar el código lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Hora"); 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ón, ENTRADA); // Establecer un pin para el botón de silencio pinMode (buzzer1, OUTPUT); // establece un pin para la salida del zumbador pinMode (buzzer2, OUTPUT); // establece un pin para la salida del zumbador Serial.begin (9600); Serial.println ("Hora de entrada de alarmas en formato HHMM sin espacio entre alarmas"); hora de inicio = milis () / 1000; }

Recibiendo información

Ahora, necesitamos poder recibir las horas de alarma. Para hacer eso, creamos una función para recibir los datos del monitor serial y almacenarlos en una matriz.

void recvWithEndMarker () {

static int ndx = 0; String timein = Serial.readString (); para (ndx = 0; tiempo en [ndx]; ndx ++) {SavedChars [ndx] = tiempo en [ndx]; } selectedChars [ndx] = '\ 0'; Serial.print (SavedChars); }

Configuración de alarmas

El siguiente paso es poder configurar alarmas. Aquí está el código para la alarma 1. Para las alarmas 2 y 3, se repitió el mismo proceso con algunos cambios de número.

/ * Alarma 1 * /

recvWithEndMarker (); int h, m; para (h = 0; h <2; h ++) {ahours1 [h] = SavedChars [h]; } para (m = 2; m <4; m ++) {amins1 [m-2] = SavedChars [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);

Zumbador / Botón

Una vez hecho esto, necesitamos hacer que el timbre suene cuando el tiempo real y la hora de la alarma sean iguales. También en este paso hacemos un botón de repetición que detiene el timbre mientras lo mantienes presionado.

/ * Botón de silencio * /

int silencio; int b; b = digitalRead (2); if (b == BAJO) {silencio = 1; } más {silencio = 0; } / * Iniciar alarma * / if (horas == hora1 && minutos == min1) {alarma = 1; } más si (horas == hora2 && minutos == min2) {alarma = 1; } más si (horas == hora3 && minutos == min3) {alarma = 1; } más {alarma = 0; silencio = 0; } si (alarma == 1 && silencio == 0) {tono (buzzer1, 4000, 1000); tono (zumbador2, 4000, 1000); retraso (1000); noTone (buzzer1); noTone (buzzer2); retraso (1000); }

Tiempos de impresión

Finalmente, necesitamos imprimir las horas de alarma y el tiempo real en la pantalla LCD.

DateTime ahora = rtc.now ();

int horas = (ahora.hora ()); int minutos = (ahora.minuto ()); / * Hora de alarma en formato 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); / * Mostrar tiempo de RTC * / lcd.setCursor (0, 0); lcd.print (horas); lcd.print (":"); lcd.print (minutos);

Paso 7: Electrónica

Electrónica
Electrónica
Electrónica
Electrónica
Electrónica
Electrónica

Hay múltiples piezas en la electrónica de este proyecto, como se ve en la lista de materiales. La Primera imagen es un esquema de la electrónica final del proyecto. La segunda imagen es nuestro diseño electrónico final. La tercera imagen es de nuestro proyecto en medio del segundo prototipo.

Para comenzar, conecte su NodeMCU al extremo más alejado de su tablero. Luego, deberá conectar todos sus otros dispositivos electrónicos al NodeMCU y a la placa de pruebas. Comience conectando su pantalla LCD a los pines D1 para SCL y D2 para SDA. La pantalla LCD permitirá al usuario ver la hora actual y las horas de alarma configuradas. Ahora haga que un cable conecte sus timbres a los pines D3 y D6. Los zumbadores permitirán que la alarma avise al usuario cuando se haya alcanzado la hora establecida. Ahora debe adjuntar un botón para permitir que se detenga la alarma. Adjunte este botón al pin D4. Ahora adjuntará su reloj en tiempo real a la placa de pruebas. Conecte el reloj de tiempo real para que utilice los mismos pines SDA y SCL que se utilizan para la pantalla LCD.

Paso 8: final

Final
Final

Si ha seguido la información dada, su proyecto puede verse como la imagen de arriba. Le deseamos suerte en sus intentos de recrear este proyecto y cuando haya completado su proyecto, lo alentamos a compartir imágenes y comentarios con nosotros en los comentarios. Gracias y buena suerte compañeros Makers.

Recomendado: