Sommario:
- Passaggio 1: cosa è necessario
- Passaggio 2: costruzione della torre
- Passaggio 3: schema elettrico
- Passaggio 4: principio di funzionamento
- Passaggio 5: lettore Mp3
- Passaggio 6: caricamento del programma su Arduino
- Passaggio 7: controllo
- Passaggio 8: invio di messaggi tramite URL
- Passaggio 9: URL qualsiasi per inviare un messaggio
- Passaggio 10: integrazione con IFTTT 1/7
- Passaggio 11: integrazione con IFTTT 2/7
- Passaggio 12: integrazione con IFTTT 3/7
- Passaggio 13: integrazione con IFTTT 4/7
- Passaggio 14: integrazione con IFTTT 5/7
- Passaggio 15: integrazione con IFTTT 6/7
- Passaggio 16: integrazione con IFTTT 7/7
- Passaggio 17: Riepilogo
Video: Notificatore: 17 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Il dispositivo può essere collegato ad esempio al sistema IFTTT e reagire quando appare una nuova posta. Su app.remoteme.org genereremo un collegamento dopo aver chiamato quali byte verranno inviati ad Arduino, e Arduino mostrerà alcuni effetti luminosi e riprodurrà alcuni mp3 da SDcard
Passaggio 1: cosa è necessario
- NodeMCU, WemOS o qualcosa di simile
- Due anelli LED con diodi WS2812B (ho usato 16 anelli LED)
- DFRobotDFPlayerMini – questo è un lettore mp3. Riproduce mp3 da SDcard e comunica con Arduino tramite RX/TX
- Altoparlante
- Scheda SD
- Convertitore logico: ho usato questo, il lettore mp3 usa 5V e Arduino 3.3 ecco perché abbiamo bisogno di questo convertitore
- Conoscenze e abilità per realizzare semplici PCB da soli
La Torre:
- cartone – due diversi spessori
- Carta da lucido
- foglio di alluminio
Passaggio 2: costruzione della torre
Sopra la pianta della torre in vista laterale (la mia avventura con il disegno tecnico si è conclusa alle elementari), tutte le dimensioni in millimetri.
Principio di funzionamento
- anello di LED che illuminano
- Carta da lucido
- Il tronco di cono, realizzato in cartone e rivestito con un foglio di alluminio, riflette quindi le luci degli anelli a led, in figura 3' = la rete ritagliata
- tubo di cartone – tiene le torri in verticale, all'interno del tubo ci sono i cavi per i led
- L'altezza dipende da te ho 85mm
- Il supporto all'interno di tutte le parti elettroniche
Tutti gli elementi orizzontali dovrebbero essere realizzati in cartone più spesso.
Passaggio 3: schema elettrico
Il lettore mp3 è alimentato con tensione di 5V e comunica con Arduino tramite TX/RX, è necessario un convertitore logico perché l'Arduino stesso funziona a tensione di 3.3V. Il controllo degli anelli è collegato anche ad Arduino (D5, D6) tramite il convertitore logico.
Nel repository, troverai file eagle con piani PCB
Suggerisco di non saldare permanentemente Arduino e il lettore mp3 solo per usare pins dorati femminili
Passaggio 4: principio di funzionamento
Il nostro Arduino si connette al sistema app.remoteme.org tramite WebSockets (ci sono librerie pronte) tramite questa connessione vengono inviati messaggi a 5 byte:
- il primo byte dell'effetto luminoso per l'anello LED superiore
- effetto luce secondo byte per l'anello LED inferiore
- il numero del file mp3 da riprodurre
- il numero di secondi per la durata della riproduzione dell'effetto luce e dell'mp3
- se l'mp3 deve essere riprodotto una volta o in loop
codice sorgente
L'intero codice sorgente lo puoi trovare qui
nei file SingleRing.cpp e SingleRing.h è presente una classe per controllare gli effetti degli anelli LED. Ti suggerisco di iniziare guardando la funzione 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;//case verde standard solido 2:setConfiguration(6, 0, 0, 50, 0, 20); break;//case blu standard solido 3:setConfiguration(6, 50, 0, 0, 0, 20); break;//case rosso standard solido 4:setConfiguration(6, 50, 10, 0, 0, 20); break;//case arancione standard solido 5:setConfiguration(1, 0, 100, 0, 5, 2); break;//police in senso orario verde case 6:setConfiguration(1, 0, 100, 0, 5, -2); break;// la polizia ripristina il caso verde 7:setConfiguration(1, 0, 0, 100, 5, 2); break;//police in senso orario blu caso 8:setConfiguration(1, 0, 0, 100, 5, -2); break;// la polizia ripristina il caso blu 9:setConfiguration(1, 100, 0, 0, 5, 2); break; // caso rosso standard della polizia 10:setConfiguration(1, 100, 0, 0, 5, -2); break;// la polizia ripristina il caso rosso 11:setConfiguration(1, 100, 20, 0, 5, 2); break; // caso arancione standard della polizia 12:setConfiguration(1, 100, 20, 0, 5, -2); break;// la polizia ripristina il caso arancione 13:setConfiguration(2, 0, 0, 50, 8, 10); break;//cross standard blue case 14:setConfiguration(2, 0, 0, 50, 8, -10); break;// cross revert blue case 15:setConfiguration(5, 0, 50, 0, 0, 20); break;//lampeggia caso verde standard 16:setConfiguration(5, 0, 50, 0, 0, -20); break;// blink odwyrtka green case 17:setConfiguration(5, 0, 0, 50, 0, 20); break;//lampeggia caso blu standard 18:setConfiguration(5, 0, 0, 50, 0, -20); break;// lampeggio ripristina case blu 19:setConfiguration(5, 50, 0, 0, 0, 20); break;//lampeggia caso rosso standard 20:setConfiguration(5, 50, 0, 0, 0, -20); break;// lampeggio ripristina caso rosso 21:setConfiguration(5, 50, 10, 0, 0, 20); break;//lampeggia caso arancione standard 22:setConfiguration(5, 50, 10, 0, 0, -20); break;// lampeggio ripristina arancione default: setConfiguration(0, 0, 50, 0, 5, 1); break;//off =0 } }
a seconda del parametro dato, l'anello visualizzerà l'effetto. Puoi aggiungere il tuo effetto chiamando la funzione setConfiguration con nuovi parametri (cambio di colore, velocità di visualizzazione) aggiungendo una nuova modalità o aggiungendo un effetto completamente nuovo - o fammi sapere nei commenti se mi piace aggiungerò un nuovo effetto
arduino.ino:
#include "Arduino.h"#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#includere
#include #include #include "SingleRing.h"
#includere
#include #include
#includere
#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 in basso = 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)) { //Usa softwareSerial per comunicare con mp3.
Serial.println(F("Impossibile iniziare:")); Serial.println(F("1. Ricontrollare la connessione!")); Serial.println(F("2. Inserire la scheda SD!")); mentre (vero); } Serial.println(F("DFPlayer Mini in linea."));
myDFPlayer.setTimeOut(500); //Imposta il timeout della comunicazione seriale 500ms
mioDFPlayer.volume(30);
mioDFPlayer. EQ(DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD); WiFiMulti.addAP(WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run() != WL_CONNECTED) { ritardo(100); }
remoteMe.setUserMessageListener(onUserMessage);
remoteMe.setupTwoWayCommunication();
remoteMe.sendRegisterDeviceMessage(DEVICE_NAME);
top.setup();
fondo.setup(); top.clear(); fondo.clear(); }
booleano disattivato = vero;
turnOffMillis lungo senza segno = 0;
void onUserMessage(uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {
uint16_t posizione = 0; uint8_t bottomMode = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t topMode = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t trackNumber = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t time = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t mode = RemoteMeMessagesUtils::getUint8(data, pos);
bottom.setMode(bottomMode);
top.setMode(topMode); if (mode == 1) { myDFPlayer.loop(trackNumber); } else { myDFPlayer.play(trackNumber); } disattivato = falso; turnOffMillis = millis() + 1000 * tempo; }
ciclo vuoto()
{ remoteMe.loop(); top.loop(); fondo.loop(); if (spegniMillis
}
spiegazione:
#define WIFI_NAME ""#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""
Abbiamo bisogno di fornire i dati di cui sopra, istruzioni dettagliate qui al link, inoltre ho mostrato come registrarsi in remoteme.org e generare il token, void onUserMessage(uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) { uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t topMode = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t trackNumber = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t time = RemoteMeMessagesUtils::getUint8(data, pos); uint8_t mode = RemoteMeMessagesUtils::getUint8(data, pos);
bottom.setMode(bottomMode);
top.setMode(topMode); if (mode == 1) { myDFPlayer.loop(trackNumber); } else { myDFPlayer.play(trackNumber); } disattivato = falso; turnOffMillis = millis() + 1000 * tempo; }
Questa funzione verrà chiamata quando il messaggio arriva ad Arduino e visualizza la notifica. Il codice è così chiaro che descrive se stesso. Per i dettagli delle classi rimando alla documentazione qui e qui
void loop(){ remoteMe.loop(); top.loop(); fondo.loop(); if (turnOffMillis<millis()){
if (!spento) {
top.clear();
fondo.clear(); mioDFPlayer.stop(); spento = vero; } }
Nel ciclo, chiamiamo le funzioni di ciclo degli oggetti e anche se è trascorso il tempo di visualizzazione delle notifiche, spegniamo i diodi e il suono.
Passaggio 5: lettore Mp3
Comunica con Arduino tramite TX / RX – Dettagli del lettore stesso qui e la libreria qui
Carichiamo file mp3 sulla scheda SD. I file sulla scheda vengono ordinati alfabeticamente e quindi chiamando:
mioDFPlayer.play(5);
Riproduciamo il quinto file dalla scheda SD dalla directory principale. Ecco perché è bene dare ai file sulla scheda SD i prefissi 01, 02 ecc. Nel mio caso sembra nella schermata di stampa sopra
Per generare comandi vocali È possibile utilizzare questa pagina.
Passaggio 6: caricamento del programma su Arduino
Prima di caricare lo schizzo su Arduino, devi scaricare le librerie necessarie qui troverai le istruzioni dettagliate
inoltre, dobbiamo installare la libreria DFRobotDFPlayerMini e Adafruit_NeoPixel
Passaggio 7: controllo
Inviamo al nostro Arduino cinque byte
- il primo byte dell'effetto luminoso per l'anello LED superiore
- effetto luce secondo byte per l'anello LED inferiore
- il numero del file mp3 da riprodurre
- il numero di secondi per la durata della riproduzione dell'effetto luce e dell'mp3
- se l'mp3 deve essere riprodotto una volta o in loop (1 se deve essere riprodotto in loop)
Inviando byte
07 0F 01 05 01
L'anello superiore mostrerà le luci della polizia (modalità 6) quella inferiore lampeggia in verde (modalità 15) (controlla la funzione setMode su singleRing.cpp e i commenti accanto ad essa). Il primo file dalla scheda SD verrà riprodotto per 5 secondi. E il file verrà riprodotto in loop (controlla la funzione onUserMessage su arduino.ino)
Inviamo questi byte. Guarda la schermata sopra e clicca le icone nell'ordine scritto da 1, 2, 3. Appare la finestra
Quindi guarda la seconda schermata e riempi la finestra come nella seconda schermata
La finestra che appare serve per inviare messaggi al dispositivo. Nel campo 1, seleziona il dispositivo mittente – poiché abbiamo un solo dispositivo, lo selezioniamo (questo è un campo obbligatorio e non importa che sia lo stesso dispositivo a cui inviamo un messaggio) Nel campo 2 diamo i byte a invia (in rosso il valore che abbiamo inserito in 2 sarà rappresentato come una stringa) quindi fai clic sul pulsante Invia.
Dopo aver inviato il messaggio, il nostro notificatore dovrebbe reagire visualizzando gli effetti di luce appropriati e riproducendo l'mp3 selezionato. Ti incoraggio a provare diversi effetti dando i primi due byte di un numero compreso tra 0 e 22 (vedi descrizione nella funzione setMode).
Passaggio 8: invio di messaggi tramite URL
Se vogliamo visualizzare le notifiche da un'applicazione esterna, ad esempio con IFTTT, abbiamo bisogno di un URL che faccia esattamente la stessa cosa che abbiamo fatto nella finestra nel passaggio precedente. remoteme.org fornisce REST API. Vai ad esso facendo clic sulla scheda spavalderia a sinistra (l'ultima). Verrà visualizzata una pagina, in questa pagina possiamo anche provare i nostri URL.
Nella prima schermata hai la funzione Devi espandere, quindi riempire i dati come nella seconda schermata.
compilare i dati come nello screenshot sopra. Dopo aver fatto clic su Esegui, invieremo un messaggio
070F010501
Il destinatario è il dispositivo con ID 205, lo stesso dispositivo è anche un mittente. MessageId con le impostazioni "No_RENEVAL" è irrilevante. Quindi fare clic su Esegui. Notificator reagirà allo stesso modo di quando si inviano messaggi dall'applicazione. Dopo aver chiamato REST di seguito è l'URL che è stato chiamato - guarda la terza schermata. E copia e incolla nell'URL del browser è stato contrassegnato con un bordo verde. Alla quarta schermata il mio browser Chrome dopo aver incollato l'URL
Nel mio caso, l'URL è:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Passaggio 9: URL qualsiasi per inviare un messaggio
Al passaggio precedente Hai un URL che invia i dati al tuo dispositivo. Sfortunatamente, dopo la disconnessione da app.remoteme.org, smette di funzionare. Questo perché non abbiamo fornito il token di autenticazione e non siamo più connessi. Prendiamo il nostro token (o creiamone uno nuovo) e incolliamolo nell'URL anziché nella stella.
Guarda lo schermo e sostituisci * nell'URL con il tuo token
nel mio caso il token è:
~267_ZxoWtJ)0ph&2c
quindi il mio URL finale è simile a:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Ora possiamo chiamarlo anche se non abbiamo effettuato l'accesso. E quando viene chiamato, verrà inviato un messaggio al nostro dispositivo 205
Passaggio 10: integrazione con IFTTT 1/7
L'URL creato nel passaggio precedente è adatto per l'esecuzione da parte di applicazioni esterne. Come usarlo lo mostrerò su IFTTT. Lo configurerò in modo che il notificatore si accenda quando un'e-mail arriva all'indirizzo e-mail (account Gmail).
Accedi a IFTTT. Quindi vai alla scheda Le mie applet e poi "Nuova applet" - prima schermata
Passaggio 11: integrazione con IFTTT 2/7
Quindi fai clic su "+ questo"
Passaggio 12: integrazione con IFTTT 3/7
Quindi nel campo “Cerca servizi” scrivi “Gmail”
Quindi "nuova email nella posta in arrivo" (potrebbe essere necessaria una configurazione).
Passaggio 13: integrazione con IFTTT 4/7
ora clicchiamo su “+ quello”
Passaggio 14: integrazione con IFTTT 5/7
trova "Webhook" e fai clic su di esso
Passaggio 15: integrazione con IFTTT 6/7
poi “Fai una richiesta web”
Passaggio 16: integrazione con IFTTT 7/7
completiamo l'URL del nostro url con il token. Tipo di contenuto per application/json e fare clic su "crea azione" e Fine. Ora abbiamo la nostra applet:
Passaggio 17: Riepilogo
In questo tutorial, ho mostrato come inviare al nostro Arduino messaggi da sistemi esterni. Integriamo anche qualche altro sistema quindi IFTTT in modo simile. Non deve essere necessariamente un "notificatore" Volevo mostrare in questo esempio come inviare messaggi da sistemi esterni al nostro Arduino.
sourcecodesFanPage su Facebook
Saluti, Maciek
Consigliato:
Notificatore di chiamata Bluetooth: 5 passaggi (con immagini)
Notificatore di chiamata Bluetooth: introduzione Stavo sfogliando il feed di notizie sulle istruzioni alcuni giorni fa quando mi sono imbattuto in questo progetto. È stato un progetto interessante. Ma ho pensato perché non costruirlo con un Bluetooth invece di complicate cose wifi. Specifiche di questo notificatore di chiamate Bluetooth
Notificatore automatico del lavaggio delle mani: 5 passaggi
Notificatore automatico del lavaggio delle mani: questa è una macchina che può avvisare qualcuno quando varca la porta. Il suo scopo è ricordare a qualcuno di lavarsi le mani quando torna a casa. C'è un sensore a ultrasuoni nella parte anteriore della scatola che rileva qualcuno che entra
Notificatore IoT che utilizza ESP-12E: 7 passaggi (con immagini)
Notificatore IoT che utilizza ESP-12E: bloccato a casa lontano dalla persona amata? In questo momento difficile, questo piccolo progetto divertente cercherà sicuramente di portare un sorriso sui vostri volti. In questo Instructable, ti mostrerò come visualizzare le notifiche dal tuo telefono cellulare sotto forma di
Notificatore di posta elettronica non letto facile: 7 passaggi
Notificatore facile di posta elettronica non letta: Ciao a tutti, benvenuti in un altro Instructable. Con l'attuale situazione del lavoro da casa, sto affrontando alcune sfide perché di tanto in tanto ricevevo e-mail dalla mia azienda. Quindi stavo pensando di creare un notificatore da tavolo che avvisami del mio
Crea un notificatore ISS facile: 5 passaggi
Crea un notificatore ISS facile: di TokyLabs | Tempo richiesto: 1–3 ore | Difficoltà: Facile | Prezzo: $ 60- $ 70 Puoi facilmente creare un notificatore hardware che sollevi un astronauta di carta per avvisarti ogni volta che la Stazione Spaziale Internazionale passa sopra la tua posizione. Molto più divertente di