Përmbajtje:

Njoftuesi: 17 hapa
Njoftuesi: 17 hapa

Video: Njoftuesi: 17 hapa

Video: Njoftuesi: 17 hapa
Video: "Dëgjojeni perlën e Jorit"😅😅 - Big Brother Vip Albania 2024, Korrik
Anonim
Njoftuesi
Njoftuesi

Pajisja mund të lidhet për shembull me sistemin IFTTT dhe të reagojë kur shfaqet një postë e re. Në app.remoteme.org ne do të krijojmë një lidhje pas thirrjes se cilat bajtë do të dërgohen në Arduino, dhe Arduino do të shfaqë një efekt drite dhe do të luajë disa mp3 nga SDcard

Hapi 1: Çfarë është e nevojshme

Ajo që nevojitet
Ajo që nevojitet
Ajo që nevojitet
Ajo që nevojitet
  • NodeMCU, WemOS ose diçka e ngjashme
  • Dy unaza LED me dioda WS2812B (kam përdorur unaza të 16 -ta leds)
  • DFRobotDFPlayerMini - ky është mp3 player. Luan mp3 nga SDcard dhe komunikon me Arduino nga RX/TX
  • Folës
  • Kartë SD
  • Konvertuesi logjik -Unë e kam përdorur këtë, mp3 player përdor 5V dhe Arduino 3.3 kjo është arsyeja pse ne kemi nevojë për këtë konvertues
  • Njohuri dhe aftësi për të bërë PCB të thjeshta nga vetja jonë

Kulla:

  • kartoni - dy trashësi të ndryshme
  • Letër gjurmuese
  • fletë alumini

Hapi 2: Ndërtimi i Kullës

Ndërtesa e Kullës
Ndërtesa e Kullës
Ndërtesa e Kullës
Ndërtesa e Kullës
Ndërtesa e Kullës
Ndërtesa e Kullës
Ndërtesa e Kullës
Ndërtesa e Kullës

Mbi planin e kullës në pamje anësore (aventura ime me vizatimin teknik përfundoi në shkollën fillore), të gjitha dimensionet në milimetra.

Parimi i funksionimit

  1. unaza e LEDs që hedhin dritë
  2. Letër gjurmuese
  3. Koni i cunguar, i bërë nga kartoni dhe i mbuluar me fletë alumini, kështu që reflekton dritat nga unazat e led, në figurën 3 ‘= rrjeta e prerë
  4. tub kartoni - mban kullat vertikalisht, brenda tubit janë kabllo për led
  5. Lartësia varet nga ju kam 85mm
  6. Qëndrimi brenda të gjitha pjesëve elektronike

Të gjithë elementët horizontalë duhet të jenë prej kartoni më të trashë.

Hapi 3: Diagrami i telave

Diagrami i telave
Diagrami i telave
Diagrami i telave
Diagrami i telave
Diagrami i telave
Diagrami i telave
Diagrami i telave
Diagrami i telave

MP3 player furnizohet me tension 5V dhe komunikon me Arduino përmes TX / RX, nevojitet një konvertues logjik sepse vetë Arduino punon në tension 3.3V. Kontrolli i unazave është gjithashtu i lidhur me Arduino (D5, D6) përmes konvertuesit logjik.

Në depo, do të gjeni skedarë shqiponje me plane PCB

Unë sugjeroj që të mos lidhni përgjithmonë Arduino dhe mp3 player vetëm për të përdorur kunjat e arta femra

Hapi 4: Parimi i funksionimit

Arduino ynë lidhet me sistemin app.remoteme.org duke përdorur WebSockets (ka biblioteka të gatshme) përmes kësaj lidhje dërgohen mesazhe 5-bajtëshe:

  • bajti i parë i efektit të dritës për unazën e sipërme LED
  • efekti i dritës së bajtit të dytë për unazën LED të poshtme
  • numri i skedarit mp3 që do të luhet
  • numri i sekondave sa kohë do të luhet efekti i dritës dhe mp3
  • nëse mp3 duhet të luhet një herë ose në një lak

Kodi i burimit

Kodi i plotë burimor Mund ta gjeni këtu

në skedarët SingleRing.cpp dhe SingleRing.h ekziston një klasë për të kontrolluar efektet e unazave LED. Unë sugjeroj që të filloni duke parë funksionin setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); pushim; // off = 0 rast 1: setConfiguration (6, 0, 50, 0, 0, 20); pushim; // rast standard i ngurtë jeshil 2: setConfiguration (6, 0, 0, 50, 0, 20); pushim; // rast standard i ngurtë blu 3: setConfiguration (6, 50, 0, 0, 0, 20); pushim; // rast i fortë i kuq standard 4: setConfiguration (6, 50, 10, 0, 0, 20); pushim; // rast standard i ngurtë portokalli 5: setConfiguration (1, 0, 100, 0, 5, 2); pushim; // policia rast jeshil 6: setConfiguration (1, 0, 100, 0, 5, -2); pushim; // policia kthen rastin e gjelbër 7: setConfiguration (1, 0, 0, 100, 5, 2); pushim; // policia rast blu në drejtim të akrepave të orës 8: setConfiguration (1, 0, 0, 100, 5, -2); pushim; // policia kthen rastin blu 9: setConfiguration (1, 100, 0, 0, 5, 2); pushim; // rasti i kuq standard i policisë 10: setConfiguration (1, 100, 0, 0, 5, -2); pushim; // policia kthen rastin e kuq 11: setConfiguration (1, 100, 20, 0, 5, 2); pushim; // rasti standard i policisë portokalli 12: setConfiguration (1, 100, 20, 0, 5, -2); pushim; // policia rikthen rastin portokalli 13: setConfiguration (2, 0, 0, 50, 8, 10); pushim; // kryq rast blu standard 14: setConfiguration (2, 0, 0, 50, 8, -10); pushim; // kryq ktheje rastin blu 15: setConfiguration (5, 0, 50, 0, 0, 20); pushim; // blink rast i gjelbër standard 16: setConfiguration (5, 0, 50, 0, 0, -20); pushim; // blink odwyrtka rasti jeshil 17: setConfiguration (5, 0, 0, 50, 0, 20); pushim; // vezullimi i rastit blu standard 18: setConfiguration (5, 0, 0, 50, 0, -20); pushim; // blink ktheje rastin blu 19: setConfiguration (5, 50, 0, 0, 0, 20); pushim; // mbyll dritaren standarde të kuqe 20: setConfiguration (5, 50, 0, 0, 0, -20); pushim; // blink ktheje rastin e kuq 21: setConfiguration (5, 50, 10, 0, 0, 20); pushim; // vezullimi i rastit portokalli standard 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blink ktheje portokalli default: setConfiguration (0, 0, 50, 0, 5, 1); pushim; // joaktiv = 0}}

në varësi të parametrit të dhënë, unaza do të shfaqë efektin. Ju mund të shtoni efektin tuaj duke thirrur funksionin e vendosur Konfigurimi me parametra të rinj (ndryshimi i ngjyrës, shpejtësia e shfaqjes) duke shtuar një mënyrë të re, ose duke shtuar një efekt krejtësisht të ri - ose më tregoni në komente nëse më pëlqen do të shtoj efekt të ri

arduino.ino:

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

#përfshi

#include #include #include "SingleRing.h"

#përfshi

#përfshi #përfshi

#përfshi

#përcakto WIFI_NAME ""

#define WIFI_PASSWORD "" #përcaktoni DEVICE_ID 205 #përcaktoni sirenën e DEVICE_NAME "#define TOKEN""

#përcakto DIODES_COUNT 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing fund = 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.fillo (115200);

nëse (! myDFPlayer.begin (mySoftwareSerial)) {// Përdorni softwareSerial për të komunikuar me mp3.

Serial.println (F ("Në pamundësi për të filluar:")); Serial.println (F ("1. Ju lutem kontrolloni përsëri lidhjen!")); Serial.println (F ("2. Ju lutemi futni kartën SD!")); ndërsa (e vërtetë); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Vendosni kohën e komunikimit serik 500ms

vëllimi i myDFPlayer (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); ndërsa (WiFiMulti.run ()! = WL_CONNECTED) {vonesë (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

fund.setup (); lart.i qartë (); fundi.i qartë (); }

boolean turnOff = e vërtetë;

turn i gjatë i panënshkruarOffMillis = 0;

void onUserMessage (uint16_t dërguesiDeviceId, uint16_t dataSize, uint8_t *data) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); koha uint8_t = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); mënyra uint8_t = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos);

bottom.setMode (fundMode);

top.setMode (topMode); if (modaliteti == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * kohë; }

lak void ()

{remoteMe.loop (); top.loop (); fund.loop (); nëse (turnOffMillis

}

shpjegim:

#define WIFI_NAME "" #përcakto WIFI_PASSWORD "" #përcakto DEVICE_ID 205 #define DEVICE_NAME "njoftues" #define TOKEN ""

Ne duhet të sigurojmë të dhënat e mësipërme, udhëzime të hollësishme këtu në lidhjen gjithashtu kam treguar se si të regjistroheni në remoteme.org dhe të gjeneroni shenjën, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); koha uint8_t = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos); mënyra uint8_t = RemoteMeMessagesUtils:: getUint8 (të dhëna, pos);

bottom.setMode (fundMode);

top.setMode (topMode); if (modaliteti == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * kohë; }

Ky funksion do të thirret kur mesazhi të vijë tek Arduino dhe të shfaqë njoftimin. Kodi është aq i qartë sa përshkruan veten. Unë i referohem detajeve të klasave në dokumentacion këtu dhe këtu

void loop () {remoteMe.loop (); top.loop (); fund.loop (); nëse (turnOffMillis <millis ()) {

nëse (! TurnOff) {

lart.i qartë ();

fundi.i qartë (); myDFPlayer.stop (); turnOff = e vërtetë; }}

Në lak, ne i quajmë funksionet e lakut të objekteve, dhe gjithashtu nëse koha e shfaqjes së njoftimeve ka kaluar, fikim diodat dhe zërin.

Hapi 5: Mp3 Player

Mp3 Player
Mp3 Player

Ai komunikon me Arduino përmes TX / RX - Detajet e vetë lojtarit këtu, dhe bibliotekën këtu

Ne ngarkojmë skedarë mp3 në kartën SD. Skedarët në kartelë renditen sipas alfabetit dhe më pas duke telefonuar:

myDFPlayer.play (5);

Ne luajmë skedarin e pestë nga karta SD nga drejtoria rrënjësore. Kjo është arsyeja pse është mirë të jepni skedarë në parashtesat e kartës SD 01, 02 etj. Në rastin tim duket si në ekranin e printimit të mësipërm

Për të gjeneruar komanda zanore Mund të përdorni këtë faqe.

Hapi 6: Ngarkimi i Programit në Arduino

Ngarkimi i Programit në Arduino
Ngarkimi i Programit në Arduino
Ngarkimi i Programit në Arduino
Ngarkimi i Programit në Arduino

Para se të ngarkoni skicën në Arduino, Ju duhet të shkarkoni bibliotekat e nevojshme këtu do të gjeni udhëzime të hollësishme

përveç kësaj, ne duhet të instalojmë bibliotekën DFRobotDFPlayerMini dhe Adafruit_NeoPixel

Hapi 7: Kontrolli

Kontroll
Kontroll
Kontroll
Kontroll

Ne i dërgojmë Arduino -s tonë pesë bajtë

  • bajti i parë i efektit të dritës për unazën e sipërme LED
  • efekti i dritës së bajtit të dytë për unazën LED të poshtme
  • numri i skedarit mp3 që do të luhet
  • numri i sekondave sa kohë do të luhet efekti i dritës dhe mp3
  • nëse mp3 duhet të luhet një herë ose në një lak (1 nëse duhet të luhet në një lak)

Duke dërguar byte

07 0F 01 05 01

Unaza e sipërme do të tregojë dritat e policisë (mënyra 6) e poshtme një dritë jeshile (modaliteti 15) (shikoni funksionin e setMode në singleRing.cpp dhe komentet pranë tij). Skedari i parë nga karta SD do të luhet për 5 sekonda. Dhe skedari do të luhet në lak (kontrolloni funksioninUserMessage në arduino.ino)

Le t'i dërgojmë këto byte. Shikoni ekranin e mësipërm dhe klikoni ikonat sipas rendit të shkruar nga 1, 2, 3. Dritarja shfaqet

Pastaj shikoni ekranin e dytë - dhe mbushni dritaren si në ekranin e dytë

Dritarja që shfaqet përdoret për të dërguar mesazhe në pajisje. Në fushën 1, zgjidhni pajisjen dërguese - sepse kemi vetëm një pajisje, ne e zgjedhim atë (kjo është një fushë e detyrueshme dhe nuk ka rëndësi se është e njëjta pajisje për të cilën ne dërgojmë një mesazh) Në fushën 2 ne i japim byte send (me të kuqe vlera që kemi futur në 2 do të përfaqësohet si një varg) pastaj klikoni butonin Dërgo.

Pas dërgimit të mesazhit, njoftuesi ynë duhet të reagojë duke shfaqur efektet e duhura të ndriçimit dhe duke luajtur mp3 -in e zgjedhur. Ju inkurajoj të provoni efekte të ndryshme duke dhënë dy bajtët e parë të një numri midis 0 dhe 22 (shikoni përshkrimin në funksionin setMode).

Hapi 8: Dërgimi i Mesazheve duke Përdorur URL -të

Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL
Dërgimi i mesazheve duke përdorur URL

Nëse duam të shfaqim njoftimet nga një aplikacion i jashtëm p.sh. me IFTTT, duhet të kemi një URL që do të bëjë saktësisht të njëjtën gjë siç bëmë në dritare në hapin e mëparshëm. remoteme.org siguron REST APi. Shkoni tek ajo duke klikuar në skedën swagger në të majtë (e fundit). Një faqe do të shfaqet, në këtë faqe ne gjithashtu mund të provojmë URL -të tona.

Në ekranin e parë Ju keni funksionin Ju duhet të zgjeroni, pastaj mbushni të dhënat si në ekranin e dytë.

plotësoni të dhënat si në pamjen e mësipërme të ekranit. Pasi të klikojmë ekzekutimin do të dërgojmë një mesazh

070F010501

Marrësi është pajisja me 205 id, e njëjta pajisje është gjithashtu një dërgues. MesazhiId me cilësimet "Jo_RENEVAL" është i parëndësishëm. Dhe pastaj klikoni Ekzekuto. Njoftuesi do të reagojë në të njëjtën mënyrë si kur dërgoni mesazhe nga aplikacioni. Pasi të keni thirrur REST më poshtë është URL -ja që u thirr - shikoni ekranin e tretë. Dhe kopjimi dhe ngjitja në URL -në e shfletuesit është shënuar me kufi jeshil. Në ekranin e katërt shfletuesi im i kromit pasi URL ishte ngjitur

Në rastin tim, URL -ja është:

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

Hapi 9: URL Anime për të Dërguar Mesazh

URL Anime për të Dërguar Mesazh
URL Anime për të Dërguar Mesazh

Në hapin e mëparshëm Ju keni një URL e cila dërgon të dhëna në pajisjen tuaj. Fatkeqësisht, pasi të dilni nga app.remoteme.org, ai ndalon së punuari. Kjo ndodh sepse ne nuk siguruam shenjën e vërtetimit dhe nuk jemi më të kyçur. Le të marrim shenjën tonë (ose të krijojmë një të re) dhe ta ngjisim në URL në vend të yllit.

Shikoni ekranin dhe zëvendësoni * në URL me shenjën tuaj

në rastin tim shenja është:

~ 267_ZxoWtJ) 0ph & 2c

kështu që URL -ja ime përfundimtare duket si:

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

Tani mund ta quajmë edhe nëse nuk jemi të kyçur. Dhe kur të thirret, një mesazh do të dërgohet në pajisjen tonë 205

Hapi 10: Integrimi me IFTTT 1/7

Integrimi me IFTTT 1/7
Integrimi me IFTTT 1/7

Url e krijuar në hapin e mësipërm është e përshtatshme për ekzekutim nga aplikacione të jashtme. Si ta përdor do ta tregoj në IFTTT. Unë do ta konfiguroj atë në mënyrë që njoftuesi të ndizet kur një email vjen në adresën e postës elektronike (llogari Gmail).

Hyni në IFTTT. Pastaj shkoni te skeda Apletet e Mia dhe më pas "Apleti i ri"- ekrani i parë

Hapi 11: Integrimi me IFTTT 2/7

Integrimi me IFTTT 2/7
Integrimi me IFTTT 2/7

Tjetra klikoni "+këtë"

Hapi 12: Integrimi me IFTTT 3/7

Integrimi me IFTTT 3/7
Integrimi me IFTTT 3/7

Pastaj në fushën "Shërbimet e kërkimit" shkruani "Gmail"

Pastaj "email i ri në kutinë hyrëse" (Mund të nevojiten disa konfigurime).

Hapi 13: Integrimi me IFTTT 4/7

Integrimi me IFTTT 4/7
Integrimi me IFTTT 4/7

Tani ne klikojmë në "+ atë"

Hapi 14: Integrimi me IFTTT 5/7

Integrimi me IFTTT 5/7
Integrimi me IFTTT 5/7

gjeni "Webhooks" dhe klikoni mbi të

Hapi 15: Integrimi me IFTTT 6/7

Integrimi me IFTTT 6/7
Integrimi me IFTTT 6/7

pastaj "Bëni një kërkesë në internet"

Hapi 16: Integrimi me IFTTT 7/7

Integrimi me IFTTT 7/7
Integrimi me IFTTT 7/7

ne plotësojmë URL -në e url -it tonë me shenjën. Lloji i përmbajtjes në aplikacion / json dhe klikoni "krijoni veprim" dhe Përfundo. Tani kemi apletin tonë:

Hapi 17: Përmbledhje

Në këtë tutorial, unë tregova se si t'i dërgojmë mesazhe Arduino -s tonë nga sistemet e jashtme. Ne gjithashtu integrojmë një sistem tjetër pastaj IFTTT në një mënyrë të ngjashme. Jo domosdoshmërisht duhet të jetë një "njoftues" që doja të tregoja në këtë shembull se si të dërgoni mesazhe nga sistemet e jashtme në Arduino -n tonë.

kodet e burimeveFanPage në Facebook

Urime, Maciek

Recommended: