Értesítő: 17 lépés
Értesítő: 17 lépés
Anonim
Értesítő
Értesítő

Az eszköz csatlakoztatható például az IFTTT rendszerhez, és reagálhat, ha új levél jelenik meg. Az app.remoteme.org oldalon hívás után létrehozunk egy linket, amelyet a bájtok elküldnek az Arduino -nak, az Arduino pedig fényeffektust jelenít meg, és mp3 -t játszik le az SDcardról

1. lépés: Amire szükség van

Ami szükséges
Ami szükséges
Ami szükséges
Ami szükséges
  • NodeMCU, WemOS vagy valami hasonló
  • Két LED -gyűrű WS2812B diódákkal (16. LED -es gyűrűket használtam)
  • DFRobotDFPlayerMini - ez az mp3 lejátszó. MP3 -t játszik le az SD -kártyáról, és kommunikál az Arduino -val RX/TX segítségével
  • Hangszóró
  • SD kártya
  • Logikai átalakító -Én ezt használtam, az mp3 lejátszó 5 V -ot és Arduino 3.3 -at használ, ezért van szükségünk erre az átalakítóra
  • Tudás és készségek egyszerű PCB -k készítéséhez önmagunk által

A torony:

  • karton - két különböző vastagságú
  • Pauszpapír
  • alufólia

2. lépés: Toronyépítés

Toronyépítés
Toronyépítés
Toronyépítés
Toronyépítés
Toronyépítés
Toronyépítés
Toronyépítés
Toronyépítés

A torony terve felett, oldalnézetben (kalandom a műszaki rajzzal az általános iskolában ért véget), minden méret milliméterben.

Működés elve

  1. világító LED -ek gyűrűje
  2. Pauszpapír
  3. A csonkakúp, kartonból készült és alumínium fóliával borított, így visszaveri a LED-es gyűrűk fényeit, a 3. ábrán '= a kivágott háló
  4. kartondoboz - függőlegesen tartja a tornyokat, a cső belsejében kábelek vannak a ledekhez
  5. A magasság tőled függ, nekem 85 mm van
  6. Az állvány minden elektronikai alkatrészen belül

Minden vízszintes elemet vastagabb kartonból kell készíteni.

3. lépés: bekötési rajz

Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz

Az mp3 lejátszó 5 V feszültséggel van ellátva, és TX / RX -en keresztül kommunikál az Arduino -val, logikai átalakítóra van szükség, mert maga az Arduino 3,3 V feszültségen működik. A gyűrűk vezérlése szintén az Arduino -hoz (D5, D6) kapcsolódik a logikai átalakítón keresztül.

A tárolóban sas fájlokat talál PCB tervekkel

Azt javaslom, hogy az Arduino -t és az mp3 -lejátszót ne forraszthassák véglegesen, csak női aranycsapokat használva

4. lépés: Működési elv

Az Arduino ezen a kapcsolaton keresztül csatlakozik az app.remoteme.org rendszerhez a WebSockets segítségével (vannak kész könyvtárak): 5 bájtos üzeneteket küld:

  • a fényeffektus első bájtja a felső LED -gyűrűhöz
  • második bájtos fényhatás az alsó LED -gyűrűhöz
  • a lejátszandó mp3 fájl száma
  • a fényhatás és az mp3 lejátszási ideje
  • hogy az mp3 -t egyszer kell -e lejátszani vagy ciklusban

forráskód

A teljes forráskód itt található

a SingleRing.cpp és SingleRing.h fájlokban van egy osztály, amely a LED -gyűrűk hatásait vezérli. Javaslom, hogy kezdje a setMode (int m) függvény megtekintésével:

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; // szilárd standard zöld tok 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // szilárd kék kék tok 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // szilárd standard piros tok 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // szilárd standard narancssárga tok 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // rendőrség az óramutató járásával megegyező irányban zöld tok 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // a rendőrség visszaállítja a zöld esetet 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // rendőrség óramutató járásával megegyező irányban kék tok 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // a rendőrség visszaállítja a kék esetet 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // rendőrségi standard piros tok 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // a rendőrség visszaállítja a piros esetet 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // rendőrségi standard narancssárga tok 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // a rendőrség visszaállítja a narancssárga tokot 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; // villog a szabványos zöld tok 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // villog a szabványos kék tok 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // blink revert blue case 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // blink standard vörös eset 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // blink revert red case 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // villog a standard narancssárga tok 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blink revert narancs alapértelmezett: setConfiguration (0, 0, 50, 0, 5, 1); szünet; // ki = 0}}

a megadott paramétertől függően a gyűrű megjeleníti az effektust. Hozzáadhatja saját hatását a setConfiguration függvény meghívásával új paraméterekkel (színváltozás, megjelenítési sebesség) új mód hozzáadásával vagy teljesen új effektus hozzáadásával - vagy ha tetszik, jelezze a megjegyzésekben

arduino.ino:

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

#befoglalni

#include #include #include "SingleRing.h"

#befoglalni

#befoglalni #befoglalni

#befoglalni

#define WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "sziréna" #define TOKEN ""

#define DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing alsó = 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); Sorozat.kezdet (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// A softwareSerial használata az mp3 -al való kommunikációhoz.

Serial.println (F ("Nem lehet elkezdeni:")); Serial.println (F ("1. Kérem, ellenőrizze újra a kapcsolatot!")); Serial.println (F ("2. Kérem helyezze be az SD kártyát!")); míg (igaz); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Soros kommunikációs időt állítson be 500 ms -ra

myDFPlayer.volumen (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

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

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean TurnOff = igaz;

előjel nélküli hosszú turnOffMillis = 0;

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

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

bottom.setMode (bottomMode);

top.setMode (topMode); if (mód == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } kikapcsolva = hamis; turnOffMillis = millis () + 1000 * idő; }

üres hurok ()

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

}

magyarázat:

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

Meg kell adnunk a fenti adatokat, részletes utasításokat itt a linken, és azt is megmutattam, hogyan kell regisztrálni a remoteme.org -on és létrehozni a tokent, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (adatok, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (adatok, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (adatok, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (adatok, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (adatok, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mód == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } kikapcsolva = hamis; turnOffMillis = millis () + 1000 * idő; }

Ezt a funkciót hívják meg, amikor az üzenet az Arduino -hoz érkezik, és megjeleníti az értesítést. A kód annyira világos, hogy leírja magát. Az osztályok részleteire hivatkozom a dokumentációban itt és itt

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

ha (! kikapcsolva) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); TurnOff = igaz; }}

A ciklusban az objektumok ciklusfüggvényeit hívjuk, és ha az értesítések megjelenítési ideje lejárt, akkor kikapcsoljuk a diódákat és a hangot.

5. lépés: MP3 lejátszó

Mp3 lejátszó
Mp3 lejátszó

TX / RX -en keresztül kommunikál az Arduino -val - A lejátszó részletei itt, a könyvtár pedig itt

Mp3 fájlokat töltünk fel az SD kártyára. A kártyán lévő fájlok ábécé sorrendbe vannak rendezve, majd a következő hívással:

myDFPlayer.play (5);

Lejátsszuk az ötödik fájlt az SD kártyáról a gyökérkönyvtárból. Ezért jó fájlokat adni az SD -kártya előtagjaira, 01, 02 stb. Esetemben úgy néz ki, mint a fenti nyomtatási képernyőn

Hangutasítások generálása Ezt az oldalt használhatja.

6. lépés: A program feltöltése az Arduino programba

A program feltöltése az Arduino programba
A program feltöltése az Arduino programba
A program feltöltése az Arduino programba
A program feltöltése az Arduino programba

Mielőtt feltöltené a vázlatot az Arduino -ba, le kell töltenie a szükséges könyvtárakat, és itt talál részletes utasításokat

ezenkívül telepítenünk kell a DFRobotDFPlayerMini könyvtárat és az Adafruit_NeoPixelt

7. lépés: Vezérlés

Ellenőrzés
Ellenőrzés
Ellenőrzés
Ellenőrzés

Elküldünk az Arduino -nak öt bájtot

  • a fényeffektus első bájtja a felső LED -gyűrűhöz
  • második bájtos fényhatás az alsó LED -gyűrűhöz
  • a lejátszandó mp3 fájl száma
  • a fényhatás és az mp3 lejátszási ideje
  • hogy az mp3 -t egyszer vagy ciklusban kell -e lejátszani (1, ha ciklusban kell lejátszani)

Bájtok küldésével

07 0F 01 05 01

A felső gyűrű a rendőrségi fényeket (6. mód) mutatja, az alsó zölden villog (15. mód) (nézze meg a setMode funkciót a singleRing.cpp oldalon és a megjegyzéseket mellette). Az SD -kártya első fájlja 5 másodpercig lejátszásra kerül. És a fájl lejátszásra kerül a ciklusban (ellenőrizze az onUserMessage címet az arduino.ino oldalon)

Küldjük el ezeket a bájtokat. Nézze meg a fenti képernyőt, és kattintson az ikonokra 1, 2, 3 sorrendben. Megjelenik az ablak

Ezután nézze meg a második képernyőt - és töltse ki az ablakot, mint a második képernyőt

A megjelenő ablak üzeneteket küld az eszközre. Az 1. mezőben válassza ki a feladó eszközt - mivel csak egy eszközünk van, ezt választjuk ki (ez kötelező mező, és nem mindegy, hogy ugyanaz az eszköz, amelyhez üzenetet küldünk) A 2. mezőben bájtokat adunk küldés (pirossal a 2 -ben megadott érték karakterláncként jelenik meg), majd kattintson a Küldés gombra.

Az üzenet elküldése után értesítőnknek reagálnia kell a megfelelő fényhatások megjelenítésével és a kiválasztott mp3 lejátszásával. Javaslom, hogy próbálja ki a különböző hatásokat, ha megadja a 0 és 22 közötti szám első két bájtját (lásd a setMode függvény leírását).

8. lépés: Üzenetek küldése URL -ek használatával

Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával
Üzenetek küldése URL -ek használatával

Ha külső alkalmazások értesítéseit szeretnénk megjeleníteni, pl. IFTTT -vel, akkor rendelkeznünk kell olyan URL -címmel, amely pontosan ugyanazt fogja tenni, mint az előző lépés ablakában. A remoteme.org REST APi -t biztosít. Ehhez kattintson a bal oldalon található swagger fülre (az utolsó). Megjelenik egy oldal, ezen az oldalon kipróbálhatjuk az URL -einket is.

Az első képernyőn megjelenik a Bővítendő funkció, majd töltse ki az adatokat, mint a második képernyőn.

töltse ki az adatokat a fenti képernyőkép szerint. A végrehajtás gombra kattintás után üzenetet küldünk

070F010501

A vevő a 205 azonosítójú eszköz, ugyanaz az eszköz egyben küldő is. A MessageId a „No_RENEVAL” beállításokkal nem releváns. Ezután kattintson a Végrehajtás gombra. A Notificator ugyanúgy reagál, mint amikor üzeneteket küld az alkalmazásból. A REST hívása után az alábbiakban látható a meghívott URL - nézze meg a harmadik képernyőt. A másolás és beillesztés a böngészőbe URL -t zöld szegéllyel jelöltük. A negyedik képernyőn a Chrome böngészőm az URL beillesztése után

Esetemben az URL:

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

9. lépés: Bármilyen URL -cím az üzenetküldéshez

Bármilyen URL az üzenetküldéshez
Bármilyen URL az üzenetküldéshez

Az előző lépésben Van egy URL -címe, amely adatokat küld az eszközére. Sajnos, miután kijelentkezett az app.remoteme.org webhelyről, leáll. Ennek az az oka, hogy nem adtuk meg a hitelesítési jogkivonatot, és már nem vagyunk bejelentkezve. Szerezzük be a tokenünket (vagy hozzunk létre újat), és illesszük be a csillag helyett az URL -be.

Nézze meg a képernyőt, és cserélje le a * -ot az URL -ben a tokenjére

az én esetemben a jelző:

~ 267_ZxoWtJ) 0ph & 2c

így a végső URL így néz ki:

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

Most már akkor is hívhatjuk, ha nem vagyunk bejelentkezve. És amikor hívják, üzenetet küldünk a készülékünkre 205

10. lépés: Integráció az IFTTT 1/7 programmal

Integráció IFTTT 1/7
Integráció IFTTT 1/7

A fenti lépésben létrehozott URL alkalmas külső alkalmazások általi végrehajtásra. Hogyan kell használni, megmutatom az IFTTT -n. Úgy konfigurálom, hogy a bejelentő bekapcsoljon, ha e -mail érkezik az e -mail címre (Gmail -fiók).

Jelentkezzen be az IFTTT-be. Ezután lépjen a Saját alkalmazások fülre, majd az „Új kisalkalmazás”- első képernyőre

11. lépés: Integráció az IFTTT 2/7 programmal

Integráció az IFTTT -vel 2/7
Integráció az IFTTT -vel 2/7

Ezután kattintson a "+ez" gombra

12. lépés: Integráció az IFTTT 3/7 programmal

Integráció IFTTT 3/7
Integráció IFTTT 3/7

Ezután a „Keresési szolgáltatások” mezőbe írja be a „Gmail” szót

Ezután "új e -mail a beérkező levelek között" (Szükség lehet bizonyos konfigurációra).

13. lépés: Integráció az IFTTT 4/7 programmal

Integráció az IFTTT -vel 4/7
Integráció az IFTTT -vel 4/7

most rákattintunk a "+" gombra

14. lépés: Integráció az IFTTT 5/7 programmal

Integráció az IFTTT -vel 5/7
Integráció az IFTTT -vel 5/7

keresse meg a „Webhooks” elemet, és kattintson rá

15. lépés: Integráció az IFTTT 6/7 programmal

Integráció az IFTTT -vel 6/7
Integráció az IFTTT -vel 6/7

majd „Webes kérés”

16. lépés: Integráció az IFTTT 7/7 programmal

Integráció az IFTTT -vel 7/7
Integráció az IFTTT -vel 7/7

kiegészítjük URL -címünket a tokennel. Tartalomtípus az application / json -ba, majd kattintson a „művelet létrehozása” és a Befejezés gombra. Most megvan az appletünk:

17. lépés: Összefoglalás

Ebben az oktatóanyagban megmutattam, hogyan küldhetünk Arduino üzeneteinket külső rendszerekből. Hasonló módon integrálunk egy másik rendszert is, majd az IFTTT -t. Ennek nem feltétlenül „értesítőnek” kell lennie, ebben a példában meg akartam mutatni, hogyan kell üzeneteket küldeni külső rendszerekről Arduino -nkhoz.

sourcecodesFanPage a Facebookon

Üdv Maciek

Ajánlott: