Image + tout le CR

This commit is contained in:
Raphael Payet 2023-06-13 18:56:47 +04:00
parent 06f2bd2c5c
commit 9f388f351f
8 changed files with 181 additions and 1 deletions

180
README.md
View File

@ -1,4 +1,18 @@
# 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, laffichage et le contrôle des actionneurs via une page web. Il communiquera avec les ESP par wifi.
- Deux ESP32. Lun utilisera microPython, lautre lIDE arduino.
- Le premier ESP disposera dun capteur sur liaison I2C ainsi quune led et un écran LCD.
- Le deuxième ESP disposera dun capteur, dun servo-moteur et dun écran OLED.
Chaque ESP transmettra ses données au RPI (alimentation de la base de données+affichage sur page web simple), affichera certaines dentre elles sur lécran qui lui est connecté et modifiera létat de lactionneur en fonction des données captées ou sur ordre de lutilisateur.
Ce rapport est donc un bilan du déroulement de notre projet.
## Spécificité des capteurs
### BMP280
@ -50,3 +64,169 @@ Résolution | 128x64 pixels
Protocole | I2C
Tableau 5: écran OLED
## Raspberry Pi
### Système dexploitation
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 dexploitation puis lavons 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 litem 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 luser 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 nest pas nécessaire de spécifier l'adresse IP avec le -h cela est fait automatiquement en localhost)
Afin dajouter 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 dune 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 dun 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 ladresse locale pour le serveur, on écoute le topic /capteur/dht22.
Le bloc JSON convertit les entrées en objet javascript ce qui permettra dutiliser le bloc « fonction » (voir figure 4) afin denvoyer 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 à laffichage 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 dajouter 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 quun 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 dhumidité 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 dune 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 lavancement car plus aucun port COM était reconnu par Thonny et par Arduino IDE. Après plusieurs restaurations aux paramètres dusines 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 nest plus fonctionnel. Le temps perdu dans ces dépannages à freiner lavancement du projet. Donc nous avons mis en place les services en délaissant la carte Arduino. Les programmes des autres capteurs nont 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 linstallation des différents services. Le problème nest plus survenu après une réinstallation
## Conclusion
Nous avons un système capable de mesurer la température et le taux dhumidité dans lair, 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 navons pas atteint tous les objectifs demandés.

BIN
img/Edit_mqtt_in_node.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
img/bd_brocoli_blck.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
img/bloc_f_nodered.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
img/dashboard.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
img/montage.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 KiB

BIN
img/noeud_nodered.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
img/sch_nodered.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB