Table des matières:
- Fournitures
- Étape 1: connexion de tous les appareils électroniques
- Étape 2: Configuration du Raspberry Pi
- Étape 3: Création de la base de données
- Étape 4: Configuration du backend
- Étape 5: Configuration du frontend
- Étape 6: Création du boîtier
Vidéo: Distributeur d'eau automatique pour suivre la consommation : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
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
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:
- sudo apt dist-upgrade --auto-remove -y
- mise à niveau sudo apt
- mise à jour sudo apt
- 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
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
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
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é:
Distributeur automatique de désinfectant pour les mains DIY : 6 étapes
Distributeur automatique de désinfectant pour les mains : Dans ce projet, nous allons construire un distributeur automatique de désinfectant pour les mains. Ce projet utilisera Arduino, un capteur à ultrasons, une pompe à eau et un désinfectant pour les mains. Un capteur à ultrasons permet de vérifier la présence de mains sous la sortie de la machine de désinfection
DISTRIBUTEUR AUTOMATIQUE DE NOURRITURE POUR ANIMAUX DE COMPAGNIE : 9 étapes
DISTRIBUTEUR AUTOMATIQUE DE NOURRITURE POUR ANIMAUX DE COMPAGNIE : Avez-vous déjà eu envie de perdre trop de temps à nourrir votre animal de compagnie ? Avez-vous déjà dû appeler quelqu'un pour nourrir vos animaux de compagnie pendant vos vacances ? J'ai essayé de résoudre ces deux problèmes avec mon projet scolaire actuel : Petfeed
Distributeur automatique de désinfectant pour les mains : 3 étapes
Distributeur automatique de désinfectant pour les mains : Ce distributeur automatique de désinfectant pour les mains a été conçu pour être une option relativement peu coûteuse et facile à assembler. La plupart des articles requis peuvent être achetés auprès de vos détaillants locaux de matériel et d'électronique. Il y a la possibilité d'imprimer en 3D un
Système d'alarme de consommation d'eau/moniteur de prise d'eau : 6 étapes
Système d'alarme de consommation d'eau/moniteur de prise d'eau : nous devrions boire une quantité d'eau suffisante chaque jour pour rester en bonne santé. Il existe également de nombreux patients à qui l'on prescrit de boire une quantité spécifique d'eau tous les jours. Mais malheureusement, nous avons manqué l'horaire presque tous les jours. Alors je conçois
Distributeur automatique--Distributeur de bonbons-- Arduino Bluetooth contrôlé--DIY : 11 étapes (avec photos)
Distributeur automatique||Distributeur de bonbons|| Arduino Bluetooth Controlled||DIY: Dans ce instructable, je montre comment construire un distributeur automatique à l'aide d'un Arduino.FAIRE COMMENTER CE QUE VOUS PENSEZ À CE POINT D'INSTRUCTION, AFIN QUE JE PUISSE AMÉLIORER DANS MON AUTRE INSTRUCTABLEVoir le didacticiel vidéo pour une meilleure compréhension de l'ent