Innehållsförteckning:

Anmälare: 17 steg
Anmälare: 17 steg

Video: Anmälare: 17 steg

Video: Anmälare: 17 steg
Video: En anmälan eller en ansökan - vad är skillnaden? 🤔❓ 2024, Juli
Anonim
Anmälare
Anmälare

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

Vad behövs
Vad behövs
Vad behövs
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

Tower Building
Tower Building
Tower Building
Tower Building
Tower Building
Tower Building
Tower Building
Tower Building

Ovanför tornets plan i sidovy (mitt äventyr med den tekniska ritningen slutade i grundskolan), alla dimensioner i millimeter.

Funktionsprincip

  1. ring av lysdioder som tänder ljus
  2. Kalkerpapper
  3. 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
  4. kartongrör - håller tornen vertikalt, inuti röret finns kablar för lysdioder
  5. Höjden beror på dig jag har 85 mm
  6. Stativet inuti alla elektronikdelar

Alla horisontella element ska vara gjorda av tjockare kartong.

Steg 3: Anslutningsdiagram

Kopplingsschema
Kopplingsschema
Kopplingsschema
Kopplingsschema
Kopplingsschema
Kopplingsschema
Kopplingsschema
Kopplingsschema

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

Mp3-spelare
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

Ladda upp programmet till Arduino
Ladda upp programmet till Arduino
Ladda upp programmet till Arduino
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

Kontrollera
Kontrollera
Kontrollera
Kontrollera

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

Skicka meddelanden med webbadresser
Skicka meddelanden med webbadresser
Skicka meddelanden med webbadresser
Skicka meddelanden med webbadresser
Skicka meddelanden med webbadresser
Skicka meddelanden med webbadresser
Skicka meddelanden med webbadresser
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

Anonym URL för att skicka meddelande
Anonym 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

Integration med IFTTT 1/7
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

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

Klicka sedan på "+detta"

Steg 12: Integration med IFTTT 3/7

Integration med IFTTT 3/7
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

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

nu klickar vi på "+ det"

Steg 14: Integration med IFTTT 5/7

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

hitta "Webhooks" och klicka på den

Steg 15: Integration med IFTTT 6/7

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

sedan "Gör en webbförfrågan"

Steg 16: Integration med IFTTT 7/7

Integration med IFTTT 7/7
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: