Indholdsfortegnelse:
- Trin 1: Hvad er nødvendigt
- Trin 2: Tårnbygning
- Trin 3: Ledningsdiagram
- Trin 4: Driftsprincip
- Trin 5: Mp3 -afspiller
- Trin 6: Upload af programmet til Arduino
- Trin 7: Kontrol
- Trin 8: Afsendelse af meddelelser ved hjælp af webadresser
- Trin 9: Anonym URL til at sende besked
- Trin 10: Integration med IFTTT 1/7
- Trin 11: Integration med IFTTT 2/7
- Trin 12: Integration med IFTTT 3/7
- Trin 13: Integration med IFTTT 4/7
- Trin 14: Integration med IFTTT 5/7
- Trin 15: Integration med IFTTT 6/7
- Trin 16: Integration med IFTTT 7/7
- Trin 17: Resumé
Video: Notifikator: 17 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
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
- 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
Over tårnets plan i sidebillede (mit eventyr med den tekniske tegning sluttede i folkeskolen), alle dimensioner i millimeter.
Driftsprincip
- ring af lysdioder, der lyser
- Sporepapir
- Den afkortede kegle, lavet af pap og dækket med aluminiumsfolie, så den reflekterer lys fra ledringe, i figur 3 ‘= det udskårne net
- kartonrør - holder tårnene lodret, inde i røret er kabler til lysdioder
- Højden afhænger af dig jeg har 85 mm
- Stativet inde i alle elektronikdele
Alle vandrette elementer skal være lavet af tykkere pap.
Trin 3: 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
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
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
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
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
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
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
Klik derefter på "+dette"
Trin 12: 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
nu klikker vi på “+ det”
Trin 14: Integration med IFTTT 5/7
find "Webhooks" og klik på det
Trin 15: Integration med IFTTT 6/7
derefter "Lav en webanmodning"
Trin 16: 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:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)