Kazalo:

Obvestilec: 17 korakov
Obvestilec: 17 korakov

Video: Obvestilec: 17 korakov

Video: Obvestilec: 17 korakov
Video: Дом Культуры Юрия Мамина Выпуск 17/House of Culture by Mamin Episode 17. 2024, November
Anonim
Notifikator
Notifikator

Napravo je mogoče povezati na primer s sistemom IFTTT in reagirati, ko se prikaže nova pošta. Na app.remoteme.org bomo po klicu ustvarili povezavo, ki bo bajte poslala Arduinu, Arduino pa bo prikazal nekaj svetlobnega učinka in predvajal nekaj mp3 s kartice SD

1. korak: Kaj je potrebno

Kaj je potrebno
Kaj je potrebno
Kaj je potrebno
Kaj je potrebno
  • NodeMCU, WemOS ali kaj podobnega
  • Dva LED obroča z diodami WS2812B (uporabil sem 16. obroče LED)
  • DFRobotDFPlayerMini - to je mp3 predvajalnik. Predvaja mp3 s kartice SD in z RX/TX komunicira z Arduinom
  • Zvočnik
  • SD kartice
  • Logični pretvornik -Uporabil sem tega, predvajalnik mp3 uporablja 5V in Arduino 3.3, zato potrebujemo ta pretvornik
  • Znanje in sposobnosti za izdelavo preprostih PCB sami

Stolp:

  • karton - dve različni debelini
  • Paus papir
  • aluminijasta folija

2. korak: Gradnja stolpa

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

Nad načrtom stolpa v stranskem pogledu (moja pustolovščina s tehnično risbo se je končala v osnovni šoli), vse mere v milimetrih.

Načelo delovanja

  1. obroč LED prižge luč
  2. Paus papir
  3. Odrezan stožec, izdelan iz kartona in prekrit z alu folijo, zato odseva luči iz LED obročev, na sliki 3 '= izrezana mreža
  4. kartonska cev - drži stolpe navpično, znotraj cevi so kabli za svetleče diode
  5. Višina je odvisna od vas, imam 85 mm
  6. Stojalo znotraj vseh elektronskih delov

Vsi vodoravni elementi morajo biti iz debelejšega kartona.

3. korak: Shema ožičenja

Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram

Predvajalnik mp3 je dobavljen z napetostjo 5 V in komunicira z Arduinom prek TX / RX, potreben je logični pretvornik, ker sam Arduino deluje na napetosti 3,3 V. Upravljanje obročev je prek logičnega pretvornika povezano tudi z Arduinom (D5, D6).

V skladišču boste našli datoteke eagle z načrti za PCB

Predlagam, da Arduina in predvajalnika mp3 ne spajate trajno samo za uporabo ženskih zlatih čepov

4. korak: Načelo delovanja

Naš Arduino se poveže s sistemom app.remoteme.org s pomočjo WebSockets (obstajajo pripravljene knjižnice) prek te povezave se pošljejo 5-bajtna sporočila:

  • prvi bajt svetlobnega učinka za zgornji LED obroč
  • svetlobni učinek drugega bajta za spodnji obroček LED
  • številko mp3 datoteke za predvajanje
  • število sekund, kako dolgo se bo predvajal svetlobni učinek in mp3
  • ali naj se mp3 predvaja enkrat ali v zanki

izvorna koda

Celotno izvorno kodo najdete tukaj

v datotekah SingleRing.cpp in SingleRing.h obstaja razred za nadzor učinkov LED obročev. Predlagam, da začnete z ogledom funkcije setMode (int m):

void SingleRing:: setMode (int m) {stikalo (m) {primer 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 primer 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // polno standardno zeleno ohišje 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // polno standardno modro ohišje 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // polno standardno rdeče ohišje 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // polno standardno oranžno ohišje 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policija v smeri urinega kazalca zelena zadeva 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // policija povrne zeleno ohišje 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // policija v smeri urinega kazalca modri primer 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // policija vrne modri primer 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // policijski standardni rdeči primer 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // policija vrne rdeč primer 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // policijski standardni oranžni primer 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // policija povrne oranžni primer 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // prečkamo standardni modri primer 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // navzkrižno povrni modro ohišje 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // utripa standardna zelena črka 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // utripa odwyrtka zeleno ohišje 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // utripa standardno modro ohišje 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // utripanje povrnitev modrega ohišja 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // utripa standardno rdeče ohišje 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // utripanje povrnitev rdečega ohišja 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // utripa standardno oranžno ohišje 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // utripanje povrne oranžno privzeto: setConfiguration (0, 0, 50, 0, 5, 1); break; // izklopljeno = 0}}

glede na dani parameter bo obroč prikazal učinek. Svoj lasten učinek lahko dodate tako, da pokličete funkcijo setConfiguration z novimi parametri (sprememba barve, hitrost prikaza), tako da dodate nov način ali dodate popolnoma nov učinek - ali pa mi v komentarjih sporočite, če mi je všeč, bom dodal nov učinek

arduino.ino:

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

#vključi

#include #include #include "SingleRing.h"

#vključi

#include #include

#vključi

#define WIFI_NAME ""

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

#define DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing bottom = 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)) {// Uporabite softwareSerial za komunikacijo z mp3.

Serial.println (F ("Ne morem začeti:")); Serial.println (F ("1. Prosimo, ponovno preverite povezavo!")); Serial.println (F ("2. Prosimo, vstavite kartico SD!")); medtem ko (res); } Serial.println (F ("DFPlayer Mini na spletu."));

myDFPlayer.setTimeOut (500); // Nastavitev časovne omejitve serijske komunikacije 500 ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); medtem ko (WiFiMulti.run ()! = WL_CONNECTED) {zakasnitev (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean turnOff = true;

brez podpisa dolg turnOffMillis = 0;

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

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

bottom.setMode (bottomMode);

top.setMode (topMode); if (način == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * čas; }

void loop ()

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

}

razlaga:

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

Predložiti moramo zgornje podatke, podrobna navodila tukaj na povezavi. Pokazal sem tudi, kako se registrirati na remoteme.org in ustvariti žeton, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (podatki, poz); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (podatki, poz); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (podatki, poz); uint8_t time = RemoteMeMessagesUtils:: getUint8 (podatki, poz); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (podatki, poz);

bottom.setMode (bottomMode);

top.setMode (topMode); if (način == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * čas; }

Ta funkcija bo poklicana, ko sporočilo pride v Arduino in prikaže obvestilo. Koda je tako jasna, da opisuje samo sebe. Sklicujem se na podrobnosti razredov na dokumentacijo tukaj in tukaj

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

če (! izklopljeno) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = res; }}

V zanki pokličemo zančne funkcije objektov in tudi, če je čas prikaza obvestil minil, izklopimo diode in zvok.

5. korak: Mp3 predvajalnik

Mp3 predvajalnik
Mp3 predvajalnik

Z Arduinom komunicira prek TX / RX - Podrobnosti o samem predvajalniku tukaj in knjižnici tukaj

Naložimo mp3 datoteke na kartico SD. Datoteke na kartici so razvrščene po abecedi in nato s klicem:

myDFPlayer.play (5);

Predvajamo peto datoteko s kartice SD iz korenskega imenika. Zato je dobro dati datoteke na predponah kartice SD 01, 02 itd. V mojem primeru je videti kot na zgornjem zaslonu za tiskanje

Za ustvarjanje glasovnih ukazov To stran lahko uporabite.

6. korak: Nalaganje programa v Arduino

Nalaganje programa v Arduino
Nalaganje programa v Arduino
Nalaganje programa v Arduino
Nalaganje programa v Arduino

Preden naložite skico v Arduino, morate prenesti potrebne knjižnice, tukaj boste našli podrobna navodila

poleg tega moramo namestiti knjižnico DFRobotDFPlayerMini in Adafruit_NeoPixel

7. korak: Nadzor

Nadzor
Nadzor
Nadzor
Nadzor

Na naš Arduino pošljemo pet bajtov

  • prvi bajt svetlobnega učinka za zgornji LED obroč
  • svetlobni učinek drugega bajta za spodnji obroček LED
  • številko mp3 datoteke za predvajanje
  • število sekund, kako dolgo se bo predvajal svetlobni učinek in mp3
  • ali naj se mp3 predvaja enkrat ali v zanki (1, če naj se predvaja v zanki)

S pošiljanjem bajtov

07 0F 01 05 01

Na zgornjem obroču bodo prikazane policijske luči (način 6), spodaj en utripajoč zelen (način 15) (preverite funkcijo setMode na singleRing.cpp in komentarje zraven). Prva datoteka s kartice SD se bo predvajala 5 sekund. Datoteka se bo predvajala v zanki (preverite funkcijo onUserMessage na arduino.ino)

Pošljimo te bajte. Poglejte zgornji zaslon in kliknite ikone po vrstnem redu, napisanem z 1, 2, 3. Pojavi se okno

Nato poglejte drugi zaslon - in napolnite okno kot na drugem zaslonu

Okno, ki se prikaže, se uporablja za pošiljanje sporočil v napravo. V polju 1 izberite napravo pošiljatelja - ker imamo samo eno napravo, jo izberemo (to je obvezno polje in ni pomembno, da gre za isto napravo, na katero pošiljamo sporočilo) V polju 2 damo bajte pošlji (rdeče bo vrednost, ki smo jo vnesli v 2, predstavljena kot niz), nato kliknite gumb Pošlji.

Po pošiljanju sporočila bi moral naš prijavitelj reagirati tako, da prikaže ustrezne svetlobne učinke in predvaja izbrani mp3. Spodbujam vas, da preizkusite različne učinke tako, da podate prva dva bajta števila med 0 in 22 (glej opis v funkciji setMode).

8. korak: pošiljanje sporočil z URL -ji

Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev
Pošiljanje sporočil z uporabo URL -jev

Če želimo prikazati obvestila iz zunanje aplikacije, npr. Z IFTTT, moramo imeti URL, ki bo naredil popolnoma enako kot v oknu v prejšnjem koraku. remoteme.org ponuja REST APi. Pojdite nanj s klikom na zavihek na levi strani (zadnji). Prikazala se bo stran, na tej strani lahko preizkusimo tudi svoje URL -je.

Na prvem zaslonu imate funkcijo Morate razširiti, nato pa izpolnite podatke kot na drugem zaslonu.

vnesite podatke kot na zgornjem posnetku zaslona. Po kliku na izvršitev bomo poslali sporočilo

070F010501

Sprejemnik je naprava z 205 ID -jem, ista naprava je tudi pošiljatelj. MessageId z nastavitvami »No_RENEVAL« ni pomemben. Nato kliknite Izvedi. Notifikator se bo odzval enako kot pri pošiljanju sporočil iz aplikacije. Ko pokličete REST, je spodaj naslovljen URL - poglejte tretji zaslon. Kopiranje in lepljenje v URL brskalnika je označeno z zeleno obrobo. Na četrtem zaslonu je bil moj kromirani brskalnik po prilepljenem URL -ju

V mojem primeru je URL:

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

9. korak: Ogromni URL za pošiljanje sporočila

Ogromen URL za pošiljanje sporočila
Ogromen URL za pošiljanje sporočila

V prejšnjem koraku imate URL, ki pošilja podatke v vašo napravo. Žal po odjavi iz aplikacije app.remoteme.org preneha delovati. To je zato, ker nismo zagotovili žetona za preverjanje pristnosti in nismo več prijavljeni. Vzemimo svoj žeton (ali ustvarimo novega) in ga prilepimo v URL namesto zvezdice.

Poglejte zaslon in * v URL -ju zamenjajte s svojim žetonom

v mojem primeru je žeton:

~ 267_ZxoWtJ) 0ph & 2c

tako da moj končni URL izgleda tako:

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

Zdaj ga lahko pokličemo, tudi če nismo prijavljeni. In ko je poklican, bo na našo napravo poslano sporočilo 205

10. korak: Integracija z IFTTT 1/7

Integracija z IFTTT 1/7
Integracija z IFTTT 1/7

Url, ustvarjen v zgornjem koraku, je primeren za izvajanje z zunanjimi aplikacijami. Kako ga uporabljati, bom pokazal na IFTTT. Konfiguriral ga bom tako, da se obvestilo vklopi, ko na e -poštni naslov pride e -poštni naslov (račun Gmail).

Prijavite se v IFTTT. Nato pojdite na zavihek Moji jabolki in nato »Nov programček«- prvi zaslon

11. korak: Integracija z IFTTT 2/7

Integracija z IFTTT 2/7
Integracija z IFTTT 2/7

Nato kliknite »+to«

12. korak: Integracija z IFTTT 3/7

Integracija z IFTTT 3/7
Integracija z IFTTT 3/7

Nato v polje »Storitve iskanja« napišite »Gmail«

Nato "nova e -pošta v nabiralniku" (morda bo potrebna določena konfiguracija).

13. korak: Integracija z IFTTT 4/7

Integracija z IFTTT 4/7
Integracija z IFTTT 4/7

zdaj kliknemo na "+ to"

Korak 14: Integracija z IFTTT 5/7

Integracija z IFTTT 5/7
Integracija z IFTTT 5/7

poiščite »Webhooks« in ga kliknite

Korak 15: Integracija z IFTTT 6/7

Integracija z IFTTT 6/7
Integracija z IFTTT 6/7

nato »Ustvari spletno zahtevo«

Korak 16: Integracija z IFTTT 7/7

Integracija z IFTTT 7/7
Integracija z IFTTT 7/7

dokončamo URL svojega urla z žetonom. Vrsta vsebine v aplikacijo / json in kliknite »ustvari dejanje« in Dokončaj. Zdaj imamo naš applet:

17. korak: Povzetek

V tej vadnici sem pokazal, kako pošiljati sporočila iz Arduina iz zunanjih sistemov. Na podoben način integriramo tudi kakšen drug sistem kot IFTTT. Ni nujno, da je "obveščevalec", v tem primeru sem želel pokazati, kako pošiljati sporočila iz zunanjih sistemov v naš Arduino.

sourcecodesFanPage na Facebooku

Na zdravje, Maciek

Priporočena: