Table des matières:
- Étape 1: ce qui est nécessaire
- Étape 2: Construction de la tour
- Étape 3: Schéma de câblage
- Étape 4: Principe de fonctionnement
- Étape 5: Lecteur MP3
- Étape 6: Téléchargement du programme sur Arduino
- Étape 7: Contrôle
- Étape 8: Envoi de messages à l'aide d'URL
- Étape 9: URL quelconque pour envoyer un message
- Étape 10: Intégration avec IFTTT 1/7
- Étape 11: Intégration avec IFTTT 2/7
- Étape 12: Intégration avec IFTTT 3/7
- Étape 13: Intégration avec IFTTT 4/7
- Étape 14: Intégration avec IFTTT 5/7
- Étape 15: Intégration avec IFTTT 6/7
- Étape 16: Intégration avec IFTTT 7/7
- Étape 17: Résumé
Vidéo: Notificateur : 17 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
L'appareil peut être connecté par exemple au système IFTTT et réagir lorsqu'un nouveau mail apparaît. Sur app.remoteme.org, nous générerons un lien après avoir appelé quels octets seront envoyés à Arduino, et Arduino affichera un effet de lumière et jouera du mp3 à partir de la carte SD
Étape 1: ce qui est nécessaire
- NodeMCU, WemOS ou quelque chose de similaire
- Deux anneaux LED avec diodes WS2812B (j'ai utilisé des anneaux LED 16ème)
- DFRobotDFPlayerMini - c'est un lecteur mp3. Il lit les mp3 à partir de la carte SD et communique avec Arduino par RX/TX
- Conférencier
- Carte SD
- Convertisseur logique -J'ai utilisé celui-ci, le lecteur mp3 utilise 5V et Arduino 3.3 c'est pourquoi nous avons besoin de ce convertisseur
- Connaissances et compétences pour fabriquer des PCB simples par nous-mêmes
La tour:
- carton – deux épaisseurs différentes
- Papier-calque
- feuille d'aluminium
Étape 2: Construction de la tour
Ci-dessus le plan de la tour en vue de côté (mon aventure avec le dessin technique s'est terminée à l'école primaire), toutes dimensions en millimètres.
Principe d'opération
- anneau de LED éclairant
- Papier-calque
- Le cône tronqué, en carton et recouvert d'une feuille d'aluminium, il réfléchit donc les lumières des anneaux led, sur la figure 3' = le maillage découpé
- tube en carton - maintient les tours verticalement, à l'intérieur du tube se trouvent des câbles pour leds
- La hauteur dépend de vous j'ai 85mm
- Le support à l'intérieur de toutes les pièces électroniques
Tous les éléments horizontaux doivent être en carton plus épais.
Étape 3: Schéma de câblage
Le lecteur mp3 est alimenté en tension 5V et communique avec Arduino via TX/RX, un convertisseur logique est nécessaire car l'Arduino lui-même fonctionne sur une tension de 3,3V. Le contrôle des anneaux est également connecté à Arduino (D5, D6) via le convertisseur logique.
Au dépôt, vous trouverez des fichiers eagle avec des plans PCB
Je suggère de ne pas souder en permanence Arduino et le lecteur mp3 uniquement pour utiliser des broches d'or femelles
Étape 4: Principe de fonctionnement
Notre Arduino se connecte au système app.remoteme.org à l'aide de WebSockets (il existe des bibliothèques prêtes) via cette connexion, des messages de 5 octets sont envoyés:
- le premier octet de l'effet lumineux pour l'anneau LED supérieur
- effet lumineux de deuxième octet pour l'anneau LED inférieur
- le numéro du fichier mp3 à lire
- le nombre de secondes pendant lesquelles l'effet de lumière et le mp3 seront joués
- si le mp3 doit être lu une fois ou en boucle
code source
Code source complet Vous pouvez trouver ici
dans les fichiers SingleRing.cpp et SingleRing.h, il existe une classe pour contrôler les effets des anneaux LED. Je vous suggère de commencer par regarder la fonction setMode(int m):
void SingleRing::setMode(int m) { switch (m) { case 0:setConfiguration(0, 0, 50, 0, 5, 1); break;//off =0 case 1:setConfiguration(6, 0, 50, 0, 0, 20); break;//casse verte standard solide 2:setConfiguration (6, 0, 0, 50, 0, 20); break;//cas bleu standard solide 3:setConfiguration (6, 50, 0, 0, 0, 20); break;//casse rouge standard solide 4: setConfiguration (6, 50, 10, 0, 0, 20); break;//cas orange standard solide 5:setConfiguration(1, 0, 100, 0, 5, 2); break;//police dans le sens des aiguilles d'une montre vert case 6:setConfiguration(1, 0, 100, 0, 5, -2); break;// la police revient au vert case 7:setConfiguration(1, 0, 0, 100, 5, 2); break;//police dans le sens des aiguilles d'une montre bleu case 8:setConfiguration(1, 0, 0, 100, 5, -2); break;// police revert blue case 9:setConfiguration(1, 100, 0, 0, 5, 2); break;//police standard rouge case 10:setConfiguration(1, 100, 0, 0, 5, -2); break;// police revert case rouge 11:setConfiguration(1, 100, 20, 0, 5, 2); break;//police standard orange case 12:setConfiguration(1, 100, 20, 0, 5, -2); break;// police revert case orange 13:setConfiguration(2, 0, 0, 50, 8, 10); break;//cross standard bleu case 14:setConfiguration(2, 0, 0, 50, 8, -10); break;// cross revert case bleue 15:setConfiguration(5, 0, 50, 0, 0, 20); break;//clignotement vert standard case 16:setConfiguration(5, 0, 50, 0, 0, -20); pause;// clignotement odwyrtka vert case 17:setConfiguration(5, 0, 0, 50, 0, 20); break;//clignote cas bleu standard 18:setConfiguration(5, 0, 0, 50, 0, -20); pause;// clignotement inverser le bleu case 19:setConfiguration(5, 50, 0, 0, 0, 20); break;//clignotement cas rouge standard 20:setConfiguration(5, 50, 0, 0, 0, -20); pause;// clignotement inverse cas rouge 21:setConfiguration(5, 50, 10, 0, 0, 20); break;//clignotement orange standard case 22:setConfiguration(5, 50, 10, 0, 0, -20); pause;// clignotement revenir en orange par défaut: setConfiguration(0, 0, 50, 0, 5, 1); pause;//off =0 } }
selon le paramètre donné, la bague affichera l'effet. Vous pouvez ajouter votre propre effet en appelant la fonction setConfiguration avec de nouveaux paramètres (changement de couleur, vitesse d'affichage) en ajoutant un nouveau mode, ou en ajoutant un tout nouvel effet - ou faites le moi savoir dans les commentaires si je l'aime j'ajouterai un nouvel effet
arduino.ino:
#include "Arduino.h"#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#comprendre
#include #include #include "SingleRing.h"
#comprendre
#include #include
#comprendre
#define WIFI_NAME ""
#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "sirène" #define TOKEN ""
#define DIODES_COUNT 16
SingleRing haut = SingleRing(DIODES_COUNT, D5);
SingleRing bas = SingleRing(DIODES_COUNT, D6);
SoftwareSerial mySoftwareSerial(D4, D3); // Réception, Émission
DFRobotDFPlayerMini myDFPlayer; RemoteMe& remoteMe = RemoteMe::getInstance(TOKEN, DEVICE_ID);
ESP8266WiFiMulti WiFiMulti;
void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200);
if (!myDFPlayer.begin(mySoftwareSerial)) { //Utilisez softwareSerial pour communiquer avec mp3.
Serial.println(F("Impossible de commencer:")); Serial.println(F("1. Veuillez revérifier la connexion !")); Serial.println(F("2. Veuillez insérer la carte SD !")); tandis que (vrai); } Serial.println(F("DFPlayer Mini en ligne."));
myDFPlayer.setTimeOut(500); //Définir le délai de communication série 500ms
myDFPlayer.volume(30);
monDFPPlayer. 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(); }
booléen désactivé = vrai;
turnOffMillis long non signé = 0;
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); } désactivé = faux; turnOffMillis = millis() + 1000 * heure; }
boucle vide()
{ remoteMe.loop(); top.loop(); bottom.loop(); si (désactiverMillis
}
explication:
#define WIFI_NAME ""#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificateur" #define TOKEN ""
Nous devons fournir les données ci-dessus, des instructions détaillées ici sur le lien. J'ai également montré comment s'inscrire sur remoteme.org et générer le jeton, 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); } désactivé = faux; turnOffMillis = millis() + 1000 * heure; }
Cette fonction sera appelée lorsque le message arrivera à Arduino et affichera la notification. Le code est si clair qu'il se décrit lui-même. Je renvoie le détail des classes à la documentation ici et ici
boucle vide(){ remoteMe.loop(); top.loop(); bottom.loop(); if (turnOffMillis<millis()){
si (!désactivé) {
top.clear();
bottom.clear(); monDFPlayer.stop(); désactivé = vrai; } }
Dans la boucle, on appelle les fonctions de boucle des objets, et aussi si le temps d'affichage des notifications est écoulé, on éteint les diodes et le son.
Étape 5: Lecteur MP3
Il communique avec Arduino via TX/RX – Détails du lecteur lui-même ici, et de la bibliothèque ici
Nous téléchargeons des fichiers mp3 sur la carte SD. Les fichiers sur la carte sont triés par ordre alphabétique puis par appel:
myDFPlayer.play(5);
Nous lisons le cinquième fichier de la carte SD à partir du répertoire racine. C'est pourquoi il est bon de donner aux fichiers sur la carte SD les préfixes 01, 02 etc. Dans mon cas, cela ressemble à l'écran d'impression ci-dessus
Pour générer des commandes vocales Vous pouvez utiliser cette page.
Étape 6: Téléchargement du programme sur Arduino
Avant de télécharger le croquis sur Arduino, vous devez télécharger les bibliothèques nécessaires ici, vous trouverez des instructions détaillées
de plus, nous devons installer la bibliothèque DFRobotDFPlayerMini et Adafruit_NeoPixel
Étape 7: Contrôle
Nous envoyons à notre Arduino cinq octets
- le premier octet de l'effet lumineux pour l'anneau LED supérieur
- effet lumineux de deuxième octet pour l'anneau LED inférieur
- le numéro du fichier mp3 à lire
- le nombre de secondes pendant lesquelles l'effet de lumière et le mp3 seront joués
- si le mp3 doit être lu une fois ou en boucle (1 s'il doit être lu en boucle)
En envoyant des octets
07 0F 01 05 01
L'anneau supérieur montrera les lumières de la police (mode 6) en bas un clignotement vert (mode 15) (consultez la fonction setMode sur singleRing.cpp et les commentaires à côté). Le premier fichier de la carte SD sera lu pendant 5 secondes. Et le fichier sera lu en boucle (vérifiez la fonction onUserMessage sur arduino.ino)
Envoyons ces octets. Regardez l'écran ci-dessus, et cliquez sur les icônes dans l'ordre écrit par 1, 2, 3. La fenêtre apparaît
Ensuite, regardez le deuxième écran - et remplissez la fenêtre comme sur le deuxième écran
La fenêtre qui apparaît permet d'envoyer des messages à l'appareil. Dans le champ 1, sélectionnez l'appareil expéditeur - parce que nous n'avons qu'un seul appareil, nous le sélectionnons (il s'agit d'un champ obligatoire et peu importe qu'il s'agisse du même appareil auquel nous envoyons un message) Dans le champ 2, nous donnons des octets à envoyer (en rouge la valeur que nous avons saisie en 2 sera représentée sous forme de chaîne) puis cliquez sur le bouton Envoyer.
Après avoir envoyé le message, notre notifiant doit réagir en affichant les effets d'éclairage appropriés et en jouant le mp3 sélectionné. Je vous encourage à essayer différents effets en donnant les deux premiers octets d'un nombre compris entre 0 et 22 (voir description dans la fonction setMode).
Étape 8: Envoi de messages à l'aide d'URL
Si nous voulons afficher les notifications d'une application externe, par exemple avec IFTTT, nous devons avoir une URL qui fera exactement la même chose que nous l'avons fait dans la fenêtre de l'étape précédente. remoteme.org fournit REST APi. Allez-y en cliquant sur l'onglet swagger à gauche (le dernier). Une page s'affichera, sur cette page nous pouvons également essayer nos URL.
Au premier écran Vous avez la fonction Vous devez développer, puis remplir les données comme au deuxième écran.
remplissez les données comme dans la capture d'écran ci-dessus. Après avoir cliqué sur exécuter, nous enverrons un message
070F010501
Le récepteur est l'appareil avec 205 id, le même appareil est également un expéditeur. MessageId avec les paramètres "No_RENEVAL" n'est pas pertinent. Et puis cliquez sur Execute. Notificator réagira de la même manière que lors de l'envoi de messages depuis l'application. Après avoir appelé REST, vous trouverez ci-dessous l'URL qui a été appelée - regardez le troisième écran. Et copier-coller dans l'URL du navigateur est marqué d'une bordure verte. Au quatrième écran, mon navigateur Chrome après le collage de l'URL
Dans mon cas, l'URL est:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Étape 9: URL quelconque pour envoyer un message
À l'étape précédente, vous avez une URL qui envoie des données à votre appareil. Malheureusement, après vous être déconnecté de app.remoteme.org, il cesse de fonctionner. C'est parce que nous n'avons pas fourni le jeton d'authentification et que nous ne sommes plus connectés. Récupérons notre jeton (ou créons-en un nouveau) et collons-le dans l'URL au lieu de l'étoile.
Regardez l'écran et remplacez * dans l'URL par votre jeton
dans mon cas, le jeton est:
~267_ZxoWtJ)0ph&2c
donc mon URL finale ressemble à:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Maintenant, nous pouvons l'appeler même si nous ne sommes pas connectés. Et quand il est appelé, un message sera envoyé à notre appareil 205
Étape 10: Intégration avec IFTTT 1/7
L'URL créée à l'étape ci-dessus convient à l'exécution par des applications externes. Comment l'utiliser, je vais montrer sur l'IFTTT. Je vais le configurer pour que le notificateur s'active lorsqu'un e-mail arrive à l'adresse e-mail (compte Gmail).
Connectez-vous à IFTTT. Ensuite, allez dans l'onglet Mes applets, puis « Nouvelle applet » - premier écran
Étape 11: Intégration avec IFTTT 2/7
Cliquez ensuite sur « + ceci »
Étape 12: Intégration avec IFTTT 3/7
Puis dans le champ « Services de recherche » écrivez « Gmail »
Puis "nouvel e-mail dans la boîte de réception" (une configuration peut être nécessaire).
Étape 13: Intégration avec IFTTT 4/7
maintenant nous cliquons sur "+ ça"
Étape 14: Intégration avec IFTTT 5/7
recherchez « Webhooks » et cliquez dessus
Étape 15: Intégration avec IFTTT 6/7
puis "Faire une demande web"
Étape 16: Intégration avec IFTTT 7/7
nous complétons l'URL de notre URL avec le jeton. Tapez le contenu sur application/json et cliquez sur « Créer une action » et sur Terminer. Nous avons maintenant notre applet:
Étape 17: Résumé
Dans ce tutoriel, j'ai montré comment envoyer à nos messages Arduino depuis des systèmes externes. Nous intégrons également un autre système puis IFTTT d'une manière similaire. Il ne doit pas nécessairement s'agir d'un "notificateur". Je voulais montrer dans cet exemple comment envoyer des messages depuis des systèmes extérieurs à notre Arduino.
codessourceFanPage sur Facebook
Salut, Maciek
Conseillé:
Comment fabriquer une antenne double biquade 4G LTE en quelques étapes faciles : 3 étapes
Comment créer une antenne double biquade 4G LTE Étapes faciles : La plupart du temps, je n'ai pas une bonne force de signal pour mes travaux quotidiens. Donc. Je recherche et essaye différents types d'antenne mais ne fonctionne pas. Après une perte de temps, j'ai trouvé une antenne que j'espère fabriquer et tester, car ce n'est pas un principe de construction
Game Design dans Flick en 5 étapes : 5 étapes
Game Design dans Flick en 5 étapes : Flick est un moyen très simple de créer un jeu, en particulier quelque chose comme un puzzle, un roman visuel ou un jeu d'aventure
Système d'alerte de stationnement en marche arrière Arduino - Étapes par étape : 4 étapes
Système d'alerte de stationnement en marche arrière Arduino | Étapes par étape : dans ce projet, je vais concevoir un circuit de capteur de stationnement inversé pour voiture Arduino simple à l'aide d'un capteur à ultrasons Arduino UNO et HC-SR04. Ce système d'alerte de marche arrière basé sur Arduino peut être utilisé pour une navigation autonome, une télémétrie de robot et d'autres r
Détection de visage sur Raspberry Pi 4B en 3 étapes : 3 étapes
Détection de visage sur Raspberry Pi 4B en 3 étapes : dans ce Instructable, nous allons effectuer une détection de visage sur Raspberry Pi 4 avec Shunya O/S en utilisant la bibliothèque Shunyaface. Shunyaface est une bibliothèque de reconnaissance/détection de visage. Le projet vise à atteindre la vitesse de détection et de reconnaissance la plus rapide avec
Construire un notificateur ISS facile : 5 étapes
Construire un notificateur ISS facile : Par TokyLabs | Temps requis : 1 à 3 heures | Difficulté : Facile | Prix : 60 $ à 70 $Vous pouvez facilement créer une notification matérielle qui soulève un astronaute en papier pour vous alerter chaque fois que la Station spatiale internationale passe au-dessus de votre position. Bien plus amusant que