Turinys:

Pranešėjas: 17 žingsnių
Pranešėjas: 17 žingsnių

Video: Pranešėjas: 17 žingsnių

Video: Pranešėjas: 17 žingsnių
Video: Kaip apdirbti plastikinio lango angą? 2/2 dalis | Vlog | Renovuojame seną namą 2024, Lapkritis
Anonim
Pranešėjas
Pranešėjas

Prietaisą galima prijungti, pavyzdžiui, prie IFTTT sistemos ir reaguoti, kai pasirodo naujas laiškas. Programoje app.remoteme.org po skambučio sugeneruosime nuorodą, kuri baitai bus siunčiami į „Arduino“, o „Arduino“parodys tam tikrą šviesos efektą ir paleis mp3 iš SDcard

1 žingsnis: ko reikia

Ko reikia
Ko reikia
Ko reikia
Ko reikia
  • „NodeMCU“, „WemOS“ar kažkas panašaus
  • Du LED žiedai su WS2812B diodais (naudojau 16 -osios lemputės žiedus)
  • DFRobotDFPlayerMini - tai mp3 grotuvas. Jis groja mp3 iš SD kortelės ir bendrauja su „Arduino by RX/TX“
  • Pranešėjas
  • SD kortelė
  • Loginis keitiklis -aš naudoju šį, mp3 grotuvas naudoja 5 V ir „Arduino 3.3“, todėl mums reikia šio keitiklio
  • Žinios ir įgūdžiai, kaip patys pasidaryti paprastą PCB

Bokštas:

  • kartonas - dviejų skirtingų storių
  • Kalkė
  • aliuminio folija

2 žingsnis: bokšto statyba

Bokšto pastatas
Bokšto pastatas
Bokšto pastatas
Bokšto pastatas
Bokšto pastatas
Bokšto pastatas
Bokšto pastatas
Bokšto pastatas

Virš bokšto plano iš šono (mano nuotykis su techniniu piešiniu baigėsi pradinėje mokykloje), visi matmenys milimetrais.

Veikimo principas

  1. šviečia šviesos diodų žiedas
  2. Kalkė
  3. Sutrumpintas kūgis, pagamintas iš kartono ir padengtas aliuminio folija, todėl atspindi šviesas iš LED žiedų, 3 pav.
  4. kartoninis vamzdis - bokštus laiko vertikaliai, vamzdžio viduje yra kabeliai, skirti šviesos diodams
  5. Aukštis priklauso nuo jūsų, aš turiu 85 mm
  6. Stovas visų elektronikos dalių viduje

Visi horizontalūs elementai turi būti pagaminti iš storesnio kartono.

3 žingsnis: laidų schema

Elektros schema
Elektros schema
Elektros schema
Elektros schema
Elektros schema
Elektros schema
Elektros schema
Elektros schema

MP3 grotuvas tiekiamas su 5 V įtampa ir bendrauja su „Arduino“per TX / RX, reikalingas loginis keitiklis, nes pats „Arduino“veikia 3,3 V įtampa. Žiedų valdymas taip pat prijungtas prie „Arduino“(D5, D6) per loginį keitiklį.

Saugykloje rasite erelio failus su PCB planais

Aš siūlau ne lituoti visam laikui „Arduino“ir mp3 grotuvo, kad būtų galima naudoti tik auksines smeigtukus

4 žingsnis: veikimo principas

Mūsų „Arduino“prisijungia prie sistemos app.remoteme.org naudodami „WebSockets“(yra paruoštos bibliotekos) per šį ryšį siunčiami 5 baitų pranešimai:

  • pirmasis šviesos efekto baitas viršutiniam LED žiedui
  • antrojo baito šviesos efektas apatiniam LED žiedui
  • grojamo mp3 failo numeris
  • sekundžių skaičius, kiek laiko bus leidžiamas šviesos efektas ir mp3
  • ar mp3 reikia leisti vieną kartą, ar ciklu

pirminis kodas

Visą šaltinio kodą galite rasti čia

failuose „SingleRing.cpp“ir „SingleRing.h“yra klasė, skirta valdyti LED žiedų poveikį. Siūlau pradėti žiūrint į funkciją 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; // kietas standartinis žalias dėklas 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // kietas standartinis mėlynas dėklas 3: setConfiguration (6, 50, 0, 0, 0, 20); pertrauka; // kietas standartinis raudonas dėklas 4: setConfiguration (6, 50, 10, 0, 0, 20); pertrauka; // kietas standartinis oranžinis dėklas 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policija pagal laikrodžio rodyklę žalia dėžutė 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // policija grąžina žalią atvejį 7: setConfiguration (1, 0, 0, 100, 5, 2); pertrauka; // policija pagal laikrodžio rodyklę mėlyna dėklas 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // policija grąžina mėlyną 9 atvejį: setConfiguration (1, 100, 0, 0, 5, 2); break; // policijos standartinis raudonasis dėklas 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // policija grąžina raudoną atvejį 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // policijos standartinis oranžinis dėklas 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // policija grąžina oranžinį dėklą 13: setConfiguration (2, 0, 0, 50, 8, 10); pertrauka; // kryžminis standartinis mėlynas dėklas 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // mirksėti standartinis žalias dėklas 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // blink standartinis mėlynas dėklas 18: setConfiguration (5, 0, 0, 50, 0, -20); pertrauka; // mirksėti sugrąžinti mėlyną dėklą 19: setConfiguration (5, 50, 0, 0, 0, 20); pertrauka; // mirksėti standartinis raudonas dėklas 20: setConfiguration (5, 50, 0, 0, 0, -20); pertrauka; // mirksėti grąžinti raudoną dėklą 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // mirksi standartinis oranžinis dėklas 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blink revert oranžinė numatytoji: setConfiguration (0, 0, 50, 0, 5, 1); pertrauka; // išjungta = 0}}

priklausomai nuo nurodyto parametro, žiedas parodys efektą. Galite pridėti savo efektą paskambinę funkcijai setConfiguration su naujais parametrais (spalvos pasikeitimas, ekrano greitis), pridedant naują režimą arba visiškai naują efektą - arba praneškite man komentaruose, jei man patinka, pridėsiu naują efektą

arduino.ino:

#įtraukti „Arduino.h“#įtraukti „SoftwareSerial.h“#įtraukti „DFRobotDFPlayerMini.h“

#įtraukti

#include #include #include "SingleRing.h"

#įtraukti

#įtraukti #įtraukti

#įtraukti

#define WIFI_NAME ""

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

#define DIODES_COUNT 16

„SingleRing“viršuje = „SingleRing“(DIODES_COUNT, D5);

„SingleRing“apačia = „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)) {// Naudokite softwareSerial, kad galėtumėte bendrauti su mp3.

Serial.println (F ("Nepavyko pradėti:")); Serial.println (F ("1. Prašome dar kartą patikrinti ryšį!")); Serial.println (F ("2. Įdėkite SD kortelę!")); o (tiesa); } Serial.println (F ("DFPlayer Mini internete"));

myDFPlayer.setTimeOut (500); // Nustatykite serijinio ryšio laiką 500 ms

myDFPlayer.tomas (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); „WiFiMulti.addAP“(„WIFI_NAME“, „WIFI_PASSWORD“); while (WiFiMulti.run ()! = WL_CONNECTED) {delay (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); apačioje.išvalytas (); }

boolean turnOff = tiesa;

nepasirašytas ilgas turnOffMillis = 0;

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *duomenys) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t time = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.);

bottom.setMode (bottomMode);

top.setMode (topMode); if (režimas == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } išjungta = klaidinga; turnOffMillis = milis () + 1000 * laikas; }

tuštumos kilpa ()

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

}

paaiškinimas:

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

Turime pateikti aukščiau pateiktus duomenis, išsamias instrukcijas čia, taip pat parodžiau, kaip užsiregistruoti remoteme.org ir sugeneruoti prieigos raktą, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *duomenys) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t time = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.);

bottom.setMode (bottomMode);

top.setMode (topMode); if (režimas == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } išjungta = klaidinga; turnOffMillis = milis () + 1000 * laikas; }

Ši funkcija bus iškviesta, kai pranešimas ateis į „Arduino“ir bus parodytas pranešimas. Kodas yra toks aiškus, kad apibūdina save. Išsamią klasių informaciją nurodau čia ir čia esančioje dokumentacijoje

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

jei (! išjungta) {

top.clear ();

apačioje.išvalytas (); myDFPlayer.stop (); TurnOff = tiesa; }}

Cikle mes vadiname objektų ciklo funkcijas, taip pat, jei praėjo pranešimų rodymo laikas, išjungiame diodus ir garsą.

5 žingsnis: Mp3 grotuvas

Mp3 grotuvas
Mp3 grotuvas

Jis bendrauja su „Arduino“per TX / RX - čia pateikiama informacija apie patį grotuvą, o čia - biblioteka

Į SD kortelę įkeliame mp3 failus. Failai kortelėje surūšiuoti abėcėlės tvarka ir paskambinus:

myDFPlayer.play (5);

Paleidžiame penktąjį failą iš SD kortelės iš šakninio katalogo. Štai kodėl gerai duoti failus SD kortelės priešdėliais 01, 02 ir tt. Mano atveju tai atrodo kaip aukščiau esančiame spausdinimo ekrane

Norėdami generuoti balso komandas Galite naudoti šį puslapį.

6 veiksmas: įkelkite programą į „Arduino“

Programos įkėlimas į „Arduino“
Programos įkėlimas į „Arduino“
Programos įkėlimas į „Arduino“
Programos įkėlimas į „Arduino“

Prieš įkeldami eskizą į „Arduino“, turite atsisiųsti reikalingas bibliotekas, čia rasite išsamias instrukcijas

Be to, turime įdiegti „DFRobotDFPlayerMini“biblioteką ir „Adafruit_NeoPixel“

7 žingsnis: valdymas

Kontrolė
Kontrolė
Kontrolė
Kontrolė

Mes siunčiame į mūsų „Arduino“penkis baitus

  • pirmasis šviesos efekto baitas viršutiniam LED žiedui
  • antrojo baito šviesos efektas apatiniam LED žiedui
  • grojamo mp3 failo numeris
  • sekundžių skaičius, kiek laiko bus leidžiamas šviesos efektas ir mp3
  • ar mp3 turėtų būti leidžiamas vieną kartą, ar ciklu (1, jei jis turėtų būti leidžiamas ciklu)

Siunčiant baitus

07 0F 01 05 01

Viršutiniame žiede bus rodomi policijos žibintai (6 režimas), apačioje mirksi žalia spalva (15 režimas) (patikrinkite „setMode“funkciją „singleRing.cpp“ir komentarus šalia jo). Pirmasis SD kortelės failas bus paleistas 5 sekundes. Ir failas bus paleistas cikle (patikrinkite funkciją onUserMessage adresu arduino.ino)

Siųskime šiuos baitus. Pažvelkite į aukščiau esantį ekraną ir spustelėkite piktogramas eilės tvarka 1, 2, 3. Rodomas langas

Tada pažvelkite į antrą ekraną ir užpildykite langą kaip antrame ekrane

Rodomas langas naudojamas pranešimams siųsti į įrenginį. 1 laukelyje pasirinkite siuntėjo įrenginį - kadangi turime tik vieną įrenginį, jį pasirenkame (tai yra privalomas laukas ir nesvarbu, kad tai tas pats įrenginys, kuriam siunčiame pranešimą) 2 laukelyje nurodome baitus siųsti (raudonai reikšmė, kurią įvedėme 2, bus pavaizduota kaip eilutė), tada spustelėkite mygtuką Siųsti.

Išsiuntęs pranešimą, mūsų pranešėjas turėtų reaguoti parodydamas atitinkamus apšvietimo efektus ir paleisdamas pasirinktą mp3. Rekomenduoju išbandyti skirtingus efektus, duodamas pirmuosius du baitus nuo 0 iki 22 (žr. Funkcijos „setMode“aprašymą).

8 veiksmas: pranešimų siuntimas naudojant URL

Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL
Pranešimų siuntimas naudojant URL

Jei norime rodyti pranešimus iš išorinės programos, pvz., Naudojant IFTTT, turime turėti URL, kuris veiks lygiai taip pat, kaip ir ankstesnio veiksmo lange. remoteme.org teikia REST APi. Eikite į jį spustelėdami skirtuką kairėje (paskutinis). Bus rodomas puslapis, šiame puslapyje taip pat galime išbandyti savo URL.

Pirmajame ekrane turite funkciją, kurią turite išplėsti, tada užpildykite duomenis kaip antrame ekrane.

užpildykite duomenis, kaip parodyta aukščiau esančioje ekrano kopijoje. Spustelėję „Vykdyti“, mes atsiųsime pranešimą

070F010501

Imtuvas yra įrenginys, turintis 205 ID, tas pats įrenginys taip pat yra siuntėjas. „MessageId“su „No_RENEVAL“nustatymais nesvarbus. Tada spustelėkite Vykdyti. Pranešėjas reaguos taip pat, kaip siunčiant pranešimus iš programos. Žemiau paskambinus REST yra URL, kuris buvo vadinamas - pažvelkite į trečiąjį ekraną. Nukopijuoti ir įklijuoti į naršyklės URL buvo pažymėtas žaliu kraštu. Ketvirtajame ekrane mano „Chrome“naršyklė po URL įklijavimo

Mano atveju URL yra:

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

9 veiksmas: bet koks URL, skirtas siųsti pranešimą

Bet koks URL, skirtas siųsti pranešimą
Bet koks URL, skirtas siųsti pranešimą

Ankstesniame žingsnyje turite URL, kuris siunčia duomenis į jūsų įrenginį. Deja, atsijungus nuo app.remoteme.org jis nustoja veikti. Taip yra todėl, kad nepateikėme autentifikavimo žetono ir nebesame prisijungę. Paimkime savo žetoną (arba sukurkite naują) ir įklijuokite jį į URL, o ne žvaigždutę.

Pažvelkite į ekraną ir pakeiskite * URL savo žetonu

mano atveju ženklas yra:

~ 267_ZxoWtJ) 0ph & 2c

taigi mano galutinis URL atrodo taip:

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

Dabar mes galime tai paskambinti, net jei nesame prisijungę. O kai jis bus iškviestas, į mūsų įrenginį bus išsiųstas pranešimas 205

10 veiksmas: integracija su IFTTT 1/7

Integracija su IFTTT 1/7
Integracija su IFTTT 1/7

URL, sukurtas aukščiau, tinka vykdyti išorinėms programoms. Kaip juo naudotis, parodysiu IFTTT. Aš sukonfigūruosiu jį taip, kad pranešėjas įsijungtų, kai el. Laiškas ateina į el. Pašto adresą („Gmail“paskyrą).

Prisijunkite prie IFTTT. Tada eikite į skirtuką „Mano programėlės“, tada- „Nauja programėlė“- pirmasis ekranas

11 veiksmas: integracija su IFTTT 2/7

Integracija su IFTTT 2/7
Integracija su IFTTT 2/7

Toliau spustelėkite „+tai“

12 žingsnis: integracija su IFTTT 3/7

Integracija su IFTTT 3/7
Integracija su IFTTT 3/7

Tada lauke „Paieškos paslaugos“parašykite „Gmail“

Tada „naujas el. Laiškas gautuosiuose“(gali prireikti tam tikros konfigūracijos).

13 žingsnis: integracija su IFTTT 4/7

Integracija su IFTTT 4/7
Integracija su IFTTT 4/7

Dabar mes spustelime „+ tai“

14 žingsnis: integracija su IFTTT 5/7

Integracija su IFTTT 5/7
Integracija su IFTTT 5/7

suraskite „Webhooks“ir spustelėkite jį

15 veiksmas: integracija su IFTTT 6/7

Integracija su IFTTT 6/7
Integracija su IFTTT 6/7

tada „Pateikite žiniatinklio užklausą“

16 žingsnis: integracija su IFTTT 7/7

Integracija su IFTTT 7/7
Integracija su IFTTT 7/7

užpildome savo URL URL su žetonu. Turinio tipą į programą / json ir spustelėkite „sukurti veiksmą“ir Baigti. Dabar mes turime savo programėlę:

17 žingsnis: Santrauka

Šioje pamokoje aš parodžiau, kaip siųsti žinutes į mūsų „Arduino“iš išorinių sistemų. Taip pat panašiai integruojame ir kitą IFTTT sistemą. Tai nebūtinai turi būti „pranešėjas“, kurį norėjau parodyti šiame pavyzdyje, kaip siųsti pranešimus iš išorinių sistemų į mūsų „Arduino“.

sourcecodesFanPage „Facebook“

Sveikinu, Maciek

Rekomenduojamas: