Inhaltsverzeichnis:
- Schritt 1: Was wird benötigt?
- Schritt 2: Turmgebäude
- Schritt 3: Schaltplan
- Schritt 4: Funktionsprinzip
- Schritt 5: MP3-Player
- Schritt 6: Hochladen des Programms auf Arduino
- Schritt 7: Kontrolle
- Schritt 8: Senden von Nachrichten mithilfe von URLs
- Schritt 9: Beliebige URL zum Senden der Nachricht
- Schritt 10: Integration mit IFTTT 1/7
- Schritt 11: Integration mit IFTTT 2/7
- Schritt 12: Integration mit IFTTT 3/7
- Schritt 13: Integration mit IFTTT 4/7
- Schritt 14: Integration mit IFTTT 5/7
- Schritt 15: Integration mit IFTTT 6/7
- Schritt 16: Integration mit IFTTT 7/7
- Schritt 17: Zusammenfassung
Video: Benachrichtigung: 17 Schritte
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
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?
- 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
Oben der Plan des Turms in Seitenansicht (mein Abenteuer mit der technischen Zeichnung endete in der Grundschule), alle Maße in Millimeter.
Funktionsprinzip
- Ring aus LEDs, die Licht erhellen
- Transparentpapier
- Der Kegelstumpf aus Pappe und mit Aluminiumfolie bedeckt, so dass er Licht von LED-Ringen reflektiert, in Abbildung 3 ' = das ausgeschnittene Netz
- Kartonrohr – hält die Türme vertikal, im Inneren des Rohres befinden sich Kabel für LEDs
- Die Höhe hängt von dir ab, ich habe 85mm
- Der Ständer in allen Elektronikteilen
Alle horizontalen Elemente sollten aus dickerem Karton bestehen.
Schritt 3: 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
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
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
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
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
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
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
Klicken Sie als nächstes auf "+dieses"
Schritt 12: 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
jetzt klicken wir auf „+ das“
Schritt 14: Integration mit IFTTT 5/7
finde „Webhooks“und klicke darauf
Schritt 15: Integration mit IFTTT 6/7
dann „Webanfrage stellen“
Schritt 16: 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:
Feueralarm mit SMS-Benachrichtigung - Gunook
Feueralarm mit SMS-Benachrichtigung: GSM 800H, Arduino-basierter Feuersensor und SMS-Benachrichtigungssystem, es verwendet einen IR-Sensor, um das Feuer in der Dunkelkammer zu erkennen. Es sendet SMS über ein GSM 800H-Modem, das an die seriellen Rx- und Tx-Pins von Arduino angeschlossen ist Geben Sie Ihre Handynummer in den Code ein
Leckdetektor mit SMS-Benachrichtigung - Gunook
Leckdetektor mit SMS-Benachrichtigung: Diese Anleitung zeigt, wie Sie einen Leckdetektor bauen, der SMS-Benachrichtigungen sendet. Es sendet Warnungen, wenn Wasser aus einem Rohrbruch oder einem verstopften Abfluss erkannt wird. Die Anleitung richtet sich an alle, die sich für Python 3, Raspberry Pi, Secure Shell
Easy Ungelesene E-Mail-Benachrichtigung - Gunook
Easy Unread Email Notifier: Hallo zusammen, willkommen zu einem weiteren Instructable. Mit der aktuellen Situation der Arbeit von zu Hause aus stehe ich vor einigen Herausforderungen, weil ich von Zeit zu Zeit E-Mails von meinem Unternehmen erhalten habe. Dann dachte ich daran, einen Desk Notifier zu machen, der benachrichtigen Sie mich über meine
GPS-Auto-Tracker mit SMS-Benachrichtigung und Thingspeak-Daten-Upload, Arduino-basiert, Hausautomation - Gunook
GPS-Auto-Tracker mit SMS-Benachrichtigung und Thingspeak-Daten-Upload, Arduino-basiert, Hausautomation: Ich habe diesen GPS-Tracker letztes Jahr gemacht und da er gut funktioniert, veröffentliche ich ihn jetzt auf Instructable. Es ist mit dem Zubehörstecker in meinem Kofferraum verbunden. Der GPS-Tracker lädt die Fahrzeugposition, Geschwindigkeit, Richtung und die gemessene Temperatur über eine mobile Datenstation
GMail-Benachrichtigung mit ESP8266 Arduino und OLED - Gunook
GMail-Benachrichtigung mit ESP8266 Arduino und OLED: Heutzutage muss jede Maschine einige Daten über die Cloud veröffentlichen und Daten müssen für viele Zwecke analysiert und aufgezeichnet werden. Gleichzeitig sollten die Daten auch für den Analysator zugänglich sein. Diese Dinge können mit dem IOT-Konzept durchgeführt werden. IOT ist das Internet der