Tabla de contenido:

Alimentador de mascotas con RasPi y Telegram Bot: 4 pasos (con imágenes)
Alimentador de mascotas con RasPi y Telegram Bot: 4 pasos (con imágenes)

Video: Alimentador de mascotas con RasPi y Telegram Bot: 4 pasos (con imágenes)

Video: Alimentador de mascotas con RasPi y Telegram Bot: 4 pasos (con imágenes)
Video: 🐠 Alimentador de peces por telegram con termómetro y control de luz - PCBWay.es 2024, Mes de julio
Anonim
Alimentador de mascotas con RasPi y Telegram Bot
Alimentador de mascotas con RasPi y Telegram Bot
Alimentador de mascotas con RasPi y Telegram Bot
Alimentador de mascotas con RasPi y Telegram Bot

Primero que nada necesito aclarar que esta no es una Idea Mine original, solo actualizo y adapto los scripts de programación para que funcionen con telegram, lo encontré en un Instructable anterior por lo que los créditos realmente son el autor del mismo.

Puedes ver la versión en español de esto en mi Blog personal:

Necesita construir un circuito pequeño que active un motor de alto torque, y como mi conocimiento de la electrónica es muy, muy escaso, tuve que pasar un par de días aprendiendo lo básico viendo videos en YouTube.

El script de automatización original está escrito en Python y usa una conexión GMail para consultar los comandos, nunca había usado este lenguaje de programación pero la verdad no es tan diferente a los demás, lo he modificado un poco para que se adapte mejor a lo nuevo Las bibliotecas de Python y el proceso de automatización junto con las configuraciones del sistema operativo le permiten parametrizar lo siguiente:

  • Interacción a través de comandos enviados a Chat controlados a través de ChatBots.
  • Permite rastrear el estado de la comida dispensada.
  • Controla la cantidad de comida que se va a distribuir.
  • Tiene botones que le permiten alimentar manualmente.
  • No permite la sobrealimentación al deshabilitar la alimentación a intervalos de 8 horas.
  • Tiene una pantalla LCD de estado que muestra los datos como la fecha y hora de la próxima vez para la próxima fuente de alimentación, el SSID al que está conectado al WiFi y la dirección IP del dispositivo.
  • Opcional: muestra algunos chistes aleatorios de Chuck Norris y / o trivia de números usando un par de APIS públicos (ingenioso del autor original).
  • El sistema es inmune a reinicios debido a cortes de energía, ya que guarda un archivo de estado.
  • El sistema detecta cuando hay una pérdida de conexión e intenta volver a conectarse hasta que tiene éxito.

Paso 1: Materiales usados

  • 1 Raperry Pi, preferiblemente la versión 3 que ya está integrada con la tarjeta inalámbrica, también puedes usar la versión Pi 3 Zero, se necesita un poco más de trabajo porque hay que soldar los pines, pero me enteré muy tarde que podría Utilice uno de estos que sean más económicos.
  • 1 motor eléctrico de alto par, 37mm, 3,5rpm y 12V.
  • 1 Soporte para motor de 37 mm.
  • Pantalla LCD de 1 carácter de 20x4 líneas con control HD44780.
  • 1 Dispensador de cereales Zevro Modelo WM1001 eje-D de 5 pulgadas de largo, 0,63cm de diámetro (es necesario corte en D para sujetarlo al dispensador)
  • 1 Acoplador de eje de 1/4 "a 6mm para unir el al motor.

Todos los materiales anteriores excepto los dos últimos no los pude conseguir en mi país (o al menos no sabía donde conseguirlos), sin embargo la varilla y el acoplador probablemente estén en un taller de soldadura pero siendo la primera vez que hago algo así, no tenía ni idea de cómo debería ser para encajar el motor así que le pregunté a la página de los enlaces descritos anteriormente; A continuación los materiales que pude comprar en las tiendas locales:

  • 1 caja de madera, yo uso una de 20,3 cm de ancho x 26,7 cm de alto x 13 cm de profundidad. la caja tiene una puerta que se abre hacia la derecha con un orificio de 10cm x 4cm para colocar la pantalla LCD (carpintería local)
  • 3 pulsadores
  • 1 Protoboard pequeño
  • 1 LED de 3.3 Voltios (No importa el color pero por el voltaje suelen ser rojos)
  • 1 transistor NPN PN2222
  • 1 Resistencia de 270 Ω
  • 1 resistencia de 10 KΩ
  • 1 potenciómetro de 10 KΩ
  • 1 diodo IN4003 (IN4001 o IN4004 pueden funcionar)
  • 1 adaptador 12V 3A
  • 1 adaptador 5V 2A
  • 4 tornillos con tuerca de mariposa de 1,5 a 2 pulgadas (depende del grosor de la madera utilizada, son para fijar el soporte del motor a la caja de madera)
  • Cables Hilos de puente de varios colores
  • 1 tubo plegable o un juego de PVC de 4 pulgadas de diámetro, esto depende de la altura a la que se colocará la caja de madera.
  • 1 codo de PVC que se fija al modelo anterior.
  • 3 abrazaderas para tubos de coche (The World)
  • 4 pies de cable UTP (necesitamos los pares trenzados para hacer las conexiones)
  • 1 USB WebCam, no es necesario que sea de alta resolución.

Algunos materiales misceláneos que se pueden conseguir en ferreterías o posiblemente ya los tengamos: Cinta Industrial

  • Soldador de estaño
  • Estaño
  • Taladro
  • Taladro 5/16
  • Tornillos S8 con expansores

Paso 2: Colocación de la estructura

Colocación de la estructura
Colocación de la estructura
Colocación de la estructura
Colocación de la estructura
Colocación de la estructura
Colocación de la estructura

La idea principal es sustituir el mango dispensador que viene en el ZEVRO por la varilla D que luego se conectará al Motor mediante el Acoplador. El dispensador se fijará a la caja de madera y la caja de madera a la pared. Como no conozco mucho de electrónica no utilicé ninguna placa de baquelita para montar el circuito así que usé el protoboard para poner todos los componentes así en la parte inferior de la caja se sujeta con tornillos la Rapberry Pi y el protoboard que ya tenía adhesivo. en la parte posterior, así que solo fui a pegarlo. La caja debe tener tres botones los cuales tendrán la función de Reiniciar el temporizador, activar el alimentador y el último será un paso directo para activar el motor sin pasar por el circuito. El motor se sujetará dentro de la caja mediante el soporte, por lo que solo la varilla D que conecta al dispensador sobresaldrá de la caja, en la parte inferior de la caja se fijará y ajustará la webcam para que en cada correo de consulta y confirmación yo envió una foto de cómo está el plato, esto para no sobrealimentar en caso de que no hayan terminado la última ronda de comida.

Desde el fondo del dispensador se colocó el tubo que baja al plato y se colocó el codo de PVC en la base, coloqué un poco de Cinta Industrial en la salida para minimizar la velocidad del flujo de alimentos e hice una base dispensadora para Evite que los alimentos se esparzan por todas partes. Para fijar la tubería a la pared, use soportes metálicos que fije a la pared con los tornillos para espárragos S8.

En la puerta de la caja sujete la placa de la pantalla LCD y utilice los pares trenzados del cable UTP para llevarlos directamente a la Raspberry, en el otro extremo de los cables empalme las puntas hembra de los jumpers para facilitar la conexión en los puertos GPIO de la Raspberry. Este sería el diagrama del circuito. Intentaré explicarlo con lo poco que puedo obtener de Electrónica.

El motor está conectado directamente al polo positivo del transformador de 12 voltios pero para que la corriente fluya debe pasar por el circuito en el polo neutro del motor, para este transistor se utiliza N2222. Los transistores normalmente tienen 3 patas que corresponden a un colector, una base y un emisor, dependiendo del modelo de transistor la ubicación de estas patas puede variar; Este transistor hace que el interruptor funcione. Aquí es donde conectamos el polo neutro del motor al colector del transistor, el pin # 19 del rapberry se conecta a la base mediante una resistencia de 270Ω y el emisor se conecta al terminal neutro del transistor. Transformador de 12V junto con uno de los polos de tierra de la frambuesa; el transistor permitirá que la corriente fluya entre el colector y el emisor siempre que la base esté estimulada con suficiente voltaje; luego programaremos el rapberry para que según ciertas órdenes el puerto 19 emita 3.3 voltios, suficiente para que el circuito continúe y active el motor.

Para la pantalla LCD se usa otra parte del protobardo en un circuito diferente donde se conecta el potenciómetro de 10KΩ el cual rechaza el contraste del texto que aparece en la LCD, por lo que si no aparece nada en la pantalla probablemente sea porque el potenciómetro está totalmente cerrado; en mi caso lo dejo completamente abierto para que se visualice mejor el texto. Al final, las conexiones en el tablero serían las siguientes.

Paso 3: Configuración de Raspberry Pi

En primer lugar, es importante crear el Telegram Bot que administrará el sistema. Necesitará una clave para modificar el script de Python adjunto. Lea los pasos en la documentación del telegrama:

core.telegram.org/bots#3-how-do-i-create-a-bot

Para configurar el rapberry, use la versión Lite del Rapbian (no necesitamos la interfaz gráfica) y aplique la configuración básica que muestra el raspbian una vez instalado o usando el comando raspi-config: expanda el espacio al 100% y habilite el SSH pero sobre todo lo más importante es cambiar la contraseña y el nombre de usuario al usuario pi que viene por defecto (De lo contrario, como me pasó a mí, pueden sufrir un ataque por el puerto 22 si tienen una IP pública dirigida a la frambuesa). Aparte de eso la configuración para conectarme automáticamente a mi red WiFi (suponiendo que mi red se llame "BlogSoriano" y mi contraseña sea "$ ecure123!") Generamos y guardamos la clave en el archivo Conexiones inalámbricas con el siguiente comando:

sudo wpa_passphrase "BlogSoriano" "$ ecure123!" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf> / dev / null

lo siguiente es actualizar e instalar el sistema de instalación de python "pip" así que iniciaremos sesión como root, actualizaremos e instalaremos los paquetes necesarios:

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Con esto ya tenemos acceso a la biblioteca de clases de python, para el script que vamos a usar necesitamos instalar lo siguiente:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces telepot inalámbrico cv2

Una vez finalizada la instalación de dependencias, usaremos el script adjunto a este paso, lo guardo en la ruta /opt/petfeeder.py y el archivo se puede crear usando el comando nano /opt/petfeeder.py y dentro de este archivo pegamos el código o, si tienes más experiencia en Linux, puedes descargarlo directamente con wget. En el script es importante modificar las variables BOTKEY (en la línea 36) y SYSPASSWORD (en la línea 23).

Aclaro que este código no lo escribí yo ya que nunca lo había programado en Python, solo lo modifiqué para trabajar con las nuevas librerías y con la pantalla LCD 20x4 y para usar Telegram Bot.

Una vez que tenemos el Script, debemos cambiar los valores de las variables con la clave del bot; para esto es necesario crear un nuevo Telegram Bot, con eso solo quedaría guardar el archivo y salir (con Ctrl + o guardar y ctrl + x sale del editor nano), solo necesitamos ser comprobante de reinicios; el propio script guarda la última vez que se activa el sistema de energía, por lo que solo tenemos que hacer que el script se ejecute cada vez que se inicia el sistema operativo, para esto encontré una solución muy particular con un programa llamado supervisor, que se instala desde los repositorios de Debian:

supervisor de instalación de apt-get

y una vez instalado, solo necesitamos crear un archivo de configuración en /etc/supervisor/conf.d/petfeeder.conf, ya que en el caso anterior podemos crearlo y guardarlo con nano, este archivo tendrá lo siguiente:

[programa: petfeederd] directorio = / opt command = python petfeeder.py autostart = true autorestart = true

Una vez guardado el archivo podemos usar el comando supervisorctl [inicio | detener | reiniciar] petfeederd, ya que en este caso no se ha iniciado el servicio, lo ejecutamos con start:

supervisorctl iniciar petfeederd

Paso 4: listo para probar

Image
Image
Listo para probar
Listo para probar
Listo para probar
Listo para probar
Listo para probar
Listo para probar

Y con esto, el sistema debería funcionar, la pantalla LCD debería mostrar información sobre cuándo debería ser la próxima alimentación o si está lista para la alimentación, si así lo digo yo. También debes mostrar el nombre de la red inalámbrica a la que estás conectado y la dirección IP que se está utilizando en caso de que necesitemos conectarnos a través de SSH, les comparto un pequeño video que hice, me disculpo por la calidad del mismo, No soy muy bueno es este tema de los vlogs.

Debería poder buscar su bot en Telegram y enviar uno de los siguientes comandos después de que usted / autorice su chat:

/ feed: Inicia el proceso de alimentación siempre que haya transcurrido el tiempo parametrizado.

/ when: devuelve información sobre cuándo fue la última vez que se alimentó y una imagen del plato de comida.

/ photo: Devuelve una imagen del plato de comida.

/ reiniciar: Reinicia el sistema, establece la variable de la última alimentación en 0 para poder alimentar inmediatamente.

/ status Informa sobre el estado de la conexión a Internet: SSID del Wireless conectado y la dirección IP que tiene el sistema dentro de la red.

Recomendado: