Innehållsförteckning:
- Steg 1: Vad behövs
- Steg 2: Tower Building
- Steg 3: Anslutningsdiagram
- Steg 4: Princip för drift
- Steg 5: Mp3 -spelare
- Steg 6: Ladda upp programmet till Arduino
- Steg 7: Kontroll
- Steg 8: Skicka meddelanden med webbadresser
- Steg 9: Anym URL för att skicka meddelande
- Steg 10: Integration med IFTTT 1/7
- Steg 11: Integration med IFTTT 2/7
- Steg 12: Integration med IFTTT 3/7
- Steg 13: Integration med IFTTT 4/7
- Steg 14: Integration med IFTTT 5/7
- Steg 15: Integration med IFTTT 6/7
- Steg 16: Integration med IFTTT 7/7
- Steg 17: Sammanfattning
Video: Anmälare: 17 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Enheten kan till exempel anslutas till IFTTT -systemet och reagera när ett nytt e -postmeddelande visas. På app.remoteme.org kommer vi att generera en länk efter samtal som byte kommer att skickas till Arduino, och Arduino kommer att visa lite ljuseffekt och spela lite mp3 från SDcard
Steg 1: Vad behövs
- NodeMCU, WemOS eller något liknande
- Två LED -ringar med WS2812B -dioder (jag har använt ringar från 16: e LED)
- DFRobotDFPlayerMini - det här är mp3 -spelare. Den spelar mp3 från SD -kort och kommunicerar med Arduino av RX/TX
- Högtalare
- SD-kort
- Logikomvandlare -Jag har använt den här, mp3 -spelaren använder 5V och Arduino 3.3 därför behöver vi denna omvandlare
- Kunskap och färdigheter för att göra enkla kretskort av oss själva
Tornet:
- kartong - två olika tjocklekar
- Kalkerpapper
- aluminiumfolie
Steg 2: Tower Building
Ovanför tornets plan i sidovy (mitt äventyr med den tekniska ritningen slutade i grundskolan), alla dimensioner i millimeter.
Funktionsprincip
- ring av lysdioder som tänder ljus
- Kalkerpapper
- Den stympade konen, gjord av kartong och täckt med aluminiumfolie, så att den reflekterar ljus från ledringar, i figur 3 ‘= det utskurna nätet
- kartongrör - håller tornen vertikalt, inuti röret finns kablar för lysdioder
- Höjden beror på dig jag har 85 mm
- Stativet inuti alla elektronikdelar
Alla horisontella element ska vara gjorda av tjockare kartong.
Steg 3: Anslutningsdiagram
Mp3 -spelaren levereras med 5V spänning och kommunicerar med Arduino via TX / RX, en logisk omvandlare behövs eftersom Arduino själv fungerar på 3,3V spänning. Styrningen av ringar är också ansluten till Arduino (D5, D6) via logikomvandlaren.
På förvaret hittar du örnfiler med PCB -planer
Jag föreslår att inte lödas permanent Arduino och mp3 -spelaren bara för att använda kvinnliga guldnålar
Steg 4: Princip för drift
Vår Arduino ansluter till app.remoteme.org-systemet med hjälp av WebSockets (det finns färdiga bibliotek) via denna anslutning 5-byte-meddelanden skickas:
- den första byte av ljuseffekten för den övre LED -ringen
- andra byte ljuseffekt för den nedre LED -ringen
- numret på mp3 -filen som ska spelas
- antalet sekunder hur länge ljuseffekten och mp3 kommer att spelas
- om mp3 ska spelas en gång eller i en loop
källkod
Hel källkod hittar du här
i SingleRing.cpp- och SingleRing.h -filerna finns en klass för att kontrollera effekterna av LED -ringar. Jag föreslår att du börjar med att titta 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 green case 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // fast standard blått fall 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // fast standard rött fodral 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // fast standard orange fodral 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // polisen medurs grönt fall 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // polisen återställer grönt fall 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // polisen medsols blått fall 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // polisen återställer blått fall 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // polisens standardröda fall 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // polisen återställer rött fall 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // polisens standard orange fall 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // polisen återställer orange fall 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; // blinka standard grönt fall 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // blinka standard blått fall 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // blinka tillbaka blått fall 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // blinka standard rött fodral 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // blinka tillbaka rött fall 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // blinka standard orange fodral 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blinka tillbaka orange standard: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0}}
beroende på den angivna parametern visar ringen effekten. Du kan lägga till din egen effekt genom att ringa till funktionsuppsättningKonfiguration med nya parametrar (färgändring, visningshastighet) genom att lägga till ett nytt läge eller lägga till en helt ny effekt - eller meddela mig i kommentarerna om jag gillar det lägger jag till ny effekt
arduino.ino:
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#omfatta
#include #include #include "SingleRing.h"
#omfatta
#inkludera #inkludera
#omfatta
#define WIFI_NAME ""
#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""
#define DIODES_COUNT 16
SingleRing -topp = SingleRing (DIODES_COUNT, D5);
SingleRing -botten = 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)) {// Använd softwareSerial för att kommunicera med mp3.
Serial.println (F ("Kan inte börja:")); Serial.println (F ("1. Kontrollera anslutningen igen!")); Serial.println (F ("2. Sätt i SD -kortet!")); medan (sant); } Serial.println (F ("DFPlayer Mini online."));
myDFPlayer.setTimeOut (500); // Ställ in seriell kommunikationstid ut 500 ms
myDFPlayer.volume (30);
myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); medan (WiFiMulti.run ()! = WL_CONNECTED) {fördröjning (100); }
remoteMe.setUserMessageListener (onUserMessage);
remoteMe.setupTwoWayCommunication ();
remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);
top.setup ();
bottom.setup (); top.clear (); bottom.clear (); }
boolean TurnOff = true;
osignerad lång 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); if (mode == 1) {myDFPlayer.loop (trackNumber); } annat {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * tid; }
void loop ()
{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis
}
förklaring:
#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "anmälare" #define TOKEN ""
Vi måste tillhandahålla ovanstående data, detaljerade instruktioner här på länken, jag har också visat hur jag registrerar mig på remoteme.org och genererar 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); if (mode == 1) {myDFPlayer.loop (trackNumber); } annat {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * tid; }
Denna funktion kommer att kallas när meddelandet kommer till Arduino och visar meddelandet. Koden är så tydlig att den beskriver sig själv. Jag hänvisar till detaljerna i klasserna till dokumentationen här och här
void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {
om (! turnOff) {
top.clear ();
bottom.clear (); myDFPlayer.stop (); turnOff = true; }}
I slingan kallar vi slingfunktionerna för objekten, och även om visningstiden för meddelanden har passerat stänger vi av dioder och ljud.
Steg 5: Mp3 -spelare
Den kommunicerar med Arduino via TX / RX - Detaljer om själva spelaren här och biblioteket här
Vi laddar upp mp3 -filer till SD -kortet. Filer på kortet sorteras alfabetiskt och sedan genom att ringa:
myDFPlayer.play (5);
Vi spelar den femte filen från SD -kortet från rotkatalogen. Det är därför det är bra att ge filer på SD -kortets prefix 01, 02 etc. I mitt fall ser det ut som på ovanstående skärm
Generera röstkommandon Du kan använda den här sidan.
Steg 6: Ladda upp programmet till Arduino
Innan du laddar upp skissen till Arduino, måste du ladda ner nödvändiga bibliotek här hittar du detaljerade instruktioner
Dessutom måste vi installera DFRobotDFPlayerMini -biblioteket och Adafruit_NeoPixel
Steg 7: Kontroll
Vi skickar till vår Arduino fem byte
- den första byte av ljuseffekten för den övre LED -ringen
- andra byte ljuseffekt för den nedre LED -ringen
- numret på mp3 -filen som ska spelas
- antalet sekunder hur länge ljuseffekten och mp3 kommer att spelas
- om mp3 ska spelas en gång eller i en loop (1 om den ska spelas i en loop)
Genom att skicka byte
07 0F 01 05 01
Den övre ringen visar polisens lampor (läge 6) den nedre blinkar grönt (läge 15) (kolla in setMode -funktionen på singleRing.cpp och kommentarer bredvid den). Den första filen från SD -kortet kommer att spelas upp i 5 sekunder. Och filen kommer att spelas i loop (kontrollera funktionen påUserMessage på arduino.ino)
Låt oss skicka dessa byte. Titta på skärmen ovan och klicka på ikoner i ordning skriven av 1, 2, 3. Fönstret visas
Titta sedan på den andra skärmen - och fyll i fönstret som på den andra skärmen
Fönstret som visas används för att skicka meddelanden till enheten. I fält 1 väljer du avsändarenheten - eftersom vi bara har en enhet väljer vi den (detta är ett obligatoriskt fält och det spelar ingen roll att det är samma enhet som vi skickar ett meddelande till) I fält 2 ger vi byte till skicka (i rött kommer värdet som vi angav i 2 att representeras som en sträng) och klicka sedan på knappen Skicka.
Efter att ha skickat meddelandet bör vår anmälare reagera genom att visa lämpliga ljudeffekter och spela den valda mp3. Jag uppmuntrar dig att prova olika effekter genom att ge de två första byten av ett tal mellan 0 och 22 (se beskrivning i setMode -funktionen).
Steg 8: Skicka meddelanden med webbadresser
Om vi vill visa aviseringar från en extern applikation, t.ex. med IFTTT, måste vi ha en URL som gör exakt samma sak som vi gjorde i fönstret i föregående steg. remoteme.org tillhandahåller REST APi. Gå till den genom att klicka på fliken swagger till vänster (den sista). En sida kommer att visas, på den här sidan kan vi också prova våra webbadresser.
På den första skärmen Du har funktionen Du behöver för att expandera och fyll sedan i data som på den andra skärmen.
fyll i uppgifterna som i skärmdumpen ovan. Efter att ha klickat på execute skickar vi ett meddelande
070F010501
Mottagaren är enheten med 205 id, samma enhet är också en avsändare. MessageId med inställningarna "No_RENEVAL" är irrelevant. Och klicka sedan på Execute. Notificator kommer att reagera på samma sätt som när du skickar meddelanden från programmet. Efter att ha ringt REST nedan är URL: en som kallades - titta på den tredje skärmen. Och kopiera och klistra in i webbläsarens URL var markerad med grön kant. På fjärde skärmen min Chrome -webbläsare efter att URL -adressen klistrades in
I mitt fall är URL: en:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Steg 9: Anym URL för att skicka meddelande
I föregående steg har du en URL som skickar data till din enhet. Tyvärr, efter att ha loggat ut från app.remoteme.org, slutar det fungera. Detta beror på att vi inte har tillhandahållit autentiseringstoken och att vi inte längre är inloggade. Låt oss få vår token (eller skapa en ny) och klistra in den i webbadressen istället för stjärnan.
Titta på skärmen och ersätt * i URL med din token
i mitt fall är token:
~ 267_ZxoWtJ) 0ph & 2c
så min slutliga URL ser ut så här:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Nu kan vi ringa det även om vi inte är inloggade. Och när det anropas kommer ett meddelande att skickas till vår enhet 205
Steg 10: Integration med IFTTT 1/7
Url skapad i steg ovan är lämplig för körning av externa applikationer. Hur jag använder det kommer jag att visa på IFTTT. Jag kommer att konfigurera det så att meddelaren aktiveras när ett e -postmeddelande kommer till e -postadressen (Gmail -konto).
Logga in på IFTTT. Gå sedan till fliken Mina appar och sedan "Ny applet"- första skärmen
Steg 11: Integration med IFTTT 2/7
Klicka sedan på "+detta"
Steg 12: Integration med IFTTT 3/7
Skriv sedan "Gmail" i fältet "Sök tjänster"
Sedan "ny e -post i inkorg" (Vissa konfigurationer kan behövas).
Steg 13: Integration med IFTTT 4/7
nu klickar vi på "+ det"
Steg 14: Integration med IFTTT 5/7
hitta "Webhooks" och klicka på den
Steg 15: Integration med IFTTT 6/7
sedan "Gör en webbförfrågan"
Steg 16: Integration med IFTTT 7/7
vi fyller i webbadressen till vår webbadress med token. Innehållstyp till program / json och klicka på "skapa åtgärd" och Slutför. Nu har vi vår applet:
Steg 17: Sammanfattning
I denna handledning visade jag hur jag skickar till våra Arduino -meddelanden från externa system. Vi integrerar också något annat system än IFTTT på ett liknande sätt. Det behöver inte nödvändigtvis vara en "anmälare" jag ville visa i detta exempel hur man skickar meddelanden från externa system till vår Arduino.
sourcecodesFanPage på Facebook
Skål, Maciek
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)