Table des matières:

TheAir - Projet de capteur de gaz : 10 étapes
TheAir - Projet de capteur de gaz : 10 étapes

Vidéo: TheAir - Projet de capteur de gaz : 10 étapes

Vidéo: TheAir - Projet de capteur de gaz : 10 étapes
Vidéo: Mini projet ( un trieur des déchets par couleur ) 2024, Juillet
Anonim
TheAir - Projet de capteur de gaz
TheAir - Projet de capteur de gaz

Monoxyde de carbone et dioxyde de carbone, également appelés CO et CO2. Des gaz incolores, inodores, insipides et franchement dangereux lorsqu'ils sont en forte concentration dans une pièce fermée. Si vous vivez par exemple dans une chambre d'étudiant qui est mal isolée, pas de bonne circulation d'air et pour une raison quelconque, le grille-pain fait un bruit étrange en faisant des toasts. Ensuite, vous pourriez entrer en contact avec ces gaz et lorsque cela se produira, espérons que cela ne se terminera qu'avec un petit mal de tête, car à haute concentration, cela pourrait vous neutraliser ou même vous tuer (bien que très rarement).

J'ai donc décidé de monter ce projet. Mon idée est simple, utilisez des ventilateurs pour faire un airflow. Bon air entrant et mauvais air sortant pour ainsi dire. Pour plus d'utilité, j'ai ajouté un capteur de température supplémentaire, un bouton pour les ventilateurs à activation manuelle et également un site Web pour ceux qui aiment voir les statistiques et/ou activer les ventilateurs depuis leur ordinateur.

En tant qu'étudiant, parent, personne seule ou être vivant. C'est quelque chose que vous aimeriez normalement éviter lorsque vous vivez dans le confort de votre propre maison. Cela aide ceux qui aiment se faciliter un peu la vie.

Fournitures

  • Raspberry Pi 3+
  • Chargeur mini-usb 5V/2.5A
  • Carte Micro SD
  • Capteurs

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (température)
  • 2 ventilateurs 12V CC
  • 2 transistors 2n2222
  • Écran LCD 16*2
  • Bouton
  • MCP3008
  • Convertisseur de niveau Logi
  • Câble Ethernet (pour des raisons de configuration)

Étape 1: configuration du Raspberry Pi

Configuration du Raspberry Pi
Configuration du Raspberry Pi
Configuration du Raspberry Pi
Configuration du Raspberry Pi

Avant de travailler avec le Rpi, nous aurons besoin de quelques logiciels.

  • WinSCP ou FilleZilla (facultatif si vous souhaitez transférer des fichiers de votre ordinateur vers le Rpi)
  • Disque Win32 ou Etcher (que vous préférez le plus)
  • Putty ou MobaXterm (que vous préférez le plus)
  • Image Raspbian avec bureau

Avant de commencer, je voudrais mentionner que lors de la création de ce didacticiel, lorsque je choisis un programme plutôt qu'un autre, cela ne signifie PAS que je le recommande. Par exemple, j'aime utiliser Etcher car plus convivial mais Win32 a la possibilité de faire des sauvegardes. Maintenant que c'est hors de mon système, commençons.

Si vous avez déjà un Rpi connecté à votre réseau wifi, passez à l'étape 3.

Nous allons d'abord utiliser Etcher pour mettre l'image Raspbian sur votre carte SD. Maintenant, avant de retirer la carte SD, nous allons modifier quelques "trucs" dans le fichier cmdline.txt, qui se trouve dans l'image. Ouvrez le fichier.txt -> Ajoutez cette ligne "ip=169.254.10.1" (sans guillemets) à la fin de la ligne (tout sur 1 ligne) -> Enregistrer le fichier

Deuxièmement, créez un dossier vide appelé "ssh" dans la partition de démarrage (sans guillemets).

Après cela, vous pouvez éjecter le Microsd en toute sécurité et le mettre dans le Rpi.

La raison de l'IP statique codée en dur est de faciliter la connexion au Rpi. Si, pour une raison quelconque, le Rpi n'a pas d'adresse IP avec DHCP, vous utilisez facilement l'adresse IP statique.

Étape 2: établir une connexion et connecter Rpi Wireless à votre réseau local

Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local
Établir une connexion et connecter Rpi Wireless à votre réseau local

Nous allons démarrer le Rpi -> connectez le câble Ethernet entre l'ordinateur et le Rpi.

  1. Démarrez Putty et remplissez ceci:

    • Nom d'hôte (ou adresse IP): 169.254.10.1
    • Port: 22
  2. Un terminal apparaît et vous saisissez le nom d'utilisateur et le mot de passe par défaut:

    • Nom d'utilisateur: pi
    • Mot de passe: framboise

Maintenant que nous sommes connectés localement au rpi, nous voulons que le Rpi ait une connexion à votre wifi.

  1. Extra: saisissez "sudo raspi-config"
  2. Ici, vous devrez changer le mot de passe pour l'utilisateur pi (raisons de sécurité)
  3. Ensuite, allez dans Options de localisation -> Changer l'heure (choisissez la bonne) -> Ensuite, allez dans Pays Wifi -> choisissez le pays.
  4. Fermez raspi-config et redémarrez.
  5. Une fois connecté, faites-vous temporairement utilisateur root -> sudo -i
  6. Ecrivez cette commande pour ajouter votre réseau au Rpi (code ci-dessous liste)

    • mot de passe = "mot de passe" (avec guillemets)
    • Nom réseau = "SSID"
    • N'oubliez pas d'utiliser double >> !Important !

echo "mot de passe" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Maintenant, redémarrez à nouveau

Lors de la reconnexion, vérifiez votre IP en tapant:

ifconfig

et vérifiez wlan0, à côté de inet.

Maintenant que nous avons une connexion Internet, faisons une mise à jour "rapide".

mise à jour sudo apt

sudo apt dist-upgrade -y

Cela peut prendre un certain temps.

Étape 3: Capteur DS18B20 (température) -- 1 fil

Capteur DS18B20 (température) -- 1 fil
Capteur DS18B20 (température) -- 1 fil
Capteur DS18B20 (température) -- 1 fil
Capteur DS18B20 (température) -- 1 fil

Avec chaque projet, il y aura toujours quelque chose de spécial qui doit être fait, sinon cela ne fonctionnera pas pour le moment.

Cette fois, nous l'avons avec le capteur de température DS18B20 qui nécessite 1 fil dont je n'expliquerai pas pourquoi mais j'expliquerai au moins comment le faire fonctionner.

Pour cela il faut revenir à la raspi-config sur le Rpi, le joli écran bleu.

  1. Aller aux options d'interfaçage
  2. Choisissez 1-Wire et choisissez activer.

Terminé…

Je rigole.

Maintenant, nous devons ajuster /boot/config.txt

sudo nano /boot/config.txt

Ajoutez cette ligne en bas.

# Activer un fil

dtoverlay=w1-gpio

Maintenant, sudo redémarre cette chose et maintenant nous avons terminé.

Pour vérifier si cela fonctionne, connectez le capteur au Rpi puis revenez au terminal et tapez ce code (Voir l'étape suivante Matériel pour savoir comment connecter le capteur de température).

cd /sys/bus/w1/devices/w1_bus_master1

ls

Vous devriez voir quelque chose avec des chiffres et des lettres en bleu foncé en haut à gauche, assurez-vous d'écrire cette information pour plus tard lorsque nous travaillerons avec le code de github.

Si, pour une raison quelconque, cela ne fonctionne pas, consultez ce lien qui va plus loin.

Étape 4: MCP3008 - Détection analogique

MCP3008 - Détection analogique
MCP3008 - Détection analogique
MCP3008 - Détection analogique
MCP3008 - Détection analogique

Comme nous avons modifié le capteur de température, nous devons également apporter des modifications aux autres capteurs, car nous devons lire des données analogiques. C'est là que le MCP3008 est utile, nous devons également changer l'interface SPI.

sudo raspi-config

Allez dans Options d'interfaçage -> Sélectionnez SPI -> Activer.

Puis Terminez.

Étape 5: Matériel

Nous n'en avons pas entièrement fini avec le Rpi, mais suffisamment pour que nous puissions commencer à construire et à assembler le matériel.

Un conseil est de bien vérifier vos connexions lors de la construction pour vous assurer de ne pas… faire exploser le Rpi.

De plus, dans le schéma, vous remarquerez que certains composants n'y figurent qu'une seule fois, même si nous allons travailler avec plus d'un composant du même. Cela signifie simplement que vous devez répéter le même processus de construction de ce composant. Il y a 1 petite exception, les capteurs mq-x n'ont pas besoin de convertisseur de niveau supplémentaire ou de MCP3008. Ajoutez simplement un câble vert supplémentaire (en pdf) au convertisseur de niveau et au MCP3008.

Modification supplémentaire: les ventilateurs doivent utiliser un transistor comme interrupteur. J'utilise un transistor 2n2222A pour 1 ventilateur, car 2 ventilateurs peuvent représenter une charge trop élevée.

Si vous avez un transistor qui peut gérer un courant plus important que bon, sautez la dernière partie de cette étape.

Si vous n'en avez pas comme moi, alors vous devrez le faire comme ça, 1 ventilateur = 1 transistor, 2 ventilateurs = 2 transistors, et ainsi de suite (chaque ventilateur a son propre transistor + diode comme dans le pdf).

Vous devrez également ajouter du code à app.py dans backend_project plus tard à l'étape 7: code Git….

Étape 6: Création d'une base de données Mariadb

Créer une base de données Mariadb
Créer une base de données Mariadb

Comme le titre l'indique, nous allons créer une base de données afin d'avoir de la place pour stocker les données de nos capteurs.

Tout d'abord, téléchargez Mariadb sur le Rpi.

sudo apt-get install mariadb-server

Après l'installation, utilisons-le.

mysql -u racine

Le mot de passe est vide, donc rien à saisir. Appuyez sur Entrée.

Créons un utilisateur maintenant.

CREATE USER 'user'@'%' IDENTIFIED BY 'userdb';

ACCORDER TOUS LES PRIVILÈGES SUR *.* À 'user'@'%' AVEC GRANT OPTION;

PRIVILÈGES DE FLASH;

Appuyez sur Ctrl + C pour quitter et redémarrez rapidement le service:

redémarrage du service sudo mysql

Connectez-vous avec nom d'utilisateur: utilisateur et mot de passe: userdb:

mysql -u utilisateur -p

Il est temps de créer la base de données maintenant.

CREATE DATABASE project_db DEFAULT CHARACTER SET utf8;

UTILISER project_db

Créez une table "historiek" (signifie historique).

CREATE TABLE IF NOT EXISTS `historiek` (`id` INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR(5) NOT NULL, `datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT(4) NULL DEFAULT 0, PRIMARY KEY (`id`)) ENGINE = InnoDB;

Et voila, la base de données est faite.

Étape 7: Code Github et test

Code Github et tests
Code Github et tests

Nous approchons de la fin de notre projet.

Avant d'obtenir le code, nous devrons importer certains modules dans le Rpi:

pip3 installer Flask_MySQL

pip3 installer flask-socketio

pip3 install -U flask-cors

pip3 installer spidev

Maintenant, nous avons besoin du code pour le faire fonctionner, tapez dans le terminal:

git clone

Vérifiez si le dossier est là avec:

ls

Maintenant, vous aurez besoin de 2 terminaux, il est donc pratique de cliquer avec le bouton droit sur le terminal et de cliquer sur Dupliquer les sessions:

Accédez à backend_project et à la température à l'aide de la commande cd.

Maintenant, avant de démarrer les programmes à des fins de test. Vous souvenez-vous encore de l'étape 3 avec le capteur à 1 fil où vous devez écrire quelques chiffres ? Pas de soucis si c'est le cas, jetez à nouveau un coup d'œil rapide à l'étape 3.

Nous allons ajouter ces numéros au code car il devra connaître le bon capteur lors de son utilisation.

Le terminal avec le dossier de température, vous trouverez app.py. Nous allons l'ouvrir.

sudo nano app.py

Recherchez la fonction qui s'appelle "def temperatuur():", là, vous devrez remplacer le "**" par les nombres que vous avez écrits. Dans mon cas je lui donnerais cette ligne de code (chaque numéro est unique).

sensor_file_name = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave

Temps de test. Les deux terminaux dans le dossier backend_project et temperature, tapez:

python3 app.py

Souvenez-vous maintenant de l'étape 5: matériel où vous devez ajouter du code si vous utilisez plusieurs ventilateurs et transistors ?

Bien, sinon retournez à l'étape 5.

Nous devons maintenant ajouter du code comme je l'ai mentionné à app.py dans backend_project. Pour faciliter les choses, j'en ai fait un exemple dans le code. Chaque ligne de code de commentaire contenant "fan1", décommentez ces lignes et le tour est joué, vous pouvez maintenant utiliser 2 fans.

Si vous souhaitez utiliser plus de 2 ventilateurs, copiez et collez le même code en dessous mais avec un numéro différent. L'inconvénient de ceci est un travail plus personnel pour vous et moins de gpio.pins disponibles. Il n'y a aucun avantage à cela à ma connaissance.

Étape 8: Exécutez le code au démarrage

Exécuter le code au démarrage
Exécuter le code au démarrage

Nous voulons que ces 2 scripts python s'exécutent au moment où notre Rpi démarre et dans le cas où un script planterait, il devrait redémarrer tout seul. Pour ce faire nous allons faire 2 services.

Pour ce faire, tapez:

sudo nano /etc/systemd/system/temperature.service

Copiez et collez ceci pour un temperature.service:

[Unit]Description=Temperature Service After=multi-user.target

[Service] Type=simple

ExecStart=/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput=tty-force

Redémarrer=en cas d'échec

RedémarrerSec=60s

[Installer]

WantedBy=multi-user.target

Fermez et recommencez mais ensuite pour un backend_project.service:

Premier texte ouvert:

sudo nano /etc/systemd/system/backend_project.service

Ensuite, copiez et collez à nouveau:

[Unité]Description=service backend_project

Après=multi-utilisateur.target

[Service]

Type=simple

ExecStart=/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput=tty-force

Redémarrer=en cas d'échec

RedémarrerSec=60s

[Installer]

WantedBy=multi-user.target

Sauver et fermer.

La dernière partie consiste à taper ceci:

sudo systemctl démon-recharger

sudo systemctl activer temperature.service sudo reboot

Maintenant, nos 2 scripts python devraient s'exécuter automatiquement au démarrage.

Étape 9: Configurer le site Web

Lorsque vous avez téléchargé le référentiel, vous devriez également avoir un dossier appelé front. C'est là que se trouve le contenu du site Web.

Nous avons d'abord besoin d'Apache avant de pouvoir utiliser le dossier. Suivez le guide sur ce lien pour Apache.

Quand tu es prêt. Accédez à l'emplacement du dossier principal:

cd /Documents/nmct-s2-project-1-TheryBrian

Tapez ensuite:

sudo mv avant /var/www/html

Lorsque cela est fait, allez dans le dossier html, préparez-vous à un travail fastidieux (ma faute).

cd /var/www/html/

puis allez dans le dossier avant et commencez à tout déplacer vers le dossier html.

Exemple:

sudo mv css /var/www/html

Supprimez ensuite le dossier avant.

Et nous en avons fini avec tout.

Bonne chance:).

Étape 10: Facultatif - Prototype miniature

Facultatif - Prototype miniature
Facultatif - Prototype miniature
Facultatif - Prototype miniature
Facultatif - Prototype miniature

Pour des raisons de test, j'ai fait un prototype d'une simple boîte avec tout le matériel à l'intérieur afin que je puisse voir si tout fonctionne sur commande.

Normalement, ce projet serait réalisé à plus grande échelle. Par exemple: une pièce, une maison, une usine, un magasin et ainsi de suite…

Mais évidemment avant de commencer à faire des trous dans les murs (belle comptine). Nous voulons d'abord voir si cela fonctionne. Vous n'avez pas vraiment besoin de faire une boîte pour tester, mais c'est toujours amusant de faire de l'artisanat.

Voici mon exemple.

Conseillé: