Un diffuseur d’odeur et un interrupteur connecté (Blynk + Servo moteur)

Bonjour à tous ! La semaine dernière, j’ai réalisé un article projet assez complexe. En effet, nous y avons abordé beaucoup de notions à la fois côté client (ESP8266) et du côté serveur avec Node-RED. Le projet n’est d’ailleurs pas encore terminé et je continue de travailler dessus.

Cette semaine, j’ai voulu réaliser un petit projet moins prise de tête et qui initiait à de nouvelles technologies développer dans l’univers de l’IoT.

Le but de celui-ci va être de concevoir des petits interrupteurs robotisés à l’aide de servo moteur pour allumer ou éteindre ma lumière principale et utiliser mon diffuseur d’odeur à distance. Pour pouvoir communiquer, nous utiliserons un ESP01 avec l’application Blynk. Le projet sera alimenté depuis une prise secteur recyclée.

INTRODUCTION

Pourquoi des servo moteur ?

 

C’est une bonne question ! C’est d’abord parce que j’aime bien tester différentes technologies pour élargir mes compétences, mais pas seulement.

Étant donné que ma lumière principale est directement reliée au réseau électrique de maison, il m’aurait été bien plus difficile de réaliser ce projet si j’avais dû intervenir directement sur celui-ci. Cela aurait impliqué de multiples essais conduisant à de multiples coupures de courant et je ne parle même pas de l’alimentation de tout ça. De plus, j’aimerais quand même garder un interrupteur actionnable à l’ancienne et ça c’est largement plus simple avec des servo.

En ce qui concerne le diffuseur d’odeur, j’aurais très bien pu le faire électriquement. Cependant, l’utilisation de servo moteur m’assure d’une certaine sécurité de fonctionnement que je n’ai pas si je décide de démonter le diffuseur 😉.

Pourquoi/C’est quoi blynk ?

Cette fois nous n’utiliserons pas node-RED pour une raison très simple. L’utilisation sur mobile de Node-RED n’est pas optimale… Ors ce projet s’intéresse surtout à ces plateformes. En effet, un téléphone fera une bien meilleure télécommande qu’un ordinateur de mon point de vue.

 

Blynk est un service qui va permettre d’acheminer nos paquets de bout en bout d’un réseau tout en offrant une couche application plutôt sympa. Blynk possède aussi une application sur mobile (chose primordiale dans notre cas). Celle-ci est simple et efficace et fera une merveilleuse interface utilisateur.

Puis blynk est aussi beaucoup plus simple à utilisé que Node-RED grâce à sa très complète librairie arduino.

Pourquoi pas une wemos D1 mini ?

 

J’ai beaucoup hésité entre les deux, mais j’ai finalement décidé de me tourner vers l’ESP01 qui comporte quelques avantages, mais je le reconnais, beaucoup d’inconvénients…

Vous vous rappelez la touche weldybox que j’ai évoquée au début? Et bien tout comme la sonnette connectée j’ai décidé de faire tenir ce circuit dans un œuf kinder en plastique. C’est donc dans le but de rendre ce circuit le plus discret possible que j’ai décidé de choisir l’ESP01.

ex: sonnette connecté

Contrairement à un buzzer, un servo moteur n’utilise pas de GPIO classique, mais des GPIO PWM qui ne sont pas défaut pas disponible sur l’ESP01 (début des ennuis). J’ai dû en ajouter manuellement et je dois admettre qu’après coup qu’une wemos d1 mini aurait été une solution plus simple à mettre en œuvre.

Si vous voulez cependant relever le défi d’allier petit circuit et soudure < 1mm alors foncé prendre l’ESP01 😉

  • D’un ESP01

 

  • De plusieurs servo moteurs

 

  • D’un DC step down (pour réguler la tension d’alimentation)

 

  • D’une alimentation (pour ma part une vielle que j’ai recyclée)

 

  • Ainsi qu’un contenant (le fameux œuf de kinder de mon côté)

LE DIFFUSEUR D’ODEUR

Dans cette première grande partie, nous allons nous occuper du plus simple des deux circuits.

 

Étude du système

Description du diffuseur : Le diffuseur dispose de deux boutons et peut être utilisé selon deux modes de fonctionnement.

Le second bouton ne nous intéresse pas puisque celui-ci permet d’allumer des LED dans le diffuseur pour le transformer en une sorte de lampe d’ambiance.

Le premier bouton est bien plus intéressant puisque c’est celui-ci qui permet de sélectionner l’un des deux modes de fonctionnement. Nous aurons le choix entre le mode diffusion continue ou diffusion altérée de 10 secondes.

Je l’utilise généralement selon ce mode de fonctionnement personnellement.

C’est donc ce bouton que nous devrons actionner !

 

Prototypage

 

Avant de réaliser le circuit final à l’aide de l’ESP01 j’ai réalisé un prototype avec un node-MCU qui est bien plus pratique pour développer des systèmes rapidement

Nous aurons besoin d’un servo moteur qui viendra appuyer à deux reprises sur le bouton en question.

Les libraires

Le node-MCU/ESP01 a aussi besoin d’une lirbarire pour contrôler le servo, mais rassurez-vous celle-ci est présente de base dans l’IDE.

Pour commencer, je vous conseille vivement d’ouvrir les exemples sweep (pour le contrôle du servo) et la librairie Node-MCU pour débuter avec blynk.

La communication avec blynk

 

Blynk se programme à la fois par ligne de commande depuis l’IDE arduino, mais aussi en graphique depuis l’application ce qui rend son utilisation très simple.

Dans un premier temps, il faut que vous récupériez le token lié à votre carte. Cette opération se fait depuis l’application mobile. Vous devrez tout d’abord créer un nouveau projet dans lequel vous spécifierez le type de carte que vous utiliserez. Une fois celui-ci sélectionné, pensé à copier le token d’authentification qui va nous servir pour programmer la carte.

Ce token, ainsi que les modalités de connexion à votre box sont les seules conditions nécessaires pour créer un lien avec Blynk. La fonction blynk.run() se charge de traiter les requêtes reçues depuis le mobile donc pas besoin de programmer si vous voulez simplement allumer ou éteindre un LED par exemple.

En effet, comme le montre l’exemple ci-dessous l’application offre la possibilité d’agir directement sur les ports physiques de la carte. Avec cette fonctionnalité, même pas besoin de programmer le seul code exemple du node-MCU vu ci-dessus suffit.

Nous allons voir que pour faire des choses plus complexes Blynk propose aussi de nombreuses fonctions déjà préconçues pour faciliter leurs utilisations.

Actionner le servo moteur avec Blynk

 

Pour actionner le servo moteur, l’action d’une broche spécifique de l’ESP ne suffira pas… Il faut s’aider d’une condition pour actionner ou non le servo en fonction du payload envoyé depuis l’application mobile.

Nous avons depuis cette même application la possibilité de modifier le payload (de base 0 et 1), mais également d’utiliser des broches virtuelles. Les broches virtuelles sont utilisées pour permettre d’envoyer un message au destinataire qui sera par la suite traité par un programme arduino (parfait pour nous).

Sur la documentation de blynk on peut voir qu’il existe une fonction BLYNK_READ_DEFAULT() qui prend la broche virtuelle de l’ESP et qui extrait le payload du message reçu. C’est grâce à cette fonction qu’on pourra traiter le message pour actionner de telle ou telle manières le servo afin d’activer ou non le diffuseur.

Le servomoteur quant à lui dispose d’un degré d’action de 180. J’ai pour ma part utilisé un simple de gap de 20° suffisant pour actionner le bouton.

ATTENTION

il ne faut pas oublier que pour entrer dans le mode de fonctionnement voulu il faut absolument que le servo clic deux fois sur le bouton.

Pour me simplifier la vie j’ai donc créé une fonction qui correspond à un clic du servo (avec une boucle for) que j’ai itéré deux fois si le payload reçu est 1 et une fois si le payload reçus est 0.

Ce prototype est désormais terminé, et c’est après quelques tests que j’aie décidé de passer à la réalisation circuit.

 

Le circuit

 

Voici le schéma du circuit final :

La grande difficulté s’est de mettre le tout dans la capsule kinder. J’ai commencé par régler le step down buck que j’ai ensuite relié à l’alimentation à travers la capsule.

C’est là que les choses se compliquent… Pourquoi ? Il faut souder l’alimentation et le servo moteur et faire tenir le tout à l’intérieur de la capsule.

Pour pouvoir réutiliser les servo moteur sur d’autres projets ou simplement les remplacés j’ai décidé de relier les 3 broches (Vcc, Gnd, Data) à 3 broches male qui dépasserons de la capsule. De cette manière, j’aurais juste à brancher le servo à la capsule au lieu de le souder.

Les mots d’ordre pour réaliser ce montage sont patience et rigueur. J’ai pris le temps de bien identifier les broches Vcc et Gnd pour connecter correctement le servo une fois le circuit terminé et branché.

Si tous s’est bien passé vous n’avez plus qu’à branché l’alimentation puis le servo moteur à l’œuf.

L’INTERRUPTEUR

Étude du système

Pour l’interrupteur le principe est quelque peut différente. Un servo moteur ne suffira pas pour actionner l’interrupteur. Il en faut donc deux, un pour actionner la partie supérieure et l’autre pour la partie inférieure.

Mon interrupteur et mon diffuseur d’odeur sont juste à côté. Au lieu de récupérer une autre alimentation, j’ai donc décidé de partager celle du diffuseur et ainsi alimenter la seconde capsule.

 

Le code

 

Le code arduino ne va pas gérer un servo, mais deux cette fois. Pour faciliter la programmation j’ai défini une fonction qui prend en argument le nom de l’objet qui gère tel ou tel servo moteur et le fait fonctionner.

Les servo moteurs prendront cette fois-ci un angle de 180 pour que leurs positions de repos ne viennent pas gêner l’interrupteur.

Lorsque l’ESP recevra un payload « 1 » l’ESP01 actionnera un des servo (peut importe) et quand le payload sera « 0 » ce sera au tour de l’autre servo.

C’est un peu près tout… Le reste du code est sensiblement le même que pour le diffuseur.

 

Le circuit

 

Le circuit est de même identique pour cette partie. La seule difficulté sera la présence des 2 servo.

Dans un premier temps, vous devrez encore une fois faire une soudure directement sur la puce (si vous travailler sur un ESP01), il faudra en réaliser 2 ! qui dit deux servo dit aussi deux fois plus de fils à l’intérieur de la capsule.

Comme pour le diffuseur j’ai fait en sorte de relier les 6 fils des servo à des broches mal pour y brancher les servo moteur une fois le circuit terminé.

Même si j’ai eu du mal à fermer la capsule j’étais satisfait du résultat qui a fonctionné du premier coup !!

 

L’application

 

L’application est finalement équipée de deux bouton ON/OFF. L’un est destiné au diffuseur et l’autre à la lumière. Blynk permet également de faire des widget, chose que je trouve très pratique ! Je les ai ajoutés à l’un de mes menus, cela évite de devoir allumer l’application à chaque utilisation… Vous avez également la possibilité d’ajouter un timer qui viendra actionner automatique tel ou tel bouton directement depuis l’application.

Voici une rapide vidéo de présentation:

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

+

Du contenu bonus offert à chaque nouvel article!