Indholdsfortegnelse:

Notifikator: 17 trin
Notifikator: 17 trin

Video: Notifikator: 17 trin

Video: Notifikator: 17 trin
Video: How to use Philips Shaver S5000 2024, November
Anonim
Anmelder
Anmelder

Enheden kan f.eks. Tilsluttes IFTTT -systemet og reagere, når der vises en ny mail. På app.remoteme.org genererer vi et link efter opkald, hvilke bytes der sendes til Arduino, og Arduino viser en vis lyseffekt og afspiller nogle mp3 fra SDcard

Trin 1: Hvad er nødvendigt

Hvad skal der til
Hvad skal der til
Hvad skal der til
Hvad skal der til
  • NodeMCU, WemOS eller noget lignende
  • To LED -ringe med WS2812B -dioder (jeg har brugt ringe til 16. led)
  • DFRobotDFPlayerMini - dette er mp3 -afspiller. Det afspiller mp3 fra SD -kort og kommunikerer med Arduino af RX/TX
  • Højttaler
  • SD kort
  • Logisk konverter -Jeg har brugt denne, mp3 -afspilleren bruger 5V og Arduino 3.3, derfor har vi brug for denne konverter
  • Viden og færdigheder til at lave simple PCB af vores selv

Tårnet:

  • pap - to forskellige tykkelser
  • Sporepapir
  • sølvpapir

Trin 2: Tårnbygning

Tårnbygning
Tårnbygning
Tårnbygning
Tårnbygning
Tårnbygning
Tårnbygning
Tårnbygning
Tårnbygning

Over tårnets plan i sidebillede (mit eventyr med den tekniske tegning sluttede i folkeskolen), alle dimensioner i millimeter.

Driftsprincip

  1. ring af lysdioder, der lyser
  2. Sporepapir
  3. Den afkortede kegle, lavet af pap og dækket med aluminiumsfolie, så den reflekterer lys fra ledringe, i figur 3 ‘= det udskårne net
  4. kartonrør - holder tårnene lodret, inde i røret er kabler til lysdioder
  5. Højden afhænger af dig jeg har 85 mm
  6. Stativet inde i alle elektronikdele

Alle vandrette elementer skal være lavet af tykkere pap.

Trin 3: Ledningsdiagram

Ledningsdiagram
Ledningsdiagram
Ledningsdiagram
Ledningsdiagram
Ledningsdiagram
Ledningsdiagram
Ledningsdiagram
Ledningsdiagram

Mp3 -afspilleren leveres med 5V spænding og kommunikerer med Arduino via TX / RX, en logisk konverter er nødvendig, fordi Arduino selv arbejder på 3,3V spænding. Styringen af ringe er også forbundet med Arduino (D5, D6) via logikomformeren.

På depotet finder du ørnefiler med PCB -planer

Jeg foreslår ikke at lodde permanent Arduino og mp3 -afspilleren kun for at bruge kvindelige guldnåle

Trin 4: Driftsprincip

Vores Arduino opretter forbindelse til app.remoteme.org-systemet ved hjælp af WebSockets (der er klare biblioteker) via denne forbindelse 5-byte beskeder sendes:

  • den første byte af lyseffekten for den øverste LED -ring
  • anden byte lyseffekt til den nederste LED -ring
  • nummeret på den mp3 -fil, der skal afspilles
  • antallet af sekunder, hvor længe lyseffekten og mp3'en afspilles
  • om mp3 skal afspilles en gang eller i en loop

kildekode

Hele kildekoden Du kan finde her

i SingleRing.cpp- og SingleRing.h -filerne er der en klasse til at styre effekterne af LED -ringe. Jeg foreslår, at du starter med at se på funktionen 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; // solid standard grøn case 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // solid standard blå sag 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // solid standard rød sag 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // solid standard orange sag 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // politi med uret grøn sag 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // politiet vender tilbage til grøn sag 7: setConfiguration (1, 0, 0, 100, 5, 2); pause; // politiet blå sag 8 med uret: setConfiguration (1, 0, 0, 100, 5, -2); break; // politiet tilbagefører blå sag 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // politiets standardrøde sag 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // politiet tilbagefører rød sag 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // politiets standard orange sag 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // politiet tilbagefører orange sag 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // kryds standard blå sag 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); pause; // blink standard grøn sag 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // blink standardblå sag 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // blink revert blue case 19: setConfiguration (5, 50, 0, 0, 0, 20); pause; // blink standard rød sag 20: setConfiguration (5, 50, 0, 0, 0, -20); pause; // blink tilbagefald rød sag 21: setConfiguration (5, 50, 10, 0, 0, 20); pause; // blink standard orange sag 22: setConfiguration (5, 50, 10, 0, 0, -20); pause; // blink tilbagefør orange standard: setConfiguration (0, 0, 50, 0, 5, 1); pause; // off = 0}}

afhængigt af den givne parameter, viser ringen effekten. Du kan tilføje din egen effekt ved at kalde funktionssæt Konfiguration med nye parametre (ændring af farve, visningshastighed) ved at tilføje en ny tilstand eller tilføje en helt ny effekt - eller lad mig vide det i kommentarerne, hvis jeg kan lide det, tilføjer jeg ny effekt

arduino.ino:

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

#omfatte

#include #include #include "SingleRing.h"

#omfatte

#include #include

#omfatte

#define WIFI_NAME ""

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

#define DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing bund = SingleRing (DIODES_COUNT, D6);

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

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

ESP8266WiFiMulti WiFiMulti;

ugyldig opsætning () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Brug softwareSerial til at kommunikere med mp3.

Serial.println (F ("Kan ikke begynde:")); Serial.println (F ("1. Kontroller forbindelsen igen!")); Serial.println (F ("2. Indsæt venligst SD -kortet!")); mens (sandt); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Indstil seriel kommunikationstimeout 500 ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

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

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean TurnOff = true;

usigneret lang turnOffMillis = 0;

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); hvis (mode == 1) {myDFPlayer.loop (trackNumber); } andet {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * tid; }

hulrum ()

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

}

forklaring:

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

Vi skal levere ovenstående data, detaljerede instruktioner her på linket, jeg har også vist, hvordan jeg registrerer mig på remoteme.org og genererer 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); hvis (mode == 1) {myDFPlayer.loop (trackNumber); } andet {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * tid; }

Denne funktion kaldes, når meddelelsen kommer til Arduino og viser meddelelsen. Koden er så klar, at den beskriver sig selv. Jeg henviser til detaljerne i klasserne til dokumentationen her og her

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

hvis (! slået fra) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = true; }}

I sløjfen kalder vi objekternes loopfunktioner, og også hvis visningstiden for meddelelser er gået, slukker vi dioderne og lyden.

Trin 5: Mp3 -afspiller

Mp3 afspiller
Mp3 afspiller

Det kommunikerer med Arduino via TX / RX - Detaljer om selve afspilleren her og biblioteket her

Vi uploader mp3 -filer til SD -kortet. Filer på kortet sorteres alfabetisk og derefter ved at ringe til:

myDFPlayer.play (5);

Vi afspiller den femte fil fra SD -kortet fra rodmappen. Derfor er det godt at give filer på SD -kortets præfikser 01, 02 osv. I mit tilfælde ser det ud på ovenstående printscreen

Sådan genereres stemmekommandoer Du kan bruge denne side.

Trin 6: Upload af programmet til Arduino

Upload af programmet til Arduino
Upload af programmet til Arduino
Upload af programmet til Arduino
Upload af programmet til Arduino

Inden du uploader skitse til Arduino, skal du downloade nødvendige biblioteker her finder du detaljerede instruktioner

Derudover skal vi installere DFRobotDFPlayerMini -biblioteket og Adafruit_NeoPixel

Trin 7: Kontrol

Styring
Styring
Styring
Styring

Vi sender til vores Arduino fem bytes

  • den første byte af lyseffekten for den øverste LED -ring
  • anden byte lyseffekt til den nederste LED -ring
  • nummeret på den mp3 -fil, der skal afspilles
  • antallet af sekunder, hvor længe lyseffekten og mp3'en afspilles
  • om mp3 skal afspilles en gang eller i en loop (1 hvis den skal afspilles i en loop)

Ved at sende bytes

07 0F 01 05 01

Øverste ring vil vise politiets lys (tilstand 6) nederste et blink grønt (tilstand 15) (tjek setMode -funktionen på singleRing.cpp og kommentarer ved siden af). Den første fil fra SD -kortet afspilles i 5 sekunder. Og filen vil blive afspillet i loop (tjek funktion påUserMessage på arduino.ino)

Lad os sende disse bytes. Se på skærmen ovenfor, og klik på ikoner i rækkefølge skrevet af 1, 2, 3. Vinduet vises

Kig derefter på den anden skærm - og udfyld vinduet som på den anden skærm

Vinduet, der vises, bruges til at sende meddelelser til enheden. I felt 1 skal du vælge afsenderenheden - fordi vi kun har én enhed, vælger vi den (dette er et obligatorisk felt, og det er ligegyldigt, at det er den samme enhed, som vi sender en besked til) I felt 2 giver vi bytes til send (i rødt vil værdien, vi indtastede i 2, blive repræsenteret som en streng), og klik derefter på knappen Send.

Efter at have sendt beskeden, bør vores anmelder reagere ved at vise de relevante lyseffekter og afspille den valgte mp3. Jeg opfordrer dig til at prøve forskellige effekter ved at give de to første bytes af et tal mellem 0 og 22 (se beskrivelse i setMode -funktionen).

Trin 8: Afsendelse af meddelelser ved hjælp af webadresser

Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser
Afsendelse af beskeder ved hjælp af webadresser

Hvis vi vil vise meddelelser fra en ekstern applikation f.eks. Med IFTTT, skal vi have en URL, der vil gøre nøjagtig det samme, som vi gjorde i vinduet i det foregående trin. remoteme.org giver REST APi. Gå til det ved at klikke på swagger -fanen til venstre (den sidste). Der vises en side, på denne side kan vi også prøve vores webadresser.

På den første skærm Du har den funktion, du har brug for at udvide, og derefter udfylde data som på den anden skærm.

udfyld dataene som i ovenstående skærmbillede. Efter at have klikket på eksekver sender vi en besked

070F010501

Modtageren er enheden med 205 id, den samme enhed er også en afsender. MessageId med indstillingerne "No_RENEVAL" er irrelevant. Og klik derefter på Execute. Notificator reagerer på samme måde som ved afsendelse af meddelelser fra applikationen. Efter at have ringet til REST nedenfor er den URL, der blev kaldt - se på den tredje skærm. Og kopier og indsæt i browserens URL var markeret med grøn kant. På fjerde skærm min chrome browser efter URL blev indsat

I mit tilfælde er webadressen:

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

Trin 9: Anonym URL til at sende besked

Anonym URL til at sende besked
Anonym URL til at sende besked

På forrige trin har du en URL, der sender data til din enhed. Desværre stopper det efter at have logget ud af app.remoteme.org. Dette skyldes, at vi ikke leverede godkendelsestokenet, og vi ikke længere er logget ind. Lad os få vores token (eller oprette et nyt) og indsætte det i URL'en i stedet for stjernen.

Se på skærmen, og erstat * i URL med dit token

i mit tilfælde er token:

~ 267_ZxoWtJ) 0ph & 2c

så min endelige URL ser sådan ud:

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

Nu kan vi kalde det, selvom vi ikke er logget ind. Og når det kaldes, vil der blive sendt en besked til vores enhed 205

Trin 10: Integration med IFTTT 1/7

Integration med IFTTT 1/7
Integration med IFTTT 1/7

Url oprettet i trin ovenfor er velegnet til udførelse af eksterne applikationer. Hvordan man bruger det, vil jeg vise på IFTTT. Jeg vil konfigurere det, så meddeleren tændes, når der kommer en e -mail til e -mailadressen (Gmail -konto).

Log ind på IFTTT. Gå derefter til fanen Mine applets og derefter "Ny applet"- første skærm

Trin 11: Integration med IFTTT 2/7

Integration med IFTTT 2/7
Integration med IFTTT 2/7

Klik derefter på "+dette"

Trin 12: Integration med IFTTT 3/7

Integration med IFTTT 3/7
Integration med IFTTT 3/7

Skriv derefter "Gmail" i feltet "Søgetjenester"

Derefter "ny e -mail i indbakke" (Nogle konfigurationer kan være nødvendige).

Trin 13: Integration med IFTTT 4/7

Integration med IFTTT 4/7
Integration med IFTTT 4/7

nu klikker vi på “+ det”

Trin 14: Integration med IFTTT 5/7

Integration med IFTTT 5/7
Integration med IFTTT 5/7

find "Webhooks" og klik på det

Trin 15: Integration med IFTTT 6/7

Integration med IFTTT 6/7
Integration med IFTTT 6/7

derefter "Lav en webanmodning"

Trin 16: Integration med IFTTT 7/7

Integration med IFTTT 7/7
Integration med IFTTT 7/7

vi fuldender URL'en til vores url med token. Indholdstype til applikation / json, og klik på "opret handling" og afslut. Nu har vi vores applet:

Trin 17: Resumé

I denne vejledning viste jeg, hvordan jeg sender til vores Arduino -beskeder fra eksterne systemer. Vi integrerer også et andet system end IFTTT på en lignende måde. Det behøver ikke nødvendigvis at være en "underretter", jeg ønskede at vise i dette eksempel, hvordan man sender beskeder fra eksterne systemer til vores Arduino.

sourcecodesFanPage på Facebook

Skål, Maciek

Anbefalede: