Taula de continguts:

Notificador: 17 passos
Notificador: 17 passos

Vídeo: Notificador: 17 passos

Vídeo: Notificador: 17 passos
Vídeo: FILME: DO 1 AO 700 COM NOTIFICADOR DE FRUTAS NO BLOX FRUITS (ROBLOX) 2024, Juliol
Anonim
Notificador
Notificador

El dispositiu es pot connectar, per exemple, al sistema IFTTT i reaccionar quan apareix un nou correu. A app.remoteme.org generarem un enllaç després de trucar a quins bytes s’enviaran a Arduino i Arduino mostrarà algun efecte de llum i reproduirà alguns mp3 de la targeta SD

Pas 1: què cal

El que es necessita
El que es necessita
El que es necessita
El que es necessita
  • NodeMCU, WemOS o alguna cosa similar
  • Dos anells LED amb díodes WS2812B (he utilitzat 16 anells LED)
  • DFRobotDFPlayerMini: es tracta d’un reproductor de mp3. Reprodueix mp3 des de la targeta SD i es comunica amb Arduino mitjançant RX / TX
  • Altaveu
  • Targeta SD
  • Convertidor lògic: l’he utilitzat, el reproductor de mp3 utilitza 5V i Arduino 3.3, per això necessitem aquest convertidor
  • Coneixements i habilitats per fer PCB senzill per nosaltres mateixos

La torre:

  • cartró: dos gruixos diferents
  • Paper de calç
  • paper d'alumini

Pas 2: construcció de la torre

Edifici de la torre
Edifici de la torre
Edifici de la torre
Edifici de la torre
Edifici de la torre
Edifici de la torre
Edifici de la torre
Edifici de la torre

Per sobre del pla de la torre en vista lateral (la meva aventura amb el dibuix tècnic va acabar a l'escola primària), totes les dimensions en mil·límetres.

Principi de funcionament

  1. anell de LED que il·lumina
  2. Paper de calç
  3. El con truncat, de cartró i cobert amb paper d’alumini, reflecteix les llums dels anells led, a la figura 3 ‘= la malla retallable
  4. tub de cartró: sosté les torres verticalment, a l'interior del tub hi ha cables per a leds
  5. L'alçada depèn de tu. Tinc 85 mm
  6. El suport dins de totes les peces de l’electrònica

Tots els elements horitzontals han de ser de cartró més gruixut.

Pas 3: Esquema de cablejat

Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat

El reproductor mp3 es subministra amb voltatge de 5 V i es comunica amb Arduino mitjançant TX / RX, es necessita un convertidor lògic perquè el propi Arduino funciona amb voltatge de 3,3 V. El control dels anells també està connectat a Arduino (D5, D6) mitjançant el convertidor lògic.

Al dipòsit, trobareu fitxers àguila amb plans de PCB

Suggereixo no soldar permanentment Arduino i el reproductor de mp3 només per utilitzar pines d'or femenines

Pas 4: Principi de funcionament

El nostre Arduino es connecta al sistema app.remoteme.org mitjançant WebSockets (hi ha llibreries preparades) mitjançant aquesta connexió s’envien missatges de 5 bytes:

  • el primer byte de l'efecte de llum de l'anell LED superior
  • efecte de llum de segon byte per a l'anell LED inferior
  • el número del fitxer mp3 que es reproduirà
  • el nombre de segons quant de temps es reproduirà l’efecte de llum i el mp3
  • si s'ha de reproduir mp3 una vegada o en bucle

codi font

Codi font sencer Podeu trobar aquí

als fitxers SingleRing.cpp i SingleRing.h hi ha una classe per controlar els efectes dels anells LED. Us suggerim que comenceu mirant la funció setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 case 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // caixa verda estàndard sòlida 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // caixa blava estàndard sòlida 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // caixa vermella estàndard sòlida 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // caixa taronja estàndard sòlida 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policia cas verd de les agulles del rellotge 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // la policia reverteix el cas verd 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // policia cas blau de les agulles del rellotge 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // la policia reverteix el cas blau 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // cas vermell estàndard de la policia 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // la policia reverteix el cas vermell 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // cas normal taronja policial 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // la policia reverteix el cas taronja 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // creuar la caixa blava estàndard 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // creuar revertir la caixa blava 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // parpelleja cas verd estàndard 16: setConfiguration (5, 0, 50, 0, 0, -20); // parpelleja odwyrtka cas verd 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // parpelleja cas blau estàndard 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // parpelleja reverteix el cas blau 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // parpelleja cas vermell estàndard 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // parpelleja reverteix majúscules i minúscules 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // parpelleja caixa taronja estàndard 22: setConfiguration (5, 50, 10, 0, 0, -20); trencar; // parpellejar revertir taronja per defecte: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0}}

depenent del paràmetre donat, l'anell mostrarà l'efecte. Podeu afegir el vostre propi efecte trucant a la funció setConfiguration amb nous paràmetres (canvi de color, velocitat de visualització) afegint un mode nou o afegint un efecte completament nou.

arduino.ino:

#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"

#incloure

#include #include #include "SingleRing.h"

#incloure

#include #include

#incloure

#define WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "sirena" #define TOKEN ""

#define DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing inferior = SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

void setup () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Utilitzeu softwareSerial per comunicar-vos amb mp3.

Serial.println (F ("No es pot començar:")); Serial.println (F ("1. Torneu a comprovar la connexió!")); Serial.println (F ("2. Introduïu la targeta SD!")); mentre que (cert); } Serial.println (F ("DFPlayer Mini en línia"));

myDFPlayer.setTimeOut (500); // Estableix el temps d'espera de la comunicació en sèrie de 500 ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run ()! = WL_CONNECTED) {demora (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); bottom.clear (); }

booleà tornatOff = cert;

turn long OffOffMillis sense signar = 0;

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (dades, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (dades, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (dades, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (dades, pos); mode uint8_t = RemoteMeMessagesUtils:: getUint8 (dades, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } tornatOff = fals; turnOffMillis = millis () + 1000 * temps; }

bucle buit ()

{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis

}

explicació:

#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""

Hem de proporcionar les dades anteriors, instruccions detallades aquí a l’enllaç. També he mostrat com registrar-vos a remoteme.org i generar el testimoni, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (dades, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (dades, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (dades, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (dades, pos); mode uint8_t = RemoteMeMessagesUtils:: getUint8 (dades, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } tornatOff = fals; turnOffMillis = millis () + 1000 * temps; }

Aquesta funció es cridarà quan el missatge arribi a Arduino i mostri la notificació. El codi és tan clar que es descriu a si mateix. Em refereixo als detalls de les classes a la documentació aquí i aquí

bucle buit () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {

si (! desactivat) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); tornatOff = cert; }}

Al bucle, anomenem funcions de bucle dels objectes, i també si ha passat el temps de visualització de les notificacions, desactivem els díodes i el so.

Pas 5: reproductor de Mp3

Reproductor mp3
Reproductor mp3

Es comunica amb Arduino a través de TX / RX: detalls del propi reproductor aquí i de la biblioteca aquí

Penjem fitxers mp3 a la targeta SD. Els fitxers de la targeta s’ordenen alfabèticament i després trucant a:

myDFPlayer.play (5);

Reproduïm el cinquè fitxer des de la targeta SD del directori arrel. Per això, és bo donar fitxers als prefixos 01, 02 de la targeta SD, etc.

Per generar ordres de veu Podeu utilitzar aquesta pàgina.

Pas 6: Càrrega del programa a Arduino

Carregant el programa a Arduino
Carregant el programa a Arduino
Carregant el programa a Arduino
Carregant el programa a Arduino

Abans de carregar l’esbós a Arduino, heu de descarregar les biblioteques necessàries aquí, trobareu instruccions detallades

a més, hem d’instal·lar la biblioteca DFRobotDFPlayerMini i Adafruit_NeoPixel

Pas 7: control

Control
Control
Control
Control

Enviem al nostre Arduino cinc bytes

  • el primer byte de l'efecte de llum de l'anell LED superior
  • efecte de llum de segon byte per a l'anell LED inferior
  • el número del fitxer mp3 que es reproduirà
  • el nombre de segons quant de temps es reproduirà l’efecte de llum i el mp3
  • si s'ha de reproduir mp3 una vegada o en bucle (1 si s'ha de reproduir en bucle)

En enviar bytes

07 0F 01 05 01

L'anell superior mostrarà els llums de la policia (mode 6) a la part inferior d'un color verd parpellejant (mode 15) (consulteu la funció setMode a singleRing.cpp i els comentaris al costat). El primer fitxer de la targeta SD es reproduirà durant 5 segons. I el fitxer es reproduirà al bucle (comproveu la funció onUserMessage a arduino.ino)

Enviem aquests bytes. Mireu la pantalla superior i feu clic a les icones per ordre escrit per 1, 2, 3. Apareixerà la finestra

A continuació, mireu la segona pantalla i empleneu la finestra com a la segona pantalla

La finestra que apareix s'utilitza per enviar missatges al dispositiu. Al camp 1, seleccioneu el dispositiu remitent: perquè només tenim un dispositiu, el seleccionem (és un camp obligatori i no importa que sigui el mateix dispositiu al qual enviem un missatge) Al camp 2 donem bytes a enviar (en vermell el valor que vam introduir a 2 es representarà com una cadena) i després fer clic al botó Envia.

Després d’enviar el missatge, el nostre notificador hauria de reaccionar mostrant els efectes d’il·luminació adequats i reproduint el mp3 seleccionat. Us animo a provar efectes diferents donant els dos primers bytes d’un número entre 0 i 22 (vegeu la descripció a la funció setMode).

Pas 8: enviament de missatges mitjançant URL

Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL
Enviament de missatges mitjançant URL

Si volem mostrar notificacions d'una aplicació externa, per exemple, amb IFTTT, hem de tenir un URL que faci exactament el mateix que vam fer a la finestra del pas anterior. remoteme.org proporciona REST APi. Aneu-hi fent clic a la pestanya swagger de l'esquerra (l'última). Es mostrarà una pàgina, en aquesta pàgina també podem provar els nostres URL.

A la primera pantalla teniu la funció que necessiteu ampliar i, a continuació, empleneu les dades com a la segona pantalla.

empleneu les dades com a la captura de pantalla anterior. Després de fer clic a l'executa, enviarem un missatge

070F010501

El receptor és el dispositiu amb 205 id, el mateix dispositiu també és un remitent. MessageId amb la configuració "No_RENEVAL" és irrellevant. A continuació, feu clic a Executa. El notificador reaccionarà de la mateixa manera que quan s’enviaven missatges des de l’aplicació. Després de trucar a REST, a continuació es mostra l'URL que es va cridar: mireu la tercera pantalla. I copiar i enganxar a l'URL del navegador es va marcar amb una vora verda. A la quarta pantalla, el meu navegador Chrome després d’enganxar l’URL

En el meu cas, l’URL és:

app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Pas 9: URL anímic per enviar el missatge

URL anímic per enviar el missatge
URL anímic per enviar el missatge

Al pas anterior, teniu un URL que envia dades al vostre dispositiu. Malauradament, després de tancar la sessió a app.remoteme.org, deixa de funcionar. Això es deu al fet que no hem proporcionat el testimoni d'autenticació i ja no hem iniciat la sessió. Aconseguim el testimoni (o en creem un de nou) i enganxem-lo a l'URL en lloc de l'estrella.

Mireu la pantalla i substituïu * a l'URL pel vostre testimoni

en el meu cas, el testimoni és:

~ 267_ZxoWtJ) 0ph i 2c

per tant, el meu URL final té el següent aspecte:

app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Ara el podem trucar encara que no estiguem connectats. I quan es cridi, s'enviarà un missatge al nostre dispositiu 205

Pas 10: integració amb IFTTT 1/7

Integració amb IFTTT 1/7
Integració amb IFTTT 1/7

L'URL creada al pas anterior és adequada per a l'execució d'aplicacions externes. Com utilitzar-lo mostraré a l'IFTTT. Ho configuraré perquè el notificador s'activi quan un correu electrònic arribi a l'adreça de correu electrònic (compte de Gmail).

Inicieu sessió a IFTTT. A continuació, aneu a la pestanya Els meus applets i, a continuació, a "Nova aplicació": primera pantalla

Pas 11: Integració amb IFTTT 2/7

Integració amb IFTTT 2/7
Integració amb IFTTT 2/7

A continuació, feu clic a "+ això"

Pas 12: integració amb IFTTT 3/7

Integració amb IFTTT 3/7
Integració amb IFTTT 3/7

A continuació, al camp "Serveis de cerca" escriviu "Gmail"

A continuació, "correu electrònic nou a la safata d'entrada" (pot ser necessària alguna configuració).

Pas 13: integració amb IFTTT 4/7

Integració amb IFTTT 4/7
Integració amb IFTTT 4/7

ara fem clic a "+ allò"

Pas 14: integració amb IFTTT 5/7

Integració amb IFTTT 5/7
Integració amb IFTTT 5/7

cerqueu "Webhooks" i feu-hi clic

Pas 15: integració amb IFTTT 6/7

Integració amb IFTTT 6/7
Integració amb IFTTT 6/7

després "Feu una sol·licitud web"

Pas 16: integració amb IFTTT 7/7

Integració amb IFTTT 7/7
Integració amb IFTTT 7/7

completem l'URL de la nostra URL amb el testimoni. Escriviu contingut a application / json i feu clic a "crea acció" i a Finalitza. Ara tenim el nostre applet:

Pas 17: resum

En aquest tutorial, he mostrat com enviar missatges al nostre Arduino des de sistemes externs. També integrem algun altre sistema que després IFTTT d’una manera similar. No necessàriament ha de ser un "notificador" que volia mostrar en aquest exemple com enviar missatges de sistemes externs al nostre Arduino.

codi fontFanPage a Facebook

Ànims, Maciek

Recomanat: