Table des matières:

Distributeur d'eau automatique pour suivre la consommation : 6 étapes
Distributeur d'eau automatique pour suivre la consommation : 6 étapes

Vidéo: Distributeur d'eau automatique pour suivre la consommation : 6 étapes

Vidéo: Distributeur d'eau automatique pour suivre la consommation : 6 étapes
Vidéo: Comment l'eau monte-t-elle dans les étages ? - C'est pas sorcier 2024, Novembre
Anonim
Distributeur d'eau automatique pour suivre la consommation
Distributeur d'eau automatique pour suivre la consommation
Distributeur d'eau automatique pour suivre la consommation
Distributeur d'eau automatique pour suivre la consommation

Salut!

Il y a quelques mois, j'étais dans ma chambre en train de réfléchir au type de projet que je voulais faire pour un devoir scolaire. Je voulais faire quelque chose qui me convienne et qui me profiterait à l'avenir. Soudain, ma mère est entrée dans la pièce et a commencé à se plaindre de ne pas boire assez d'eau. J'ai tout de suite eu une révélation. L'idée m'est venue de faire un distributeur d'eau automatique (comme au cinéma) qui suit votre consommation d'eau au quotidien.

Avec un Raspberry Pi, quelques capteurs, une pompe et peu de connaissances, j'ai essayé de rendre cela aussi bon que possible.

À la fin de toutes les étapes, vous aurez un distributeur d'eau fonctionnel qui remplit votre gourde et qui se connecte et interagit avec votre Raspberry Pi. Non seulement vous pourrez suivre votre consommation d'eau sur la base d'un pourcentage, mais vous aurez également la possibilité de visualiser la température et le niveau d'eau de votre réservoir d'eau. Enfin, vous pourrez consulter vos statistiques. Si cela vous semble intéressant, assurez-vous de le vérifier et de l'essayer vous-même !

Le référentiel GitHub:

Fournitures

Microcontrôleurs

Framboise Pi 4

Capteurs et modules

J'ai utilisé 4 capteurs:

Capteur à ultrasons 2xHC-SR04

Les capteurs à ultrasons mesurent la distance en utilisant des ondes ultrasonores. La tête du capteur émet une onde ultrasonore et reçoit l'onde réfléchie par la cible. Les capteurs à ultrasons mesurent la distance à la cible en mesurant le temps entre l'émission et la réception. J'en ai utilisé deux pour vérifier s'il y a une bouteille à proximité et pour mesurer la distance à l'eau dans le réservoir.

Fiche technique

1x capteur de température DS18B20

Le DS18B20 est un capteur de température programmable à 1 fil de maxim intégré. Il est largement utilisé pour mesurer la température dans des environnements difficiles comme dans les solutions chimiques, les mines ou le sol, etc. Je l'ai utilisé pour mesurer la température de l'eau du réservoir d'eau.

Fiche technique

1x module RFID RC522

Le RC522 est un module RFID à 13,56 MHz basé sur le contrôleur MFRC522 de NXP Semi-conducteurs. Le module peut prendre en charge I2C, SPI et UART et est normalement expédié avec une carte RFID et un porte-clés. Il est couramment utilisé dans les systèmes de présence et d'autres applications d'identification de personnes/objets. Dans ce projet, il est utilisé pour un système d'identification/connexion.

Fiche technique

Et 2 actionneurs:

1x pompe péristaltique 12-24V

J'ai utilisé une pompe péristaltique pour faire passer l'eau du réservoir à une bouteille d'eau. La plupart des pompes étaient trop lentes, j'ai donc opté pour une version 24V que j'alimente avec un adaptateur secteur 24V.

1x écran LCD

L'écran LCD est utilisé pour afficher l'adresse IP et les messages importants. Un écran à cristaux liquides (LCD) est un écran plat ou un autre dispositif optique modulé électroniquement qui utilise les propriétés de modulation de la lumière des cristaux liquides combinées à des polariseurs.

Fiche technique

Enveloppe

En parlant de boîtier, j'ai fait un bricolage avec des fournitures d'un Home depot (dans mon cas le Brico en Belgique). J'ai utilisé du contreplaqué que j'ai coupé à la bonne taille. Je parlerai de la façon dont j'ai présenté mon dossier dans une étape ultérieure, mais voici les éléments dont vous aurez besoin:

  • 3x planches de contreplaqué
  • 1x petit entonnoir
  • 1x Réservoir d'eau (vous pouvez choisir la quantité que vous voulez, j'ai opté pour 10L)
  • 1x égouttoir

Vous pouvez trouver tous les matériaux et les prix dans la nomenclature ci-jointe.

Étape 1: connexion de tous les appareils électroniques

Connecter tous les appareils électroniques
Connecter tous les appareils électroniques
Connecter tous les appareils électroniques
Connecter tous les appareils électroniques

Maintenant que nous avons résumé toute l'électronique, il est temps de les connecter. J'ai fait deux circuits Fritzing, une planche à pain et un schéma, pour vous montrer comment et où toute l'électronique doit être connectée. Vous pouvez trouver le lien de téléchargement de Fritzing ici: https://fritzing.org/download/. Comme mentionné précédemment, j'ai utilisé un Raspberry Pi et connecté un scanner RFID, deux capteurs à ultrasons, un capteur de température, un écran LCD et une pompe péristaltique pour l'eau.

J'ai joint les deux circuits dans un PDF, si vous voulez les regarder de plus près.

Étape 2: Configuration du Raspberry Pi

Nous utiliserons notre Raspberry Pi pour tout exécuter et tout contrôler: backend, frontend et base de données.

Un Raspberry Pi ne s'exécute pas automatiquement. Nous devrons passer par quelques étapes pour commencer à l'utiliser.

Étape 1: Raspbian

Si vous utilisez un tout nouveau Raspberry Pi, vous aurez besoin de raspbian. Le lien de téléchargement et le tutoriel sont disponibles ici.

Étape 2: écriture de l'image sur SD

Maintenant que vous avez votre image Raspbian, vous aurez besoin d'un logiciel d'écriture d'image (je recommande win32diskimager) pour écrire le fichier image sur la carte SD. Le tutoriel complet est disponible ici.

Étape 3: Connexion au Raspberry Pi

Ouvrez "Powershell" et tapez "ssh [email protected]". Si tout se passe bien, ils vous demanderont un mot de passe (le mot de passe par défaut est toujours framboise). Normalement, cela devrait vous connecter au Raspberry Pi. Nous devons maintenant apporter quelques modifications à nos paramètres. Tapez sudo raspi-config dans le terminal et appuyez sur Entrée. Accédez aux options de localisation> modifiez le fuseau horaire et définissez-le sur votre fuseau horaire. Vous devez également changer votre pays Wi-Fi pour votre propre emplacement. Enfin, allez dans les options d'interfaçage et activez SPI, I2C et 1-wire. Ceci sera important pour utiliser correctement les capteurs.

Étape 4: Configuration de la connexion Internet

Nous utiliserons un réseau WiFi. Vous pouvez ajouter votre réseau domestique via:

wpa_passphrase "Votre réseau" "Votre SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Vous devrez redémarrer votre Pi pour établir une connexion. Pour vérifier si cela a fonctionné, vous pouvez utiliser ifconfig pour vérifier s'il existe une adresse IP.

Étape 5: Configuration du serveur Web et de la base de données

Tout d'abord, il est préférable de mettre à jour et de mettre à niveau le système avec la séquence de commandes suivante:

  1. sudo apt dist-upgrade --auto-remove -y
  2. mise à niveau sudo apt
  3. mise à jour sudo apt
  4. sudo apt suppression automatique

Une fois cela fait, nous aurons besoin des packages suivants pour notre serveur Web et notre base de données:

Apache

sudo apt installer apache2 -y

PHP

sudo apt installer php

sudo apt installer phpMyAdmin -y

N'oubliez pas de définir un mot de passe MySQL sécurisé, lorsqu'il vous demande de définir un mot de passe.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt installer php-mysql -y

sudo systemctl redémarrer apache2.service

Étape 6: Installation des bibliothèques Python

Pour le backend, nous aurons besoin de quelques bibliothèques pour Python. Nous allons les installer en utilisant pip3, car nous utilisons python3.

pip3 installer mysql-connector-python

pip3 installer flask-socketio

pip3 installer des flacons-cors

pip3 installer gevent

pip3 installer gevent-websocket

sudo apt install python3-mysql.connector -y

pip3 installe mfrc522 ! (nous en aurons besoin pour utiliser le scanner RFID)

Étape 7: Préparation du code Visual Studio

Pour exécuter le code, je recommande d'utiliser Visual Studio Code pour connecter votre Raspberry Pi. Le lien de téléchargement pour installer VSC se trouve ici.

Si vous n'avez pas encore installé le développement à distance à l'aide de SSH, vous pouvez trouver les étapes pour le faire ici.

Étape 3: Création de la base de données

Création de la base de données
Création de la base de données

Nous stockerons toutes nos données de capteur et les données utilisateur dans une base de données.

Ma base de données se compose de 5 tables:

Dispositif

Table Device a un DeviceID, qui fait référence à l'appareil lui-même. Le DeviceName donne le nom de l'appareil, dans ce cas capteur à ultrasons, capteur de température, … DeviceType donne le type de l'appareil (capteur ou actionneur).

Histoire

L'historique du tableau contient tout l'historique du capteur, ainsi que la date (HistoryDate) à laquelle l'historique a été ajouté et la valeur du moment dans l'historique. Il dispose également de deux clés étrangères:

  • DeviceID, pour lier un journal spécifique à un appareil
  • UserID, pour lier un utilisateur spécifique à un journal (c'est parce que nous utilisons un RFID, et nous voulons ajouter le journal d'historique à un utilisateur spécifique)

Utilisateur

L'utilisateur de la table est utilisé pour créer un système de connexion utilisateur avec le scanner RFID. Il se compose d'un surnom, d'un prénom, d'un nom, d'un mot de passe et d'un RFID (il s'agit du numéro RFID d'une étiquette). Chaque utilisateur est lié à un conteneur (réservoir d'eau) et porte également le ContainerID en tant que clé étrangère.

Récipient

Le conteneur de table se compose de tous les différents conteneurs. Il a un ID, un ContainerLocation (cela peut être une entreprise, une maison ou toute autre chose). Enfin, il a un MaxLevel qui correspond au volume maximum du conteneur.

Paramètres

Les paramètres de la table ont un SettingsID et suivent le DailyGoal de chaque utilisateur + la date à laquelle le DailyGoal a été ajouté par l'utilisateur. Ceci explique l'ID utilisateur de la clé étrangère.

Un dump de la base de données peut être trouvé dans mon référentiel GitHub sous Database.

Étape 4: Configuration du backend

Il n'y a pas de projet sans backend fonctionnel.

Le backend se compose de 4 choses différentes:

aides

Les helpers sont toutes les classes utilisées pour les différents capteurs et actionneurs. Il y a une aide pour le capteur de température (DS18B20), pour les capteurs à ultrasons (HCSR05) pour pouvoir mesurer la distance et pour que l'écran LCD puisse écrire des messages à l'écran.

référentiels

Dans le dossier des dépôts, vous trouverez 2 fichiers Python:

  • Database.py qui est une aide pour extraire des lignes de votre base de données. Il facilite l'exécution et la lecture de la base de données.
  • DataRepository.py qui contient toutes les requêtes SQL utilisées dans le code principal (app.py). Ils sont utilisés pour obtenir, mettre à jour ou supprimer des données de la base de données.

app.py

Il s'agit du code principal du projet. Il effectue la configuration en définissant toutes les broches et tous les modes et contient le code pour faire fonctionner la pompe, obtenir la température, obtenir l'utilisateur, etc. Il contient également les routes utilisées pour récupérer les données de la base de données et de tous les socketio.on. Pour chaque page HTML est un socketio.on différent pour s'assurer que chaque fonction fonctionne au bon moment.

config.py

Il nous reste un fichier: config.py. C'est le fichier avec les options de configuration pour se connecter à votre base de données. N'oubliez pas de définir vos identifiants de base de données.

Le backend se trouve dans mon référentiel sous Backend.

Étape 5: Configuration du frontend

Configuration du frontend
Configuration du frontend
Configuration du frontend
Configuration du frontend

Pour le Frontend, j'ai commencé par faire un design de ce à quoi mon serveur web devrait ressembler dans AdobeXD. J'ai utilisé les couleurs de mon logo, qui sont l'orange et 2 nuances de bleu différentes. J'ai essayé de garder le design aussi simple que possible et j'ai créé une goutte d'eau qui montre le pourcentage dans quelle mesure vous avez atteint votre objectif de la journée.

Dans mon référentiel GitHub, vous trouverez mon Frontend sous Code > Frontend. Il est important que vous le colliez dans votre dossier /var/html de votre Raspberry Pi pour le rendre accessible depuis le serveur Web.

Il se compose de quelques fichiers HTML qui mènent aux différentes pages. Vous trouverez également mon screen.css avec tout le CSS dont vous aurez besoin pour le faire ressembler à mon projet. Enfin, vous aurez différents fichiers JavaScript sous scripts. Ces scripts communiquent avec mon backend pour afficher les données de ma base de données ou de mon backend.

Le backend se trouve dans mon référentiel sous Frontend.

Étape 6: Création du boîtier

Création du boîtier
Création du boîtier
Création du boîtier
Création du boîtier
Création du boîtier
Création du boîtier

Si nous parlons de mon cas, il y a deux parties principales:

Enveloppe extérieure

J'ai construit le boîtier à partir de zéro. J'ai utilisé des planches de contreplaqué et les ai sciées dans les bonnes tailles. J'ai vissé toutes les planches ensemble et percé des trous pour l'écran LCD, le bouton, le capteur à ultrasons pour détecter s'il y avait une bouteille d'eau présente et l'entonnoir pour distribuer l'eau. J'ai divisé mon boîtier en différentes sections pour séparer l'eau et l'électronique et j'ai utilisé un chemin de câbles pour protéger les câbles des fuites d'eau. Dans la vidéo ci-jointe, vous pouvez voir la plupart des aspects de mon boîtier et comment je l'ai fabriqué. J'ai également imprimé en 3D un bouton, qui est collé à un bouton normal. Enfin, j'ai utilisé un bac d'égouttage pour récupérer toute l'eau renversée. J'ai également utilisé des charnières pour pouvoir ouvrir et fermer un panneau latéral pour regarder mes appareils électroniques. Vous pouvez toujours utiliser un distributeur d'occasion ou vous pouvez également utiliser d'autres matériaux.

Pour les mesures exactes de ma construction, j'ai joint un PDF avec toutes les tailles des plaques utilisées dans le boîtier.

Réservoir d'eau

Le réservoir d'eau n'était pas un travail facile. J'ai eu un réservoir d'eau avec un trou au fond, j'ai donc dû le coller pour arrêter la fuite. Vous aurez besoin de quatre trous: un pour le capteur de température, un pour la tubulure de votre pompe. un pour la tubulure pour remplir le réservoir et un pour le capteur à ultrasons. Pour ce dernier, j'ai imprimé en 3D un étui qui se trouve ici. Cela donne au capteur plus de protection contre l'eau. J'ai ensuite percé un rectangle dans le haut du réservoir, pour y reposer le capteur.

Conseillé: