L'Internet des objets a un vaste potentiel de bricolage. Avec suffisamment de savoir-faire et quelques composants bon marché, vous pourriez construire un système complexe d'appareils connectés.
Parfois, cependant, vous voulez quelque chose de simple. Pas de cloches ou de sifflets, juste un bouton qui exécute une seule tâche. Vous connaissez peut-être déjà quelque chose comme ça si vous avez déjà utilisé un bouton Amazon Dash pour réorganiser des articles ménagers de tous les jours.
Aujourd'hui, nous allons créer un bouton compatible Wi-Fi à l'aide d'un NodeMCU et le programmer pour utiliser IFTTT pour faire… eh bien, n'importe quoi ! Instructions écrites après la vidéo, si vous préférez.
Vous aurez besoin de :
En dehors du NodeMCU, vous devriez pouvoir trouver la plupart de ces pièces dans n'importe quel kit de démarrage Arduino. Ce didacticiel suppose que vous utilisez la LED et la résistance en option, mais elles ne sont pas essentielles.
La configuration matérielle est très simple pour ce projet. Configurez votre tableau selon ce schéma.
Le fil violet relie la broche D0 d'un côté du bouton. Le fil vert relie l'autre côté du bouton à la broche RST . Le fil bleu part de la broche D1 à la résistance et à la LED. La branche négative de la LED se fixe à la broche GND du NodeMCU.
Une fois la planche à pain configurée, elle devrait ressembler à ceci :
Si vous vous demandez comment j'ai réussi à connecter ma LED à la broche de terre en utilisant uniquement ces minuscules morceaux de câble, notre cours accéléré rapide sur la planche à pain devrait vous aider à résoudre le problème ! Vérifiez votre configuration et connectez votre NodeMCU à l'ordinateur via USB.
Avant de commencer le codage, vous devez faire quelques préparatifs. Si vous ne l'avez pas déjà fait, configurez l'IDE Arduino pour qu'il reconnaisse votre carte NodeMCU. Vous pouvez l'ajouter à votre liste de tableaux via Fichier > Préférences .
Vous pouvez trouver une explication plus détaillée de cette étape dans notre article d'introduction NodeMCU.
Deux bibliothèques sont nécessaires pour ce projet. Accédez à Sketch > Inclure la bibliothèque > Gérer les bibliothèques . Recherchez ESP8266WIFI par Ivan Grokhotkov et installez-le. Cette bibliothèque est écrite pour établir des connexions Wi-Fi avec la carte NodeMCU.
Ensuite, recherchez le IFTTTWebhook par John Romkey et installez la dernière version. Cette bibliothèque est conçue pour simplifier le processus d'envoi de webhooks à IFTTT.
C'est toute la préparation dont nous avons besoin, allons coder !
Nous utiliserons le ESP8266WIFI bibliothèque pour établir une connexion Wi-Fi. Les IFTTTWebhooks bibliothèque fait une demande à IFTTT --- dans ce cas, pour publier sur Twitter. Ensuite, demandez à la carte NodeMCU de se mettre en veille lorsqu'elle n'est pas utilisée pour économiser de l'énergie.
Lorsque le bouton est enfoncé, il liera le D0 et RST épingles. Cela réinitialise le tableau et le processus se reproduit.
La plupart du code de ce tutoriel est assez simple pour les débutants. Cela dit, si vous débutez, vous le comprendrez beaucoup plus facilement après avoir suivi notre guide du débutant Arduino.
Ce tutoriel passe en revue le code en morceaux pour aider à la compréhension. Si vous voulez passer directement aux affaires, vous pouvez trouver le code complet sur Pastebin. Notez que vous devrez toujours renseigner vos identifiants Wi-Fi et IFTTT dans ce code pour qu'il fonctionne !
Pour commencer, nous allons créer un test simple pour montrer comment fonctionne le sommeil profond. Ouvrez une nouvelle esquisse dans l'IDE Arduino. Entrez les deux morceaux de code suivants.
#include
#include
#define ledPin 5
#define wakePin 16
#define ssid "VOTRE_WIFI_SSID"
#définir le mot de passe "YOUR_WIFI_PASSWORD"
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE"
#define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Ici, nous incluons nos bibliothèques, ainsi que la définition de quelques variables dont nous aurons besoin dans notre esquisse. Vous remarquerez que le ledPin et le wakePin sont numérotés différemment ici par rapport au diagramme de Fritzing ci-dessus. Le NodeMCU a un brochage différent des cartes Arduino. Ce n'est pas un problème cependant, grâce à ce schéma pratique :
Créez maintenant une fonction de configuration :
void setup() {
Serial.begin(115200);
tandis que (!Série) {
}
Serial.println(" ");// imprimer une ligne vide avant et après l'appui sur le bouton
Serial.println("Bouton enfoncé");
Serial.println(" ");// imprimer une ligne vide
ESP.deepSleep(wakePin);
}
Ici, nous configurons notre port série et utilisons une boucle while pour attendre qu'il commence. Étant donné que ce code se déclenchera après avoir appuyé sur le bouton de réinitialisation, nous imprimons "Button Pressed" au moniteur série. Ensuite, nous disons au NodeMCU de passer en veille profonde jusqu'au bouton connectant le wakePin à la RST la broche est enfoncée.
Enfin, pour tester, ajoutez ceci à votre loop() méthode :
boucle vide(){
//si le sommeil profond fonctionne, ce code ne s'exécutera jamais.
Serial.println("Ceci ne devrait pas être imprimé");
}
Habituellement, les croquis Arduino exécutent la fonction de boucle en continu après la configuration. Comme nous mettons la carte en veille avant la fin de l'installation, la boucle ne s'exécute jamais.
Enregistrez votre croquis et téléchargez-le sur le tableau. Ouvrez le moniteur série et vous devriez voir "Button Pressed." Chaque fois que le bouton se déclenche, la carte se réinitialise et le message s'imprime à nouveau. Ça marche !
Vous avez peut-être remarqué des caractères absurdes dans le moniteur série lors de certains de vos projets. Cela est généralement dû au fait que le moniteur série n'est pas réglé sur le même débit en bauds que Serial.begin(XXXX) taux.
De nombreux guides suggèrent de démarrer la connexion série à un débit en bauds de 115200 pour un projet comme celui-ci. J'ai essayé de nombreuses combinaisons, et elles avaient toutes des degrés divers de charabia avant et après les messages en série. Selon divers messages du forum, cela pourrait être dû à une carte défectueuse ou à un problème de compatibilité logicielle. Comme cela n'affecte pas trop le projet, je choisis de prétendre que cela ne se produit pas.
Si vous rencontrez des problèmes avec le moniteur série, essayez différents débits en bauds et voyez celui qui vous convient le mieux.
Créez maintenant une fonction pour vous connecter à votre réseau Wi-Fi.
void connectToWifi() {
Serial.print("Connexion à :NOM SSID"); // décommentez la ligne suivante pour afficher le nom du SSID
//Serial.print(ssid);
WiFi.begin(ssid, mot de passe);
Serial.println(" ");// imprimer une ligne vide
Serial.print("Tentative de connexion :");
// essayez de vous connecter pendant 10 secondes
entier je =10 ;
while(WiFi.status() !=WL_CONNECTED &&je>=0) {
retard(1000);
Serial.print(i);
Serial.print(", ");
je--;
}
Serial.println(" ");// imprimer une ligne vide
// affiche le résultat de la connexion
if(WiFi.status() ==WL_CONNECTED){
Serial.print("Connecté.");
Serial.println(" ");// imprimer une ligne vide
Serial.print("Adresse IP NodeMCU :");
Serial.println(WiFi.localIP());
}
autre {
Serial.println("La connexion a échoué - vérifiez vos informations d'identification ou votre connexion");
}
}
Cette méthode tente de se connecter à votre réseau dix fois avec une seconde entre les deux. Succès ou échec des impressions de connexion au moniteur série.
En ce moment, le connectToWifi() n'est jamais appelé. Ajoutez un appel à votre fonction de configuration entre le message "Button Pressed" et la mise en veille de la carte.
connectToWifi();
Au cas où vous vous demanderiez où cela correspond, cela devrait ressembler à ceci :
En haut de l'esquisse, remplacez le ssid et mot de passe variables avec vos informations d'identification Wi-Fi. Enregistrez votre croquis et téléchargez-le sur le tableau.
Désormais, lorsque la carte démarrera, elle tentera de se connecter à votre réseau Wi-Fi, avant de revenir à la fonction de configuration. Maintenant, configurons l'intégration IFTTT.
IFTTT permet l'intégration avec une vaste gamme de services Web. Nous l'avons utilisé dans notre didacticiel sur les LED de la tour PC Wi-Fi pour envoyer une alerte chaque fois qu'un nouvel e-mail est reçu. Aujourd'hui, nous allons l'utiliser pour envoyer un tweet en appuyant sur un bouton.
Accédez à Mes applets page, et sélectionnez Nouvelle applet
Cliquez sur +ceci et connectez-vous aux Webhooks . Sélectionnez "Recevoir une demande Web" et nommez votre événement. Restez simple ! Notez le nom de l'événement, vous devrez l'ajouter ultérieurement à votre code NodeMCU. Cliquez sur "Créer un déclencheur" .
Sélectionnez maintenant +cela . Recherchez le Twitter service et vous y connecter --- vous devrez l'autoriser à publier sur votre compte Twitter. Sélectionnez "Publier un tweet" et choisissez votre message.
L'écran suivant vous demandera de revoir l'applet. Cliquez sur terminer. C'est tout !
De retour dans l'IDE Arduino, vous devrez ajouter votre clé API IFTTT et le nom de l'événement à vos variables définies. Pour trouver la clé API, accédez à Mes applets et sélectionnez Webhooks sous les Services languette. Sélectionnez Documentation pour accéder à votre clé.
Copiez la clé et le nom de l'événement dans votre code, en remplaçant les noms temporaires définis pour eux.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE"
#define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Remarque, les guillemets doivent rester, ne remplacent que le texte.
Entre l'appel de connectToWifi() et en mettant la carte en veille, créez une instance de l'objet de bibliothèque IFTTTWebhook. La LED signale la fin de la tâche avant que le sommeil profond ne recommence.
//juste connecté au Wi-Fi
Crochet IFTTTWebhook (IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, SORTIE);
digitalWrite(ledPin, HIGH);
retard(200);
digitalWrite(ledPin, BAS);
// Envoie maintenant la carte en veille
Déclencheur d'appel sur le crochet objet déclenche l'applet IFTTT et devrait publier sur votre compte Twitter. Enregistrez votre croquis et téléchargez-le. Vous devriez maintenant avoir un bouton de tweet entièrement fonctionnel.
Si cela ne semble pas fonctionner, vérifiez attentivement votre code et vos informations d'identification pour les erreurs. Si vous êtes vraiment bloqué, récupérez le code complet ci-dessus et comparez-le au vôtre.
Il s'agit d'une version de base d'un bouton Wi-Fi, mais il existe de nombreuses façons de l'améliorer. Pour plus de simplicité, la connexion USB est ici utilisée pour l'alimentation. Une batterie le rendrait entièrement mobile, et un boîtier contenant le circuit serait le parfait projet d'impression 3D pour débutant.
Malgré l'utilisation du sommeil profond, vous constaterez peut-être qu'une batterie s'épuise assez rapidement. Il existe de nombreux conseils d'économie d'énergie Arduino qui aident dans ce type de projets. Bien que plus difficile que ce didacticiel, si vous créez votre propre Arduino économe en énergie à partir de zéro, un bouton Wi-Fi alimenté par batterie peut durer des mois !
Ce projet serait parfait pour une télécommande pour les applications de maison intelligente. Il existe déjà un nombre considérable d'applets domotiques disponibles sur IFTTT. Une fois que vous avez maîtrisé les bases, vous pouvez utiliser presque n'importe quel capteur ou interrupteur pour déclencher pratiquement n'importe quel service que vous pouvez imaginer.
Crédit image :Vadmary/Depositphotos