Cuprins:
- Pasul 1: Ce este necesar
- Pasul 2: Clădirea turnului
- Pasul 3: Schema de cablare
- Pasul 4: Principiul de funcționare
- Pasul 5: MP3 Player
- Pasul 6: Încărcarea programului pe Arduino
- Pasul 7: Control
- Pasul 8: Trimiterea mesajelor utilizând adresele URL
- Pasul 9: adresă URL animă pentru trimiterea mesajului
- Pasul 10: Integrare cu IFTTT 1/7
- Pasul 11: Integrare cu IFTTT 2/7
- Pasul 12: Integrare cu IFTTT 3/7
- Pasul 13: Integrare cu IFTTT 4/7
- Pasul 14: Integrare cu IFTTT 5/7
- Pasul 15: Integrare cu IFTTT 6/7
- Pasul 16: Integrare cu IFTTT 7/7
- Pasul 17: Rezumat
Video: Notificator: 17 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Dispozitivul poate fi conectat, de exemplu, la sistemul IFTTT și poate reacționa atunci când apare un nou e-mail. La app.remoteme.org vom genera un link după apelare care octeți vor fi trimis la Arduino, iar Arduino va afișa un anumit efect de lumină și va reda mp3 din cardul SD
Pasul 1: Ce este necesar
- NodeMCU, WemOS sau ceva similar
- Două inele LED cu diode WS2812B (am folosit inele 16 leduri)
- DFRobotDFPlayerMini - acesta este un player mp3. Redă mp3 de pe cardul SD și comunică cu Arduino prin RX / TX
- Speaker
- Card SD
- Convertor logic - l-am folosit pe acesta, playerul mp3 folosește 5V și Arduino 3.3 de aceea avem nevoie de acest convertor
- Cunoștințe și abilități pentru a face PCB-uri simple de către sinele nostru
Turnul:
- carton - două grosimi diferite
- Hârtie de calc
- folie de aluminiu
Pasul 2: Clădirea turnului
Deasupra planului turnului în vedere laterală (aventura mea cu desenul tehnic s-a încheiat în școala primară), toate dimensiunile în milimetri.
Principiul de funcționare
- inel de LED-uri care luminează
- Hârtie de calc
- Conul trunchiat, realizat din carton și acoperit cu folie de aluminiu, deci reflectă luminile din inelele led, din figura 3 ‘= ochiul decupat
- tub de carton - ține turnurile vertical, în interiorul tubului sunt cabluri pentru leduri
- Înălțimea depinde de tine. Am 85mm
- Suportul din interiorul tuturor pieselor electronice
Toate elementele orizontale trebuie să fie realizate din carton mai gros.
Pasul 3: Schema de cablare
Playerul mp3 este furnizat cu tensiune de 5V și comunică cu Arduino prin TX / RX, este nevoie de un convertor logic, deoarece Arduino în sine funcționează pe tensiune de 3,3V. Controlul inelelor este, de asemenea, conectat la Arduino (D5, D6) prin convertorul logic.
La depozit, veți găsi fișiere Eagle cu planuri PCB
Vă sugerez să nu lipiți permanent Arduino și playerul mp3 numai pentru a utiliza pini de aur de sex feminin
Pasul 4: Principiul de funcționare
Arduino-ul nostru se conectează la sistemul app.remoteme.org folosind WebSockets (există biblioteci gata) prin această conexiune sunt trimise mesaje de 5 octeți:
- primul octet al efectului de lumină pentru inelul LED superior
- efect de lumină al doilea octet pentru inelul LED inferior
- numărul fișierului mp3 de redat
- numărul de secunde cât timp vor fi redate efectul de lumină și mp3-ul
- dacă mp3 ar trebui redat o dată sau într-o buclă
cod sursa
Întregul cod sursă Puteți găsi aici
în fișierele SingleRing.cpp și SingleRing.h există o clasă pentru a controla efectele inelelor LED. Vă sugerez să începeți examinând funcția 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); pauză; // carcasă verde standard standard 2: setConfiguration (6, 0, 0, 50, 0, 20); pauză; // carcasă albastră standard solidă 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // carcasă standard roșie solidă 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // carcasă portocalie standard solidă 5: setConfiguration (1, 0, 100, 0, 5, 2); pauză; // poliția carcasă verde în sensul acelor de ceasornic 6: setConfiguration (1, 0, 100, 0, 5, -2); // poliția revine la cazul verde 7: setConfiguration (1, 0, 0, 100, 5, 2); pauză; // poliția albastru în sensul acelor de ceasornic caz 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // poliția revine la albastru caz 9: setConfiguration (1, 100, 0, 0, 5, 2); pauză; // polițist standard roșu caz 10: setConfiguration (1, 100, 0, 0, 5, -2); // poliția revine la caz roșu 11: setConfiguration (1, 100, 20, 0, 5, 2); pauză; // polițist standard portocaliu 12: setConfiguration (1, 100, 20, 0, 5, -2); pauză; // poliția revine la portocaliu 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // încrucișează carcasa albastră standard 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cruce revine la albastru carcasă 15: setConfiguration (5, 0, 50, 0, 0, 20); pauză; // clipi carcasă verde standard 16: setConfiguration (5, 0, 50, 0, 0, -20); pauză; // clipesc odwyrtka caseta verde 17: setConfiguration (5, 0, 0, 50, 0, 20); pauză; // clipire carcasă albastră standard 18: setConfiguration (5, 0, 0, 50, 0, -20); pauză; // clipire revine la albastru caz 19: setConfiguration (5, 50, 0, 0, 0, 20); pauză; // clipi carcasă roșie standard 20: setConfiguration (5, 50, 0, 0, 0, -20); pauză; // clipire revine la roșu carcasă 21: setConfiguration (5, 50, 10, 0, 0, 20); pauză; // clipi carcasă portocalie standard 22: setConfiguration (5, 50, 10, 0, 0, -20); pauză; // clipire revine la portocaliu implicit: setConfiguration (0, 0, 50, 0, 5, 1); pauză; // off = 0}}
în funcție de parametrul dat, inelul va afișa efectul. Puteți adăuga propriul efect apelând setul de funcții Configurare cu parametri noi (schimbarea culorii, viteza de afișare) prin adăugarea unui mod nou sau adăugarea unui efect complet nou - sau anunțați-mă în comentarii dacă îmi place, voi adăuga un efect nou
arduino.ino:
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#include
#include #include #include "SingleRing.h"
#include
#include #include
#include
#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 jos = 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)) {// Folosiți softwareSerial pentru a comunica cu mp3.
Serial.println (F ("Imposibil de început:")); Serial.println (F ("1. Vă rugăm să verificați din nou conexiunea!")); Serial.println (F ("2. Vă rugăm să introduceți cardul SD!")); while (adevărat); } Serial.println (F ("DFPlayer Mini online."));
myDFPlayer.setTimeOut (500); // Setați expirarea comunicării seriale la 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) {întârziere (100); }
remoteMe.setUserMessageListener (onUserMessage);
remoteMe.setupTwoWayCommunication ();
remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);
top.setup ();
bottom.setup (); top.clear (); bottom.clear (); }
boolean turnat Off = adevărat;
turnul lung nesemnat OffMillis = 0;
void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {
uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (date, pos);
bottom.setMode (bottomMode);
top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } TurnOff = false; turnOffMillis = millis () + 1000 * timp; }
bucla nulă ()
{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis
}
explicaţie:
#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""
Trebuie să oferim date de mai sus, instrucțiuni detaliate aici, la link, de asemenea, am arătat cum să mă înregistrez în remoteme.org și să generez simbolul, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (date, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (date, pos);
bottom.setMode (bottomMode);
top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } TurnOff = false; turnOffMillis = millis () + 1000 * timp; }
Această funcție va fi apelată când mesajul va ajunge la Arduino și va afișa notificarea. Codul este atât de clar încât se descrie pe sine. Mă refer la detaliile cursurilor la documentația de aici și de aici
bucla void () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {
dacă (! Închis) {)
top.clear ();
bottom.clear (); myDFPlayer.stop (); întorsOff = adevărat; }}
În buclă, numim funcțiile de buclă ale obiectelor și, de asemenea, dacă timpul de afișare a notificărilor a trecut, oprim diodele și sunetul.
Pasul 5: MP3 Player
Comunică cu Arduino prin TX / RX - Detalii despre player în sine și biblioteca aici
Încărcăm fișiere mp3 pe cardul SD. Fișierele de pe card sunt sortate alfabetic și apoi apelând:
myDFPlayer.play (5);
Redăm al cincilea fișier de pe cardul SD din directorul rădăcină. De aceea este bine să dați fișiere pe prefixele cardului SD 01, 02 etc. În cazul meu, arată ca pe ecranul de imprimare de mai sus
Pentru a genera comenzi vocale Puteți utiliza această pagină.
Pasul 6: Încărcarea programului pe Arduino
Înainte de a încărca schița pe Arduino, trebuie să descărcați bibliotecile necesare aici, veți găsi instrucțiuni detaliate
în plus, trebuie să instalăm biblioteca DFRobotDFPlayerMini și Adafruit_NeoPixel
Pasul 7: Control
Trimitem către Arduino cinci octeți
- primul octet al efectului de lumină pentru inelul LED superior
- efect de lumină al doilea octet pentru inelul LED inferior
- numărul fișierului mp3 de redat
- numărul de secunde cât timp vor fi redate efectul de lumină și mp3-ul
- dacă mp3-ul ar trebui redat o dată sau în buclă (1 dacă ar trebui redat în buclă)
Prin trimiterea de octeți
07 0F 01 05 01
Inelul superior va afișa luminile poliției (modul 6) în partea de jos a clipi verde (modul 15) (verificați funcția setMode la singleRing.cpp și comentariile de lângă acesta). Primul fișier din cardul SD va fi redat timp de 5 secunde. Și fișierul va fi redat în buclă (verificați funcția onUserMessage la arduino.ino)
Să trimitem acești octeți. Uitați-vă la ecranul de mai sus și faceți clic pe pictograme în ordinea scrisă de 1, 2, 3. Apare fereastra
Apoi, uitați-vă la al doilea ecran - și completați fereastra ca la al doilea ecran
Fereastra care apare este utilizată pentru a trimite mesaje către dispozitiv. În câmpul 1, selectați dispozitivul expeditor - deoarece avem un singur dispozitiv, îl selectăm (acesta este un câmp obligatoriu și nu contează că este același dispozitiv căruia îi trimitem un mesaj) În câmpul 2 acordăm octeți trimite (cu roșu valoarea pe care am introdus-o în 2 va fi reprezentată ca un șir) apoi faceți clic pe butonul Trimiteți.
După trimiterea mesajului, notificatorul nostru ar trebui să reacționeze afișând efectele de iluminare corespunzătoare și redând mp3-ul selectat. Vă încurajez să încercați efecte diferite oferind primii doi octeți ai unui număr între 0 și 22 (a se vedea descrierea în funcția setMode).
Pasul 8: Trimiterea mesajelor utilizând adresele URL
Dacă dorim să afișăm notificări dintr-o aplicație externă, de exemplu cu IFTTT, trebuie să avem o adresă URL care să facă exact același lucru ca și în fereastra din pasul anterior. remoteme.org oferă REST APi. Mergeți la el făcând clic pe fila swagger din stânga (ultima). Va fi afișată o pagină, pe această pagină putem încerca și adresele noastre URL.
La primul ecran Aveți funcția pe care trebuie să o extindeți, apoi completați datele ca la al doilea ecran.
completați datele ca în captura de ecran de mai sus. După ce faceți clic pe executare, vom trimite un mesaj
070F010501
Receptorul este dispozitivul cu 205 id, același dispozitiv este, de asemenea, un expeditor. MessageId cu setările „No_RENEVAL” este irelevant. Și apoi faceți clic pe Executare. Notificatorul va reacționa în același mod ca atunci când trimiteți mesaje din aplicație. După ce ați apelat RESTul de mai jos este adresa URL care a fost numită - uitați-vă la al treilea ecran. Și copierea și lipirea în URL-ul browserului a fost marcată cu margine verde. La al patrulea ecran browserul meu crom după URL a fost lipit
În cazul meu, adresa URL este:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Pasul 9: adresă URL animă pentru trimiterea mesajului
La pasul anterior Aveți o adresă URL care trimite date către dispozitivul dvs. Din păcate, după deconectarea de la app.remoteme.org, acesta nu mai funcționează. Acest lucru se datorează faptului că nu am furnizat jetonul de autentificare și nu mai suntem conectați. Să luăm jetonul nostru (sau să creăm unul nou) și să-l lipim în adresa URL în loc de stea.
Uită-te la ecran și înlocuiește * în URL cu simbolul tău
în cazul meu simbolul este:
~ 267_ZxoWtJ) 0ph & 2c
deci adresa URL finală arată:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Acum îl putem apela chiar dacă nu suntem conectați. Și când este apelat, un mesaj va fi trimis pe dispozitivul nostru 205
Pasul 10: Integrare cu IFTTT 1/7
Adresa URL creată în pasul de mai sus este potrivită pentru executarea de către aplicații externe. Cum să îl folosesc, îl voi arăta pe IFTTT. Îl voi configura astfel încât notificatorul să pornească atunci când un e-mail ajunge la adresa de e-mail (contul Gmail).
Conectați-vă la IFTTT. Apoi accesați fila Appletele mele și apoi „New Applet” - primul ecran
Pasul 11: Integrare cu IFTTT 2/7
Apoi faceți clic pe „+ acest lucru”
Pasul 12: Integrare cu IFTTT 3/7
Apoi în câmpul „Servicii de căutare” scrieți „Gmail”
Apoi „e-mail nou în căsuța de e-mail” (ar putea fi necesară o anumită configurație).
Pasul 13: Integrare cu IFTTT 4/7
acum facem clic pe „+ că”
Pasul 14: Integrare cu IFTTT 5/7
găsiți „Webhooks” și faceți clic pe el
Pasul 15: Integrare cu IFTTT 6/7
apoi „Faceți o solicitare web”
Pasul 16: Integrare cu IFTTT 7/7
completăm adresa URL a adresei URL cu simbolul. Tastați conținutul în aplicație / json și faceți clic pe „creați acțiune” și Finalizați. Acum avem applet-ul nostru:
Pasul 17: Rezumat
În acest tutorial, am arătat cum să trimitem mesaje Arduino de la sisteme externe. De asemenea, integrăm un alt sistem, apoi IFTTT, într-un mod similar. Nu trebuie neapărat să fie un „notificator” pe care am vrut să-l arăt în acest exemplu cum să trimit mesaje din sisteme externe către Arduino.
sourcecodesFanPage la Facebook
Noroc, Maciek
Recomandat:
Notificator de apel Bluetooth: 5 pași (cu imagini)
Notificator de apel Bluetooth: Introducere În câteva zile, când am întâlnit acest proiect, am parcurs fluxuri de știri instructabile, a fost un proiect interesant. Dar m-am gândit De ce să nu-l construiesc cu un Bluetooth în loc de chestii complicate de wifi. Specificația acestui notificator de apel Bluetooth
Notificator automat de spălare a mâinilor: 5 pași
Notificator automat de spălare a mâinilor: Acesta este un aparat care poate anunța pe cineva când intră prin ușă. Scopul său este de a reaminti cuiva să se spele pe mâini atunci când se întoarce acasă. Există un senzor cu ultrasunete în partea din față a cutiei care detectează cineva care intră
Notificator IoT folosind ESP-12E: 7 pași (cu imagini)
Notificator IoT folosind ESP-12E: Blocat acasă departe de persoana iubită? În acest moment dificil, acest mic proiect distractiv va încerca cu siguranță să vă aducă un zâmbet pe față. În acest instructable, vă voi arăta cum să afișați notificările de pe telefonul dvs. mobil sub forma
Notificator de e-mail ușor necitit: 7 pași
Notificator de e-mail ușor necitit: Bună tuturor, bine ați venit la un alt instructabil. Cu situația actuală de a lucra de acasă, mă confrunt cu unele provocări, deoarece am primit e-mailuri de la Compania mea din când în când. Apoi mă gândeam să fac un Notificator de birou care să anunță-mă despre
Construiți un notificator ISS ușor: 5 pași
Construiți un notificator ISS ușor: de TokyLabs | Timp necesar: 1–3 ore | Dificultate: Ușor | Preț: 60 $ - 70 $ Puteți crea cu ușurință un notificator hardware care ridică un astronaut de hârtie pentru a vă avertiza de fiecare dată când Stația Spațială Internațională trece peste locația dvs. Cu mult mai distractiv decât