Obsah:

Notifikátor: 17 kroků
Notifikátor: 17 kroků

Video: Notifikátor: 17 kroků

Video: Notifikátor: 17 kroků
Video: TECHROOM 2024 - máme novinky z CESu 🤙! 2024, Listopad
Anonim
Notifikátor
Notifikátor

Zařízení lze připojit například k systému IFTTT a reagovat, když se objeví nová pošta. Na app.remoteme.org vygenerujeme odkaz po volání, které bajty budou odeslány do Arduina, a Arduino zobrazí nějaký světelný efekt a přehraje mp3 z SD karty

Krok 1: Co je potřeba

Co je potřeba
Co je potřeba
Co je potřeba
Co je potřeba
  • NodeMCU, WemOS nebo něco podobného
  • Dva LED kroužky s diodami WS2812B (použil jsem 16. LED diody)
  • DFRobotDFPlayerMini - toto je mp3 přehrávač. Přehrává mp3 z SD karty a komunikuje s Arduino od RX/TX
  • mluvčí
  • SD karta
  • Logický převodník -Použil jsem tento, mp3 přehrávač používá 5V a Arduino 3.3, proto potřebujeme tento převodník
  • Znalosti a dovednosti pro výrobu jednoduchých PCB vlastními silami

Věž:

  • lepenka - dvě různé tloušťky
  • Pauzovací papír
  • hliníková fólie

Krok 2: Budova věže

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

Nad půdorysem věže v bočním pohledu (moje dobrodružství s technickým výkresem skončilo na základní škole), všechny rozměry v milimetrech.

Princip činnosti

  1. kruh LED svítí
  2. Pauzovací papír
  3. Zkrácený kužel, vyrobený z lepenky a pokrytý hliníkovou fólií, takže odráží světla z LED kroužků, na obrázku 3 ‘= vyříznutá síťka
  4. kartonová trubice - drží věže svisle, uvnitř trubice jsou kabely pro ledky
  5. Výška závisí na vás, mám 85 mm
  6. Stojan uvnitř všech částí elektroniky

Všechny vodorovné prvky by měly být vyrobeny ze silnější lepenky.

Krok 3: Schéma zapojení

Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma

MP3 přehrávač je dodáván s napětím 5V a komunikuje s Arduino přes TX / RX, je potřeba logický převodník, protože samotný Arduino pracuje na napětí 3,3V. Ovládání prstenů je také připojeno k Arduinu (D5, D6) prostřednictvím logického převaděče.

V úložišti najdete orlí soubory s plány PCB

Doporučuji trvale nepájet Arduino a mp3 přehrávač pouze pro použití zlatých pinů

Krok 4: Princip činnosti

Naše Arduino se připojuje k systému app.remoteme.org pomocí WebSockets (existují připravené knihovny) prostřednictvím tohoto připojení jsou odesílány 5bajtové zprávy:

  • první bajt světelného efektu pro horní prstenec LED
  • světelný efekt druhého bajtu pro spodní prstenec LED
  • číslo přehrávaného souboru mp3
  • počet sekund, jak dlouho se bude světelný efekt a mp3 přehrávat
  • zda se má mp3 přehrávat jednou nebo ve smyčce

zdrojový kód

Celý zdrojový kód najdete zde

v souborech SingleRing.cpp a SingleRing.h existuje třída pro ovládání efektů LED kroužků. Doporučuji začít tím, že se podíváte na funkci setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 případ 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // solid standard green case 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // solid standard blue case 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // plný standardní červený případ 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // plné standardní oranžové pouzdro 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policie ve směru hodinových ručiček zelený případ 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // policejní návrat zelený případ 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // policie ve směru hodinových ručiček modrý případ 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // police revert blue case 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // policejní standard červený případ 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // police revert red case 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // policejní standardní oranžové pouzdro 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // policie vrátí oranžový případ 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // cross standard blue case 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // bliká standardní zelené pouzdro 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // bliknutí odwyrtka zelené pouzdro 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // blikání standardní modrý případ 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // blikání vrátit modrý případ 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // blikání standardní červený případ 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // blikání vrátit červený případ 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // bliká standardní oranžové pouzdro 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blikání vrátit oranžovou výchozí: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0}}

v závislosti na daném parametru prsten zobrazí efekt. Svůj vlastní efekt můžete přidat voláním funkce setConfiguration s novými parametry (změna barvy, rychlost zobrazení) přidáním nového režimu nebo přidáním zcela nového efektu - nebo mi dejte vědět do komentářů, jestli se mi to líbí, přidám nový efekt

arduino.ino:

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

#zahrnout

#include #include #include "SingleRing.h"

#zahrnout

#include #include

#zahrnout

#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 dole = SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

neplatné nastavení () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Ke komunikaci s mp3 používejte softwareSerial.

Serial.println (F ("Nelze spustit:")); Serial.println (F („1. Znovu zkontrolujte připojení!“)); Serial.println (F („2. Vložte SD kartu!“)); while (true); } Serial.println (F („DFPlayer Mini online.“));

myDFPlayer.setTimeOut (500); // Nastavte časový limit sériové komunikace 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) {delay (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean TurnOff = true;

dlouhé znaménko bez znaménka OffMillis = 0;

neplatné onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {

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

bottom.setMode (bottomMode);

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

prázdná smyčka ()

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

}

vysvětlení:

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

Musíme poskytnout výše uvedená data, podrobné pokyny zde v odkazu a také jsem ukázal, jak se zaregistrovat na remoteme.org a vygenerovat token, neplatné onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (data, pos);

bottom.setMode (bottomMode);

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

Tato funkce bude vyvolána, když zpráva přijde na Arduino a zobrazí oznámení. Kód je tak jasný, že se sám popisuje. Odkazuji na podrobnosti o třídách v dokumentaci zde a zde

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

if (! turnOff) {

top.clear ();

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

Ve smyčce voláme smyčkové funkce objektů a také pokud uplynul čas zobrazení notifikací, vypneme diody a zvuk.

Krok 5: Přehrávač MP3

Mp3 přehrávač
Mp3 přehrávač

Komunikuje s Arduino přes TX / RX - podrobnosti o samotném přehrávači zde a knihovně zde

Nahráváme soubory mp3 na kartu SD. Soubory na kartě jsou seřazeny podle abecedy a poté voláním:

myDFPlayer.play (5);

Přehrajeme pátý soubor z SD karty z kořenového adresáře. Proto je dobré dát souborům na SD kartě předpony 01, 02 atd. V mém případě to vypadá jako na výše uvedeném printscreenu

Generování hlasových příkazů Můžete použít tuto stránku.

Krok 6: Nahrání programu do Arduina

Nahrání programu do Arduina
Nahrání programu do Arduina
Nahrání programu do Arduina
Nahrání programu do Arduina

Před nahráním skici do Arduina si zde musíte stáhnout potřebné knihovny, kde najdete podrobné pokyny

dále musíme nainstalovat knihovnu DFRobotDFPlayerMini a Adafruit_NeoPixel

Krok 7: Ovládání

Řízení
Řízení
Řízení
Řízení

Posíláme našemu Arduinu pět bajtů

  • první bajt světelného efektu pro horní prstenec LED
  • světelný efekt druhého bajtu pro spodní prstenec LED
  • číslo přehrávaného souboru mp3
  • počet sekund, jak dlouho se bude světelný efekt a mp3 přehrávat
  • zda by měl být mp3 přehráván jednou nebo ve smyčce (1, pokud by měl být přehráván ve smyčce)

Odesláním bajtů

07 0F 01 05 01

Horní prstenec bude ukazovat policejní světla (režim 6), spodní bliká zeleně (režim 15) (podívejte se na funkci setMode na singleRing.cpp a komentáře vedle ní). První soubor z karty SD se přehraje po dobu 5 sekund. A soubor se přehraje ve smyčce (zkontrolujte funkci onUserMessage na arduino.ino)

Pošleme tyto bajty. Podívejte se na obrazovku výše a klikněte na ikony v pořadí zapsaném 1, 2, 3. Zobrazí se okno

Poté se podívejte na druhou obrazovku - a vyplňte okno jako na druhé obrazovce

Okno, které se zobrazí, slouží k odesílání zpráv do zařízení. V poli 1 vyberte odesílací zařízení - protože máme pouze jedno zařízení, vybereme ho (toto je povinné pole a nezáleží na tom, že se jedná o stejné zařízení, kterému posíláme zprávu) V poli 2 dáváme bajty odeslat (červeně bude hodnota, kterou jsme zadali do 2, reprezentována jako řetězec), poté klikněte na tlačítko Odeslat.

Po odeslání zprávy by měl náš oznamovatel reagovat zobrazením příslušných světelných efektů a přehráváním zvoleného mp3. Doporučuji vám vyzkoušet různé efekty zadáním prvních dvou bajtů čísla mezi 0 a 22 (viz popis ve funkci setMode).

Krok 8: Odesílání zpráv pomocí adres URL

Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL
Odesílání zpráv pomocí adres URL

Pokud chceme zobrazovat oznámení z externí aplikace např. S IFTTT, potřebujeme mít URL, které bude dělat přesně to samé, co jsme dělali v okně v předchozím kroku. remoteme.org poskytuje REST APi. Přejděte na ni kliknutím na záložku Swagger vlevo (poslední). Zobrazí se stránka, na které můžeme také vyzkoušet naše adresy URL.

Na první obrazovce máte funkci, kterou potřebujete rozbalit, a poté vyplňte data jako na druhé obrazovce.

vyplňte údaje jako na výše uvedeném snímku obrazovky. Po kliknutí na spustit odešleme zprávu

070F010501

Přijímač je zařízení s 205 id, stejné zařízení je také odesílatelem. MessageId s nastavením „No_RENEVAL“není relevantní. A pak klikněte na Execute. Notificator bude reagovat stejným způsobem jako při odesílání zpráv z aplikace. Po volání REST níže je uvedena adresa URL, která byla volána - podívejte se na třetí obrazovku. A zkopírovat a vložit na adresu URL prohlížeče bylo označeno zeleným okrajem. Na čtvrté obrazovce byl vložen můj prohlížeč Chrome po vložení adresy URL

V mém případě je adresa URL:

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

Krok 9: Anymous URL to Send Message

Stejná adresa URL pro odeslání zprávy
Stejná adresa URL pro odeslání zprávy

V předchozím kroku máte adresu URL, která odesílá data do vašeho zařízení. Bohužel po odhlášení z app.remoteme.org přestane fungovat. Důvodem je, že jsme neposkytli ověřovací token a již nejsme přihlášeni. Pojďme získat náš token (nebo vytvořte nový) a vložte jej do adresy URL místo hvězdy.

Podívejte se na obrazovku a nahraďte * v URL svým tokenem

v mém případě je token:

~ 267_ZxoWtJ) 0ph & 2c

moje cílová URL tedy vypadá takto:

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

Nyní jej můžeme zavolat, i když nejsme přihlášeni. A když je vyvolán, bude na naše zařízení odeslána zpráva 205

Krok 10: Integrace s IFTTT 1/7

Integrace s IFTTT 1/7
Integrace s IFTTT 1/7

Adresa URL vytvořená v kroku výše je vhodná pro spuštění externími aplikacemi. Jak jej používat, ukážu na IFTTT. Nakonfiguruji to tak, aby se oznamovatel zapnul, když přijde e -mail na e -mailovou adresu (účet Gmail).

Přihlaste se do IFTTT. Poté přejděte na kartu Moje aplety a poté „Nový aplet“- první obrazovka

Krok 11: Integrace s IFTTT 2/7

Integrace s IFTTT 2/7
Integrace s IFTTT 2/7

Dále klikněte na „+toto“

Krok 12: Integrace s IFTTT 3/7

Integrace s IFTTT 3/7
Integrace s IFTTT 3/7

Poté do pole „Vyhledávací služby“napište „Gmail“

Poté „nový e -mail ve složce Doručená pošta“(Může být potřeba určitá konfigurace).

Krok 13: Integrace s IFTTT 4/7

Integrace s IFTTT 4/7
Integrace s IFTTT 4/7

nyní klikneme na „+ to“

Krok 14: Integrace s IFTTT 5/7

Integrace s IFTTT 5/7
Integrace s IFTTT 5/7

najděte „Webhooks“a klikněte na něj

Krok 15: Integrace s IFTTT 6/7

Integrace s IFTTT 6/7
Integrace s IFTTT 6/7

poté „Vytvořit webový požadavek“

Krok 16: Integrace s IFTTT 7/7

Integrace s IFTTT 7/7
Integrace s IFTTT 7/7

doplníme URL naší adresy URL tokenem. Typ obsahu pro aplikaci / JSON a klikněte na „Vytvořit akci“a Dokončit. Nyní máme náš applet:

Krok 17: Shrnutí

V tomto tutoriálu jsem ukázal, jak odesílat zprávy našim Arduino z externích systémů. Podobným způsobem integrujeme také jiný systém než IFTTT. Nemusí to být nutně „oznamovatel“. Chtěl jsem v tomto příkladu ukázat, jak posílat zprávy z vnějších systémů do našeho Arduina.

sourcecodesFanPage na Facebooku

Na zdraví, Maciku

Doporučuje: