Tartalomjegyzék:

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

Videó: Értesítő: 17 lépés

Videó: Értesítő: 17 lépés
Videó: Így állíthatod be Samsung telefonodra az értesítés jelzést 2024, November
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: