Image + tout le CR
182
README.md
@ -1,4 +1,18 @@
|
|||||||
# Mini projet de réseau de capteurs
|
# Mini projet de réseau de capteurs
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
Le but de cette SAE est de mettre en pratique les connaissances acquises pendant les ressources de IOM. Les consignes qui nous ont été données sont les suivantes :
|
||||||
|
|
||||||
|
- Un routeur Wifi est mis à la disposition de tout le groupe.
|
||||||
|
- Notre binôme dispose de :
|
||||||
|
- Un Raspberry PI sur lequel devra être installé un serveur web, une BdD et un serveur MQTT. Ce RPI récupérera les données, gèrera le stockage, l’affichage et le contrôle des actionneurs via une page web. Il communiquera avec les ESP par wifi.
|
||||||
|
- Deux ESP32. L’un utilisera microPython, l’autre l’IDE arduino.
|
||||||
|
- Le premier ESP disposera d’un capteur sur liaison I2C ainsi qu’une led et un écran LCD.
|
||||||
|
- Le deuxième ESP disposera d’un capteur, d’un servo-moteur et d’un écran OLED.
|
||||||
|
|
||||||
|
Chaque ESP transmettra ses données au RPI (alimentation de la base de données+affichage sur page web simple), affichera certaines d’entre elles sur l’écran qui lui est connecté et modifiera l’état de l’actionneur en fonction des données captées ou sur ordre de l’utilisateur.
|
||||||
|
|
||||||
|
Ce rapport est donc un bilan du déroulement de notre projet.
|
||||||
## Spécificité des capteurs
|
## Spécificité des capteurs
|
||||||
|
|
||||||
### BMP280
|
### BMP280
|
||||||
@ -49,4 +63,170 @@ Ecran | Oled 0.96
|
|||||||
Résolution | 128x64 pixels
|
Résolution | 128x64 pixels
|
||||||
Protocole | I2C
|
Protocole | I2C
|
||||||
|
|
||||||
Tableau 5: écran OLED
|
Tableau 5: écran OLED
|
||||||
|
## Raspberry Pi
|
||||||
|
|
||||||
|
### Système d’exploitation
|
||||||
|
|
||||||
|
Le raspberry que nous utilisons est un raspberry pi 3 modèle b version 1.2
|
||||||
|
|
||||||
|
| Caractéristiques | Valeurs |
|
||||||
|
|-----------------------|----------------------------------------|
|
||||||
|
| Mémoire Ram | 1 Go |
|
||||||
|
| Vitesse du processeur | 1.2GHz |
|
||||||
|
| Carte réseaux | 802.11 bgn Wireless LAN and Bluetooth 4.1 (Bluetooth Classic and LE) |
|
||||||
|
|
||||||
|
Le but de cette raspberry est de récolter des données afin de les afficher sur un site internet. Nous allons donc mettre en place des serveurs SQL, MQTT et Web. Nous avons fait le choix de Dietpi pour sa praticité et ses menus. Nous avons donc téléchargé le système d’exploitation puis l’avons installé via Raspberry Pi Imager. Après avoir installé on altère le fichier diet.txt tel que :
|
||||||
|
```bash
|
||||||
|
AUTO_SETUP_NET_ETHERNET_ENABLED=0
|
||||||
|
|
||||||
|
AUTO_SETUP_NET_WIFI_ENABLED=1
|
||||||
|
|
||||||
|
AUTO_SETUP_NET_USESTATIC=1
|
||||||
|
|
||||||
|
AUTO_SETUP_NET_STATIC_IP=192.168.80.160
|
||||||
|
|
||||||
|
AUTO_SETUP_NET_STATIC_MASK=255.255.255.0
|
||||||
|
|
||||||
|
AUTO_SETUP_NET_STATIC_GATEWAY=192.168.80.153
|
||||||
|
|
||||||
|
AUTO_SETUP_DHCP_TO_STATIC=1
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis enregistrer.
|
||||||
|
|
||||||
|
Ensuite dans la même partition modifier le fichier dietpi-wifi.txt :
|
||||||
|
```bash
|
||||||
|
aWIFI_SSID[0]='WifiSAE'
|
||||||
|
|
||||||
|
aWIFI_KEY[0]='12345678910'
|
||||||
|
|
||||||
|
ssh dietpi@ip
|
||||||
|
|
||||||
|
mdp : dietpi
|
||||||
|
```
|
||||||
|
## Installation des services
|
||||||
|
|
||||||
|
Changer de réseaux était quelque chose qui a souvent dû être fait pour avoir accès soit à Internet soit au Raspberry Pi
|
||||||
|
|
||||||
|
Pour changer de wifi il faut faire la commande :
|
||||||
|
```bash
|
||||||
|
sudo dietpi-config
|
||||||
|
```
|
||||||
|
Puis sélectionner l’item suivant sur le menu :
|
||||||
|
|
||||||
|
7 : Network Options: Adapters
|
||||||
|
|
||||||
|
Puis on sélectionne le wifi et dans "scan" (On configure au préalable le DHCP) et on entre le mode de passe.
|
||||||
|
|
||||||
|
### SQL
|
||||||
|
|
||||||
|
Il faut utiliser la commande sudo mysql_secure_installation qui permet de configurer l’user root et de rendre la base de données plus sécurisé. Afin de se connecter à la base de données on utilise
|
||||||
|
```bash
|
||||||
|
mysql -u root -p
|
||||||
|
```
|
||||||
|
|
||||||
|
(Il n’est pas nécessaire de spécifier l'adresse IP avec le -h cela est fait automatiquement en localhost)
|
||||||
|
|
||||||
|
Afin d’ajouter l'utilisateur "brocolis" à la base de données :
|
||||||
|
```sql
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'brocolis'@'localhost' IDENTIFIED BY 'brocolis';
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour actualiser les privileges :
|
||||||
|
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
Pour créer la base de données on utilise la commande suivante :
|
||||||
|
```sql
|
||||||
|
CREATE DATABASE brocolis;
|
||||||
|
```
|
||||||
|
|
||||||
|
Afin de créer une table il nous sélectionner une base de données :
|
||||||
|
```sql
|
||||||
|
USE brocolis
|
||||||
|
```
|
||||||
|
Voici un exemple de d’une table contenant les entrées du capteur dht22 :
|
||||||
|
```sql
|
||||||
|
CREATE TABLE dht22 (
|
||||||
|
|
||||||
|
dht22_id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
|
||||||
|
temp FLOAT,
|
||||||
|
|
||||||
|
hum FLOAT,
|
||||||
|
|
||||||
|
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
|
||||||
|
);
|
||||||
|
```
|
||||||
|
### MQTT
|
||||||
|
|
||||||
|
Pour ajouter l'utilisateur brocolis au serveur mqtt
|
||||||
|
```bash
|
||||||
|
sudo mosquitto_passwd -c /etc/mosquitto/passwd brocolis
|
||||||
|
```
|
||||||
|
|
||||||
|
On redémarre le service avec
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart mosquitto
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour la configuration mosquitto on supprime tout dans le /etc/mosquitto/mosquitto.conf et on remplace par:
|
||||||
|
```bash
|
||||||
|
allow_anonymous false
|
||||||
|
|
||||||
|
password_file /etc/mosquitto/passwd
|
||||||
|
|
||||||
|
listener 1883
|
||||||
|
```
|
||||||
|
## Serveur web :
|
||||||
|
|
||||||
|
Pour mettre en lien les différents services, nous avons fait le choix de Node Red. Sa prise en main est plutôt longue mais son interface graphique rappelant scratch nous a fait pencher vers ce choix.
|
||||||
|
|
||||||
|
Pour accéder a Node Red, nous avons le lien ci-dessous à entrer en étant connecté sur le réseau PT4ObjConnect :
|
||||||
|
|
||||||
|
http://@192.168.1.75:1880
|
||||||
|
|
||||||
|
Voici le schéma Node Red:
|
||||||
|
<img src='./img/sch_nodered.png' width="500">
|
||||||
|
Ce bloc est un « MQTT in » il permet de recevoir les données d’un topic MQTT.
|
||||||
|
<img src='./img/noeud_nodered.png' width="500">
|
||||||
|
Voici les propriétés de ce bloc :
|
||||||
|
<img src='./img/Edit_mqtt_in_node.png' width="500">
|
||||||
|
Le serveur étant hébergé sur le serveur MQTT, on utilise l’adresse locale pour le serveur, on écoute le topic /capteur/dht22.
|
||||||
|
Le bloc JSON convertit les entrées en objet javascript ce qui permettra d’utiliser le bloc « fonction » (voir figure 4) afin d’envoyer les données en SQL.
|
||||||
|
<img src='./img/bloc_f_nodered.png' width="500">
|
||||||
|
Ce bloc représente la base de données utilisé qui se nomme « brocoli » :
|
||||||
|
<img src='./img/bd_brocoli_blck.png' width="500">
|
||||||
|
Les blocs bleus sont des widgets et servent à l’affichage sur le dashboard. En cliquant en haut à droite on peut éditer le dashboard en créant des groupes de widget. Dans notre cas tous les widgets sont dans le même groupe.
|
||||||
|
|
||||||
|
· Humidité et température sont des gauges
|
||||||
|
|
||||||
|
· Template permet d’ajouter un template html dans notre cas un simple tableau
|
||||||
|
|
||||||
|
Nous pouvons visualiser le résultat via le lien :
|
||||||
|
|
||||||
|
http://@192.168.1.75:1880/ui
|
||||||
|
<img src='./img/bd_brocoli_blck.png' width="500">
|
||||||
|
## Réalisation
|
||||||
|
|
||||||
|
Nous avons qu’un capteur qui fonctionne ainsi que l’écran OLED SSD1306, le programme « main » fonctionne tel que dès que la carte est alimentée il affichera le taux d’humidité et la température sur l’écran OLED et se connectera directement à la box. Les données seront envoyées toutes les 5 secondes sur le topic capteur/dht22. Le programme est construit à partir de la ressource R3IOM17 et de documentation en ligne. Le dht22 a besoin d’une résistance de 10kΩ pour fonctionner. Tout les composant sont alimentés en 3.3V sous le conseil de notre professeur.
|
||||||
|
<img src='./img/montage.png' width="500">
|
||||||
|
## Difficultés
|
||||||
|
|
||||||
|
### Le changement de carte programmable :
|
||||||
|
|
||||||
|
Nous avons commencé le projet avec des cartes temporaires après avoir été avec les cartes définitives une mise à jour Windows à freiner l’avancement car plus aucun port COM était reconnu par Thonny et par Arduino IDE. Après plusieurs restaurations aux paramètres d’usines pour ensuite tester différentes versions de micro-python. La plus récente version de micro-python a pu fonctionner. Après avoir tester le branchage nous avons détecté des fils défectueux mais aussi constater que le capteur DS18B20 n’est plus fonctionnel. Le temps perdu dans ces dépannages à freiner l’avancement du projet. Donc nous avons mis en place les services en délaissant la carte Arduino. Les programmes des autres capteurs n’ont pas été trouvés en micro-python.
|
||||||
|
|
||||||
|
### La liaison entre les 3 services
|
||||||
|
|
||||||
|
Cette partie contrairement à la précédente explique les difficultés rencontrées avec une phase réussite du projet. Le Raspberry pi avait un problème à rester connecté sur un réseau. Cela a rendu difficile l’installation des différents services. Le problème n’est plus survenu après une réinstallation
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
Nous avons un système capable de mesurer la température et le taux d’humidité dans l’air, ces données ont 2 moyens d’être communiqué à un utilisateur via un écran et un site internet. Nous avons donc couvert les couches collectes jusqu’à la couche de valorisation
|
||||||
|
|
||||||
|
Mais nous n’avons pas atteint tous les objectifs demandés.
|
||||||
|
|
||||||
|
|
||||||
|
BIN
img/Edit_mqtt_in_node.png
Executable file
After Width: | Height: | Size: 142 KiB |
BIN
img/bd_brocoli_blck.png
Executable file
After Width: | Height: | Size: 28 KiB |
BIN
img/bloc_f_nodered.png
Executable file
After Width: | Height: | Size: 18 KiB |
BIN
img/dashboard.png
Executable file
After Width: | Height: | Size: 25 KiB |
BIN
img/montage.png
Executable file
After Width: | Height: | Size: 633 KiB |
BIN
img/noeud_nodered.png
Executable file
After Width: | Height: | Size: 47 KiB |
BIN
img/sch_nodered.png
Executable file
After Width: | Height: | Size: 138 KiB |