Tabla de contenido:
- Paso 1: Qué se necesita
- Paso 2: construcción de la torre
- Paso 3: diagrama de cableado
- Paso 4: Principio de funcionamiento
- Paso 5: reproductor de MP3
- Paso 6: Cargar el programa en Arduino
- Paso 7: Control
- Paso 8: envío de mensajes mediante URL
- Paso 9: URL anónima para enviar mensaje
- Paso 10: Integración con IFTTT 1/7
- Paso 11: Integración con IFTTT 2/7
- Paso 12: Integración con IFTTT 3/7
- Paso 13: Integración con IFTTT 4/7
- Paso 14: Integración con IFTTT 5/7
- Paso 15: Integración con IFTTT 6/7
- Paso 16: Integración con IFTTT 7/7
- Paso 17: Resumen
Video: Notificador: 17 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
El dispositivo se puede conectar, por ejemplo, al sistema IFTTT y reaccionar cuando aparece un nuevo correo. En app.remoteme.org, generaremos un enlace después de llamar qué bytes se enviarán a Arduino, y Arduino mostrará algunos efectos de luz y reproducirá algunos mp3 desde la tarjeta SD.
Paso 1: Qué se necesita
- NodeMCU, WemOS o algo similar
- Dos anillos de LED con diodos WS2812B (he usado anillos de 16 leds)
- DFRobotDFPlayerMini: este es un reproductor de mp3. Reproduce mp3 desde la tarjeta SD y se comunica con Arduino por RX / TX
- Vocero
- Tarjeta SD
- Convertidor lógico -He usado este, el reproductor de mp3 usa 5V y Arduino 3.3, por eso necesitamos este convertidor
- Conocimientos y habilidades para hacer PCB simples por nosotros mismos.
La Torre:
- cartón - dos espesores diferentes
- Papel de trazar
- papel de aluminio
Paso 2: construcción de la torre
Sobre el plano de la torre en vista lateral (mi aventura con el dibujo técnico terminó en la escuela primaria), todas las dimensiones en milímetros.
Principio de funcionamiento
- anillo de LED iluminando
- Papel de trazar
- El cono truncado, hecho de cartón y cubierto con papel de aluminio, por lo que refleja las luces de los anillos de leds, en la figura 3 ‘= la malla recortada
- tubo de cartón - sostiene las torres verticalmente, dentro del tubo hay cables para leds
- La altura depende de ti tengo 85mm
- El soporte dentro de todas las partes electrónicas.
Todos los elementos horizontales deben estar hechos de cartón más grueso.
Paso 3: diagrama de cableado
El reproductor de mp3 se suministra con un voltaje de 5V y se comunica con Arduino a través de TX / RX, se necesita un convertidor lógico porque el Arduino funciona con un voltaje de 3.3V. El control de anillos también está conectado a Arduino (D5, D6) a través del convertidor lógico.
En el repositorio, encontrará archivos eagle con planos de PCB
Sugiero no soldar permanentemente Arduino y el reproductor de mp3 solo para usar pines dorados femeninos
Paso 4: Principio de funcionamiento
Nuestro Arduino se conecta al sistema app.remoteme.org usando WebSockets (hay bibliotecas listas) a través de esta conexión se envían mensajes de 5 bytes:
- el primer byte del efecto de luz para el anillo LED superior
- Efecto de luz de segundo byte para el anillo LED inferior
- el número del archivo mp3 que se reproducirá
- la cantidad de segundos durante cuánto tiempo se reproducirán el efecto de luz y el mp3
- si el mp3 debe reproducirse una vez o en un bucle
código fuente
Código fuente completo que puede encontrar aquí
en los archivos SingleRing.cpp y SingleRing.h hay una clase para controlar los efectos de los anillos LED. Le sugiero que comience mirando la función setMode (int m):
anular SingleRing:: setMode (int m) {switch (m) {caso 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 case 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // caso verde estándar sólido 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // caso azul estándar sólido 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // caso rojo estándar sólido 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // caso naranja estándar sólido 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policía en el sentido de las agujas del reloj verde caso 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // la policía revierte el caso verde 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // policía en el sentido de las agujas del reloj caso azul 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // la policía revierte el caso azul 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // caso rojo estándar policial 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // la policía revierte el caso rojo 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // caso naranja estándar policial 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // policía revertir naranja case 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // caso azul estándar cruzado 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // parpadea en verde estándar caso 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // parpadea verde odwyrtka case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // parpadea en azul estándar caso 18: setConfiguration (5, 0, 0, 50, 0, -20); romper; // parpadear revertir azul caso 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // parpadea en rojo estándar caso 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // parpadeo revertir rojo case 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // parpadea naranja estándar case 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // parpadeo revertir naranja default: setConfiguration (0, 0, 50, 0, 5, 1); descanso; // apagado = 0}}
dependiendo del parámetro dado, el anillo mostrará el efecto. Puede agregar su propio efecto llamando a la función setConfiguration con nuevos parámetros (cambio de color, velocidad de visualización) agregando un nuevo modo o agregando un efecto completamente nuevo, o avíseme en los comentarios si me gusta, agregaré un nuevo efecto
arduino.ino:
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#incluir
#include #include #include "SingleRing.h"
#incluir
#incluir #incluir
#incluir
#define WIFI_NAME ""
#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""
#define DIODES_COUNT 16
SingleRing top = SingleRing (DIODES_COUNT, D5);
SingleRing bottom = SingleRing (DIODES_COUNT, D6);
SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX
DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);
ESP8266WiFiMulti WiFiMulti;
configuración vacía () {mySoftwareSerial.begin (9600); Serial.begin (115200);
if (! myDFPlayer.begin (mySoftwareSerial)) {// Utilice softwareSerial para comunicarse con mp3.
Serial.println (F ("No se puede comenzar:")); Serial.println (F ("1. ¡Vuelva a comprobar la conexión!")); Serial.println (F ("2. Inserte la tarjeta SD!")); mientras (verdadero); } Serial.println (F ("DFPlayer Mini online."));
myDFPlayer.setTimeOut (500); // Establecer tiempo de espera de comunicación en serie 500ms
myDFPlayer.volume (30);
myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run ()! = WL_CONNECTED) {retraso (100); }
remoteMe.setUserMessageListener (onUserMessage);
remoteMe.setupTwoWayCommunication ();
remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);
top.setup ();
bottom.setup (); top.clear (); bottom.clear (); }
booleano turnOff = true;
turnOffMillis largo sin firmar = 0;
void onUserMessage (uint16_t senderDeviceId, uint16_t tamaño de datos, uint8_t * datos) {
uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t tiempo = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (datos, pos);
bottom.setMode (bottomMode);
top.setMode (topMode); if (modo == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = falso; turnOffMillis = millis () + 1000 * tiempo; }
bucle vacío ()
{remoteMe.loop (); top.loop (); bucle inferior (); si (turnOffMillis
}
explicación:
#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""
Necesitamos proporcionar los datos anteriores, instrucciones detalladas aquí en el enlace. También he mostrado cómo registrarse en remoteme.org y generar el token.
anular el mensaje de usuario (uint16_t senderDeviceId, uint16_t tamaño de datos, uint8_t * datos) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t tiempo = RemoteMeMessagesUtils:: getUint8 (datos, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (datos, pos);
bottom.setMode (bottomMode);
top.setMode (topMode); if (modo == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = falso; turnOffMillis = millis () + 1000 * tiempo; }
Esta función se llamará cuando el mensaje llegue a Arduino y muestre la notificación. El código es tan claro que se describe a sí mismo. Me refiero a los detalles de las clases a la documentación aquí y aquí.
bucle vacío () {remoteMe.loop (); top.loop (); bucle inferior (); si (turnOffMillis <millis ()) {
if (! TurnOff) {
top.clear ();
bottom.clear (); myDFPlayer.stop (); turnOff = verdadero; }}
En el bucle, llamamos a las funciones de bucle de los objetos, y también si ha pasado el tiempo de visualización de notificaciones, apagamos los diodos y el sonido.
Paso 5: reproductor de MP3
Se comunica con Arduino a través de TX / RX - Detalles del reproductor en sí aquí, y la biblioteca aquí
Subimos archivos mp3 a la tarjeta SD. Los archivos de la tarjeta se ordenan alfabéticamente y luego llamando a:
myDFPlayer.play (5);
Reproducimos el quinto archivo de la tarjeta SD desde el directorio raíz. Es por eso que es bueno dar a los archivos en la tarjeta SD los prefijos 01, 02, etc. En mi caso, se ve como en la pantalla de impresión de arriba.
Para generar comandos de voz Puede utilizar esta página.
Paso 6: Cargar el programa en Arduino
Antes de cargar el boceto en Arduino, debe descargar las bibliotecas necesarias aquí encontrará instrucciones detalladas
además, necesitamos instalar la biblioteca DFRobotDFPlayerMini y Adafruit_NeoPixel
Paso 7: Control
Enviamos a nuestro Arduino cinco bytes
- el primer byte del efecto de luz para el anillo LED superior
- Efecto de luz de segundo byte para el anillo LED inferior
- el número del archivo mp3 que se reproducirá
- la cantidad de segundos durante cuánto tiempo se reproducirán el efecto de luz y el mp3
- si el mp3 debe reproducirse una vez o en bucle (1 si debe reproducirse en bucle)
Enviando bytes
07 0F 01 05 01
El anillo superior mostrará las luces de la policía (modo 6), la parte inferior parpadeará en verde (modo 15) (consulte la función setMode en singleRing.cpp y los comentarios al lado). El primer archivo de la tarjeta SD se reproducirá durante 5 segundos. Y el archivo se reproducirá en el bucle (verifique la función en UserMessage en arduino.ino)
Enviemos estos bytes. Mire la pantalla de arriba y haga clic en los iconos en el orden escrito por 1, 2, 3. Aparece la ventana
Luego mire la segunda pantalla y llene la ventana como en la segunda pantalla
La ventana que aparece se utiliza para enviar mensajes al dispositivo. En el campo 1, seleccionamos el dispositivo remitente - porque solo tenemos un dispositivo, lo seleccionamos (este es un campo obligatorio y no importa que sea el mismo dispositivo al que enviamos un mensaje) En el campo 2 le damos bytes a enviar (en rojo el valor que ingresamos en 2 se representará como una cadena) luego haga clic en el botón Enviar.
Después de enviar el mensaje, nuestro notificador debería reaccionar mostrando los efectos de iluminación apropiados y reproduciendo el mp3 seleccionado. Te animo a probar diferentes efectos dando los primeros dos bytes de un número entre 0 y 22 (ver descripción en la función setMode).
Paso 8: envío de mensajes mediante URL
Si queremos mostrar notificaciones de una aplicación externa, por ejemplo, con IFTTT, necesitamos tener una URL que haga exactamente lo mismo que hicimos en la ventana del paso anterior. remoteme.org proporciona REST APi. Vaya a él haciendo clic en la pestaña Swagger a la izquierda (la última). Se mostrará una página, en esta página también podemos probar nuestras URL.
En la primera pantalla, tiene la función Necesita expandir y luego completar los datos como en la segunda pantalla.
Complete los datos como en la captura de pantalla anterior. Después de hacer clic en ejecutar le enviaremos un mensaje
070F010501
El receptor es el dispositivo con 205 id, el mismo dispositivo también es un remitente. MessageId con la configuración "No_RENEVAL" es irrelevante. Y luego haga clic en Ejecutar. El notificador reaccionará de la misma manera que cuando envía mensajes desde la aplicación. Después de llamar a REST, a continuación se muestra la URL a la que se llamó: mire la tercera pantalla. Y copiar y pegar en la URL del navegador está marcado con un borde verde. En la cuarta pantalla, mi navegador Chrome después de pegar la URL
En mi caso, la URL es:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Paso 9: URL anónima para enviar mensaje
En el paso anterior, tiene una URL que envía datos a su dispositivo. Desafortunadamente, después de cerrar la sesión de app.remoteme.org, deja de funcionar. Esto se debe a que no proporcionamos el token de autenticación y ya no estamos conectados. Obtengamos nuestro token (o creemos uno nuevo) y péguelo en la URL en lugar de la estrella.
Mire la pantalla y reemplace * en la URL con su token
en mi caso, el token es:
~ 267_ZxoWtJ) 0ph y 2c
entonces mi URL final se ve así:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Ahora podemos llamarlo incluso si no estamos conectados. Y cuando se llame, se enviará un mensaje a nuestro dispositivo 205
Paso 10: Integración con IFTTT 1/7
La URL creada en el paso anterior es adecuada para su ejecución por aplicaciones externas. Cómo usarlo lo mostraré en el IFTTT. Lo configuraré para que el notificador se encienda cuando llegue un correo electrónico a la dirección de correo electrónico (cuenta de Gmail).
Inicie sesión en IFTTT. Luego vaya a la pestaña Mis subprogramas y luego a "Nuevo subprograma" - primera pantalla
Paso 11: Integración con IFTTT 2/7
A continuación, haga clic en "+ esto"
Paso 12: Integración con IFTTT 3/7
Luego, en el campo "Servicios de búsqueda", escriba "Gmail".
Luego, "nuevo correo electrónico en la bandeja de entrada" (es posible que se necesite alguna configuración).
Paso 13: Integración con IFTTT 4/7
ahora hacemos clic en "+ eso"
Paso 14: Integración con IFTTT 5/7
busque "Webhooks" y haga clic en él
Paso 15: Integración con IFTTT 6/7
luego "Realizar una solicitud web"
Paso 16: Integración con IFTTT 7/7
completamos la URL de nuestra url con el token. Escriba el contenido a application / json y haga clic en "crear acción" y finalizar. Ahora tenemos nuestro applet:
Paso 17: Resumen
En este tutorial, mostré cómo enviar mensajes a nuestro Arduino desde sistemas externos. También integramos algún otro sistema que no sea IFTTT de manera similar. No necesariamente tiene que ser un “notificador”. Quería mostrar en este ejemplo cómo enviar mensajes desde sistemas externos a nuestro Arduino.
sourcecodesFanPage en Facebook
Saludos, Maciek
Recomendado:
Notificador de llamadas Bluetooth: 5 pasos (con imágenes)
Notificador de llamadas Bluetooth: Introducción Hace unos días estaba navegando por las noticias de instructables cuando me encontré con este proyecto. Fue un proyecto genial. Pero pensé ¿Por qué no construirlo con un Bluetooth en lugar de cosas complicadas de wifi? Especificación de este notificador de llamadas Bluetooth
Notificador automático de lavado de manos: 5 pasos
Notificador automático de lavado de manos: esta es una máquina que puede notificar a alguien cuando atraviesa la puerta. Su propósito es recordarle a alguien que se lave las manos cuando regrese a casa. Hay un sensor ultrasónico en la parte delantera de la caja que detecta a alguien que entra
Notificador de IoT con ESP-12E: 7 pasos (con imágenes)
Notificador de IoT con ESP-12E: ¿Está atrapado en casa lejos de su ser querido? Durante este momento difícil, este pequeño y divertido proyecto definitivamente intentará hacernos sonreír. En este Instructable, le mostraré cómo mostrar notificaciones desde su teléfono móvil en forma de
Notificador de correo electrónico no leído fácil: 7 pasos
Notificador de correo electrónico no leído fácil: Hola a todos, bienvenidos a otro Instructable.Con la situación actual de trabajar desde casa, me enfrento a algunos desafíos porque recibí correos electrónicos de mi empresa de vez en cuando. notificarme sobre mi
Cree un notificador ISS sencillo: 5 pasos
Cree un notificador ISS fácil: por TokyLabs | Tiempo requerido: 1-3 horas | Dificultad: Fácil | Precio: $ 60– $ 70 Puede crear fácilmente un notificador de hardware que levante un astronauta de papel para alertarlo cada vez que la Estación Espacial Internacional pase sobre su ubicación. Mucho más divertido que