Premiers projets
Introduction
Ce chapitre est consacré à la réalisation concrète des premiers projets qui constitueront l’installation domotique, à savoir les capteurs de l’installation, et à l’étude de la plupart des possibilités qui sont offertes à l’utilisateur grâce à un microcontrôleur ESP8266, abrégé ESP8266 par la suite.
À cette fin, plusieurs capteurs détaillés dans le chapitre Compteurs, capteurs et actionneurs sont utilisés pour réaliser ces premiers projets. Ils permettent d’aborder différents thèmes détaillant la quasi-totalité des possibilités offertes par un ESP8266 d’un point de vue acquisition, comme la mesure de capteurs numériques ou analogiques, ou encore la gestion des entrées et sorties numériques. De plus, les fonctionnalités liées à la communication sans fil Wi-Fi sont également abordées. Les possibilités de contrôle de dispositifs à l’aide d’un ESP8266 seront abordées, quant à elles, dans le chapitre Amélioration des consommations et du confort.
Bien que des notions de programmation à l’aide de l’IDE Arduino soient abordées dans le chapitre Compléments (section Notions de programmation pour l’IDE Arduino), il est utile de rappeler qu’un programme réalisé dans cet ouvrage est constitué de quatre parties :
-
Le préambule : il s’agit des premières lignes de code qui sont d’abord constituées des librairies à utiliser pour l’ensemble du code puis des variables dites globales (qui peuvent être utilisées dans l’ensemble du code).
-
La fonction setup() qui n’est exécutée qu’une fois au (re-)démarrage...
Fonctions de base de l’ESP8266
L’avantage d’un ESP8266 par rapport à de nombreux microcontrôleurs du marché est la présence d’une architecture capable de se connecter à un réseau Wi-Fi, sans pour autant augmenter son coût de manière significative. Afin d’utiliser les fonctions des cartes ESP8266 liées à l’utilisation du Wi-Fi dans un programme, il est nécessaire de commencer chacun de ces programmes par l’instruction suivante :
#include <ESP8266WiFi.h>
Elle permet d’ajouter une des librairies de la bibliothèque dédiée à l’utilisation des ESP8266 dont l’installation a été abordée dans le chapitre Configuration du matériel. Cette librairie embarque des fonctions spécifiques à l’ESP8266 afin de pouvoir notamment interagir avec l’antenne Wi-Fi embarquée.
Une deuxième librairie de la bibliothèque ESP8266 sera également souvent intégrée aux projets qui utilisent un réseau Wi-Fi afin de pouvoir effectuer des requêtes HTTP indispensables pour communiquer avec le contrôleur domotique (ou tout autre service web) :
#include <ESP8266HTTPClient.h>
La librairie WiFiClient.h sera utilisée afin d’initier les connexions TCP :
#include <WiFiClient.h>
1. Connexion au réseau Wi-Fi avec une adresse IP dynamique
a. Réalisation du programme
Dans cette section, il est considéré que le routeur - ou plus largement la box internet - auquel se connecte l’ESP8266 est configuré afin d’attribuer automatiquement une adresse IP à un dispositif réseau qui s’y raccorde (il possède un serveur DHCP). C’est en effet la configuration qui est mise en place par défaut dans la majorité des routeurs...
Mesures numériques
1. Gestion des entrées/sorties
Pour commencer l’étude des possibilités de mesures offertes par un ESP8266, il est proposé de réaliser une mesure de distance. Par ce biais, la gestion des entrées et des sorties numériques de l’ESP8266 est étudiée.
Comme décrit dans le chapitre Compteurs, capteurs et actionneurs, l’ESP8266 possède de nombreuses broches numériques. Elles peuvent être configurées (et donc utilisées) soit en entrée pour effectuer une lecture de l’état de la broche, soit en sortie pour imposer un état dans le but de commander un dispositif extérieur. Afin de configurer une broche numérique, il suffit d’utiliser la fonction :
pinMode(argument_1, argument_2)
où :
-
l’argument_1 est le numéro de la broche numérique (GPIO) dont on trouvera la correspondance dans le chapitre Configuration du matériel - section Correspondance des GPIO ;
-
l’argument_2 est la configuration de la broche. L’argument_2 peut prendre deux valeurs, soit INPUT pour configurer la broche en entrée (et donc mesurer l’état de la broche) soit OUTPUT afin de configurer la broche en sortie (et donc réaliser une commande).
La mesure retournée par une broche numérique vaut 0 ou 1. Elle peut être stockée sous forme entière (int) ou booléenne (bool).
Le capteur sélectionné pour effectuer la mesure de distance est un capteur à ultrasons dénommé HC-SR04. Il s’agit d’un capteur à ultrasons disposant d’un émetteur (représenté T sur le schéma pour Transmitter), d’un récepteur (R) d’ultrasons et de quatre broches dont deux pour l’alimentation (VCC et GND). Les deux autres...
Mesures analogiques
Les capteurs analogiques sont des capteurs délivrant un signal de sortie analogique, c’est-à-dire qui peut prendre une infinité de valeurs dans un intervalle donné, par opposition aux signaux de sorties numériques qui ne peuvent prendre que deux valeurs.
Certains d’entre eux délivrent par exemple une tension continue en fonction de la grandeur physique mesurée. Cette section est dédiée à traiter les mesures analogiques les plus courantes, à savoir les mesures de tension, de courant ainsi que les mesures de résistances.
En toute rigueur, certains capteurs analogiques délivrent une tension provenant d’un DAC (un convertisseur numérique vers analogique) qui implique que le signal est discret et non continu, mais le nombre de valeurs différentes est significativement plus grand que celui des signaux numériques, à savoir 1 et 0.
Pour réaliser ces mesures analogiques, la platine de l’ESP8266 dispose d’une entrée analogique d’une résolution de 10 bits (soit 210 = 1 024 états différents) capable de mesurer une plage de tensions continues de 0 V à 3,3 V. Dans ce cas, la résolution de la mesure est approximativement de 3 mV (soit 3,3 divisé par 1023, vu que le 0 est un état à part entière).
Par défaut, la puce ESP8266 est capable de mesurer une tension d’au maximum 1 V, mais un pont diviseur de tension (voir section Détection du clignotement d’une LED de ce chapitre) est implémenté sur la platine utilisée pour étendre la tension maximale admissible à la broche de 3,3 V.
La connexion générique d’un signal analogique à l’ESP8266 se réalise comme le montre la figure suivante, avec le signal de sortie analogique du capteur...
Autres protocoles de communication
Il est proposé d’étendre les possibilités de l’ESP8266 par l’étude d’autres protocoles de communication qui peuvent être utilisés par des capteurs ou des actionneurs disponibles dans le commerce, à savoir le protocole série pour l’interaction entre deux machines et l’I²C pour les réseaux de dispositifs. Par ailleurs, l’utilisation d’autres protocoles spécifiques est abordée par l’intermédiaire de la mesure d’un capteur de température et d’humidité, le DHT22, et d’un capteur de température DS18B20 dans sa version étanche.
Ces protocoles consistent généralement en l’envoi d’une chaîne binaire qui représente la valeur mesurée du capteur et qui dépend à la fois du protocole même utilisé pour la communication, mais aussi du fabricant et du type de capteur.
Dans le cas de l’utilisation d’autres capteurs utilisant un protocole de communication spécifique, il est conseillé de vérifier qu’une librairie est disponible afin d’éviter de devoir programmer l’ensemble des fonctions permettant le décodage des signaux.
1. Protocoles spécifiques
a. DHT22
Ce capteur permet de mesurer la température et l’humidité. Une seule broche de communication est nécessaire pour la mesure des deux grandeurs.
Afin de réaliser ce montage, un capteur DHT22, une résistance de 10 kΩ, quelques câbles de connexion ainsi qu’une platine d’essai sont nécessaires.
La valeur de 10 kΩ est une valeur conseillée (par le manuel d’utilisation du capteur) même si d’autres valeurs entre...
Lecture de badge RFID
Comme détaillé dans le chapitre Configuration du matériel, les badges (ou tag) RFID permettent notamment d’identifier une personne ou un produit. Il est proposé dans cet exemple de lire un badge et de vérifier s’il est répertorié. En fonction des besoins de l’utilisateur, il est alors possible de réaliser des actions spécifiques qui seront traitées dans les chapitres suivants. Un exemple plus complexe est proposé dans le chapitre Compléments.
Au niveau des connexions, il faut raccorder le module RFID à l’ESP8266 comme suit (broche du module vers celle de l’ESP8266) :
-
VCC à la broche 3,3 V (attention, certaines versions fonctionnent en 5 V et ne seront pas compatibles)
-
GND (masse) à la broche GND
-
RST (reset) ) la broche D0
-
MISO (Master Input Slave Output) à la broche D6
-
MOSI (Master Output Slave Input) à la broche D7
-
SCK (Serial Clock) à la broche D5
-
SS (Slave Select) ou SDA (Serial Data) en fonction des versions à la broche D8
Un exemple de raccordement est proposé sur la figure suivante. Attention, certains fabricants ne respectent pas la disposition des broches. Il convient donc de se référer aux indications notées sur le module.
La librairie MFRC522 doit être installée au préalable, puis incluse dans le programme. Il en est de même pour la librairie SPI dédiée à la gestion du protocole SPI (Serial Peripheral Interface ).
#include <SPI.h>
#include "MFRC522.h"
Ensuite, les broches RST (reset) et SS (Slave Select) sont définies pour la communication avec le module par les instructions suivantes :
#define RST_PIN D0
#define SS_PIN D8
Un objet MFRC522 est alors défini avec ces deux broches :
MFRC522 mfrc522(SS_PIN, RST_PIN);...
Bibliographie
[1] |
E.W. Lemmon, "Thermodynamic Properties of Air and Mixtures of Nitrogen, Argon, and Oxygen from 60 to 2000 K at Pressures to 2000 MPa", Journal of Physical and Cheminal Reference Data, Vol. 29, n° 3, 2000. |
[2] |
R. T. Fielding, J. Gettys, J. C. Mogul, H. F. Nielsen, L. Masinter, P. J. Leach et T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", IETF, vol. 37, n° 1129, pp. 19-20, 1999. |