Inhaltsverzeichnis:

Benachrichtigung: 17 Schritte
Benachrichtigung: 17 Schritte

Video: Benachrichtigung: 17 Schritte

Video: Benachrichtigung: 17 Schritte
Video: iOS 17 Einstellungen, die du SOFORT abschalten solltest 2024, Juli
Anonim
Benachrichtigung
Benachrichtigung

Das Gerät kann beispielsweise an das IFTTT-System angeschlossen werden und reagiert, wenn eine neue Mail erscheint. Bei app.remoteme.org generieren wir nach dem Aufrufen einen Link, der Bytes an Arduino sendet, und Arduino zeigt einen Lichteffekt an und spielt einige MP3-Dateien von der SD-Karte ab

Schritt 1: Was wird benötigt?

Was wird benötigt
Was wird benötigt
Was wird benötigt
Was wird benötigt
  • NodeMCU, WemOS oder ähnliches
  • Zwei LED-Ringe mit WS2812B-Dioden (ich habe 16. LED-Ringe verwendet)
  • DFRobotDFPlayerMini – das ist ein MP3-Player. Es spielt mp3 von der SD-Karte ab und kommuniziert mit Arduino über RX/TX
  • Lautsprecher
  • SD-Karte
  • Logikkonverter -Ich habe diesen verwendet, der MP3-Player verwendet 5V und Arduino 3.3, deshalb brauchen wir diesen Konverter
  • Kenntnisse und Fähigkeiten, um einfache Leiterplatten selbst herzustellen

Der Turm:

  • Karton – zwei verschiedene Stärken
  • Transparentpapier
  • Aluminiumfolie

Schritt 2: Turmgebäude

Turmgebäude
Turmgebäude
Turmgebäude
Turmgebäude
Turmgebäude
Turmgebäude
Turmgebäude
Turmgebäude

Oben der Plan des Turms in Seitenansicht (mein Abenteuer mit der technischen Zeichnung endete in der Grundschule), alle Maße in Millimeter.

Funktionsprinzip

  1. Ring aus LEDs, die Licht erhellen
  2. Transparentpapier
  3. Der Kegelstumpf aus Pappe und mit Aluminiumfolie bedeckt, so dass er Licht von LED-Ringen reflektiert, in Abbildung 3 ' = das ausgeschnittene Netz
  4. Kartonrohr – hält die Türme vertikal, im Inneren des Rohres befinden sich Kabel für LEDs
  5. Die Höhe hängt von dir ab, ich habe 85mm
  6. Der Ständer in allen Elektronikteilen

Alle horizontalen Elemente sollten aus dickerem Karton bestehen.

Schritt 3: Schaltplan

Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan

Der MP3-Player wird mit 5V Spannung versorgt und kommuniziert mit Arduino über TX/RX, ein Logikwandler wird benötigt, da der Arduino selbst mit 3,3V Spannung arbeitet. Die Steuerung der Ringe ist auch über den Logikwandler mit Arduino (D5, D6) verbunden.

Im Repository finden Sie Eagle-Dateien mit PCB-Plänen

Ich schlage vor, Arduino und den MP3-Player nicht dauerhaft zu löten, nur um weibliche Goldpins zu verwenden

Schritt 4: Funktionsprinzip

Unser Arduino verbindet sich über WebSockets (es gibt fertige Bibliotheken) mit dem app.remoteme.org-System. Über diese Verbindung werden 5-Byte-Nachrichten gesendet:

  • das erste Byte des Lichteffekts für den oberen LED-Ring
  • zweites Byte Lichteffekt für den unteren LED-Ring
  • die Nummer der abzuspielenden mp3-Datei
  • die Anzahl der Sekunden, wie lange der Lichteffekt und die mp3 abgespielt werden
  • ob mp3 einmal oder in einer Schleife abgespielt werden soll

Quellcode

Den gesamten Quellcode finden Sie hier

in den Dateien SingleRing.cpp und SingleRing.h gibt es eine Klasse zum Steuern der Effekte von LED-Ringen. Ich schlage vor, dass Sie sich zunächst die Funktion setMode(int m) ansehen:

void SingleRing::setMode (int m) { switch (m) { case 0: setConfiguration (0, 0, 50, 0, 5, 1); brechen; // aus = 0 Fall 1: setConfiguration (6, 0, 50, 0, 0, 20); Pause; // durchgehend grüner Standardfall 2: setConfiguration (6, 0, 0, 50, 0, 20); Pause; // solider blauer Standardfall 3: setConfiguration (6, 50, 0, 0, 0, 20); Pause; // solider roter Standardfall 4: setConfiguration (6, 50, 10, 0, 0, 20); Pause; // solider orangefarbener Standardfall 5: setConfiguration (1, 0, 100, 0, 5, 2); Pause; // Polizei im Uhrzeigersinn grüner Fall 6: setConfiguration (1, 0, 100, 0, 5, -2); Pause; // Polizei hebt grünen Fall zurück 7: setConfiguration (1, 0, 0, 100, 5, 2); Pause; // Polizei im Uhrzeigersinn blauer Fall 8: setConfiguration (1, 0, 0, 100, 5, -2); Pause; // Polizei kehrt blaues Gehäuse zurück 9: setConfiguration (1, 100, 0, 0, 5, 2); Pause; // Polizeistandard roter Fall 10: setConfiguration (1, 100, 0, 0, 5, -2); brechen; // Polizei kehrt den roten Fall zurück 11: setConfiguration (1, 100, 20, 0, 5, 2); Pause; // Polizei Standard orange Fall 12: setConfiguration (1, 100, 20, 0, 5, -2); brechen; // Polizei kehrt orange Fall zurück 13: setConfiguration (2, 0, 0, 50, 8, 10); brechen; // kreuzen Sie den blauen Standardfall 14: setConfiguration (2, 0, 0, 50, 8, -10); Pause; // Kreuzrückkehr blauer Fall 15: setConfiguration (5, 0, 50, 0, 0, 20); Pause; // Blinken Standard grün Fall 16: setConfiguration (5, 0, 50, 0, 0, -20); Pause; // blinken odwyrtka grün Fall 17: setConfiguration (5, 0, 0, 50, 0, 20); Pause; // blinken Standard blau Fall 18: setConfiguration (5, 0, 0, 50, 0, -20); Pause; // Blinken zurück blaues Gehäuse 19: setConfiguration (5, 50, 0, 0, 0, 20); Pause; // blinken standardmäßig roter Fall 20: setConfiguration (5, 50, 0, 0, 0, -20); Pause; // Blinken zurück rot Fall 21: setConfiguration (5, 50, 10, 0, 0, 20); Pause; // blinken Standard orange Fall 22: setConfiguration (5, 50, 10, 0, 0, -20); Pause; // Blinken zurück orange Standard: setConfiguration (0, 0, 50, 0, 5, 1); brechen; // aus = 0 } }

abhängig vom angegebenen Parameter zeigt der Ring den Effekt an. Sie können Ihren eigenen Effekt hinzufügen, indem Sie die Funktion setConfiguration mit neuen Parametern (Farbwechsel, Anzeigegeschwindigkeit) aufrufen, indem Sie einen neuen Modus hinzufügen, oder einen völlig neuen Effekt hinzufügen – oder lassen Sie es mich in den Kommentaren wissen, wenn es mir gefällt, ich werde einen neuen Effekt hinzufügen

arduino.ino:

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

#enthalten

#include #include #include "SingleRing.h"

#enthalten

#einschließen #einschließen

#enthalten

#define WIFI_NAME ""

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

#define DIODES_COUNT 16

SingleRing oben = SingleRing(DIODES_COUNT, D5);

SingleRing unten = 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)) { //Verwenden Sie softwareSerial, um mit mp3 zu kommunizieren.

Serial.println (F ("kann nicht beginnen:")); Serial.println (F ("1. Bitte überprüfen Sie die Verbindung erneut!")); Serial.println (F ("2. Bitte legen Sie die SD-Karte ein!")); während (wahr); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut(500); // Setze die Zeitüberschreitung für die serielle Kommunikation auf 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) { Verzögerung (100); }

remoteMe.setUserMessageListener(onUserMessage);

remoteMe.setupTwoWayCommunication();

remoteMe.sendRegisterDeviceMessage(DEVICE_NAME);

top.setup();

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

boolescher Wert ausgeschaltet = wahr;

unsigned long turnOffMillis = 0;

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

uint16_tpos = 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); } ausgeschaltet = falsch; turnOffMillis = millis() + 1000 * Zeit; }

Leere Schleife ()

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

}

Erläuterung:

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

Wir müssen die oben genannten Daten bereitstellen, detaillierte Anweisungen hier unter dem Link. Außerdem habe ich gezeigt, wie Sie sich bei remoteme.org registrieren und den Token generieren.

void 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); } ausgeschaltet = falsch; turnOffMillis = millis() + 1000 * Zeit; }

Diese Funktion wird aufgerufen, wenn die Nachricht an Arduino kommt und die Benachrichtigung anzeigt. Der Code ist so klar, dass er sich selbst beschreibt. Die Details der Kurse verweise ich auf die Dokumentation hier und hier

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

if (!ausgeschaltet) {

top.clear();

unten.clear(); myDFPlayer.stop(); ausgeschaltet = wahr; } }

In der Schleife rufen wir die Schleifenfunktionen der Objekte auf, und auch wenn die Anzeigezeit von Benachrichtigungen abgelaufen ist, schalten wir die Dioden und den Ton aus.

Schritt 5: MP3-Player

MP3-Player
MP3-Player

Es kommuniziert mit Arduino über TX / RX – Details des Players selbst hier und der Bibliothek hier

Wir laden mp3-Dateien auf die SD-Karte hoch. Dateien auf der Karte werden alphabetisch sortiert und dann durch Aufrufen von:

myDFPlayer.play(5);

Wir spielen die fünfte Datei von der SD-Karte aus dem Stammverzeichnis ab. Deshalb ist es gut, Dateien auf der SD-Karte mit den Präfixen 01, 02 usw. zu versehen. In meinem Fall sieht es wie auf dem obigen Druckbildschirm aus

So generieren Sie Sprachbefehle Sie können diese Seite verwenden.

Schritt 6: Hochladen des Programms auf Arduino

Hochladen des Programms auf Arduino
Hochladen des Programms auf Arduino
Hochladen des Programms auf Arduino
Hochladen des Programms auf Arduino

Bevor Sie die Skizze auf Arduino hochladen, müssen Sie die erforderlichen Bibliotheken herunterladen. Hier finden Sie detaillierte Anweisungen

zusätzlich müssen wir die DFRobotDFPlayerMini-Bibliothek und Adafruit_NeoPixel installieren

Schritt 7: Kontrolle

Steuerung
Steuerung
Steuerung
Steuerung

Wir senden an unseren Arduino fünf Bytes

  • das erste Byte des Lichteffekts für den oberen LED-Ring
  • zweites Byte Lichteffekt für den unteren LED-Ring
  • die Nummer der abzuspielenden mp3-Datei
  • die Anzahl der Sekunden, wie lange der Lichteffekt und die mp3 abgespielt werden
  • ob mp3 einmal oder in einer Schleife abgespielt werden soll (1 wenn sie in einer Schleife abgespielt werden soll)

Durch das Senden von Bytes

07 0F 01 05 01

Der obere Ring zeigt die Polizeilichter (Modus 6) und der untere blinkt grün (Modus 15) (siehe die setMode-Funktion auf singleRing.cpp und die Kommentare daneben). Die erste Datei von der SD-Karte wird 5 Sekunden lang abgespielt. Und die Datei wird in der Schleife abgespielt (Funktion auf UserMessage bei arduino.ino prüfen)

Senden wir diese Bytes. Sehen Sie sich den Bildschirm oben an und klicken Sie in der Reihenfolge 1, 2, 3 auf die Symbole. Das Fenster wird angezeigt

Dann schauen Sie auf den zweiten Bildschirm - und füllen Sie das Fenster wie auf dem zweiten Bildschirm

Das angezeigte Fenster wird verwendet, um Nachrichten an das Gerät zu senden. In Feld 1 wählen Sie das Sendergerät aus – da wir nur ein Gerät haben, wählen wir es aus (dies ist ein Pflichtfeld und es spielt keine Rolle, dass es dasselbe Gerät ist, an das wir eine Nachricht senden) In Feld 2 geben wir Bytes an senden (in Rot wird der in 2 eingegebene Wert als Zeichenfolge dargestellt) und klicken Sie dann auf die Schaltfläche Senden.

Nach dem Senden der Nachricht sollte unser Notifier reagieren, indem er die entsprechenden Lichteffekte anzeigt und die ausgewählte mp3 abspielt. Ich ermutige Sie, verschiedene Effekte auszuprobieren, indem Sie die ersten beiden Bytes einer Zahl zwischen 0 und 22 angeben (siehe Beschreibung in der Funktion setMode).

Schritt 8: Senden von Nachrichten mithilfe von URLs

Senden von Nachrichten über URLs
Senden von Nachrichten über URLs
Senden von Nachrichten über URLs
Senden von Nachrichten über URLs
Senden von Nachrichten über URLs
Senden von Nachrichten über URLs
Senden von Nachrichten über URLs
Senden von Nachrichten über URLs

Wenn wir Benachrichtigungen von einer externen Anwendung anzeigen möchten, zB mit IFTTT, benötigen wir eine URL, die genau das gleiche macht wie im Fenster im vorherigen Schritt. remoteme.org bietet REST-API. Gehen Sie dorthin, indem Sie auf die Registerkarte "Swagger" links (die letzte) klicken. Eine Seite wird angezeigt, auf dieser Seite können wir auch unsere URLs ausprobieren.

Auf dem ersten Bildschirm haben Sie die Funktion Sie müssen expandieren, dann füllen Sie die Daten wie auf dem zweiten Bildschirm.

Füllen Sie die Daten wie im obigen Screenshot aus. Nachdem Sie auf Ausführen geklickt haben, senden wir eine Nachricht

070F010501

Der Empfänger ist das Gerät mit 205 id, das gleiche Gerät ist auch ein Sender. MessageId mit den Einstellungen „No_RENEVAL“ist irrelevant. Klicken Sie dann auf Ausführen. Notificator reagiert auf die gleiche Weise wie beim Senden von Nachrichten aus der Anwendung. Nach dem Aufrufen von REST ist unten die aufgerufene URL - sehen Sie sich den dritten Bildschirm an. Und die URL zum Kopieren und Einfügen in den Browser ist mit einem grünen Rand markiert. Auf dem vierten Bildschirm wurde mein Chrome-Browser nach dem Einfügen der URL eingefügt

In meinem Fall lautet die URL:

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

Schritt 9: Beliebige URL zum Senden der Nachricht

Beliebige URL zum Senden einer Nachricht
Beliebige URL zum Senden einer Nachricht

Im vorherigen Schritt haben Sie eine URL, die Daten an Ihr Gerät sendet. Leider funktioniert es nach dem Abmelden von app.remoteme.org nicht mehr. Dies liegt daran, dass wir das Authentifizierungstoken nicht bereitgestellt haben und wir nicht mehr angemeldet sind. Holen wir uns unser Token (oder erstellen Sie ein neues) und fügen Sie es in die URL anstelle des Sterns ein.

Schauen Sie auf den Bildschirm und ersetzen Sie * in der URL durch Ihr Token

in meinem Fall ist das Token:

~267_ZxoWtJ)0ph&2c

meine finale URL sieht also so aus:

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

Jetzt können wir es auch anrufen, wenn wir nicht eingeloggt sind. Und wenn es angerufen wird, wird eine Nachricht an unser Gerät gesendet 205

Schritt 10: Integration mit IFTTT 1/7

Integration mit IFTTT 1/7
Integration mit IFTTT 1/7

Die im obigen Schritt erstellte URL ist für die Ausführung durch externe Anwendungen geeignet. Wie man es benutzt, werde ich auf dem IFTTT zeigen. Ich werde es so konfigurieren, dass sich der Notifier einschaltet, wenn eine E-Mail an die E-Mail-Adresse (Gmail-Konto) eingeht.

Melden Sie sich bei IFTTT an. Gehen Sie dann auf die Registerkarte Meine Applets und dann auf „Neues Applet“– erster Bildschirm

Schritt 11: Integration mit IFTTT 2/7

Integration mit IFTTT 2/7
Integration mit IFTTT 2/7

Klicken Sie als nächstes auf "+dieses"

Schritt 12: Integration mit IFTTT 3/7

Integration mit IFTTT 3/7
Integration mit IFTTT 3/7

Dann in das Feld "Suchdienste" schreiben Sie "Gmail"

Dann "neue E-Mail im Posteingang" (Einige Konfiguration könnte erforderlich sein).

Schritt 13: Integration mit IFTTT 4/7

Integration mit IFTTT 4/7
Integration mit IFTTT 4/7

jetzt klicken wir auf „+ das“

Schritt 14: Integration mit IFTTT 5/7

Integration mit IFTTT 5/7
Integration mit IFTTT 5/7

finde „Webhooks“und klicke darauf

Schritt 15: Integration mit IFTTT 6/7

Integration mit IFTTT 6/7
Integration mit IFTTT 6/7

dann „Webanfrage stellen“

Schritt 16: Integration mit IFTTT 7/7

Integration mit IFTTT 7/7
Integration mit IFTTT 7/7

Wir vervollständigen die URL unserer URL mit dem Token. Geben Sie den Inhalt in Anwendung / json ein und klicken Sie auf "Aktion erstellen" und Fertig stellen. Jetzt haben wir unser Applet:

Schritt 17: Zusammenfassung

In diesem Tutorial habe ich gezeigt, wie wir Nachrichten von externen Systemen an unsere Arduino senden. Wir integrieren auch ein anderes System als IFTTT auf ähnliche Weise. Es muss nicht unbedingt ein „Notificator“sein. Ich wollte in diesem Beispiel zeigen, wie man Nachrichten von Fremdsystemen an unseren Arduino sendet.

QuellcodesFanPage bei Facebook

Gruß, Maciek

Empfohlen: