Taula de continguts:

Dispensador automàtic d'aigua per controlar el consum: 6 passos
Dispensador automàtic d'aigua per controlar el consum: 6 passos

Vídeo: Dispensador automàtic d'aigua per controlar el consum: 6 passos

Vídeo: Dispensador automàtic d'aigua per controlar el consum: 6 passos
Vídeo: 👌 Старая Audi A6: еще жива или уже на коленях? Большой гид по слабым местам кузова С5. 2024, Juliol
Anonim
Dispensador automàtic d'aigua per controlar el consum
Dispensador automàtic d'aigua per controlar el consum
Dispensador automàtic d'aigua per controlar el consum
Dispensador automàtic d'aigua per controlar el consum

Hola!

Fa un parell de mesos, estava a la meva habitació pensant en quin tipus de projecte volia fer per a una tasca escolar. Volia fer alguna cosa que s’ajustés a mi i que em beneficiés en el futur. De sobte, la meva mare va entrar a l’habitació i va començar a queixar-se de no beure prou aigua. De seguida vaig tenir una epifania. Em va venir la idea de fabricar un dispensador d’aigua automàtic (com al cinema) que faci un seguiment del consum d’aigua diàriament.

Amb un Raspberry Pi, uns quants sensors, una bomba i poc coneixement, vaig intentar que això fos el millor possible.

Al final de tots els passos, disposareu d’un dispensador d’aigua en funcionament que us omple l’ampolla d’aigua i que connecta i interactua amb el vostre Raspberry Pi. No només podreu fer un seguiment del vostre consum d’aigua sobre la base d’un percentatge, sinó que també tindreu la possibilitat de veure la temperatura i el nivell d’aigua del contenidor d’aigua. Finalment, podreu consultar les vostres estadístiques. Si us sembla interessant, comproveu-ho i proveu-ho vosaltres mateixos.

El dipòsit de GitHub:

Subministraments

Microcontroladors

Raspberry Pi 4

Sensors i mòduls

He utilitzat 4 sensors:

Sensor d'ultrasons 2xHC-SR04

Els sensors ultrasònics mesuren la distància mitjançant l'ús d'ones ultrasòniques. El cap del sensor emet una ona ultrasònica i rep l'ona reflectida cap enrere des de l'objectiu. Els sensors d'ultrasons mesuren la distància a l'objectiu mesurant el temps entre l'emissió i la recepció. N’he utilitzat dos per comprovar si hi ha una ampolla a prop i mesurar la distància a l’aigua del dipòsit.

Fitxa de dades

1x sensor de temperatura DS18B20

El DS18B20 és un sensor de temperatura programable a 1 fil de màxima integració. S'utilitza àmpliament per mesurar la temperatura en entorns durs com en solucions químiques, mines o sòls, etc. La vaig utilitzar per mesurar la temperatura de l'aigua del dipòsit d'aigua.

Fitxa de dades

1 mòdul RFID RC522

El RC522 és un mòdul RFID de 13,56 MHz que es basa en el controlador MFRC522 de semiconductors NXP. El mòdul és compatible amb I2C, SPI i UART i normalment s’envia amb una targeta RFID i un porta-claus. S’utilitza habitualment en sistemes d’assistència i en altres aplicacions d’identificació de persones / objectes. En aquest projecte, s’utilitza per a un sistema d’identificació / inici de sessió.

Fitxa de dades

I 2 actuadors:

1x bomba peristàltica 12-24V

Vaig utilitzar una bomba peristàltica per fer arribar l’aigua del dipòsit a una ampolla d’aigua. La majoria de les bombes eren massa lentes, així que vaig optar per una versió de 24V que alimento amb un adaptador de corrent de 24V.

1x pantalla LCD

La pantalla LCD s’utilitza per mostrar l’adreça IP i els missatges importants. Una pantalla de cristall líquid (LCD) és una pantalla de pantalla plana o un altre dispositiu òptic modulat electrònicament que utilitza les propietats moduladores de la llum dels cristalls líquids combinats amb polaritzadors.

Fitxa de dades

Carcassa

Parlant de la carcassa, vaig fer un bricolatge amb subministraments d’un magatzem casolà (en el meu cas el Brico a Bèlgica). He utilitzat fusta contraxapada que he tallat a la mida adequada. Parlaré de com vaig presentar el meu cas en un pas més, però aquí teniu les coses que necessitareu:

  • Taulers de fusta contraxapada 3x
  • 1 x Embut petit
  • 1x dipòsit d'aigua (podeu triar quina quantitat voleu, he anat per 10L)
  • 1x safata de degoteig

Podeu trobar tots els materials i preus a la llista de material adjunta.

Pas 1: connectar tots els aparells electrònics

Connectant tota l'electrònica
Connectant tota l'electrònica
Connectant tots els aparells electrònics
Connectant tots els aparells electrònics

Ara que hem resumit tota l’electrònica, és hora de connectar-los. Vaig fer dos circuits Fritzing, un tauler de suport i un altre esquemàtic, per mostrar-vos com i on s’hauria de connectar tota l’electrònica. Podeu trobar l'enllaç de descàrrega de Fritzing aquí: https://fritzing.org/download/. Com es va esmentar anteriorment, vaig utilitzar un Raspberry Pi i vaig connectar un escàner RFID, dos sensors d’ultrasons, un sensor de temperatura, un LCD i una bomba peristàltica per a l’aigua.

He adjuntat els dos circuits en un PDF, si voleu aprofundir-hi.

Pas 2: Configuració del Raspberry Pi

Utilitzarem el nostre Raspberry Pi per executar i controlar tot: backend, frontend i base de dades.

Un Raspberry Pi no s’executa automàticament. Haurem de fer alguns passos per començar a utilitzar-lo.

Pas 1: Raspbian

Si utilitzeu un Raspberry Pi nou, necessitareu raspbian. L’enllaç de descàrrega i el tutorial es poden trobar aquí.

Pas 2: escriure la imatge a SD

Ara que teniu la vostra imatge Raspbian, necessitareu un programari d’escriptura d’imatges (us recomano win32diskimager) per escriure el fitxer d’imatge a la targeta SD. El tutorial complet es pot trobar aquí.

Pas 3: iniciar la sessió al Raspberry Pi

Obriu "Powershell" i escriviu "ssh [email protected]". Si tot va bé, us demanaran una contrasenya (la contrasenya per defecte sempre és raspberry). Normalment, això us hauria d’iniciar sessió al Raspberry Pi. Ara haurem de fer alguns canvis a la nostra configuració. Escriviu sudo raspi-config al terminal i premeu Retorn. Aneu a les opcions de localització> canvieu la zona horària i configureu-la a la vostra zona horària. També hauríeu de canviar el vostre país sense fil a la vostra ubicació. Finalment, aneu a les opcions d'interfície i activeu SPI, I2C i 1 cable. Això serà important per utilitzar correctament els sensors.

Pas 4: Configuració de la connexió a Internet

Farem servir una xarxa WiFi. Podeu afegir la vostra xarxa domèstica mitjançant:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Haureu de reiniciar el Pi per establir una connexió. Per comprovar si ha funcionat, podeu utilitzar ifconfig per comprovar si hi ha una adreça IP.

Pas 5: Configuració del servidor web i de la base de dades

En primer lloc, és millor actualitzar i actualitzar el sistema amb la següent seqüència d’ordres:

  1. sudo apt dist-upgrade --auto-remove -y
  2. actualització sudo apt
  3. actualització sudo apt
  4. sudo apt autoremove

Un cop fet això, necessitarem els paquets següents per al nostre servidor web i la nostra base de dades:

Apatxe

sudo apt install apache2 -y

PHP

sudo apt install php

sudo apt install phpMyAdmin -y

No us oblideu d’establir una contrasenya segura de MySQL quan us demani establir una contrasenya.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

sudo systemctl reinicieu apache2.service

Pas 6: Instal·lació de biblioteques Python

Per al backend, necessitarem algunes biblioteques per a Python. Els instal·larem amb pip3, perquè utilitzem python3.

pip3 instal·la mysql-connector-python

pip3 instal·la flask-socketio

pip3 instal·lar flask-cors

pip3 install gevent

pip3 instal·la gevent-websocket

sudo apt install python3-mysql.connector -y

pip3 instal·la mfrc522! (ho necessitarem per fer ús de l'escàner RFID)

Pas 7: Preparació del codi de Visual Studio

Per executar el codi, recomano utilitzar Visual Studio Code per connectar el vostre Raspberry Pi. Podeu trobar l'enllaç de descàrrega per instal·lar VSC aquí.

Si encara no teniu instal·lat el desenvolupament remot mitjançant SSH, podeu trobar els passos per fer-ho aquí.

Pas 3: creació de la base de dades

Creació de la base de dades
Creació de la base de dades

Emmagatzemarem totes les dades del sensor i les dades dels usuaris en una base de dades.

La meva base de dades consta de 5 taules:

Dispositiu

El dispositiu de taula té un DeviceID, que fa referència al dispositiu mateix. DeviceName dóna el nom del dispositiu, en aquest cas sensor d'ultrasons, sensor de temperatura, … DeviceType dóna el tipus de dispositiu (sensor o actuador).

Història

L'historial de taules conté tot l'historial del sensor, juntament amb la data (HistoryDate) que es va afegir l'historial i el valor del moment a la història. També té dues claus estrangeres:

  • DeviceID, per enllaçar un registre específic a un dispositiu
  • UserID, per enllaçar un usuari específic a un registre (això es deu al fet que fem servir un RFID i volem afegir el registre d'historial a un usuari específic)

Usuari

L'usuari de taula s'utilitza per crear un sistema d'inici de sessió d'usuari amb l'escàner RFID. Consisteix en un àlies, nom, cognom, contrasenya i RFID (és el número RFID d'una etiqueta). Tots els usuaris estan enllaçats a un contenidor (watertank) i també porten el ContainerID com a clau estrangera.

Contenidor

El contenidor de taula consta de tots els contenidors. Té un identificador, un ContainerLocation (pot ser una empresa, casa o qualsevol altra cosa). Per últim, té un MaxLevel que representa el volum màxim que té el contenidor.

Configuració

La configuració de la taula té un ID de configuració i fa un seguiment del DailyGoal de cada usuari + la data en què l’usuari va afegir el DailyGoal. Això explica l'identificador d'usuari de clau estrangera.

Es pot trobar un buidatge de la base de dades al meu dipòsit GitHub a Base de dades.

Pas 4: Configuració del backend

No hi ha cap projecte sense un backend de treball.

El backend consta de 4 coses diferents:

ajudants

Els ajudants són totes les classes que s’utilitzen per als diferents sensors i actuadors. Hi ha un dispositiu auxiliar per al sensor de temperatura (DS18B20), per als sensors d’ultrasons (HCSR05) per poder mesurar la distància i perquè la pantalla LCD pugui escriure missatges a la pantalla.

repositoris

A la carpeta de repositoris, trobareu 2 fitxers Python:

  • Database.py, que és un ajut per treure files de la vostra base de dades. Facilita l'execució i la lectura de la base de dades.
  • DataRepository.py que conté totes les consultes SQL que s’utilitzen al codi principal (app.py). S'utilitzen per obtenir, actualitzar o eliminar dades de la base de dades.

app.py

Aquest és el codi principal principal del projecte. Fa la configuració definint tots els passadors i modes i conté el codi per fer funcionar la bomba, obtenir la temperatura, obtenir l’usuari, etc. També conté les rutes que s’utilitzen per recuperar dades de la base de dades i de tots els socketio.on. Per a cada pàgina HTML hi ha un socketio.on diferent per assegurar-vos que totes les funcions funcionen al moment correcte.

config.py

Ens queda un fitxer: config.py. Aquest és el fitxer amb les opcions de configuració per connectar amb la vostra base de dades. No oblideu establir les vostres credencials de base de dades.

El dorsal es pot trobar al meu dipòsit a Darrere fons.

Pas 5: Configuració del frontend

Configuració del frontend
Configuració del frontend
Configuració del frontend
Configuració del frontend

Per al Frontend, vaig començar fent un disseny de com hauria de ser el meu servidor web a AdobeXD. Vaig fer servir els colors del meu logotip, que són taronja i dos tons de blau diferents. Vaig intentar que el disseny fos el més senzill possible i vaig crear una gota d’aigua que mostri el percentatge en què heu assolit el vostre objectiu del dia.

Al meu dipòsit de GitHub, trobareu el meu Frontend a Codi> Frontend. És important que enganxeu això a la carpeta / var / html del vostre Raspberry Pi per fer-lo accessible des del servidor web.

Consisteix en un parell de fitxers HTML, que condueixen a les diferents pàgines. També trobareu el meu screen.css amb tot el CSS que necessiteu perquè sembli el meu projecte. Per últim, tindreu diferents fitxers JavaScript sota scripts. Aquests scripts es comuniquen amb el meu dorsal per mostrar dades de la meva base de dades o darrera.

El fons es pot trobar al meu dipòsit a Frontend.

Pas 6: creació de la carcassa

Creació de la carcassa
Creació de la carcassa
Creació de la carcassa
Creació de la carcassa
Creació de la carcassa
Creació de la carcassa

Si parlem del meu cas, hi ha dues parts principals:

Carcassa exterior

Vaig construir la caixa des de zero. Vaig utilitzar taulons de fusta contraxapada i els vaig serrar de les mides correctes. Vaig cargolar totes les taules juntes i vaig perforar forats per a la pantalla LCD, el botó, el sensor d'ultrasons per detectar si hi ha una ampolla d'aigua present i l'embut per distribuir l'aigua. Vaig dividir la meva caixa en diferents seccions per mantenir l'aigua i l'electrònica separats i vaig utilitzar una safata per protegir els cables de les fuites d'aigua. Al vídeo adjunt, podeu veure la majoria d’aspectes de la meva carcassa i com l’he creat. També he imprès en 3D un botó, que està enganxat a un botó normal. Finalment, he utilitzat una safata antigoteig per agafar tota l’aigua vessada. També vaig fer servir frontisses per poder obrir i tancar un tauler lateral per mirar la meva electrònica. Sempre podeu utilitzar un dispensador de segona mà o també podeu utilitzar altres materials.

Per a les mesures exactes de la meva construcció, he adjuntat un PDF amb totes les mides de les plaques utilitzades a la funda.

Tanc d'aigua

El dipòsit d’aigua no va ser una feina fàcil. Vaig aconseguir un dipòsit d’aigua amb un forat a la part inferior, de manera que vaig haver de gravar-lo amb cinta adhesiva per aturar la fuita. Necessitareu quatre forats: un per al sensor de temperatura i un per al tub de la bomba. un per al tub per omplir el tanc i un per al sensor d'ultrasons. Per a aquest darrer, vaig imprimir en 3D una funda que es pot trobar aquí. Això proporciona al sensor més protecció contra l’aigua. A continuació, he perforat un rectangle a la part superior del tanc, per recolzar-hi el sensor.

Recomanat: