INHOUDSOPGAWE:

Kennisgewer: 17 stappe
Kennisgewer: 17 stappe

Video: Kennisgewer: 17 stappe

Video: Kennisgewer: 17 stappe
Video: ЗАМОРОЗЬТЕ КОСТИ И ВАРИТЕ 6 ЧАСОВ! Рецепт который изменит вашу жизнь! 2024, Julie
Anonim
Aankondiger
Aankondiger

Die toestel kan byvoorbeeld aan die IFTTT -stelsel gekoppel word en reageer wanneer 'n nuwe pos verskyn. Op app.remoteme.org sal ons na die oproep 'n skakel genereer, waar grepe na Arduino gestuur sal word, en Arduino 'n ligte effek sal hê en 'n bietjie mp3 vanaf SD -kaart kan speel

Stap 1: Wat is nodig

Wat is nodig
Wat is nodig
Wat is nodig
Wat is nodig
  • NodeMCU, WemOS of iets soortgelyks
  • Twee LED -ringe met WS2812B -diodes (ek het ringe van die 16de led gebruik)
  • DFRobotDFPlayerMini - dit is mp3 -speler. Dit speel mp3 vanaf SD -kaart en kommunikeer met Arduino deur RX/TX
  • Spreker
  • SD kaart
  • Logika -omskakelaar -ek het hierdie een gebruik, die mp3 -speler gebruik 5V en Arduino 3.3, daarom het ons hierdie omskakelaar nodig
  • Kennis en vaardighede om eenvoudige PCB self te maak

Die toring:

  • karton - twee verskillende diktes
  • Natrekpapier
  • tinfoelie

Stap 2: Toringbou

Toring Gebou
Toring Gebou
Toring Gebou
Toring Gebou
Toring Gebou
Toring Gebou
Toring Gebou
Toring Gebou

Bo die plan van die toring in syaansig (my avontuur met die tegniese tekening eindig op laerskool), alle afmetings in millimeter.

Beginsel van werking

  1. ring van LED's wat lig laat skyn
  2. Natrekpapier
  3. Die afgeknotte kegel, gemaak van karton en bedek met aluminiumfoelie, sodat dit ligte van LED-ringe weerkaats, in figuur 3 '= die uitgesnyde gaas
  4. kartonbuis - hou die torings vertikaal, binne die buis is kabels vir LED's
  5. Die hoogte hang van jou af ek het 85mm
  6. Die staander binne alle elektroniese onderdele

Alle horisontale elemente moet van dikker karton gemaak word.

Stap 3: Bedradingsdiagram

Bedradingsdiagram
Bedradingsdiagram
Bedradingsdiagram
Bedradingsdiagram
Bedradingsdiagram
Bedradingsdiagram
Bedradingsdiagram
Bedradingsdiagram

Die mp3 -speler word voorsien van 5V spanning en kommunikeer met Arduino via TX / RX, 'n logiese omskakelaar is nodig omdat die Arduino self op 3.3V spanning werk. Die beheer van ringe is ook via die logika -omskakelaar aan Arduino (D5, D6) gekoppel.

In die bewaarplek vind u arendlêers met PCB -planne

Ek stel voor dat u nie Arduino en die mp3 -speler permanent soldeer om slegs goudpennetjies te gebruik nie

Stap 4: Beginsel van werking

Ons Arduino maak via hierdie verbinding verbinding met die app.remoteme.org-stelsel via WebSockets (daar is gereed biblioteke): 5-byte boodskappe word gestuur:

  • die eerste greep van die lig -effek vir die boonste LED -ring
  • tweede byte lig effek vir die onderste LED ring
  • die nommer van die mp3 -lêer wat gespeel moet word
  • die aantal sekondes hoe lank die lig -effek en die mp3 gespeel sal word
  • of mp3 een keer of in 'n lus gespeel moet word

bronkode

Hele bronkode U kan hier vind

in die SingleRing.cpp- en SingleRing.h -lêers is daar 'n klas om die effekte van LED -ringe te beheer. Ek stel voor dat u begin kyk na die setMode (int m) -funksie:

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; // soliede standaard groen geval 2: setConfiguration (6, 0, 0, 50, 0, 20); breek; // soliede standaard blou omhulsel 3: setConfiguration (6, 50, 0, 0, 0, 20); breek; // soliede standaard rooi omhulsel 4: setConfiguration (6, 50, 10, 0, 0, 20); breek; // soliede standaard oranje omhulsel 5: setConfiguration (1, 0, 100, 0, 5, 2); breek; // polisie kloksgewys groen saak 6: setConfiguration (1, 0, 100, 0, 5, -2); breek; // polisie keer groen saak 7 terug: setConfiguration (1, 0, 0, 100, 5, 2); breek; // polisie kloksgewys blou geval 8: setConfiguration (1, 0, 0, 100, 5, -2); breek; // polisie keer blou saak 9 terug: setConfiguration (1, 100, 0, 0, 5, 2); breek; // polisie standaard rooi saak 10: setConfiguration (1, 100, 0, 0, 5, -2); breek; // polisie keer rooi saak 11 terug: setConfiguration (1, 100, 20, 0, 5, 2); breek; // polisie standaard oranje saak 12: setConfiguration (1, 100, 20, 0, 5, -2); breek; // polisie keer oranje saak 13 terug: setConfiguration (2, 0, 0, 50, 8, 10); breek; // kruis standaard blou geval 14: setConfiguration (2, 0, 0, 50, 8, -10); breek; // kruis terug blou geval 15: setConfiguration (5, 0, 50, 0, 0, 20); breek; // knip standaard groen geval 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // knip odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); breek; // knip standaard blou omhulsel 18: setConfiguration (5, 0, 0, 50, 0, -20); breek; // knip terugkeer blou geval 19: setConfiguration (5, 50, 0, 0, 0, 20); breek; // knip standaard rooi omhulsel 20: setConfiguration (5, 50, 0, 0, 0, -20); breek; // knip terugkeer rooi geval 21: setConfiguration (5, 50, 10, 0, 0, 20); breek; // knip standaard oranje omhulsel 22: setConfiguration (5, 50, 10, 0, 0, -20); breek; // knip terugkeer oranje standaard: setConfiguration (0, 0, 50, 0, 5, 1); breek; // af = 0}}

afhangende van die gegewe parameter, sal die ring die effek vertoon. U kan u eie effek byvoeg deur funksie setConfiguration te skakel met nuwe parameters (kleurverandering, vertoningsnelheid) deur 'n nuwe modus by te voeg of 'n heeltemal nuwe effek by te voeg - of laat weet my in die kommentaar as ek daarvan hou, sal ek 'n nuwe effek byvoeg

arduino.ino:

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

#insluit

#include #include #include "SingleRing.h"

#insluit

#include #include

#insluit

#definieer WIFI_NAME ""

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

#definieer DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing onderkant = SingleRing (DIODES_COUNT, D6);

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

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

ESP8266WiFiMulti WiFiMulti;

ongeldige opstelling () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Gebruik softwareSerial om met mp3 te kommunikeer.

Serial.println (F ("Kan nie begin nie:")); Serial.println (F ("1. Kontroleer die verbinding weer!")); Serial.println (F ("2. Plaas asseblief die SD -kaart!")); terwyl (waar); } Serial.println (F ("DFPlayer Mini aanlyn."));

myDFPlayer.setTimeOut (500); // Stel seriële kommunikasie -tydsverloop 500 ms in

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

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

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean TurnOff = true;

ongetekende lang draaiOffMillis = 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); as (modus == 1) {myDFPlayer.loop (trackNumber); } anders {myDFPlayer.play (trackNumber); } TurnOff = false; turnOffMillis = millis () + 1000 * tyd; }

leemte lus ()

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

}

verduideliking:

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

Ons moet die gegewens hierbo verskaf, gedetailleerde instruksies hier op die skakel, ek het ook gewys hoe om op remoteme.org te registreer en die token te genereer, 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); as (modus == 1) {myDFPlayer.loop (trackNumber); } anders {myDFPlayer.play (trackNumber); } TurnOff = false; turnOffMillis = millis () + 1000 * tyd; }

Hierdie funksie sal gebel word wanneer die boodskap na Arduino kom en die kennisgewing vertoon. Die kode is so duidelik dat dit homself beskryf. Ek verwys na die besonderhede van die klasse na die dokumentasie hier en hier

leemte -lus () {remoteMe.loop (); top.loop (); bottom.loop (); as (turnOffMillis <millis ()) {

as (! turnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); TurnOff = waar; }}

In die lus noem ons die lusfunksies van die voorwerpe, en as die tyd van kennisgewings verby is, skakel ons die diodes en klank af.

Stap 5: Mp3 -speler

Mp3 speler
Mp3 speler

Dit kommunikeer met Arduino via TX / RX - Besonderhede van die speler self hier en die biblioteek hier

Ons laai mp3 -lêers op na die SD -kaart. Lêers op die kaart word alfabeties gesorteer en dan deur te bel:

myDFPlayer.play (5);

Ons speel die vyfde lêer vanaf die SD -kaart uit die wortelmap. Daarom is dit goed om lêers op die SD -kaart se voorvoegsels 01, 02, ens. Te gee. In my geval lyk dit soos op die bogenoemde drukskerm

Om stemopdragte te genereer U kan hierdie bladsy gebruik.

Stap 6: Laai die program op na Arduino

Laai die program op na Arduino
Laai die program op na Arduino
Laai die program op na Arduino
Laai die program op na Arduino

Voordat u die skets na Arduino oplaai, moet u die nodige biblioteke aflaai, hier vind u gedetailleerde instruksies

Boonop moet ons die DFRobotDFPlayerMini -biblioteek en Adafruit_NeoPixel installeer

Stap 7: Beheer

Beheer
Beheer
Beheer
Beheer

Ons stuur vyf grepe na ons Arduino

  • die eerste greep van die lig -effek vir die boonste LED -ring
  • tweede byte lig effek vir die onderste LED ring
  • die nommer van die mp3 -lêer wat gespeel moet word
  • die aantal sekondes hoe lank die lig -effek en die mp3 gespeel sal word
  • of mp3 een keer of in 'n lus gespeel moet word (1 as dit in 'n lus gespeel moet word)

Deur grepe te stuur

07 0F 01 05 01

Die boonste ring wys die polisieligte (modus 6), die onderste een knipper groen (modus 15) (kyk na die setMode -funksie by singleRing.cpp en kommentaar daarby). Die eerste lêer van die SD -kaart word vir 5 sekondes gespeel. En die lêer word in die lus gespeel (kyk na die funksie opUserMessage op arduino.ino)

Laat ons hierdie grepe stuur. Kyk na die skerm hierbo en klik op die ikone in volgorde geskryf deur 1, 2, 3. Die venster verskyn

Kyk dan na die tweede skerm - en vul die venster soos op die tweede skerm

Die venster wat verskyn, word gebruik om boodskappe na die toestel te stuur. Kies in veld 1 die sender -toestel - omdat ons slegs een toestel het, kies ons dit (dit is 'n verpligte veld en dit maak nie saak dat dit dieselfde toestel is waarna ons 'n boodskap stuur nie) In veld 2 gee ons grepe aan stuur (in rooi word die waarde wat ons in 2 ingevoer het, as 'n string voorgestel) en klik dan op die knoppie Stuur.

Nadat ons die boodskap gestuur het, moet ons kennisgewer reageer deur die gepaste beligtingseffekte te vertoon en die geselekteerde mp3 te speel. Ek moedig u aan om verskillende effekte te probeer deur die eerste twee grepe van 'n getal tussen 0 en 22 te gee (sien beskrywing in die setMode -funksie).

Stap 8: Stuur boodskappe met behulp van URL's

Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's
Stuur boodskappe met behulp van URL's

As ons kennisgewings van 'n eksterne toepassing wil vertoon, byvoorbeeld met IFTTT, moet ons 'n URL hê wat presies dieselfde sal doen as wat ons in die vorige stap in die venster gedoen het. remoteme.org bied REST APi. Gaan daarna deur op die swagger -oortjie links (die laaste een) te klik. 'N Bladsy sal verskyn, op hierdie bladsy kan ons ook ons URL's probeer.

Op die eerste skerm het u die funksie wat u nodig het om uit te brei en dan data in te vul soos op die tweede skerm.

vul die data in soos in die bogenoemde skermkiekie. Nadat ons op die uitvoer geklik het, stuur ons 'n boodskap

070F010501

Die ontvanger is die toestel met 'n 205 ID, dieselfde toestel is ook 'n sender. MessageId met die instellings “No_RENEVAL” is nie relevant nie. En klik dan op Execute. Notificator reageer op dieselfde manier as wanneer u boodskappe vanaf die toepassing stuur. Nadat u REST hieronder gebel het, is die URL wat genoem is - kyk na die derde skerm. En kopieer en plak in die blaaier se URL, is gemerk met 'n groen rand. Op die vierde skerm het my Chrome -blaaier nadat URL geplak is

In my geval is die URL:

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

Stap 9: Anime URL om boodskap te stuur

Anime URL om boodskap te stuur
Anime URL om boodskap te stuur

In die vorige stap het u 'n URL wat data na u toestel stuur. Ongelukkig, nadat dit afgemeld is by app.remoteme.org, hou dit op om te werk. Dit is omdat ons nie die verifikasietoken verskaf het nie, en ons is nie meer aangemeld nie. Laat ons ons token kry (of 'n nuwe een skep) en plak dit in die URL in plaas van die ster.

Kyk na die skerm en vervang * in URL met u teken

in my geval is die token:

~ 267_ZxoWtJ) 0ph & 2c

so my finale URL lyk soos volg:

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

Nou kan ons dit noem, selfs al is ons nie aangemeld nie. En as dit gebel word, sal 'n boodskap na ons toestel 205 gestuur word

Stap 10: Integrasie met IFTTT 1/7

Integrasie met IFTTT 1/7
Integrasie met IFTTT 1/7

URL wat in stap hierbo geskep is, is geskik vir uitvoering deur eksterne toepassings. Hoe om dit te gebruik, sal ek op die IFTTT wys. Ek sal dit so instel dat die kennisgewer aangeskakel word wanneer 'n e -pos na die e -posadres (Gmail -rekening) kom.

Teken in op IFTTT. Gaan dan na die blad My applets en dan na "New Applet"- eerste skerm

Stap 11: Integrasie met IFTTT 2/7

Integrasie met IFTTT 2/7
Integrasie met IFTTT 2/7

Klik volgende op "+dit"

Stap 12: Integrasie met IFTTT 3/7

Integrasie met IFTTT 3/7
Integrasie met IFTTT 3/7

Skryf dan "Gmail" in die veld "Soek dienste"

Dan "nuwe e -pos in die inkassie" (sommige konfigurasies kan nodig wees).

Stap 13: Integrasie met IFTTT 4/7

Integrasie met IFTTT 4/7
Integrasie met IFTTT 4/7

nou klik ons op "+ dit"

Stap 14: Integrasie met IFTTT 5/7

Integrasie met IFTTT 5/7
Integrasie met IFTTT 5/7

vind "Webhooks" en klik daarop

Stap 15: Integrasie met IFTTT 6/7

Integrasie met IFTTT 6/7
Integrasie met IFTTT 6/7

dan "Maak 'n webversoek"

Stap 16: Integrasie met IFTTT 7/7

Integrasie met IFTTT 7/7
Integrasie met IFTTT 7/7

ons voltooi die URL van ons url met die teken. Inhoudstipe vir toepassing / json en klik op "skep aksie" en voltooi. Nou het ons ons applet:

Stap 17: Opsomming

In hierdie tutoriaal het ek gewys hoe om boodskappe van eksterne stelsels na ons Arduino te stuur. Ons integreer ook 'n ander stelsel dan IFTTT op 'n soortgelyke manier. Dit hoef nie noodwendig 'n 'kennisgewer' te wees nie, wat ek in hierdie voorbeeld wou wys hoe om boodskappe van buite stelsels na ons Arduino te stuur.

sourcecodesFanPage by Facebook

Groete, Maciek

Aanbeveel: