- Material requerido
- Diagrama de circuito
- Modelo de comedero para mascotas impreso en 3D
- Módulo RTC DS3231
- Código y explicación
- Funcionamiento del alimentador automático de mascotas
Hoy estamos construyendo un alimentador automático de mascotas basado en Arduino que puede servir automáticamente comida a su mascota a tiempo. Tiene un módulo DS3231 RTC (reloj en tiempo real), que solía establecer la hora y la fecha en que se le debe dar comida a su mascota. Por lo tanto, al configurar la hora de acuerdo con el horario de alimentación de su mascota, el dispositivo deja caer o llena el tazón de comida automáticamente.
En este circuito, estamos usando una pantalla LCD de 16 * 2 para mostrar la hora usando el módulo DS3231 RTC con Arduino UNO. Además, se utiliza un servomotor para rotar los contenedores para proporcionar la comida y un teclado de matriz 4 * 4 para configurar manualmente el tiempo para alimentar a la mascota. Puede configurar el ángulo de rotación y la duración de la apertura del recipiente de acuerdo con la cantidad de comida que desea servir a su mascota. La cantidad de comida también puede depender de su mascota, ya sea un perro, un gato o un pájaro.
Material requerido
- Arduino UNO
- Teclado de matriz 4 * 4
- LCD de 16 * 2
- Presionar el botón
- Servo motor
- Resistor
- Conexión de cables
- Tablero de circuitos
Diagrama de circuito
En este alimentador para gatos basado en Arduino, para obtener la hora y la fecha, hemos utilizado el módulo RTC (reloj en tiempo real). Hemos utilizado el teclado matricial de 4 * 4 para configurar el tiempo de alimentación de la mascota manualmente con la ayuda de una pantalla LCD de 16x2. El servomotor hace girar el recipiente y deja caer la comida en el tiempo establecido por el usuario. La pantalla LCD se utiliza para mostrar la fecha y la hora. El trabajo completo se puede encontrar en el video que se incluye al final.
Modelo de comedero para mascotas impreso en 3D
Hemos diseñado este contenedor Arduino Pet Feeder utilizando la impresora 3D. También puede imprimir el mismo diseño descargando los archivos desde aquí. El material utilizado para imprimir este modelo es PLA. Tiene cuatro partes como se muestra en la siguiente imagen:
Ensamble las cuatro partes y conecte el servomotor como se muestra en la siguiente imagen:
Si es nuevo en la impresión 3D, aquí está la guía de inicio. Puede descargar los archivos STL para este comedero para mascotas aquí.
Módulo RTC DS3231
DS3231 es un módulo RTC (reloj en tiempo real). Se utiliza para mantener la fecha y la hora de la mayoría de los proyectos de electrónica. Este módulo tiene su propia fuente de alimentación de celda de moneda con la que mantiene la fecha y la hora incluso cuando se desconecta la alimentación principal o la MCU ha pasado por un restablecimiento completo. Entonces, una vez que establezcamos la fecha y la hora en este módulo, siempre lo mantendrá al día. En nuestro circuito, estamos usando DS3231 para alimentar a la mascota según la hora, configurada por el dueño de la mascota, como una alarma. A medida que el reloj llega a la hora programada, opera el servomotor para abrir la puerta del contenedor y la comida cae en el tazón de comida de la mascota.
Nota: Cuando utilice este módulo por primera vez, deberá configurar la fecha y la hora. También puede usar RTC IC DS1307 para leer la hora con Arduino.
Código y explicación
El código completo de Arduino de Automatics Pet Feeder se proporciona al final.
Arduino tiene bibliotecas predeterminadas para usar el servomotor y LCD 16 * 2 con él. Pero para usar el módulo DS3231 RTC y el teclado de matriz 4 * 4 con Arduino, debe descargar e instalar las bibliotecas. El enlace de descarga para ambas bibliotecas se proporciona a continuación:
- Biblioteca de módulos DS3231 RTC (reloj en tiempo real)
- Biblioteca de teclados matriciales 4 * 4
En el siguiente código, estamos definiendo bibliotecas, "#include
#incluir
En el siguiente código, estamos definiendo el mapa de teclas para el teclado matricial 4 * 4 y asignando los pines Arduino para la Fila y Columnas del teclado.
char claves = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {2, 3, 4, 5}; byte colPins = {6, 7, 8, 9};
Aquí, estamos creando el teclado usando el siguiente comando en el código.
Teclado kpd = Teclado (makeKeymap (teclas), rowPins, colPins, ROWS, COLS);
Asignación de pines Arduino A4 y A5 para conectar con pines SCL y SDA de DS3231. Además, asignar pines a la pantalla LCD e inicializar el servomotor.
DS3231 rtc (A4, A5); Servo servo_test; // inicializar un objeto servo para el servo conectado LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Crea un objeto LC. Parámetros: (rs, enable, d4, d5, d6, d7)
En el siguiente código, declaramos t1 a t6, clave y matriz r, y el feed.
int t1, t2, t3, t4, t5, t6; alimentación booleana = verdadero; char key; int r;
En el siguiente código, estamos configurando todos los componentes para el inicio. Como en este código "servo_test.attach (10);" El servo está conectado al décimo pin del Arduino. Definir A0, A1 y A2 como Pin de salida e inicializar el módulo LCD y RTC.
configuración vacía () {servo_test.attach (10); // adjuntar el pin de señal del servo al pin9 de arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, SALIDA); pinMode (A1, SALIDA); pinMode (A2, SALIDA); }
Ahora bien, lo importante es comprender cómo está funcionando el ciclo. Siempre que se presiona el botón pulsador, se pone alto significa 1, que se puede leer con “buttonPress = digitalRead (A3)” . Ahora va dentro de la declaración 'if' y llama a la función 'setFeedingTime' . Luego compara el tiempo real y el tiempo ingresado por el usuario. Si la condición es verdadera, lo que significa que el tiempo real y el tiempo ingresado son los mismos, entonces el servomotor gira a un ángulo de 100 grados y después de 0.4 segundos de retraso vuelve a su posición inicial.
bucle vacío () {lcd.setCursor (0,0); int buttonPress; buttonPress = digitalRead (A3); if (buttonPress == 1) setFeedingTime (); lcd.print ("Hora:"); String t = ""; t = rtc.getTimeStr (); t1 = t.charAt (0) -48; t2 = t.charAt (1) -48; t3 = t.charAt (3) -48; t4 = t.charAt (4) -48; t5 = t.charAt (6) -48; t6 = t.charAt (7) -48; lcd.print (rtc.getTimeStr ()); lcd.setCursor (0,1); lcd.print ("Fecha:"); lcd.print (rtc.getDateStr ()); if (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // comando para rotar el servo al ángulo especificado delay (400); servo_test.write (55); feed = falso; }}
En el código de función void setFeedingTime () , después de presionar el botón pulsador podemos ingresar el tiempo de alimentación de la mascota, luego tenemos que presionar 'D' para ahorrar ese tiempo. Cuando el tiempo guardado coincide con el tiempo real, el servo comienza a girar.
void setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Establecer hora de alimentación"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); while (1) {clave = kpd.getKey (); char j; if (clave! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (clave); r = clave-48; i ++; j ++; if (j == 2) {lcd.print (":"); j ++; } retraso (500); } si (clave == 'D') {clave = 0; romper; }}}
Funcionamiento del alimentador automático de mascotas
Después de cargar el código en Arduino Uno, la hora y la fecha se mostrarán en la pantalla LCD de 16 * 2. Cuando presiona el botón, le pregunta por la hora de alimentación de la mascota y debe ingresar la hora usando el teclado matricial 4 * 4. La pantalla mostrará el tiempo ingresado y al presionar 'D' se ahorra tiempo. Cuando el tiempo real y el tiempo ingresado coinciden, hace girar el servomotor desde su posición inicial 55⁰ a 100 after y después de una demora vuelve a su posición inicial. Por lo tanto, el servomotor está conectado a la puerta del contenedor de alimentos, por lo que a medida que se mueve, la puerta se abrirá y una cantidad de comida caerá en el recipiente o plato. Después de un retraso de 0,4 segundos, el servomotor vuelve a girar y cierra la puerta. Todo el proceso se completa en unos segundos. Así es como tu mascota obtiene la comida automáticamente a la hora que ingresaste.
Cambiar la hora y el grado según la comida.