Tabla de contenido:

Dispensador de agua automático para controlar el consumo: 6 pasos
Dispensador de agua automático para controlar el consumo: 6 pasos

Video: Dispensador de agua automático para controlar el consumo: 6 pasos

Video: Dispensador de agua automático para controlar el consumo: 6 pasos
Video: COMO HACER un DISPENSADOR AUTOMÁTICO de AGUA, explicación PASO A PASO 2024, Mes de julio
Anonim
Dispensador de agua automático para controlar el consumo
Dispensador de agua automático para controlar el consumo
Dispensador de agua automático para controlar el consumo
Dispensador de agua automático para controlar el consumo

¡Hola!

Hace un par de meses, estaba en mi habitación pensando en qué tipo de proyecto quería hacer para una tarea escolar. Quería hacer algo que se adaptara a mí y que me beneficiara en el futuro. De repente, mi mamá entró en la habitación y comenzó a quejarse de no beber suficiente agua. Inmediatamente tuve una epifanía. Se me ocurrió la idea de hacer un dispensador de agua automático (como en el cine) que rastrea tu consumo de agua a diario.

Con una Raspberry Pi, algunos sensores, una bomba y poco conocimiento, traté de hacer esto lo mejor posible.

Al final de todos los pasos, tendrás un dispensador de agua en funcionamiento que llena tu botella de agua y que se conecta e interactúa con tu Raspberry Pi. No solo podrá realizar un seguimiento de su consumo de agua sobre la base de un porcentaje, sino que también tendrá la posibilidad de ver la temperatura y el nivel del agua de su recipiente de agua. Finalmente, podrá consultar sus estadísticas. Si esto le parece interesante, ¡asegúrese de comprobarlo y probarlo usted mismo!

El repositorio de GitHub:

Suministros

Microcontroladores

Frambuesa pi 4

Sensores y módulos

Usé 4 sensores:

Sensor de ultrasonidos 2xHC-SR04

Los sensores ultrasónicos miden la distancia mediante el uso de ondas ultrasónicas. El cabezal del sensor emite una onda ultrasónica y recibe la onda reflejada desde el objetivo. Los sensores ultrasónicos miden la distancia al objetivo midiendo el tiempo entre la emisión y la recepción. Usé dos de ellos para verificar si hay una botella cerca y para medir la distancia al agua en el tanque.

Ficha de datos

1x sensor de temperatura DS18B20

El DS18B20 es un sensor de temperatura programable de 1 cable de maxim integrado. Se usa ampliamente para medir la temperatura en ambientes duros como en soluciones químicas, minas o suelo, etc. Lo usé para medir la temperatura del agua del tanque de agua.

Ficha de datos

1x módulo RFID RC522

El RC522 es un módulo RFID de 13,56 MHz que se basa en el controlador MFRC522 de semiconductores NXP. El módulo admite I2C, SPI y UART y normalmente se envía con una tarjeta RFID y un llavero. Se usa comúnmente en sistemas de asistencia y otras aplicaciones de identificación de personas / objetos. En este proyecto, se utiliza para un sistema de identificación / inicio de sesión.

Ficha de datos

Y 2 actuadores:

1x bomba peristáltica 12-24V

Usé una bomba peristáltica para llevar el agua del tanque a una botella de agua. La mayoría de las bombas eran demasiado lentas, así que opté por una versión de 24 V que utilizo con un adaptador de corriente de 24 V.

1x pantalla LCD

La pantalla LCD se utiliza para mostrar la dirección IP y los mensajes importantes. Una pantalla de cristal líquido (LCD) es una pantalla plana u otro dispositivo óptico modulado electrónicamente que utiliza las propiedades moduladoras de la luz de los cristales líquidos combinados con polarizadores.

Ficha de datos

Caja

Hablando de la carcasa, hice un bricolaje con suministros de un Home Depot (en mi caso el Brico en Bélgica). Usé madera contrachapada que corté al tamaño correcto. Hablaré sobre cómo presenté mi caso en un paso posterior, pero aquí están las cosas que necesitará:

  • 3 x tablones de madera contrachapada
  • 1x embudo pequeño
  • 1x tanque de agua (puedes elegir la cantidad que quieras, yo fui por 10L)
  • 1x bandeja de goteo

Puede encontrar todos los materiales y precios en la lista de materiales adjunta.

Paso 1: Conexión de todos los componentes electrónicos

Conectando toda la electrónica
Conectando toda la electrónica
Conectando toda la electrónica
Conectando toda la electrónica

Ahora que hemos resumido todos los componentes electrónicos, es hora de conectarlos. Hice dos circuitos Fritzing, uno de placa y otro esquemático, para mostrarte cómo y dónde se deben conectar todos los componentes electrónicos. Puede encontrar el enlace de descarga de Fritzing aquí: https://fritzing.org/download/. Como se mencionó anteriormente, usé una Raspberry Pi y conecté un escáner RFID, dos sensores ultrasónicos, un sensor de temperatura, una pantalla LCD y una bomba peristáltica para el agua.

Adjunté los dos circuitos en un PDF, si quieres verlo más de cerca.

Paso 2: Configurar la Raspberry Pi

Usaremos nuestra Raspberry Pi para ejecutar y controlar todo: backend, frontend y base de datos.

Una Raspberry Pi no se ejecuta automáticamente. Tendremos que seguir algunos pasos para comenzar a usarlo.

Paso 1: Raspbian

Si está utilizando una Raspberry Pi nueva, necesitará raspbian. El enlace de descarga y el tutorial se pueden encontrar aquí.

Paso 2: escribir la imagen en SD

Ahora que tiene su imagen de Raspbian, necesitará un software de escritura de imágenes (recomiendo win32diskimager) para escribir el archivo de imagen en la tarjeta SD. El tutorial completo se puede encontrar aquí.

Paso 3: Iniciar sesión en Raspberry Pi

Abra "Powershell" y escriba "ssh [email protected]". Si todo va bien, te pedirán una contraseña (la contraseña predeterminada siempre es frambuesa). Normalmente, esto debería iniciar sesión en la Raspberry Pi. Ahora tendremos que hacer algunos cambios en nuestra configuración. Escriba sudo raspi-config en la terminal y presione enter. Navega a las opciones de localización> cambia la zona horaria y configúrala en tu zona horaria. También debe cambiar su país de wi-fi a su propia ubicación. Finalmente, vaya a las opciones de interfaz y habilite SPI, I2C y 1-wire. Esto será importante para utilizar los sensores correctamente.

Paso 4: configurar la conexión a Internet

Usaremos una red WiFi. Puede agregar su red doméstica a través de:

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

Tendrás que reiniciar tu Pi para hacer una conexión. Para verificar si funcionó, puede usar ifconfig para verificar si hay una dirección IP.

Paso 5: configurar el servidor web y la base de datos

Primero, es mejor actualizar y actualizar el sistema con la siguiente secuencia de comandos:

  1. sudo apt dist-upgrade --auto-remove -y
  2. actualización de sudo apt
  3. actualización de sudo apt
  4. sudo apt autoremove

Una vez hecho esto, necesitaremos los siguientes paquetes para nuestro servidor web y base de datos:

apache

sudo apt install apache2 -y

PHP

sudo apt instalar php

sudo apt install phpMyAdmin -y

No olvide establecer una contraseña segura de MySQL cuando se le solicite establecer una contraseña.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

sudo systemctl reiniciar apache2.service

Paso 6: instalar bibliotecas de Python

Para el backend, necesitaremos algunas bibliotecas para Python. Los instalaremos usando pip3, porque estamos usando python3.

pip3 instalar mysql-connector-python

pip3 instalar flask-socketio

pip3 instalar flask-cors

pip3 instalar gevent

pip3 instalar gevent-websocket

sudo apt install python3-mysql.connector -y

pip3 instalar mfrc522! (lo necesitaremos para utilizar el escáner RFID)

Paso 7: preparación del código de Visual Studio

Para ejecutar el código, recomiendo usar Visual Studio Code para conectar su Raspberry Pi a. El enlace de descarga para instalar VSC se puede encontrar aquí.

Si aún no tiene el Desarrollo remoto instalado con SSH, puede encontrar los pasos para hacerlo aquí.

Paso 3: creación de la base de datos

Creando la base de datos
Creando la base de datos

Almacenaremos todos los datos de nuestros sensores y los datos del usuario en una base de datos.

Mi base de datos consta de 5 tablas:

Dispositivo

Table Device tiene un DeviceID, que hace referencia al dispositivo en sí. DeviceName da el nombre del dispositivo, en este caso sensor ultrasónico, sensor de temperatura,… DeviceType da el tipo de dispositivo (sensor o actuador).

Historia

Table History contiene todo el historial del sensor, junto con la fecha (HistoryDate) en que se agregó el historial y el valor del momento en el historial. También tiene dos claves foráneas:

  • DeviceID, para vincular un registro específico a un dispositivo
  • UserID, para vincular un usuario específico a un registro (esto se debe a que usamos un RFID y queremos agregar el registro del historial a un usuario específico)

Usuario

El usuario de tabla se utiliza para crear un sistema de inicio de sesión de usuario con el escáner RFID. Consiste en un apodo, nombre, apellido, contraseña y RFID (este es el número RFID de una etiqueta). Cada usuario está vinculado a un contenedor (depósito de agua) y también lleva el ContainerID como clave externa.

Envase

El contenedor de mesa consta de todos los contenedores diferentes. Tiene una identificación, una ubicación de contenedor (puede ser una empresa, una casa o cualquier otra cosa). Por último, tiene un MaxLevel que representa el volumen máximo que tiene el contenedor.

Ajustes

Table Settings tiene un SettingsID y rastrea el DailyGoal de cada usuario + la fecha en que el usuario agregó el DailyGoal. Esto explica el ID de usuario de clave externa.

Se puede encontrar un volcado de la base de datos en mi repositorio de GitHub en Base de datos.

Paso 4: configurar el backend

No hay un proyecto sin un backend que funcione.

El backend consta de 4 cosas diferentes:

ayudantes

Los ayudantes son todas las clases utilizadas para los diferentes sensores y actuadores. Hay un ayudante para el sensor de temperatura (DS18B20), para los sensores ultrasónicos (HCSR05) para poder medir la distancia y para que el LCD pueda escribir mensajes en la pantalla.

repositorios

En la carpeta de repositorios, encontrará 2 archivos de Python:

  • Database.py, que es un ayudante para sacar filas de su base de datos. Facilita la ejecución y lectura de la base de datos.
  • DataRepository.py que contiene todas las consultas SQL, que se utilizan en el código principal (app.py). Se utilizan para obtener, actualizar o eliminar datos de la base de datos.

app.py

Este es el código de backend principal del proyecto. Realiza la configuración definiendo todos los pines y modos y contiene el código para hacer que la bomba funcione, obtener la temperatura, obtener el usuario, etc. También contiene las rutas que se utilizan para recuperar datos de la base de datos y todos los socketio.on. Para cada página HTML hay un socketio.on diferente para asegurarse de que cada función funcione en el momento correcto.

config.py

Nos queda un archivo: config.py. Este es el archivo con las opciones de configuración para conectarse con su base de datos. No olvide configurar las credenciales de su base de datos.

El backend se puede encontrar en mi repositorio en Backend.

Paso 5: Configuración de la interfaz

Configuración de la interfaz
Configuración de la interfaz
Configuración de la interfaz
Configuración de la interfaz

Para el Frontend, comencé haciendo un diseño de cómo debería verse mi servidor web en AdobeXD. Utilicé los colores de mi logotipo, que son naranja y 2 tonos diferentes de azul. Traté de mantener el diseño lo más simple posible y creé una gota de agua que muestra el porcentaje de hasta qué punto has logrado tu objetivo del día.

En mi repositorio de GitHub, encontrará mi Frontend en Código> Frontend. Es importante que pegue esto en su carpeta / var / html de su Raspberry Pi para que sea accesible desde el servidor web.

Consiste en un par de archivos HTML, que conducen a las diferentes páginas. También encontrará mi screen.css con todo el CSS que necesitará para que se vea como mi proyecto. Por último, tendrá diferentes archivos JavaScript en los scripts. Estos scripts se comunican con mi backend para mostrar datos de mi base de datos o backend.

El backend se puede encontrar en mi repositorio en Frontend.

Paso 6: creación de la carcasa

Creando la carcasa
Creando la carcasa
Creando la carcasa
Creando la carcasa
Creando la carcasa
Creando la carcasa

Si hablamos de mi caso, hay dos partes principales:

Carcasa exterior

Construí la carcasa desde cero. Usé tablas de madera contrachapada y las corté en los tamaños correctos. Atornillé todas las tablas y taladré agujeros para la pantalla LCD, el botón, el sensor ultrasónico para detectar si hay una botella de agua y el embudo para distribuir el agua. Dividí mi estuche en diferentes secciones para mantener el agua y los componentes electrónicos separados y usé una bandeja de cables para proteger los cables de las fugas de agua. En el video adjunto, pueden ver la mayoría de los aspectos de mi carcasa y cómo la hice. También imprimí en 3D un botón, que está pegado a un botón normal. Finalmente, utilicé una bandeja de goteo para recoger toda el agua derramada. También utilicé bisagras para poder abrir y cerrar un panel lateral para ver mi electrónica. Siempre puedes utilizar un dosificador de segunda mano o también puedes utilizar otros materiales.

Para las medidas exactas de mi construido, adjunto un PDF con todos los tamaños de las placas utilizadas en el estuche.

Depósito de agua

El tanque de agua no fue un trabajo fácil. Tengo un tanque de agua con un agujero en la parte inferior, así que tuve que pegarlo con cinta adhesiva para detener la fuga. Necesitará cuatro orificios: uno para el sensor de temperatura y otro para el tubo de su bomba. uno para el tubo para rellenar el tanque y otro para el sensor ultrasónico. Para este último, imprimí en 3D un estuche, que se puede encontrar aquí. Esto le da al sensor más protección contra el agua. Luego perforé un rectángulo en la parte superior del tanque, para apoyar el sensor.

Recomendado: