Sadržaj:

Obavijest: 17 koraka
Obavijest: 17 koraka

Video: Obavijest: 17 koraka

Video: Obavijest: 17 koraka
Video: Задача 17 ЕГЭ профильный. Параметры с нуля 2024, Studeni
Anonim
Notifikator
Notifikator

Uređaj se može spojiti, na primjer, na IFTTT sustav i reagirati kada se pojavi nova pošta. Na adresi app.remoteme.org generirat ćemo vezu nakon poziva koji će bajtove poslati Arduinu, a Arduino će prikazati svjetlosni efekt i reproducirati mp3 sa SD kartice

Korak 1: Što je potrebno

Što je potrebno
Što je potrebno
Što je potrebno
Što je potrebno
  • NodeMCU, WemOS ili nešto slično
  • Dva LED prstena s diodama WS2812B (koristio sam 16. prsten sa LED diodama)
  • DFRobotDFPlayerMini - ovo je mp3 player. Reproducira mp3 sa SD kartice i komunicira s Arduinom putem RX/TX -a
  • Zvučnik
  • SD kartica
  • Logički pretvarač -Koristio sam ovaj, mp3 player koristi 5V i Arduino 3.3, zato nam je potreban ovaj pretvarač
  • Znanje i vještine za izradu jednostavnih PCB -a vlastitim rukama

Toranj:

  • karton - dvije različite debljine
  • Papir za precrtavanje
  • aluminijska folija

Korak 2: Izgradnja tornja

Zgrada tornja
Zgrada tornja
Zgrada tornja
Zgrada tornja
Zgrada tornja
Zgrada tornja
Zgrada tornja
Zgrada tornja

Iznad tlocrta tornja u bočnom pogledu (moja avantura s tehničkim crtežom završila je u osnovnoj školi), sve dimenzije u milimetrima.

Princip rada

  1. uključen prsten LED dioda koji svjetlucaju
  2. Papir za precrtavanje
  3. Skraćeni stožac, izrađen od kartona i prekriven aluminijskom folijom, tako da reflektira svjetla LED dioda, na slici 3 '= izrezana mreža
  4. kartonska cijev - drži tornjeve okomito, unutar cijevi su kabeli za LED diode
  5. Visina ovisi o vama imam 85 mm
  6. Stalak unutar svih elektroničkih dijelova

Svi vodoravni elementi trebaju biti izrađeni od debljeg kartona.

Korak 3: Shema ožičenja

Shema ožičenja
Shema ožičenja
Shema ožičenja
Shema ožičenja
Shema ožičenja
Shema ožičenja
Shema ožičenja
Shema ožičenja

MP3 player ima napon od 5 V i komunicira s Arduinom putem TX / RX -a, potreban je logički pretvarač jer sam Arduino radi na naponu od 3,3 V. Upravljanje prstenovima također je povezano s Arduinom (D5, D6) putem logičkog pretvarača.

U spremištu ćete pronaći datoteke orla s planovima za PCB

Predlažem da ne lemite trajno Arduino i mp3 player samo za upotrebu ženskih zlatnih igli

Korak 4: Načelo rada

Naš Arduino se povezuje sa sustavom app.remoteme.org pomoću WebSockets (postoje spremne knjižnice) putem ove veze šalju se 5-bajtne poruke:

  • prvi bajt svjetlosnog efekta za gornji LED prsten
  • svjetlosni efekt drugog bajta za donji LED prsten
  • broj mp3 datoteke za reprodukciju
  • broj sekundi koliko dugo će se reproducirati svjetlosni efekt i mp3
  • treba li mp3 reproducirati jednom ili u petlji

izvorni kod

Cijeli izvorni kod možete pronaći ovdje

u datotekama SingleRing.cpp i SingleRing.h postoji klasa za kontrolu učinaka LED prstenova. Predlažem da počnete gledanjem funkcije setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // isključeno = 0 slučaj 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // čvrsto standardno zeleno kućište 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // jedno standardno plavo kućište 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // jedno standardno crveno kućište 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // čvrsto standardno narančasto kućište 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policija u smjeru kazaljke na satu zeleno kućište 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // policija vraća zeleni slučaj 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // policija u smjeru kazaljke na satu plavi slučaj 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // policija vrati plavi slučaj 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // policijski standardni crveni slučaj 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // policija vrati crveni slučaj 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // policijski standardni narančasti slučaj 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // policija vrati narančasti slučaj 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // ukrstiti standardno plavo kućište 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // križno vraćanje plavo kućište 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // trepće standardno zeleno kućište 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // treptanje odwyrtka zeleno kućište 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // trepće standardno plavo kućište 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // treptanje vrati plavo kućište 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // treptati standardno crveno kućište 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // treptanje vrati crveno kućište 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // treptati standardno narančasto kućište 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // treptanje vrati narančasto zadano: setConfiguration (0, 0, 50, 0, 5, 1); break; // isključeno = 0}}

ovisno o zadanom parametru, prsten će prikazati učinak. Možete dodati vlastiti učinak pozivanjem funkcije setConfiguration s novim parametrima (promjena boje, brzina prikaza) dodavanjem novog načina rada ili dodavanjem potpuno novog učinka - ili me obavijestite u komentarima ako mi se sviđa, dodat ću novi efekt

arduino.ino:

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

#uključi

#include #include #include "SingleRing.h"

#uključi

#include #include

#uključ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 mojDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

void setup () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Koristite softwareSerial za komunikaciju s mp3 -om.

Serial.println (F ("Nije moguće započeti:")); Serial.println (F ("1. Provjerite ponovno vezu!")); Serial.println (F ("2. Molim umetnite SD karticu!")); while (istina); } Serial.println (F ("DFPlayer Mini na mreži."));

myDFPlayer.setTimeOut (500); // Postavi vrijeme za serijsku komunikaciju 500 ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

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

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean turnOff = true;

unsigned long turnOffMillis = 0;

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

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t time = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t način = RemoteMeMessagesUtils:: getUint8 (podaci, poz);

bottom.setMode (bottomMode);

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

void loop ()

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

}

obrazloženje:

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

Moramo pružiti gore navedene podatke, detaljna uputstva ovdje na linku. Također sam pokazao kako se registrirati na remoteme.org i generirati token, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t time = RemoteMeMessagesUtils:: getUint8 (podaci, poz); uint8_t način = RemoteMeMessagesUtils:: getUint8 (podaci, poz);

bottom.setMode (bottomMode);

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

Ova funkcija bit će pozvana kada poruka dođe na Arduino i prikaže obavijest. Kôd je toliko jasan da sam sebe opisuje. Pozivam se na detalje klasa na dokumentaciju ovdje i ovdje

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

ako (! isključeno) {

top.clear ();

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

U petlji nazivamo funkcije petlje objekata, a ako je prošlo vrijeme prikaza obavijesti, isključujemo diode i zvuk.

Korak 5: Mp3 player

Mp3 player
Mp3 player

Komunicira s Arduinom putem TX / RX -a - Detalji samog playera ovdje i biblioteke ovdje

Prenosimo mp3 datoteke na SD karticu. Datoteke na kartici razvrstavaju se po abecedi, a zatim pozivom:

myDFPlayer.play (5);

Puštamo petu datoteku sa SD kartice iz korijenskog direktorija. Zato je dobro dati datoteke na prefiksima SD kartice 01, 02 itd. U mom slučaju to izgleda kao na gornjem ekranu za ispis

Za generiranje glasovnih naredbi Možete koristiti ovu stranicu.

Korak 6: Prijenos programa na Arduino

Prijenos programa na Arduino
Prijenos programa na Arduino
Prijenos programa na Arduino
Prijenos programa na Arduino

Prije postavljanja skice na Arduino, morate preuzeti potrebne knjižnice ovdje ćete pronaći detaljne upute

dodatno, moramo instalirati biblioteku DFRobotDFPlayerMini i Adafruit_NeoPixel

Korak 7: Kontrola

Kontrolirati
Kontrolirati
Kontrolirati
Kontrolirati

Šaljemo našem Arduinu pet bajtova

  • prvi bajt svjetlosnog efekta za gornji LED prsten
  • svjetlosni efekt drugog bajta za donji LED prsten
  • broj mp3 datoteke za reprodukciju
  • broj sekundi koliko dugo će se reproducirati svjetlosni efekt i mp3
  • treba li mp3 svirati jednom ili u petlji (1 ako ga treba svirati u petlji)

Slanjem bajtova

07 0F 01 05 01

Gornji prsten će pokazivati policijska svjetla (način 6), dolje jedan trepćući zeleno (način 15) (provjerite funkciju setMode na singleRing.cpp i komentare pored nje). Prva datoteka s SD kartice reproducirat će se 5 sekundi. I datoteka će se reproducirati u petlji (provjerite funkciju onUserMessage na arduino.ino)

Pošaljimo ove bajtove. Pogledajte gornji zaslon i kliknite ikone po redoslijedu 1, 2, 3. Pojavljuje se prozor

Zatim pogledajte drugi zaslon - i ispunite prozor kao na drugom ekranu

Prozor koji se pojavi koristi se za slanje poruka na uređaj. U polju 1 odaberite uređaj pošiljatelja - jer imamo samo jedan uređaj, mi ga odabiremo (ovo je obavezno polje i nije važno što je to isti uređaj na koji šaljemo poruku) U polju 2 dajemo bajtove poslati (crvenom bojom vrijednost koju smo unijeli u 2 bit će predstavljena kao niz), a zatim kliknite gumb Pošalji.

Nakon slanja poruke, naš bi dojavitelj trebao reagirati prikazom odgovarajućih svjetlosnih efekata i reprodukcijom odabranog mp3 -a. Potičem vas da isprobate različite efekte dajući prva dva bajta broja između 0 i 22 (vidi opis u funkciji setMode).

Korak 8: Slanje poruka pomoću URL -ova

Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova
Slanje poruka pomoću URL -ova

Ako želimo prikazati obavijesti iz vanjske aplikacije, npr. S IFTTT -om, moramo imati URL koji će raditi potpuno isto što smo učinili u prozoru u prethodnom koraku. remoteme.org pruža REST APi. Idite na nju klikom na karticu za hvalisanje s lijeve strane (zadnju). Prikazat će se stranica, na kojoj također možemo isprobati naše URL -ove.

Na prvom zaslonu imate funkciju Morate proširiti, a zatim popuniti podatke kao na drugom zaslonu.

ispunite podatke kao na gornjoj snimci zaslona. Nakon klika na izvršiti poslat ćemo poruku

070F010501

Primatelj je uređaj s 205 ID -om, isti uređaj je i pošiljatelj. ID poruke s postavkama "No_RENEVAL" nije relevantan. Zatim kliknite Izvrši. Notifikator će reagirati na isti način kao prilikom slanja poruka iz aplikacije. Nakon što pozovete REST, dolje je URL koji je pozvan - pogledajte treći zaslon. Kopiranje i lijepljenje u URL preglednika označeno je zelenim obrubom. Na četvrtom zaslonu moj kromirani preglednik nakon URL -a je zalijepljen

U mom slučaju, URL je:

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

Korak 9: Bilo koji URL za slanje poruke

Bilo koji URL za slanje poruke
Bilo koji URL za slanje poruke

U prethodnom koraku imate URL koji šalje podatke na vaš uređaj. Nažalost, nakon odjave s app.remoteme.org, prestaje raditi. To je zato što nismo dali token za provjeru autentičnosti i više nismo prijavljeni. Uzmimo svoj token (ili stvorimo novi) i zalijepimo ga u URL umjesto u zvjezdicu.

Pogledajte zaslon i zamijenite * u URL -u svojim tokenom

u mom slučaju token je:

~ 267_ZxoWtJ) 0ph & 2c

tako da moj završni URL izgleda ovako:

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

Sada ga možemo nazvati čak i ako nismo prijavljeni. A kad se pozove, poruka će biti poslana na naš uređaj 205

Korak 10: Integracija s IFTTT -om 1/7

Integracija s IFTTT -om 1/7
Integracija s IFTTT -om 1/7

Url napravljen u prethodnom koraku prikladan je za izvršavanje od strane vanjskih aplikacija. Kako ću ga koristiti pokazat ću na IFTTT -u. Konfigurirat ću ga tako da se obavijest uključi kada poruka e -pošte dođe na adresu e -pošte (Gmail račun).

Prijavite se na IFTTT. Zatim idite na karticu Moji Appleti, a zatim na "Novi applet"- prvi zaslon

Korak 11: Integracija s IFTTT 2/7

Integracija s IFTTT 2/7
Integracija s IFTTT 2/7

Zatim kliknite "+ovo"

Korak 12: Integracija s IFTTT -om 3/7

Integracija s IFTTT -om 3/7
Integracija s IFTTT -om 3/7

Zatim u polje "Usluge pretraživanja" napišite "Gmail"

Zatim "nova e -pošta u pristigloj pošti" (Možda će biti potrebna neka konfiguracija).

Korak 13: Integracija s IFTTT 4/7

Integracija s IFTTT 4/7
Integracija s IFTTT 4/7

sada kliknemo na "+ to"

Korak 14: Integracija s IFTTT -om 5/7

Integracija s IFTTT 5/7
Integracija s IFTTT 5/7

pronađite "Webhooks" i kliknite je

Korak 15: Integracija s IFTTT -om 6/7

Integracija s IFTTT 6/7
Integracija s IFTTT 6/7

zatim "Učini web zahtjev"

Korak 16: Integracija s IFTTT 7/7

Integracija s IFTTT 7/7
Integracija s IFTTT 7/7

dopunjujemo URL našeg urla tokenom. Vrsta sadržaja za application / json i kliknite "kreiraj radnju" i Završi. Sada imamo naš applet:

Korak 17: Sažetak

U ovom vodiču sam pokazao kako slati naše Arduino poruke iz vanjskih sustava. Također integriramo neki drugi sustav, zatim IFTTT na sličan način. Ne mora nužno biti “notifikator” koji sam želio pokazati u ovom primjeru kako slati poruke iz vanjskih sustava na naš Arduino.

sourcecodesFanPage na Facebooku

Živjeli, Maciek

Preporučeni: