INHOUDSOPGAWE:
- Stap 1: Wat is nodig
- Stap 2: Toringbou
- Stap 3: Bedradingsdiagram
- Stap 4: Beginsel van werking
- Stap 5: Mp3 -speler
- Stap 6: Laai die program op na Arduino
- Stap 7: Beheer
- Stap 8: Stuur boodskappe met behulp van URL's
- Stap 9: Anime URL om boodskap te stuur
- Stap 10: Integrasie met IFTTT 1/7
- Stap 11: Integrasie met IFTTT 2/7
- Stap 12: Integrasie met IFTTT 3/7
- Stap 13: Integrasie met IFTTT 4/7
- Stap 14: Integrasie met IFTTT 5/7
- Stap 15: Integrasie met IFTTT 6/7
- Stap 16: Integrasie met IFTTT 7/7
- Stap 17: Opsomming
Video: Kennisgewer: 17 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
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
- 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
Bo die plan van die toring in syaansig (my avontuur met die tegniese tekening eindig op laerskool), alle afmetings in millimeter.
Beginsel van werking
- ring van LED's wat lig laat skyn
- Natrekpapier
- Die afgeknotte kegel, gemaak van karton en bedek met aluminiumfoelie, sodat dit ligte van LED-ringe weerkaats, in figuur 3 '= die uitgesnyde gaas
- kartonbuis - hou die torings vertikaal, binne die buis is kabels vir LED's
- Die hoogte hang van jou af ek het 85mm
- Die staander binne alle elektroniese onderdele
Alle horisontale elemente moet van dikker karton gemaak word.
Stap 3: 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
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
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
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
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
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
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
Klik volgende op "+dit"
Stap 12: 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
nou klik ons op "+ dit"
Stap 14: Integrasie met IFTTT 5/7
vind "Webhooks" en klik daarop
Stap 15: Integrasie met IFTTT 6/7
dan "Maak 'n webversoek"
Stap 16: 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:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
IoT-kennisgewer met ESP-12E: 7 stappe (met foto's)
IoT-kennisgewer met behulp van ESP-12E: tuis vas van u geliefde? In hierdie moeilike tyd sal hierdie prettige klein projek beslis 'n glimlag op u gesig probeer bring. In hierdie instruksies sal ek u wys hoe u kennisgewings vanaf u selfoon kan vertoon in die vorm van
Posbus en garagedeur -kennisgewer: 5 stappe (met foto's)
Posbus- en garagedeur -kennisgewer: hierdie instruksies is gebaseer op Johan Moberg posbus -kennisgewers. In vergelyking met hierdie projek het ek 'n paar veranderinge aangebring: Ver weg van my huis is nie net posbus nie, maar ook motorhuis. Hulle is op een plek naby die pad, en die huis is ongeveer 5