Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Gato Pavlovs

Componentes y suministros

Arduino MKR IoT Bundle
× 1

Aplicaciones y servicios en línea

Telegram

Acerca de este proyecto

Nota:este tutorial podría estar desactualizado, vaya aquí para una versión más actual.

Si alguna vez trataste de entrenar a un gato, sabes lo difícil que es. Los gatos son sus propios amos, pero ahora tienes la oportunidad de dejar que los gatos hagan tus órdenes con este dispositivo habilitado para IoT.

¡Bienvenido al Experimento del gato de Pavlov!

En este proyecto, aprenderá cómo enseñarle a su gato cuándo es (y no) la hora de la cena usando nada más que los componentes del paquete MKR IoT y algo de cartón.

¡Y todos sabemos que a los gatos ya les encantan las cajas de cartón!

Cada vez que el gato escucha una determinada melodía, recibe comida. Un sensor de luz detecta la presencia de un gato. Otra melodía no hace nada. ¿Ves cómo funcionará esto?

Podrá monitorear la progresión de su gato a lo largo del tiempo y establecer la velocidad de dispensación de alimentos desde su teléfono. Una vez que haya alcanzado estadísticas satisfactorias, es hora de reutilizar el sensor en un dispositivo portátil. Tu gato debe seguirte a partir de ese momento si haces ese pitido.

Descargo de responsabilidad:ningún gato resultó herido en el desarrollo de este experimento. Además, no hay garantía de que el gato se coma la comida, pero te haces una idea, ¿verdad?

En pocas palabras

Podrá construir su propio dispensador de alimentos siguiendo estas sencillas instrucciones paso a paso. El dispensador es básicamente un poco de cartón y un servomotor con algo de magia Arduino añadida.

Mediante un servicio de mensajería llamado Telegram, puede establecer la cantidad de comida que se va a distribuir y activar las melodías que se reproducen con el timbre.

Se utiliza un sensor de luz para detectar si el gato reaccionó a la melodía y llegó a la comida.

Consejo profesional: Puede alojar una página web en el MKR1000 y mostrar los datos recopilados en una práctica tabla.

Componentes

  • Servomotor
  • Fototransistor
  • Resistencia de 220 ohmios
  • Timbre

Objetivos de aprendizaje

En este experimento, aprenderá a:

  • Administre Telegram Bots con un teclado personalizado
  • Configure y administre la funcionalidad del servidor web desde el propio MKR1000. #ProTip

Consejos profesionales son pasos útiles pero no estrictamente necesarios que agregan una capa de complejidad al proyecto.

¿Quiere saber más?

Este tutorial es parte de una serie de experimentos que lo familiarizarán con MKR1000 e IoT. Todos los experimentos se pueden construir utilizando los componentes incluidos en el MKR IoT Bundle.

  • Almohada Te Amo
  • Caja de rompecabezas
  • El gato de Pavlov
  • El empollón
  • Comunicador de plantas

Telegram y Arduino

Telegram es una aplicación de mensajería popular tanto para dispositivos móviles como para computadoras de escritorio. ¡Además de permitirnos chatear con nuestros amigos, también nos permite crear prácticos y poderosos chat-bots!

La biblioteca TelegramBot para Arduino nos brinda una manera fácil de implementar la lógica detrás del chat-bot.

Para aprender a crear un Bot y administrar las funcionalidades básicas, consulte el tutorial I Love You Pillow.

Crea tu teclado personalizado

Telegram nos permite crear un teclado personalizado para respuestas rápidas. Significa que cuando hablas con un bot, se mostrará una determinada selección de botones en lugar del teclado predeterminado. Puede personalizar fácilmente esos botones y mejorar la experiencia del usuario de su dispositivo.

Nuestro teclado personalizado se ve así:

Usaremos la primera fila de botones para reproducir la melodía y dispensar comida, mientras que la segunda fila de botones se usará para configurar la velocidad del servomotor y por lo tanto la cantidad de comida a dispensar.

Para crear un teclado personalizado, primero debemos declararlo:

  TelegramKeyboard keyboard_one;  

Luego, defina las filas:

  const char * row_one [] ={MusicAndFood, MusicNoFood}; const char * row_two [] ={Una porción, dos porciones, tres porciones};  

Y finalmente asigne las filas al teclado:

  keyboard_one.addRow (fila_one, 2); // asigna una fila a uno o más teclados keyboard_one.addRow (row_two, 3); // el segundo argumento es la longitud de la fila  

Recuerde que un emoji debe enviarse usando UNICODE. Por ejemplo, para enviar un emoji de corazón usaremos: \ U00002764

Puede ver la lista completa de códigos emoji Unicode aquí. Significa que para definir nuestros botones usaremos esto:

  const char * MusicAndFood ="\ U0001F3B6 + \ U0001F36A"; // Nota + Cookie const char * MusicNoFood ="\ U0001F3B6 NO \ U0001F36A"; // Nota NO Cookie const char * OnePortion ="\ U0001F408"; // CAT const char * TwoPortion ="\ U0001F408 \ U0001F408"; // 2 GATOS const char * ThreePortion ="\ U0001F408 \ U0001F408 \ U0001F408"; // 3 GATOS  

Aquí está el boceto completo:

  #include  #include  #include  const char * ssid =SECRET_SSID; // el SSID de su red (nombre) const char * contraseña =SECRET_PSWD; // su contraseña de red const char BotToken [] =SECRET_BOT_TOKEN; Cliente WiFiSSLClient; Bot de TelegramBot (BotToken, cliente); TelegramKeyboard keyboard_one; String OldChatId =""; configuración vacía () {Serial.begin (115200); retraso (3000); // intenta conectarse a la red Wifi:Serial.print ("Conectando Wifi:"); Serial.println (ssid); while (WiFi.begin (ssid, contraseña)! =WL_CONNECTED) {Serial.print ("."); retraso (500); } Serial.println (""); Serial.println ("WiFi conectado"); // elige el emoji que te gusta usando UNICODE // aquí está la lista https://unicode.org/emoji/charts/full-emoji-list.html const char * MusicAndFood ="\ U0001F3B6 + \ U0001F36A"; // Nota + Cookie const char * MusicNoFood ="\ U0001F3B6 NO \ U0001F36A"; // Nota NO Cookie const char * OnePortion ="\ U0001F408"; // CAT const char * TwoPortion ="\ U0001F408 \ U0001F408"; // 2 GATOS const char * ThreePortion ="\ U0001F408 \ U0001F408 \ U0001F408"; // 3 GATOS // define el carácter constante de tu fila * row_one [] ={MusicAndFood, MusicNoFood}; const char * row_two [] ={Una porción, dos porciones, tres porciones}; keyboard_one.addRow (fila_uno, 2); // asignar una fila a uno o más teclados keyboard_one.addRow (row_two, 3); // el segundo argumento es la longitud de la fila bot.begin (); } bucle vacío () {mensaje m =bot.getUpdates (); // Leer mensajes nuevos if (m.chat_id! =0) {// Verifica si hay actualizaciones OldChatId =m.chat_id; Serial.println (m.text); bot.sendMessage (m.chat_id, "¡Hola!", keyboard_one); } retraso (1000); }  

Desafortunadamente, la forma en que el bot envía los emojis no es la misma que usa para recibirlos. Usar el ejemplo de EchoBot es una manera fácil de ver cómo los bots reciben emoji.

Por ejemplo, los emoji que usaremos se reciben así:

  ud83cudfb6 // Melody ud83cudf6a // Cookieud83dudc08 // Cat  

¡Detecta al gato!

Para detectar la presencia del gato utilizaremos un fototransistor, que es capaz de medir la intensidad de la luz y por tanto si alguien ha pasado cerca de él.

Tenga en cuenta que usamos una resistencia de 220 ohmios.

Para leer los valores del sensor solo necesitaremos un analogRead (A6).

Dado que estamos interesados ​​en detectar la presencia del gato solo después de la melodía, y solo durante un cierto período de tiempo, podemos usar la siguiente lógica:

  temporizador largo sin firmar; bool startDetecting =true; int umbral =200; // configuración de vacío de valor arbitrario () {temporizador =millis () Serial.begin (9600);} bucle de vacío () {if (startDetecting) {int valor =analogRead (A6); if (valor  120000) {Serial.println ("no se detectó ningún gato en los últimos dos minutos"); startDetecting =falso; }}}  

Tenga en cuenta que usamos el millis () función para configurar un temporizador . Millis () nos da el tiempo en milisegundos desde que la placa estaba en funcionamiento. Podemos usarlo para configurar temporizadores y activar eventos después de una cierta cantidad de tiempo.

También usamos un umbral para determinar si se detectó al gato. Ese umbral es arbitrario, puede configurarlo de acuerdo con su condición de luz.

Toca la canción

Para reproducir la canción usaremos el zumbador y el tone () función.

Usaremos una versión ligeramente modificada del ejemplo estándar toneMelody. Puede encontrarlo en el menú desplegable:

  ejemplos> digital> toneMelody.  

Agregue el servomotor

El servo se usa para abrir la caja y entregar comida.

Tenga en cuenta que usamos una variable int PortionAmount =1; para establecer la cantidad de tiempo que el servo debe permanecer girado 90 grados. Podremos cambiar su valor a través de Telegram.

Conecte el servo al pin 7 y cargue este boceto para verlo funcionando.

  #include  Servo myservo; // crea un objeto servo para controlar un servo int pos =0; // variable para almacenar la posición del servo int PortionAmount =1; // Establece la cantidad predeterminada de comida en 1 porción void setup () {myservo.attach (7); // conecta el servo en el pin 6 al objeto servo} void loop () {moveServo (); retraso (2000); } void moveServo () {Serial.println ("servo móvil"); for (pos =0; pos <=90; pos + =1) {// va de 0 grados a 90 grados myservo.write (pos); // le dice al servo que vaya a la posición en la variable 'pos' delay (15); // espera 15ms a que el servo alcance la posición} delay (PortionAmount * 300); // mantenga la caja abierta por un intervalo de tiempo basado en la cantidad de comida que desea entregar (pos =90; pos> =0; pos - =1) {// va de 90 grados a 0 grados myservo.write ( pos); / decirle al servo que vaya a la posición en el retardo variable 'pos' (15); // espera 15ms a que el servo alcance la posición}}  

#ProTip:agregue un servidor web

Una de las funcionalidades más poderosas del MKR1000 es el Modo de punto de acceso.

Nos permite alojar una página web en el MKR1000 a la que podemos acceder utilizando la dirección IP de la placa y estando conectados a la misma red .

Usaremos esta herramienta para imprimir los datos recopilados por el dispensador de alimentos.

Este paso requiere conocimientos básicos de HTML y CSS (o mucha confianza en el boceto de ejemplo. Puede consultar el ejemplo básico del servidor web en:

 > ejemplo> WiFi101> AP_SimpleWebServer  

Activaremos el modo de punto de acceso enviando una palabra específica a nuestro Telegram Bot, que responderá con el enlace para llegar a la página web. Luego, el cliente de telegram se desconectará y se iniciará el servidor web.

  else if (m.text =="Servidor") {IPAddress ip =WiFi.localIP (); web_server_mode =true; String message ="Para ver la página web, vaya a http://" + IpToString (ip); bot.sendMessage (m.chat_id, mensaje, keyboard_one); telegram_client.stop (); retraso (1000); server.begin (); // inicia el servidor web en el puerto 80}  

La página web incluye un botón que desactivará el modo de servidor web y volverá como cliente de telegram:

  if (currentLine.endsWith ("GET / BACKBUTTON")) {// si se presiona el botón web_server_mode =false; client.stop (); retraso (1000); bot.begin (); bot.sendMessage (OldChatId, "¡De nuevo en línea!", keyboard_one); }  

Cada vez que finaliza la detección de gatos, se agrega una nueva celda de la tabla con los datos recopilados:si se entregó la comida, si el gato apareció en dos minutos y cuánto tiempo tardó en llegar al dispensador.

  AddTableCell (food / noFood, Yes / No, TimeValue);  

Luego, la Cadena que contiene todas las celdas de la tabla se actualiza e integra en el resto del html principal.

  table_cells + =celda; // agregar nueva celda html =html_1 + table_cells + html_2; // agrega celdas al html principal  

¡Consulte el ejemplo final de Pro para ver cómo integrar todas estas nuevas funcionalidades!

Sugerencia: Si desea que sus datos sobrevivan a un reinicio de la placa, ¡eche un vistazo a la biblioteca de almacenamiento flash o consulte el proyecto Nerd!

Código

Bosquejo completo
#ProTips boceto completo

Piezas y carcasas personalizadas

Cartón de 2 mm pavlovcase_ShVm1OJRIF.dxf

Esquemas


Proceso de manufactura

  1. Vegetales congelados
  2. Cena televisiva
  3. Escáner CAT
  4. Arena para gatos
  5. Alimentos liofilizados
  6. Comida para mascotas
  7. Plásticos con detección de metales en la industria alimentaria
  8. Tu guía para Shop.Cat.Com
  9. Cómo comenzar con My.Cat.com
  10. Máquinas expendedoras automáticas de alimentos:versatilidad del producto
  11. La comida ahora es más rápida