Projet IOC
Présentation générale
Pour la fin de ce module, vous allez faire en sorte d'accéder aux modules ESP32 en lecture et, si possible, en écriture depuis un navigateur WEB. Ce que j'attends c'est un système minimal, mais si vous êtes intéressé, vous pouvez complexifier chaque élément du système. Vous ne serez pas pénalisé si vous faites le minimum, mais si vous faites plus, vous aurez un bonus :-)
Votre plateforme matérielle se compose de:
- 1 ou 2 modules ESP32 sur lesquels vous avez comme capteur une photorésistance et 2 boutons-poussoirs (1 sur le module, 1 sur la carte), et comme "actionneurs" un écran, une led et, pour certains, un buzzer.
- Une raspberry pi 3.
Sur la raspberry pi 3, vous devez créer:
- 1 serveur HTTP pour répondre au client navigateur WEB et récupérer les valeurs des capteurs ou envoyer des commandes sur les actionneurs.
- Vous pouvez utiliser le serveur HTTP en Python déjà vu, ou un autre serveur tel qu'Appache avec un serveur en PHP ou un framework tel que Django.
- 1 application gateway qui fait le lien entre le serveur HTTP et les capteurs.
Cette application est composée de:- un client MQTT qui récupère des data (par subscribe) ou émet des commandes (par publish) aux clients MQTT présents sur les ESP32.
- un broker MQTT qui assure le "routage" des messages entre les clients
- une "base de données" qui enregistre les valeurs envoyées par les ESP32.
Cette base de données peut être un simple fichier contenant seulement la dernière valeur envoyée par une ESP32 (donc il peut y avoir autant de fichiers que d'ESP32) ou être une vraie base de données telle que sqlite-3. Ce choix dépend du temps que vous voulez consacrer et de vos compétences initiales dans ce domaine.
Sur les ESP32, vous devez créer:
- Un client MQTT qui "publish" et si possible "subscribe" des messages destinés ou provenant du client MQTT s'exécutant sur la raspberrypi 3.
- Des taches qui interfacent les capteurs et les actionneurs
Étapes proposées
Pour faire fonctionner l'ensemble du système, vous devez procéder en deux grandes étapes : la preuve de concepts et la réalisation sur le matériel.
Vous devez écrire un compte-rendu qui explique en détail chaque élément, avec l'idée qu'il doit être possible de reproduire votre dispositif en suivant les étapes de votre compte-rendu. Ce document est noté et compte pour 20% de la note finale, c'est une motivation, mais au-delà de ça, l'idée c'est de garder les connaissances que vous allez mettre en œuvre dans un document clair. Je vous conseille vraiment d'écrire votre compte-rendu au fur et à mesure, vous pouvez d'ailleurs lui donner la structure d'un journal de bord dans lequel vous mettez dans l'ordre chronologique les connaissances glanées sur le web, les expériences et les résultats.
Créer l'ensemble du projet
Avant de commencer à utiliser la Raspberrypi3 et les EPS32, je vous propose de faire une preuve de concept sur une machine de la salle de TP. En effet, vous pouvez tout à fait tout mettre sur la même machine : le serveur http, le gateway (broker MQTT + 1 client MQTT), une base de données (ou un simple fichier) et les clients MQTT qui devront être présents sur les ESP32.
Pour ces clients MQTT, dans la preuve de concept, ils seront écrits en python ou en C, alors que sur les ESP32 ce sera du C++ Arduino. Ce n'est pas grave, vous simulez le comportement d'un ESP32 qui envoie la valeur de sa photorésistance en envoyant la valeur d'un compteur (pour vérifier que vous n'avez pas de perte) et vous simulez l'écran en affichant simplement sur le terminal.
Mettre chaque élément sur les composants définitifs
Maintenant que vous avez un ensemble fonctionnel, vous pouvez utiliser les composants définitifs, ESP32 et Raspberrypi3
- Installer la Raspberrypi3. Vous pouvez utiliser le système déjà présent ou choisir d'installer une nouvelle distribution. Je peux vous proposer une nouvelle carte SD pour ne pas perdre l'installation de la carte SD déjà présente dans la Rpi3.
- Il va falloir que vous ayez un réseau WIFI. Si vous avez un portable, je vous conseille de partager sa connexion avec votre Rpi3. Je vous laisse chercher :-)
- Tester MQTT sur les ESP32 en les faisant communiquer avec la RaspberryPi3 avec les programmes de tests trouvés dans les bibliothèques.
- Mettre sur la Rpi3, le serveur http et le gateway.