Innholdsfortegnelse:

Varsler: 17 trinn
Varsler: 17 trinn

Video: Varsler: 17 trinn

Video: Varsler: 17 trinn
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, Juli
Anonim
Varsler
Varsler

Enheten kan for eksempel kobles til IFTTT -systemet og reagere når en ny e -post vises. På app.remoteme.org vil vi generere en lenke etter anrop, hvilke byte som vil bli sendt til Arduino, og Arduino vil vise litt lyseffekt og spille av noen mp3 fra SD -kort

Trinn 1: Hva er nødvendig

Hva er nødvendig
Hva er nødvendig
Hva er nødvendig
Hva er nødvendig
  • NodeMCU, WemOS eller noe lignende
  • To LED -ringer med WS2812B -dioder (jeg har brukt ringer fra 16. led)
  • DFRobotDFPlayerMini - dette er mp3 -spiller. Den spiller mp3 fra SD -kort, og kommuniserer med Arduino av RX/TX
  • Høyttaler
  • SD kort
  • Logisk omformer -Jeg har brukt denne, mp3 -spilleren bruker 5V og Arduino 3.3, derfor trenger vi denne omformeren
  • Kunnskap og ferdigheter for å lage enkle PCB av oss selv

Tårnet:

  • papp - to forskjellige tykkelser
  • Sporingspapir
  • Aluminiumsfolie

Trinn 2: Tower Building

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

Over tårnets plan i sidevisning (mitt eventyr med den tekniske tegningen endte på barneskolen), alle dimensjoner i millimeter.

Driftsprinsipp

  1. ring av lysdioder som lyser
  2. Sporingspapir
  3. Den avkortede kjeglen, laget av papp og dekket med aluminiumsfolie, slik at den reflekterer lys fra LED-ringer, i figur 3 ‘= det utskårne nettet
  4. kartongrør - holder tårnene vertikalt, inne i røret er kabler for lysdioder
  5. Høyden avhenger av deg jeg har 85 mm
  6. Stativet inne i alle elektronikkdeler

Alle horisontale elementer skal være laget av tykkere papp.

Trinn 3: Koblingsskjema

Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema

Mp3 -spilleren er utstyrt med 5V spenning og kommuniserer med Arduino via TX / RX, en logisk omformer er nødvendig fordi Arduino selv fungerer på 3,3V spenning. Kontrollen av ringer er også koblet til Arduino (D5, D6) gjennom logikkomformeren.

På depotet finner du ørnefiler med PCB -planer

Jeg foreslår at du ikke lodder permanent Arduino og mp3 -spilleren bare for å bruke kvinnelige gullnåler

Trinn 4: Prinsipp for drift

Vår Arduino kobler seg til app.remoteme.org-systemet ved hjelp av WebSockets (det er klare biblioteker) gjennom denne forbindelsen 5-byte meldinger sendes:

  • den første byten av lyseffekten for den øvre LED -ringen
  • andre byte lyseffekt for den nedre LED -ringen
  • nummeret på mp3 -filen som skal spilles av
  • antall sekunder hvor lenge lyseffekten og mp3 vil spilles
  • om mp3 skal spilles av en gang eller i en loop

kildekode

Hele kildekoden Du finner her

i SingleRing.cpp og SingleRing.h -filene er det en klasse for å kontrollere effekten av LED -ringer. Jeg foreslår at du starter med å se på setMode (int m) -funksjonen:

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ønn sak 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // solid standard blå sak 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // solid standard rød sak 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // solid standard oransje etui 5: setConfiguration (1, 0, 100, 0, 5, 2); pause; // politiet grønn sak med klokken 6: setConfiguration (1, 0, 100, 0, 5, -2); pause; // politiet tilbakefører grønn sak 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // politiet blå sak 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // politiet tilbakefører blå sak 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // politiets standardrøde sak 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // politiet tilbakefører rød sak 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // politiets standard oransje sak 12: setConfiguration (1, 100, 20, 0, 5, -2); pause; // politiet tilbakefører oransje sak 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // kryss standard blå sak 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ønn sak 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); pause; // blink standard blå sak 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 sak 20: setConfiguration (5, 50, 0, 0, 0, -20); pause; // blink tilbakeføring rød sak 21: setConfiguration (5, 50, 10, 0, 0, 20); pause; // blink standard oransje sak 22: setConfiguration (5, 50, 10, 0, 0, -20); pause; // blink tilbakestill oransje standard: setConfiguration (0, 0, 50, 0, 5, 1); pause; // av = 0}}

avhengig av den gitte parameteren, vil ringen vise effekten. Du kan legge til din egen effekt ved å kalle funksjonssett Konfigurasjon med nye parametere (endring av farge, visningshastighet) ved å legge til en ny modus eller legge til en helt ny effekt - eller gi meg beskjed i kommentarene hvis jeg liker det vil jeg legge til ny effekt

arduino.ino:

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

#inkludere

#include #include #include "SingleRing.h"

#inkludere

#include #include

#inkludere

#define WIFI_NAME ""

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

#define DIODES_COUNT 16

SingleRing topp = SingleRing (DIODES_COUNT, D5);

SingleRing bunn = SingleRing (DIODES_COUNT, D6);

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

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

ESP8266WiFiMulti WiFiMulti;

ugyldig oppsett () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Bruk softwareSerial til å kommunisere med mp3.

Serial.println (F ("Kan ikke begynne:")); Serial.println (F ("1. Vennligst sjekk tilkoblingen på nytt!")); Serial.println (F ("2. Sett inn SD -kortet!")); mens (sant); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Angi seriell kommunikasjonstid ut 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 (); }

boolsk turnOff = true;

usignert 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); if (modus == 1) {myDFPlayer.loop (trackNumber); } annet {myDFPlayer.play (trackNumber); } slått av = usant; turnOffMillis = millis () + 1000 * tid; }

hulrom ()

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

}

forklaring:

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

Vi må gi data ovenfor, detaljerte instruksjoner her på lenken, jeg har også vist hvordan jeg registrerer meg på remoteme.org og genererer tokenet, 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 (modus == 1) {myDFPlayer.loop (trackNumber); } annet {myDFPlayer.play (trackNumber); } slått av = usant; turnOffMillis = millis () + 1000 * tid; }

Denne funksjonen vil bli kalt når meldingen kommer til Arduino og viser varselet. Koden er så klar at den beskriver seg selv. Jeg viser til detaljene i timene til dokumentasjonen her og her

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

hvis (! slått av) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); slått av = sant; }}

I løkken kaller vi sløyfefunksjonene til objektene, og også hvis visningstiden for varsler har gått, slår vi av dioder og lyd.

Trinn 5: Mp3 -spiller

Mp3 spiller
Mp3 spiller

Den kommuniserer med Arduino via TX / RX - Detaljer om selve spilleren her og biblioteket her

Vi laster opp mp3 -filer til SD -kortet. Filene på kortet sorteres alfabetisk og deretter ved å ringe:

myDFPlayer.play (5);

Vi spiller den femte filen fra SD -kortet fra rotkatalogen. Det er derfor det er godt å gi filer på SD -kortets prefikser 01, 02 etc. I mitt tilfelle ser det ut som på utskriftsskjermen ovenfor

Slik genererer du talekommandoer Du kan bruke denne siden.

Trinn 6: Last opp programmet til Arduino

Laster opp programmet til Arduino
Laster opp programmet til Arduino
Laster opp programmet til Arduino
Laster opp programmet til Arduino

Før du laster opp skisse til Arduino, må du laste ned nødvendige biblioteker, her finner du detaljerte instruksjoner

I tillegg må vi installere DFRobotDFPlayerMini -biblioteket og Adafruit_NeoPixel

Trinn 7: Kontroll

Kontroll
Kontroll
Kontroll
Kontroll

Vi sender til vår Arduino fem byte

  • den første byten av lyseffekten for den øvre LED -ringen
  • andre byte lyseffekt for den nedre LED -ringen
  • nummeret på mp3 -filen som skal spilles av
  • antall sekunder hvor lenge lyseffekten og mp3 vil spilles
  • om mp3 skal spilles en gang eller i en loop (1 hvis den skal spilles i en loop)

Ved å sende byte

07 0F 01 05 01

Øverste ring vil vise politilysene (modus 6) nederst en blinkende grønn (modus 15) (sjekk setMode -funksjonen på singleRing.cpp og kommentarer ved siden av den). Den første filen fra SD -kortet spilles av i 5 sekunder. Og filen vil bli spilt i loop (sjekk funksjonen onUserMessage på arduino.ino)

La oss sende disse byte. Se på skjermen ovenfor, og klikk på ikonene i rekkefølge skrevet av 1, 2, 3. Vinduet vises

Se deretter på den andre skjermen - og fyll vinduet som på den andre skjermen

Vinduet som vises brukes til å sende meldinger til enheten. Velg avsender i felt 1 - fordi vi bare har én enhet, velger vi den (dette er et obligatorisk felt, og det spiller ingen rolle at det er samme enhet som vi sender en melding til) I felt 2 gir vi byte til send (i rødt blir verdien vi skrev inn i 2 representert som en streng) og klikk deretter på Send -knappen.

Etter å ha sendt meldingen, bør varsleren vår reagere ved å vise de riktige lyseffektene og spille den valgte mp3. Jeg oppfordrer deg til å prøve forskjellige effekter ved å gi de to første byte av et tall mellom 0 og 22 (se beskrivelse i setMode -funksjonen).

Trinn 8: Sende meldinger ved hjelp av nettadresser

Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser
Sende meldinger ved hjelp av nettadresser

Hvis vi ønsker å vise varsler fra en ekstern applikasjon, f.eks. Med IFTTT, må vi ha en URL som vil gjøre nøyaktig det samme som vi gjorde i vinduet i forrige trinn. remoteme.org gir REST APi. Gå til den ved å klikke på swagger -fanen til venstre (den siste). En side vil bli vist, på denne siden kan vi også prøve URL -adressene våre.

På den første skjermen Du har funksjonen Du trenger for å utvide, og fyll deretter ut data som på den andre skjermen.

fyll ut dataene som i skjermbildet ovenfor. Etter å ha klikket på utføringen sender vi en melding

070F010501

Mottakeren er enheten med 205 id, den samme enheten er også en avsender. MessageId med “No_RENEVAL” -innstillingene er irrelevant. Klikk deretter på Utfør. Notifikator vil reagere på samme måte som når du sender meldinger fra programmet. Etter å ha ringt REST nedenfor er URL -en som ble kalt - se på den tredje skjermen. Og kopier og lim inn i nettleserens URL var merket med grønn kant. På fjerde skjerm min Chrome -nettleser etter at URL ble limt inn

I mitt tilfelle er nettadressen:

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

Trinn 9: Anonym URL for å sende melding

Anonym URL for å sende melding
Anonym URL for å sende melding

På forrige trinn har du en URL som sender data til enheten din. Dessverre, etter at du har logget deg av app.remoteme.org, slutter det å fungere. Dette er fordi vi ikke ga autentiseringstokenet, og vi ikke lenger er logget inn. La oss få vårt token (eller opprette et nytt) og lime det inn i URL -adressen i stedet for stjernen.

Se på skjermen og erstatt * i URL med tokenet ditt

i mitt tilfelle er token:

~ 267_ZxoWtJ) 0ph & 2c

så min endelige nettadresse ser slik ut:

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

Nå kan vi kalle det selv om vi ikke er logget inn. Og når det blir ringt, vil det bli sendt en melding til enheten vår 205

Trinn 10: Integrasjon med IFTTT 1/7

Integrasjon med IFTTT 1/7
Integrasjon med IFTTT 1/7

URL -adresse opprettet i trinn ovenfor er egnet for utførelse av eksterne applikasjoner. Hvordan jeg bruker det, vil jeg vise på IFTTT. Jeg vil konfigurere det slik at varsleren slås på når en e -post kommer til e -postadressen (Gmail -konto).

Logg deg på IFTTT. Gå deretter til kategorien Mine appleter og deretter "Ny applett"- første skjermbilde

Trinn 11: Integrasjon med IFTTT 2/7

Integrasjon med IFTTT 2/7
Integrasjon med IFTTT 2/7

Klikk deretter "+dette"

Trinn 12: Integrasjon med IFTTT 3/7

Integrasjon med IFTTT 3/7
Integrasjon med IFTTT 3/7

Skriv deretter "Gmail" i feltet "Søk etter tjenester"

Deretter "ny e -post i innboksen" (Noen konfigurasjoner kan være nødvendig).

Trinn 13: Integrasjon med IFTTT 4/7

Integrasjon med IFTTT 4/7
Integrasjon med IFTTT 4/7

nå klikker vi på "+ det"

Trinn 14: Integrasjon med IFTTT 5/7

Integrasjon med IFTTT 5/7
Integrasjon med IFTTT 5/7

finn "Webhooks" og klikk på den

Trinn 15: Integrasjon med IFTTT 6/7

Integrasjon med IFTTT 6/7
Integrasjon med IFTTT 6/7

deretter "Send en nettforespørsel"

Trinn 16: Integrasjon med IFTTT 7/7

Integrasjon med IFTTT 7/7
Integrasjon med IFTTT 7/7

vi fullfører URL -adressen til url -en vår med tokenet. Innholdstype til applikasjon / json og klikk "opprett handling" og Fullfør. Nå har vi vår applet:

Trinn 17: Oppsummering

I denne opplæringen viste jeg hvordan jeg sender meldinger fra Arduino til eksterne systemer. Vi integrerer også et annet system enn IFTTT på en lignende måte. Det trenger ikke nødvendigvis å være en "varsler" jeg ønsket å vise i dette eksemplet hvordan jeg sender meldinger fra eksterne systemer til vår Arduino.

sourcecodesFanPage på Facebook

Skål, Maciek

Anbefalt: