Tabla de contenido:
- Suministros
- Paso 1: Montaje del circuito
- Paso 2: Configurar nuestro RaspberryPi
- Paso 3: configurar el backend
- Paso 4: Configuración de la interfaz
- Paso 5: Importación de la base de datos para nuestro proyecto
- Paso 6: Puesta en marcha de nuestro proyecto
- Paso 7: el caso
- Paso 8: admire el producto final
- Paso 9: los problemas
Video: Fuente de agua sin contacto: 9 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Al final de mi primer año como estudiante de MCT, se me asignó la tarea de hacer un proyecto que contuviera todas las habilidades que había adquirido en los cursos durante todo el año.
Estaba buscando un proyecto que verificara todos los requisitos establecidos por mis maestros y al mismo tiempo fuera divertido para mí. Cuando buscaba un sujeto, no pude evitar sentirme inspirado por Covid-19 (esto fue justo antes de que se produjera un brote en todo el mundo). Elegí una fuente / dispensador de agua sin contacto, ya que ofrecería una forma de beber agua sin tocar algunos botones antes de que saliera el agua.
Este proyecto utiliza un sensor de distancia para detectar si se ha colocado una taza o vaso debajo de la salida de agua, la fuente procederá a producir agua durante 60 segundos (100 ml / minuto). Esto es para hacerlo más consistente porque detectar si el vidrio se ha retirado resultó ser una tarea demasiado difícil / lenta, por lo que se instaló un temporizador. Después de que su vaso se haya llenado con 100ml de agua puede esperar 5 segundos y si el vaso aún está frente al sensor de distancia procederá a llenar en otro momento (esto significa que también hay un tiempo de espera de 5 segundos entre el llenado de dos elementos).
Suministros
Componentes
- 1x RaspberryPi (utilicé la cuarta versión, pero las versiones anteriores podrían funcionar también) - 1x transistor S8050 o 1x transistor PN2222 también podrían funcionar - 1x fotoresistor - 1x HC-SR04 (sensor de distancia ultrasónico) - 1x RFID-RC522- 3x diferente LED de colores (azul, amarillo, rojo) - 1x LCD1602- 1x Zumbador activo- 1x PCF8574- 1x MCP3008- 1x Bomba de agua (se utilizó una bomba peristáltica de 12v, enlace a este artículo)
- 1x fuente de alimentación CC (12v, 600mAh) - 1x bloque de alimentación con 3 puntos - 3 placas de pruebas (probablemente podría usar menos) - T-cobbler para pines GPIO de RaspberryPi - T-cobbler cable (para conectar pi y cobbler)
Materiales y herramientas utilizados
- Un taladro con las siguientes brocas:
- 4 mm (para perforar previamente los orificios para los tornillos) - 15 mm (para perforar los orificios para el sensor de distancia)
- Cualquier destornillador- 30 tornillos de 45mm de largo- 6 tornillos de 20mm- 2 bisagras para la puerta- Una placa de MDF de unos 130cm por 80cm- Un par de limas
Paso 1: Montaje del circuito
Para el circuito tenemos 2 sensores, un sensor de distancia y un fotorresistor. El sensor de distancia se usa para detectar si se ha puesto una taza dentro del alcance de la fuente de agua y, opcionalmente, agregué un fotorresistor, este se usa para detectar si la carcasa ha sido abierta por alguien que no debe abrirla. Además de eso, tenemos un lector de RFID que se puede usar para autenticar a un mecánico que necesita abrir la caja para rellenar el depósito de agua o por algún otro problema mecánico.
Para los elementos activos tenemos el LCD1602, zumbador activo y una bomba peristáltica, el LCD se usa para mostrar el estado como si la caja está abierta o la bomba está funcionando así como se mostrará la dirección IP del dispositivo, el zumbador es Se utiliza para emitir un sonido alarmante cuando se abre el estuche sin que alguien lo autorice.
He agregado la placa de pruebas y las vistas esquemáticas del circuito a continuación.
Paso 2: Configurar nuestro RaspberryPi
Para configurar nuestro RaspberryPi, descargaremos el software de imágenes del sitio de Raspberry, con esto puede descargar la versión de Raspbian que desee y crear una imagen de su SDCARD para usted. Una vez que esta herramienta haya hecho su trabajo, puede abrir la SDCARD en el Explorador de Windows, podrá ver la partición de arranque de su RaspberryPi. Aquí encontraremos un archivo llamado cmdline.txt (no abra este archivo en el bloc de notas, ábralo en Notepad ++ o cualquier otro IDE). Agregaremos ip = 169.254.10.1 al final de este archivo para asegurarnos de que podamos conectarnos a nuestro dispositivo a través de Ethernet (asegúrese de no agregar ningún ENTERS al final de su archivo o tendrá problemas).
Ahora puede poner su SDCARD en su RaspberryPi e iniciarlo, conectar el Pi a su computadora y usar Putty para conectarse a su Pi a través de SSH. Utilizo el siguiente comando para conectarme a mi Pi en lugar de usar Putty. "ssh [email protected]" puede que se agote el tiempo de espera, así que tenga paciencia y espere a que se inicie la Pi. Una vez que se nos solicite una contraseña, completaremos la contraseña predeterminada de "frambuesa". Asegúrese de cambiar esta contraseña después de iniciar sesión para evitar que cualquier persona con malas intenciones acceda a su Raspberry Pi.
Ahora configuraremos nuestro Pi para que proporcione la funcionalidad necesaria para nuestro código. Use "sudo raspi-config" para abrir el menú de configuración y aquí iremos a Opciones de interfaz.
Debajo de aquí activaremos las siguientes opciones: - SPI- I2C
Siga esta guía para configurar una conexión inalámbrica a Internet en su Pi, una vez que lo haya hecho con éxito, podremos instalar nuestros paquetes requeridos.
Paquetes: (ejecute los comandos en el orden en que se indican aquí)
Lo siguiente para obtener las últimas actualizaciones para nuestro Pi- sudo apt update && apt upgrade -y
Instale nuestro servidor MySQL y servidor web- sudo apt install mariadb-server apache2
Usaré MySQL Workbench para configurar la base de datos más adelante en esta guía, si no usa esto y prefiere phpmyadmin, puede instalarlo con el siguiente comando, puede usar cualquier otro cliente MySQL, así como puede importar correctamente la base de datos.- sudo apt install phpmyadmin
Después de haber hecho todo lo anterior, necesitamos crear un usuario para nuestra base de datos. Use "sudo mysql -u root" para iniciar sesión en su servidor MySQL, aquí crearemos un usuario llamado db_admin con su contraseña respectiva, mantenga esta contraseña se anotó en algún lugar para más adelante en las instrucciones. OTORGAR TODOS LOS PRIVILEGIOS EN *. * A "db_admin" @ "%" IDENTIFICADO POR "yourPasswordHere" CON OPCIÓN DE OTORGAMIENTO;
Utilice el comando "\ q" para salir del terminal MySQL.
Paquetes de Python: todavía necesitamos instalar algunos paquetes de Python antes de continuar, ejecute el siguiente comando para asegurarse de que todo esté allí para una experiencia impecable.
sudo pip3 instalar Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev
Además de los siguientes paquetes de Python de conexión MySQL, sudo apt install python3-mysql.connector -y
Si todo salió bien, ahora puede visitar su Pi en su navegador web con la siguiente dirección
Paso 3: configurar el backend
Aquí voy a explicar cómo puede configurar el backend usted mismo, primero descargue el archivo rar desde abajo, descomprímalo en algún directorio temporal. Conéctese a su RaspberryPi con FileZilla o WinSCP con las siguientes credenciales:
IP: 169.254.10.1 Usuario: piPassword: raspberry (si cambió la contraseña hágalo aquí también)
A continuación, puede proceder a transferir los archivos que ha desbloqueado a cualquier directorio que desee en el directorio de inicio del usuario pi. En aras de la simplicidad, asumiremos en esta configuración que hemos cargado todos nuestros archivos en el directorio de documentos.
¡Mantenga su programa FTP abierto para el siguiente paso!
Ahora abra su símbolo del sistema nuevamente con su conexión SSH porque necesitaremos hacer algunos cambios en el servidor web para que el frontend pueda comunicarse con el backend. Vamos a abrir el archivo de configuración predeterminado de Apache2 y modificarlo ligeramente: sudo nano /etc/apache2/sites-available/000-default.conf
Agregue las siguientes líneas debajo de DocumentRoot en el archivo de configuración que acabamos de abrir: ProxyPass / api / https://127.0.0.1:5000/api/ProxyPassReverse / api /
Puedes echar un vistazo a la imagen adjunta como ejemplo.
Paso 4: Configuración de la interfaz
Antes de transferir nuestros archivos, tendremos que hacer algo antes de que podamos comenzar a transferir nuestros archivos frontend. Abra el símbolo del sistema con la conexión SSH que realizó anteriormente y use el siguiente comando para cambiar al usuario raíz de nuestra RaspberryPi: "sudo su -"
Después de esto, podemos cambiar la contraseña de nuestro usuario root con el siguiente comando: "passwd" Esto le pedirá que ingrese una nueva contraseña, después de haber hecho esto, puede volver a su programa FTP e iniciar sesión con sus credenciales de root:
IP: 169.254.10.1 Usuario: root Contraseña:
Descargue el archivo rar desde abajo y descomprímalo en una carpeta temporal, puede mover estos archivos a su RaspberryPi al siguiente directorio / var / www / html /, una vez que lo haya hecho, puede visitar la interfaz en http: / /169.254.10.1, todavía no puede interactuar porque el backend aún no se está ejecutando, más adelante en esta guía le mostraré cómo hacerlo.
Paso 5: Importación de la base de datos para nuestro proyecto
Abra su programa de administración de servidor MySQL favorito y conéctese a su Raspberry Pi con las credenciales que creamos en el Paso 2.
Descargue el volcado de la base de datos desde abajo e impórtelo como lo haría normalmente, MySQL workbench iría a Archivo> Abrir script SQL y seleccione el volcado de la base de datos que descargó, luego presione CTRL + MAYÚS + ENTER y el script SQL debería ejecutarse y la estructura para la base de datos debe crearse.
Agregué las credenciales que usé para mi RaspberryPi como un ejemplo a continuación, así como varias imágenes de la estructura de la base de datos, puede echarle un vistazo e intentar tener una idea general de cómo funciona todo.
Paso 6: Puesta en marcha de nuestro proyecto
Antes de que podamos iniciar nuestro proyecto, necesitamos cambiar las credenciales de la base de datos en el archivo config.py, si siguió las instrucciones exactamente como dice esta guía, puede encontrarlas en /home/pi/Documents/Backend/src/config.py aquí debe cambiar las credenciales de la variable db_config para que coincidan con las que creamos anteriormente para nuestra base de datos. Agregué un ejemplo de lo que verá en este archivo a continuación.
Después de eso, agregaremos un archivo.service, este archivo se asegurará de que nuestro proyecto comience cuando se inicie RaspberryPi, asegúrese de cambiar el directorio de donde instaló los archivos de backend. Utilice el siguiente comando para crear el archivo de servicio: sudo nano /etc/systemd/system/dispenser.service Esto creará un archivo de servicio y copiará y pegará el siguiente código en este archivo.
[Unidad] Descripción = Water DispenserAfter = mysql.service
[Servicio] Tipo = simpleRestart = alwaysRestartSec = 1User = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py
[Instalar] WantedBy = multi-user.target
Modifique la línea donde dice /home/pi/Documents/Backend/index.py donde instaló sus archivos de backend, si no lo hace correctamente, ¡el proyecto no se iniciará correctamente! Agregaré un archivo de ejemplo a continuación.
Después de haber hecho eso y salir del editor de texto, podemos habilitar el servicio con los siguientes comandos: - sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser
Y como extra podemos ejecutar: sudo systemctl status dispenser Esto mostrará alguna información sobre nuestro servicio, si está activo o no,…
Paso 7: el caso
Felicidades, casi estamos allí, agregaré algunas imágenes que mostrarán con precisión las dimensiones que usé para mi proyecto, usé placas de MDF de 18 mm de grosor, opcionalmente puede usar un grosor diferente. Mi carcasa se puede utilizar como guía para diseñar la tuya o puedes recrear lo que hice. (Si usas un grosor diferente de MDF mis dibujos ya no te permitirán hacer mi diseño, ¡asegúrate de adaptarlo!) Los paneles que hice: - 2 paneles de 32cm por 42cm (paneles laterales) - 1 panel de 24cm por 32cm (placa inferior) - 2 paneles de 16cm por 24cm (placa frontal donde se aloja el LCD y placa adyacente) - 1 panel de 28cm por 24cm (placa central vista desde el frente) - 1 panel de 30cm por 24cm (placa superior)
Paso 8: admire el producto final
Ha llegado al final y, con suerte, ha logrado hacer realidad todo el asunto. Si solo eres un transeúnte leyendo, también bienvenido, ¡gracias por leer hasta el último paso!
Gasté mucha sangre, sudor y lágrimas en este proyecto, así que te agradecería que dejaras un comentario, ¡cualquier crítica para mejorarlo es bienvenida!
Paso 9: los problemas
Pondría el proyecto en su estado actual como un prototipo funcional que puede ver muchas más mejoras.
La base de código del backend está estructurada de tal manera que se puede establecer perfectamente una relación maestro-esclavo en la que una fuente actuaría como la interfaz principal y todas las demás fuentes enviarían datos y cambios sobre la API REST del maestro. También hay restos de un sistema de tokens API en el código, ya que estaba destinado a implementarse, pero se cortó más adelante debido a limitaciones de tiempo.
He subido mi código a mi servidor de Gitlab y allí puede ver el código completo:
Recomendado:
Dispensador de desinfectante de manos sin contacto para bricolaje sin un Arduino o un microcontrolador: 17 pasos (con imágenes)
Dispensador de desinfectante de manos sin contacto de bricolaje sin un Arduino o un microcontrolador: como todos sabemos, el brote de COVID-19 golpeó al mundo y cambió nuestro estilo de vida. En esta condición, el alcohol y los desinfectantes para manos son fluidos vitales, sin embargo, deben usarse correctamente. Tocar recipientes de alcohol o desinfectantes para manos con manos infectadas c
¡Hazlo tú mismo con Ambilight con Raspberry Pi y SIN Arduino! Funciona en cualquier fuente HDMI .: 17 pasos (con imágenes)
¡Hazlo tú mismo con Ambilight con Raspberry Pi y SIN Arduino! Funciona en cualquier fuente HDMI: Tengo una comprensión bastante básica de la electrónica, por lo que estoy muy orgulloso de mi configuración DIY Ambilight en una carcasa de madera básica con la capacidad de encender y apagar las luces cuando me plazca. Para aquellos que no saben qué es un Ambilight;
¡Timbre de puerta DIY sin contacto sin Arduino !: 7 pasos
¡Timbre de puerta DIY sin contacto sin Arduino !: Los interruptores de timbre son una de las cosas que más tocan los extraños. Y con la pandemia de covid 19 convirtiéndose en un problema grave, mantener una buena higiene se ha convertido en la máxima prioridad en estos días. Entonces, en este instructivo, te mostraré una manera simple
Control de motor e indicador de nivel de agua sin contacto y sin corrosión: 5 pasos
Indicador de nivel de agua y control de motor sin contacto y sin corrosión .: HOLA, en este instructivo veremos cómo obtener el estado del tanque de agua en función de los niveles de agua (alto, medio, bajo) del tanque superior usando tres leds de diferentes colores en un Forma sin contacto con la ayuda del sensor ultrasónico y la placa Arduino uno. P
Enfriador / soporte para computadora portátil de costo cero (sin pegamento, sin perforaciones, sin tuercas y pernos, sin tornillos): 3 pasos
Enfriador / soporte para computadora portátil de costo cero (sin pegamento, sin perforaciones, sin tuercas y pernos, sin tornillos): ACTUALIZACIÓN: POR FAVOR AMABLE VOTE POR MI INSTRUCTABLE, GRACIAS ^ _ ^ TAMBIÉN PUEDE VOTAR POR MI OTRO CONCURSO ENTRADA EN www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ O QUIZÁS VOTE POR MI MEJOR AMIGO