Satura rādītājs:

Paziņotājs: 17 soļi
Paziņotājs: 17 soļi

Video: Paziņotājs: 17 soļi

Video: Paziņotājs: 17 soļi
Video: RIMBA Racer | Episode 15 | Animation 2024, Jūlijs
Anonim
Paziņotājs
Paziņotājs

Ierīci var savienot, piemēram, ar IFTTT sistēmu un reaģēt, kad parādās jauns pasts. Vietnē app.remoteme.org pēc izsaukšanas mēs ģenerēsim saiti, kura baiti tiks nosūtīti uz Arduino, un Arduino parādīs gaismas efektu un atskaņos dažus mp3 no SDcard

1. darbība. Kas nepieciešams

Kas Ir Nepieciešams
Kas Ir Nepieciešams
Kas Ir Nepieciešams
Kas Ir Nepieciešams
  • NodeMCU, WemOS vai kaut kas līdzīgs
  • Divi LED gredzeni ar WS2812B diodēm (esmu izmantojis 16. gaismas diodes)
  • DFRobotDFPlayerMini - tas ir mp3 atskaņotājs. Tas atskaņo mp3 no SDcard un sazinās ar Arduino, izmantojot RX/TX
  • Runātājs
  • SD karte
  • Loģikas pārveidotājs -es izmantoju šo, mp3 atskaņotājs izmanto 5V un Arduino 3.3, tāpēc mums ir nepieciešams šis pārveidotājs
  • Zināšanas un prasmes, lai mūsu pašu spēkos būtu izgatavot vienkāršu PCB

Tornis:

  • kartons - divi dažādi biezumi
  • Pauspapīrs
  • alumīnija folijs

2. solis: Torņa celtniecība

Torņa ēka
Torņa ēka
Torņa ēka
Torņa ēka
Torņa ēka
Torņa ēka
Torņa ēka
Torņa ēka

Virs torņa plāna sānu skatā (mans piedzīvojums ar tehnisko zīmējumu beidzās pamatskolā), visi izmēri milimetros.

Darbības princips

  1. iedegas gaismas diodes gredzens
  2. Pauspapīrs
  3. Atgrieztais konuss, izgatavots no kartona un pārklāts ar alumīnija foliju, tāpēc tas atspoguļo gaismu no led gredzeniem, 3. attēlā '= izgrieztais siets
  4. kartona caurule - tur torņus vertikāli, caurules iekšpusē ir LED kabeļi
  5. Augstums ir atkarīgs no jums, man ir 85 mm
  6. Statīvs visu elektronikas detaļu iekšpusē

Visiem horizontālajiem elementiem jābūt izgatavotiem no biezāka kartona.

3. darbība: elektroinstalācijas shēma

Elektroinstalācijas shēma
Elektroinstalācijas shēma
Elektroinstalācijas shēma
Elektroinstalācijas shēma
Elektroinstalācijas shēma
Elektroinstalācijas shēma
Elektroinstalācijas shēma
Elektroinstalācijas shēma

MP3 atskaņotājs tiek piegādāts ar 5 V spriegumu un sazinās ar Arduino, izmantojot TX / RX, ir nepieciešams loģiskais pārveidotājs, jo pats Arduino darbojas ar 3.3 V spriegumu. Gredzenu vadība ir arī savienota ar Arduino (D5, D6), izmantojot loģisko pārveidotāju.

Krātuvē atradīsit ērgļa failus ar PCB plāniem

Es iesaku nepārtraukti lodēt Arduino un mp3 atskaņotāju, lai izmantotu tikai sieviešu zelta tapas

4. solis: darbības princips

Mūsu Arduino izveido savienojumu ar sistēmu app.remoteme.org, izmantojot WebSockets (ir gatavas bibliotēkas), izmantojot šo savienojumu, tiek nosūtīti 5 baitu ziņojumi:

  • pirmais gaismas efekta baits augšējam LED gredzenam
  • otrā baita gaismas efekts apakšējam LED gredzenam
  • atskaņojamā mp3 faila numurs
  • sekunžu skaits, cik ilgi tiks atskaņots gaismas efekts un mp3
  • vai mp3 ir jāspēlē vienu reizi vai ciklā

avota kods

Viss avota kods Jūs varat atrast šeit

failos SingleRing.cpp un SingleRing.h ir klase LED gredzenu efektu kontrolei. Es iesaku jums vispirms apskatīt funkciju setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); pārtraukums; // izslēgts = 0 1. gadījums: setConfiguration (6, 0, 50, 0, 0, 20); pārtraukums; // cietais standarta zaļais korpuss 2: setConfiguration (6, 0, 0, 50, 0, 20); pārtraukums; // ciets standarta zils korpuss 3: setConfiguration (6, 50, 0, 0, 0, 20); pārtraukums; // ciets standarta sarkans korpuss 4: setConfiguration (6, 50, 10, 0, 0, 20); pārtraukums; // ciets standarta oranžs korpuss 5: setConfiguration (1, 0, 100, 0, 5, 2); pārtraukums; // policijas pulksteņrādītāja virzienā zaļš korpuss 6: setConfiguration (1, 0, 100, 0, 5, -2); pārtraukums; // policija atgriež zaļo lietu 7: setConfiguration (1, 0, 0, 100, 5, 2); pārtraukums; // policijas pulksteņrādītāja virzienā zilais korpuss 8: setConfiguration (1, 0, 0, 100, 5, -2); pārtraukums; // policija atjauno zilo lietu 9: setConfiguration (1, 100, 0, 0, 5, 2); pārtraukums; // policijas standarta sarkanā lieta 10: setConfiguration (1, 100, 0, 0, 5, -2); pārtraukums; // policija atjauno sarkano lietu 11: setConfiguration (1, 100, 20, 0, 5, 2); pārtraukums; // policijas standarta oranžais korpuss 12: setConfiguration (1, 100, 20, 0, 5, -2); pārtraukums; // policija atjauno oranžo lietu 13: setConfiguration (2, 0, 0, 50, 8, 10); pārtraukums; // šķērsot standarta zilo lietu 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); pārtraukums; // mirgo standarta zaļais korpuss 16: setConfiguration (5, 0, 50, 0, 0, -20); pārtraukums; // mirgot odwyrtka zaļā lieta 17: setConfiguration (5, 0, 0, 50, 0, 20); pārtraukums; // mirgo standarta zils korpuss 18: setConfiguration (5, 0, 0, 50, 0, -20); pārtraukums; // mirgot atgriezties zils gadījums 19: setConfiguration (5, 50, 0, 0, 0, 20); pārtraukums; // mirgo standarta sarkanais korpuss 20: setConfiguration (5, 50, 0, 0, 0, -20); pārtraukums; // mirgot atgriezt sarkano lietu 21: setConfiguration (5, 50, 10, 0, 0, 20); pārtraukums; // mirgo standarta oranžais korpuss 22: setConfiguration (5, 50, 10, 0, 0, -20); pārtraukums; // mirgot atgriezt oranžo noklusējumu: setConfiguration (0, 0, 50, 0, 5, 1); pārtraukums; // izslēgts = 0}}

atkarībā no dotā parametra gredzens parādīs efektu. Jūs varat pievienot savu efektu, izsaucot funkciju setConfiguration ar jauniem parametriem (krāsas maiņa, displeja ātrums), pievienojot jaunu režīmu vai pievienojot pilnīgi jaunu efektu - vai paziņojiet man komentāros, ja man tas patīk, es pievienošu jaunu efektu

arduino.ino:

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

#iekļaut

#include #include #include "SingleRing.h"

#iekļaut

#iekļaut #iekļaut

#iekļaut

#define WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "sirēna" #define TOKEN ""

#define DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing dibens = 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)) {// Izmantojiet softwareSerial, lai sazinātos ar mp3.

Serial.println (F ("Nevar sākt:")); Serial.println (F ("1. Lūdzu, vēlreiz pārbaudiet savienojumu!")); Serial.println (F ("2. Lūdzu, ievietojiet SD karti!")); kamēr (taisnība); } Serial.println (F ("DFPlayer Mini tiešsaistē."));

myDFPlayer.setTimeOut (500); // Iestatiet sērijas sakaru taimautu 500 ms

myDFPlayer.sējums (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run ()! = WL_CONNECTED) {kavēšanās (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); apakšā.skaidrs (); }

Būla vērtība Izslēgts = true;

neparakstīts garš turnOffMillis = 0;

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

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

bottom.setMode (bottomMode);

top.setMode (topMode); ja (režīms == 1) {myDFPlayer.loop (trackNumber); } cits {myDFPlayer.play (trackNumber); } izslēgts = nepatiess; turnOffMillis = milis () + 1000 * laiks; }

tukša cilpa ()

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

}

skaidrojums:

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

Mums ir jāsniedz iepriekš minētie dati, detalizēti norādījumi šeit, saitē, kā arī esmu parādījis, kā reģistrēties vietnē remoteme.org un ģenerēt marķieri, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *dati) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (dati, poz); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (dati, poz); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (dati, poz); uint8_t time = RemoteMeMessagesUtils:: getUint8 (dati, poz); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (dati, poz);

bottom.setMode (bottomMode);

top.setMode (topMode); ja (režīms == 1) {myDFPlayer.loop (trackNumber); } cits {myDFPlayer.play (trackNumber); } izslēgts = nepatiess; turnOffMillis = milis () + 1000 * laiks; }

Šī funkcija tiks izsaukta, kad ziņojums nonāks Arduino un parādīs paziņojumu. Kods ir tik skaidrs, ka raksturo sevi. Es atsaucos uz nodarbību detaļām uz dokumentāciju šeit un šeit

void loop () {remoteMe.loop (); top.loop (); bottom.loop (); ja (turnOffMillis <milis ()) {

ja (! izslēgts) {

top.clear ();

apakšā.skaidrs (); myDFPlayer.stop (); ieslēgts = patiess; }}

Ciklā mēs izsaucam objektu cilpas funkcijas, un arī tad, ja paziņojumu parādīšanas laiks ir pagājis, mēs izslēdzam diodes un skaņu.

5. darbība: MP3 atskaņotājs

Mp3 atskaņotājs
Mp3 atskaņotājs

Tas sazinās ar Arduino, izmantojot TX / RX - sīkāka informācija par pašu atskaņotāju šeit un bibliotēka šeit

Mēs augšupielādējam mp3 failus SD kartē. Faili kartē tiek sakārtoti alfabētiskā secībā un pēc tam zvanot:

myDFPlayer.play (5);

Mēs atskaņojam piekto failu no SD kartes no saknes direktorija. Tāpēc ir labi dot failus SD kartes prefiksos 01, 02 utt. Manā gadījumā tas izskatās kā iepriekšējā izdrukas ekrānā

Lai ģenerētu balss komandas Varat izmantot šo lapu.

6. darbība: augšupielādējiet programmu Arduino

Programmas augšupielāde Arduino
Programmas augšupielāde Arduino
Programmas augšupielāde Arduino
Programmas augšupielāde Arduino

Pirms skices augšupielādes Arduino, jums ir jālejupielādē nepieciešamās bibliotēkas, šeit atradīsit detalizētus norādījumus

Turklāt mums ir jāinstalē bibliotēka DFRobotDFPlayerMini un Adafruit_NeoPixel

7. darbība: kontrole

Kontrole
Kontrole
Kontrole
Kontrole

Mēs nosūtām uz mūsu Arduino piecus baitus

  • pirmais gaismas efekta baits augšējam LED gredzenam
  • otrā baita gaismas efekts apakšējam LED gredzenam
  • atskaņojamā mp3 faila numurs
  • sekunžu skaits, cik ilgi tiks atskaņots gaismas efekts un mp3
  • vai mp3 ir jāspēlē vienu reizi vai ciklā (1, ja tas jāspēlē ciklā)

Nosūtot baitus

07 0F 01 05 01

Augšējā gredzenā būs redzamas policijas gaismas (6. režīms), apakšējais mirgo zaļā krāsā (15. režīms) (pārbaudiet funkciju setMode vietnē singleRing.cpp un komentārus blakus). SDcard pirmais fails tiks atskaņots 5 sekundes. Un fails tiks atskaņots ciklā (pārbaudiet funkciju onUserMessage vietnē arduino.ino)

Nosūtīsim šos baitus. Apskatiet iepriekš redzamo ekrānu un noklikšķiniet uz ikonām secībā, kas rakstīta ar 1, 2, 3. Parādās logs

Pēc tam apskatiet otro ekrānu un aizpildiet logu tāpat kā otrajā ekrānā

Parādītais logs tiek izmantots ziņojumu sūtīšanai uz ierīci. 1. laukā atlasiet sūtītāja ierīci - tā kā mums ir tikai viena ierīce, mēs to izvēlamies (tas ir obligāts lauks, un nav svarīgi, ka tā ir tā pati ierīce, uz kuru mēs nosūtām ziņojumu) 2. laukā mēs dodam baitus nosūtīt (sarkanā krāsā vērtība, kuru ievadījām 2, tiks attēlota kā virkne), pēc tam noklikšķiniet uz pogas Sūtīt.

Pēc ziņojuma nosūtīšanas mūsu paziņotājam vajadzētu reaģēt, parādot atbilstošos apgaismojuma efektus un atskaņojot izvēlēto mp3. Es iesaku izmēģināt dažādus efektus, norādot pirmos divus baitus no skaitļa no 0 līdz 22 (skatiet aprakstu funkcijā setMode).

8. darbība: ziņojumu sūtīšana, izmantojot vietrāžus URL

Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL
Ziņojumu sūtīšana, izmantojot URL

Ja mēs vēlamies parādīt paziņojumus no ārējas lietojumprogrammas, piemēram, izmantojot IFTTT, mums ir jābūt vietrādim URL, kas darīs tieši to pašu, ko iepriekšējā solī. remoteme.org nodrošina REST APi. Dodieties uz to, noklikšķinot uz cilnes kreisajā pusē (pēdējā). Tiks parādīta lapa, šajā lapā mēs varam arī izmēģināt savus URL.

Pirmajā ekrānā ir funkcija, kas jums jāizvērš, pēc tam aizpildiet datus tāpat kā otrajā ekrānā.

aizpildiet datus, kā parādīts iepriekš redzamajā ekrānuzņēmumā. Pēc noklikšķināšanas uz Izpildīt mēs nosūtīsim ziņojumu

070F010501

Uztvērējs ir ierīce ar 205 id, tā pati ierīce ir arī sūtītājs. MessageId ar iestatījumiem “No_RENEVAL” nav nozīmes. Un pēc tam noklikšķiniet uz Izpildīt. Notificator reaģēs tāpat kā nosūtot ziņojumus no lietojumprogrammas. Pēc tam, kad esat izsaucis REST, zemāk ir izsauktais URL - apskatiet trešo ekrānu. Kopēt un ielīmēt pārlūkprogrammā URL tika atzīmēts ar zaļu apmali. Ceturtajā ekrānā mans Chrome pārlūks pēc URL ielīmēšanas

Manā gadījumā URL ir šāds:

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

9. darbība: jebkurš URL ziņojuma sūtīšanai

Jebkurš URL, lai nosūtītu ziņojumu
Jebkurš URL, lai nosūtītu ziņojumu

Iepriekšējā solī jums ir URL, kas sūta datus uz jūsu ierīci. Diemžēl pēc pieteikšanās no lietotnes.remoteme.org tas pārstāj darboties. Tas ir tāpēc, ka mēs neesam nodrošinājuši autentifikācijas marķieri un mēs vairs neesam pierakstījušies. Saņemsim savu marķieri (vai izveidosim jaunu) un ielīmēsim to vietrādī URL, nevis zvaigznīti.

Paskatieties uz ekrānu un vietrādī URL aizstājiet * ar savu marķieri

manā gadījumā žetons ir:

~ 267_ZxoWtJ) 0ph & 2c

tāpēc mans gala URL izskatās šādi:

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

Tagad mēs varam to saukt pat tad, ja neesam pierakstījušies. Un, kad tas tiks izsaukts, uz mūsu ierīci tiks nosūtīts ziņojums 205

10. darbība: integrācija ar IFTTT 1/7

Integrācija ar IFTTT 1/7
Integrācija ar IFTTT 1/7

Iepriekšējā darbībā izveidotais URL ir piemērots izpildei ārējās lietojumprogrammās. Kā to izmantot, es parādīšu IFTTT. Es to konfigurēšu tā, lai paziņotājs ieslēgtos, kad uz e -pasta adresi (Gmail kontu) tiek nosūtīts e -pasts.

Piesakieties IFTTT. Pēc tam dodieties uz cilni Mani sīpoli un pēc tam “Jaunais sīklietotne”- pirmais ekrāns

11. darbība. Integrācija ar IFTTT 2/7

Integrācija ar IFTTT 2/7
Integrācija ar IFTTT 2/7

Tālāk noklikšķiniet uz “+tas”

12. solis: integrācija ar IFTTT 3/7

Integrācija ar IFTTT 3/7
Integrācija ar IFTTT 3/7

Pēc tam laukā “Meklēšanas pakalpojumi” ierakstiet “Gmail”

Pēc tam "jauns e -pasts iesūtnē" (var būt nepieciešama noteikta konfigurācija).

13. darbība. Integrācija ar IFTTT 4/7

Integrācija ar IFTTT 4/7
Integrācija ar IFTTT 4/7

tagad mēs noklikšķiniet uz "+ tas"

14. darbība. Integrācija ar IFTTT 5/7

Integrācija ar IFTTT 5/7
Integrācija ar IFTTT 5/7

atrodiet “Webhooks” un noklikšķiniet uz tā

15. darbība. Integrācija ar IFTTT 6/7

Integrācija ar IFTTT 6/7
Integrācija ar IFTTT 6/7

pēc tam “Izveidot tīmekļa pieprasījumu”

16. darbība. Integrācija ar IFTTT 7/7

Integrācija ar IFTTT 7/7
Integrācija ar IFTTT 7/7

mēs aizpildām sava URL URL ar marķieri. Satura tips uz application / json un noklikšķiniet uz “Izveidot darbību” un Pabeigt. Tagad mums ir mūsu sīklietotne:

17. darbība. Kopsavilkums

Šajā apmācībā es parādīju, kā nosūtīt ziņojumus uz mūsu Arduino no ārējām sistēmām. Līdzīgā veidā mēs integrējam arī kādu citu sistēmu, nevis IFTTT. Tam nav obligāti jābūt “paziņotājam”, kuru šajā piemērā vēlējos parādīt, kā nosūtīt ziņojumus no ārējām sistēmām uz mūsu Arduino.

sourcecodesFanPage vietnē Facebook

Sveiks, Maciek

Ieteicams: