Une alarme Arduino équipé d`un module WiFi : l`ESP8266

Transcription

Une alarme Arduino équipé d`un module WiFi : l`ESP8266
Une alarme Arduino équipé d’un module
WiFi : l’ESP8266
1. Introduction
L’ESP8266 est un composant électronique permettant de rajouter la communication WiFi à n’importe
quel projet. Il s’inscrit donc directement dans le domaine de l’IoT (Internet of Things). L’ESP8266 a de
nombreux avantages que je vais vous présenter.
Tout d’abord il a une taille qui défi toute concurrence en terme d’encombrement, il est très bon marché
(entre 3 et 5 euros pour le modèle le plus basique, l’ESP -01 qui embarque seulement 2 pins I/O).
L’ESP est programmable Arduino sans carte programmable quelconque en tant qu’intermédiaire. Il
suffit seulement d’une interface USB/TTL pour pouvoir compiler le code à l’intérieur. Cette possibilité lui
donne une indépendance très importante.
Malgré tout, il peut aussi être utilisé sur un Arduino Uno/Mega. Pour ce projet, j’ai utilisé cette
possibilité, car j’avais besoin de le connecter à un Arduino Mega pour envoyer les données des capteurs
(contact, présence) sur une page Web.
Un de ces nombreux avantages est de pouvoir être utilisé non seulement en tant que serveur mais aussi
en tant que point d’accès ou tout simplement en tant que client d’un autre serveur. De cette manière, il est
possible de faire un réseau de modules ESP en paramétrant un ESP en tant que serveur et tous les autres en
tant que client avec une adresse IP unique à chacun.
Les possibilités de ce petit module sont tellement nombreuses qu’un forum entier est dédié à ce
composant ( http://www.esp8266.com/ ).
2. Branchement (ESP-01)




VCC doit être branché à une alimentation de 5V ou 3.3V.
GND doit être branché à la masse
I/O0 et I/02 sont les deux pins entrées/sorties du module ESP-01
Rx est le pin de réception qui doit être branché au pin faisant office de Tx (transmission) sur l’Arduino
(pour ma part j’ai choisi le pin 29 sur l’Arduino Mega). Attention tout de même car le Rx de l’ESP ne
doit pas recevoir du 5V mais bien du 3.3V donc il recommandé de faire un pont diviseur (1kΩ et 2kΩ)
avant de branché le Tx de l’Arduino au Rx de l’ESP.
 Tx doit être branché au pin faisant office de Rx (réception) sur l’Arduino (pour ma part, j’ai choisi le pin
27).
 RST un le pin servant à réinitialiser l’ESP8266 (état bas -> activé). Si le pin RST est toujours à l’état bas
l’ESP ne peut pas fonctionner car il se réinitialise indéfiniment.
Ch_PD permet d’activer ou de désactiver l’ESP (état haut -> activé). Cela permet d’éviter de
consommer du courant lorsque cela n’est pas nécessaire. Dans ce projet, cela serait intéressant lorsque l’alarme
n’est pas activée depuis un certain temps.
Dans notre cas, RST est à l’état haut et CH_PD est aussi à l’état haut.
Le courant requis pour l’ESP-01 varie entre 250mA et 750mA, le courant fournit par l’Arduino peut
ne pas être suffisant pour le fonctionnement optimale du module. Idéalement il faudrait une source de tension
de 3.3V permettant de fournir un courant de 1A ou plus.
3. Programmation
Ici, l’ESP est considéré comme un client qui envoie des informations (états des capteurs) au serveur
(fichier PHP). Pour cela, on envoie une requête POST au serveur avec en paramètre l’état des différents
capteurs. De là, le serveur récupère ces données (stockées dans la variable $_POST) et les affiche sur une page
web HTML minimaliste).
Le code Arduino de l’alarme est séparé en plusieurs fichiers (.cpp et .h le tout dans un .ino) pour
faciliter la lecture comme le code est très long.
Vous trouverez tout le code dans le dossier code.
Vous trouverez le code Arduino dans le dossier alarm_fichiers_separes.
4. Difficultés rencontrées
Du fait de ces nombreuses possibilités, l’ESP est un composant difficile à appréhender. Il nécessite des
compétences en langage C (Arduino) mais aussi en Web.
De nombreux sites proposent des tutoriels sur l’utilisation de l’ESP mais ces derniers ne sont pas
toujours pertinents ce qui nécessite un tri des informations qui est assez chronophage. Ce qui implique mon
manque de temps pour la finalisation de l’implémentation de ce module.
L’implémentation du code pour l’ESP dans le code déjà réalisé de l’alarme a été difficile du fait des
nombreux fichiers et lignes codes déjà présentes.
Les branchements sur l’Arduino Mega n’a pas été sans peine car beaucoup de fils sont présents ce qui
rendait les branchements difficiles à réaliser. De plus, comme de nombreux modules différents sont déjà
branchés sur le VDD de l’Arduino, le signal électrique est parasité de façon non négligeable. Il faudrait donc
plusieurs sources de tension externes pour résoudre ce problème.
Un diaporama inclut dans l’archive dans le dossier doc explique les deux premières étapes que j’ai
réalisée pour appréhender l’ESP8266 en tant que serveur et point d’accès.

Documents pareils