[UPDATE] Une sonnette connectée avec l’ESP01 et Node-RED

Il y a quelques semaines, j’ai réalisé une sonnette connectée ! À cette époque, je n’avais pas encore de broker MQTT privé et les méthodes que j’utilisais n’étaient pas les meilleures. Sans compter le produit final pas super propre.

Cette semaine, j’ai revu tous mes plans pour en réaliser une nouvelle plus aux gouts du jour cette fois !

Cet article ne traitera pas de l’émetteur et du récepteur cette fois-ci, mais uniquement du récepteur qui sera pour le moment contrôlable depuis l’interface utilisateur (Node-RED).

INTRODUCTION

Le dernier article concernant la sonnette connectée utilisait le protocole HTTP pour communiquer. Comme je l’ai déjà évoqué, ce n’est pas la meilleure solution. HTTP est puissant donc gourmand et plutôt destinée à des sites WEB.

MQTT est bien mieux pour ce type d’application !

La dernière fois nous avions aussi utilisé une wemos D1 mini en guise de carte. Cette fois-ci je vais préférer utiliser un ESP01, bien plus petit.

Acheter

Le buzzer sera quant à lui remplacer par un hautparleur de PC portable récupérer récemment. Le son est également de meilleure qualité avec ce dispositif.

Cet article sera décliné en 3 parties :

  1. Programmation de l’ESP01
  2. Programmation de l’interface Node-RED
  3. Câblage

PROGRAMMATION DE L’ESP01

Dans cette partie programmation, il n’y aura rien de très compliqué ! En effet, les notions que je vais utiliser sont très similaires à celle utilisée pour Vicky le capteur d’humidité connecté. Le principe est simple.

Dans un premier temps, ajoutons les classiques lignes de code pour mettre en place la librairie PubSubclient pour utiliser le service MQTT.

Une fois ceci fait, il ne faut pas oublier d’inscrire le client MQTT au topic de votre choix (/sonnette/ring) pour ma part. C’est à travers celui-ci que nous écouterons pour savoir s’il reçoit de nouveaux messages.

C’est dans la fonction callback que le gros du boulot se passe. Dans celle-ci, que nous recevrons les messages et que nous les traiterons.

Quand nous recevons un nouveau message, une boucle for va parcourir son contenu et le lire. Tout dépend votre message. Si vous avez plusieurs caractères vous feriez mieux de stocker chaque caractère dans un tableau pour ensuite traiter celui-ci.

Pour les flemmards comme moi, attendez-vous à recevoir juste des 1 pour activer le programme. Dans ce cas, étant donné que le message est constitué que d’un seul caractère, vous n’avez pas besoin de vous embêter avec un tableau. Si le message en question est 1 alors on a plus qu’à faire sonner le buzzer.

C’est à peu près tout pour cette parti. Je n’ai pas développé le fonctionnement du buzzer parce que je l’ai déjà fait dans mon précédent article. Sur celui-ci que vous pouvez voir en cliquant ici.

-> CODE ICI <-

PROGRAMMATION NODE-RED

Node-red fera office de MQTT broker. Pour qu’il fonctionne correctement, nous devrons envoyer par le biais d’un bouton sur l’interface utilisateur. Le message devra évidemment être sur le topic précédemment configuré.

Ainsi, un simple bouton suivi d’un nœud MQTT suffira. Dans le but de complexifier la tâche, j’aimerais aussi ajouter une BdD. Celle-ci stockera la date et l’heure à laquelle la sonnette a été actionnée.

Comme pour Vicky j’utiliserai SQLite couplé avec PHPliteadmin pour gérer cette base de données. Dans cet article, nous n’exploiterons pas cette base de données, mais on peut très bien imaginer recevoir une alerte si l’on a manqué la sonnerie (pour un facteur par exemple). Ou faire des graphes statistiques de l’utilisation de la sonnette.

Une fois la table créée dans la BdD et la structure Node-RED faite, il faut, comme pour le capteur d’humidité, injecter l’heure à laquelle on sonne. J’ai utilisé une fonction qui va permettre d’injecter l’emplacement, le nom de la sonnette ainsi que l’heure à laquelle elle était utilisée et le tour est joué dans la BdD et le tour est joué.

De cette manière, je pourrais éventuellement à l’avenir exploiter cette BdD si l’envie me prend.

Pour résumer, la partie Node-RED est constituée d’une interface de contrôle qui permet à l’utilisateur de faire sonner la sonnette.

-> CODE ICI <-

CABLAGE

Voici le schéma de branchement final du projet:

Avant de penser à utiliser des haut-parleurs de PC portable, j’ai voulu utiliser un buzzer piézo-électrique. Ceux-ci sont très simples et basiques. Ils fonctionnent grâce aux vibrations d’une plaque. Ils ont également l’avantages de prendre très peu de place.

J’ai fais un court test sur l’arduino UNO dans un premier temps. A l’issu de celui-ci je me suis vite rendu compte à quel point sa puissance est limité.

J’ai quand même décidé de le tester avec l’ESP01, d’abord avec un simple bip avec delay pour être sûr que je n’aurais pas de problème du côté de la carte.

Le test a été très vite concluant et je n’ai pas eu de problème particulier, j’ai donc décidé de passer à l’élaboration du circuit avec un véritable hautparleur.

Le même circuit test avec le même programme fonctionnait correctement. C’est par la suite en testant le véritable programme que je me suis rendu compte d’un problème.

Le buzzer, quand il n’était pas actif, émettait un bruit constant assez dérangeant… Pour remédier au problème, il fallait ajouter une résistance. Après quelque test j’ai retenu une résistance de 150ohm qui le rendait sourd sans pour autant étouffer complètement son bip.

A NOTER

Selon le haut-parleur et la carte de prog, la valeur de la résistance ne sera pas équivalente. Ne vous baser par sur mon unique expérience.

Après quelques tests concluants, j’ai décidé de souder tout ça. Avant de m’occuper de l’alimentation, j’ai effectué un nouveau test qui sera aussi concluant du premier coup.

Pour l’alimentation j’ai récupéré un vieux chargeur de DS qui fournit une tension de 5v. Pour abaisser de nouveau la tension j’ai utilisé un DC step down buck low current, et le tour est joué.

Acheter

Après calibration du buck j’ai soudé le tout puis testé que le circuit fonctionne toujours correctement ! Sans surprise, ça fonctionne ! J’ai également sécurisé le câblage avec de la colle chaude comme d’habitude.

Pour habiller le circuit j’ai pu me permettre d’utiliser un œuf kinder (vous savez celui qui contient les joués :D). Le DC step down, un tout petit peu trop grand restera à l’extérieur du circuit entouré d’une gaine thermo pour rendre l’aspect final plus esthétique et pour le protéger.

Et voilà ! Nous voilà avec une véritable sonnette connectée qui, aussi petite qu’elle soit, fonctionne très bien.

Reçois 1 un petit guide de réalisation DIY par semaine!

+

Du contenu bonus offert à chaque nouvel article!