Tabla de contenido:
- Suministros
- Paso 1: Conexión de todos los componentes electrónicos
- Paso 2: Configurar la Raspberry Pi
- Paso 3: creación de la base de datos
- Paso 4: configurar el backend
- Paso 5: Configuración de la interfaz
- Paso 6: creación de la carcasa
Video: Dispensador de agua automático para controlar el consumo: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
¡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
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:
- sudo apt dist-upgrade --auto-remove -y
- actualización de sudo apt
- actualización de sudo apt
- 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
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
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
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:
Dispensador automático de desinfectante de manos para bricolaje: 6 pasos
Dispensador automático de desinfectante para manos de bricolaje: en este proyecto, construiremos un dispensador automático de desinfectante para manos. Este proyecto utilizará Arduino, sensor ultrasónico, bomba de agua y desinfectante de manos. Se usa un sensor ultrasónico para verificar la presencia de manos debajo de la salida de la máquina desinfectante
DISPENSADOR AUTOMÁTICO DE ALIMENTOS PARA MASCOTAS: 9 Pasos
DISPENSADOR AUTOMÁTICO DE ALIMENTOS PARA MASCOTAS: ¿Alguna vez sintió ganas de perder demasiado tiempo alimentando a su mascota? ¿Alguna vez tuviste que llamar a alguien para alimentar a tus mascotas mientras estabas de vacaciones? He intentado solucionar ambos problemas con mi proyecto escolar actual: ¡Petfeed
Soporte para botella de agua con recordatorio de agua: 16 pasos
Soporte para botella de agua con recordatorio de agua: ¿Alguna vez te olvidaste de beber tu agua? ¡Sé lo que hago! Por eso se me ocurrió la idea de crear un soporte para botellas de agua que te recuerde que debes beber tu agua. El soporte para botella de agua tiene una función en la que sonará un ruido cada hora para recordarle que
¿Cómo medir correctamente el consumo de energía de los módulos de comunicación inalámbrica en la era de bajo consumo de energía ?: 6 pasos
¿Cómo medir correctamente el consumo de energía de los módulos de comunicación inalámbrica en la era del bajo consumo de energía ?: El bajo consumo de energía es un concepto extremadamente importante en la Internet de las cosas. La mayoría de los nodos de IoT deben funcionar con baterías. Solo midiendo correctamente el consumo de energía del módulo inalámbrico podemos estimar con precisión cuánta batería i
Métodos para detectar el nivel de agua Arduino usando un sensor ultrasónico y un sensor de agua Funduino: 4 pasos
Métodos para detectar el nivel de agua Arduino usando un sensor ultrasónico y un sensor de agua Funduino: En este proyecto, le mostraré cómo crear un detector de agua económico usando dos métodos: 1. Sensor ultrasónico (HC-SR04) 2. Sensor de agua Funduino