Sadržaj:

Notificator: 17 koraka
Notificator: 17 koraka

Video: Notificator: 17 koraka

Video: Notificator: 17 koraka
Video: С нуля и до Корана: урок №17 2024, Juli
Anonim
Notificator
Notificator

Uređaj se može spojiti na primjer na IFTTT sistem i reagirati kada se pojavi nova pošta. Na 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: Šta je potrebno

Šta je potrebno
Šta je potrebno
Šta je potrebno
Šta je potrebno
  • NodeMCU, WemOS ili nešto slično
  • Dva LED prstena sa WS2812B diodama (koristio sam 16. LED diode)
  • 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
  • Paus papir
  • aluminijska folija

Korak 2: Izgradnja tornja

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

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

Princip rada

  1. prsten LED dioda svetli
  2. Paus papir
  3. Skraćeni konus, napravljen 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 zavisi od vas. Imam 85 mm
  6. Postolje 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 dobiva 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 je također povezano s Arduinom (D5, D6) putem logičkog pretvarača.

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

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

Korak 4: Princip rada

Naš Arduino se povezuje sa sistemom app.remoteme.org koristeći WebSockets (postoje spremne biblioteke) 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
  • da li mp3 treba da se reprodukuje 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 efekata LED prstenova. Predlažem da počnete tako što ćete pogledati funkciju 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; // jedno 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; // jedno 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 vrati zeleno kućište 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; // trepće 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; // trepće standardno narandžasto kućište 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // treptanje vraćanje narandžasto podrazumevano: setConfiguration (0, 0, 50, 0, 5, 1); break; // isključeno = 0}}

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

arduino.ino:

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

#include

#include #include #include "SingleRing.h"

#include

#include #include

#include

#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)) {// Koristite softwareSerial za komunikaciju sa mp3.

Serial.println (F ("Nije moguće započeti:")); Serial.println (F ("1. Provjerite ponovo 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) {kašnjenje (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 (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * vrijeme; }

void loop ()

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

}

objašnjenje:

#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 (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * vrijeme; }

Ova funkcija će se pozvati kada poruka dođe na Arduino i prikaže obavijest. Kôd je toliko jasan da sam sebe opisuje. Pozivam se na detalje časova na dokumentaciju ovde i ovde

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

if (! 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 sortiraju 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 štampanje

Za generiranje glasovnih naredbi Možete koristiti ovu stranicu.

Korak 6: Prijenos programa na Arduino

Otpremanje programa na Arduino
Otpremanje programa na Arduino
Otpremanje programa na Arduino
Otpremanje programa na Arduino

Prije postavljanja skice na Arduino, morate preuzeti potrebne biblioteke, ovdje ćete pronaći detaljna uputstva

dodatno, moramo instalirati biblioteku DFRobotDFPlayerMini i Adafruit_NeoPixel

Korak 7: Kontrola

Kontrola
Kontrola
Kontrola
Kontrola

Š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
  • da li mp3 treba da se reprodukuje jednom ili u petlji (1 ako treba da se reprodukuje u petlji)

Slanjem bajtova

07 0F 01 05 01

Gornji prsten će prikazivati policijska svjetla (način 6), donji jedan trepćući zeleno (način 15) (pogledajte funkciju setMode na singleRing.cpp i komentare pored nje). Prva datoteka sa 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 ekran i kliknite ikone po redoslijedu 1, 2, 3. Pojavljuje se prozor

Zatim pogledajte drugi ekran - 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 send (crvenom bojom vrijednost koju smo unijeli u 2 bit će predstavljena kao niz), a zatim kliknite gumb Pošalji.

Nakon slanja poruke, naš dojavljivač bi 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 (pogledajte 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 njega klikom na karticu za hvatanje s lijeve strane (posljednju). Prikazat će se stranica, na kojoj također možemo isprobati naše URL -ove.

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

popunite podatke kao na gornjoj snimci ekrana. Nakon klika na izvršiti poslat ćemo poruku

070F010501

Primalac je uređaj sa 205 ID -om, isti uređaj je i pošiljalac. MessageId s postavkama “No_RENEVAL” nije relevantan. A zatim kliknite Izvrši. Notifikator će reagirati na isti način kao i prilikom slanja poruka iz aplikacije. Nakon što pozovete REST, dolje je URL koji je pozvan - pogledajte treći ekran. A kopiranje i lijepljenje u URL preglednika je označeno zelenom ivicom. Na četvrtom ekranu moj Chrome preglednik nakon što je URL 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 naš token (ili kreiramo novi) i zalijepimo ga u URL umjesto u zvjezdicu.

Pogledajte ekran i zamijenite * u URL -u svojim tokenom

u mom slučaju token je:

~ 267_ZxoWtJ) 0ph & 2c

tako da moj krajnji 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 pozvati čak i ako nismo prijavljeni. A kad se pozove, poruka će biti poslana na naš uređaj 205

Korak 10: Integracija sa IFTTT 1/7

Integracija sa IFTTT 1/7
Integracija sa IFTTT 1/7

Url kreiran 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 dojavljivač 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 ekran

Korak 11: Integracija sa IFTTT 2/7

Integracija sa IFTTT 2/7
Integracija sa IFTTT 2/7

Zatim kliknite "+ovo"

Korak 12: Integracija sa IFTTT 3/7

Integracija sa IFTTT 3/7
Integracija sa IFTTT 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 određena konfiguracija).

Korak 13: Integracija sa IFTTT 4/7

Integracija sa IFTTT 4/7
Integracija sa IFTTT 4/7

sada kliknemo na "+ to"

Korak 14: Integracija sa IFTTT 5/7

Integracija sa IFTTT 5/7
Integracija sa IFTTT 5/7

pronađite "Webhooks" i kliknite na nju

Korak 15: Integracija sa IFTTT 6/7

Integracija sa IFTTT 6/7
Integracija sa IFTTT 6/7

zatim "Učinite web zahtjev"

Korak 16: Integracija sa IFTTT 7/7

Integracija sa IFTTT 7/7
Integracija sa IFTTT 7/7

upotpunjujemo URL našeg URL -a tokenom. Vrsta sadržaja u application / json i kliknite "kreiraj akciju" i Završi. Sada imamo naš aplet:

Korak 17: Sažetak

U ovom vodiču sam pokazao kako slati naše Arduino poruke iz vanjskih sistema. Na sličan način integriramo i neki drugi sistem nego IFTTT. Ne mora nužno biti “notifikator”. U ovom primjeru sam htio pokazati kako slati poruke iz vanjskih sistema na naš Arduino.

sourcecodesFanPage na Facebooku

Živjeli, Maciek

Preporučuje se: