Controlar Arduino Usando La Teachable Machine

by Diego Ojeda in Circuits > Arduino

970 Views, 2 Favorites, 0 Comments

Controlar Arduino Usando La Teachable Machine

descarga.jpeg

En este proyecto veremos como usar la teachable machine para darle instrucciones a un Arduino nano. La usaremos para mover un servo.

Supplies

Necesitaremos un ordenador con webcam, un arduino, un servomotor y acceso a internet.

Crear Nuestro Modelo Con La Teachable Machine

Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png

Ve a Image Model - Teachable Machines. Crea las diferentes clases (objetos) que quieras crear. Dale a las clases un nombre que puedas reconocer más tarde. Puedes subir las imágenes de cada clase usando la webcam. Suele ser buena idea poner una clase vacía. A continuación haz clic en "Preparar modelo". Una vez haya cargado el modelo podrás comprobar que el modelo funciona bien usando la webcam.


A continuación vamos a exportar el modelo de la siguiente manera: Haz clic en exportar modelo, en Tensorflow (no Tensorflow.js), en Keras, y en descargar modelo. Extrae ese archivo y guarda los archivos en una carpeta.


Tendrás que tener 2 archivos: uno llamado keras_model.h5 y otro llamado labels.txt

Instalar Python 3.10

Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png

Ahora vamos a instalar python. Para ello vamos a ir a la Microsoft Store e instalarlo desde allí. Para este tutorial he usado python 3.10.


A continuación vamos a instalar diferentes modulos para ello vamos a usar pip. Para verificar si lo tienes instalado, escribe en el terminal : py -m ensurepip --upgrade normalmente debería estar instalado, pero si no lo tienes instalado, sigue este tutorial aquí .

Antes de empezar a instalar los paquetes hay que hacer que Windows acepte los archivos de mas de 260 caracteres de largo, para ello sigue este tutorial aquí.

A continuación introduce los siguientes comandos en el terminal de windows:

pip install opencv-python

pip install "tensorflow<2.11"

pip install pyserial


Ahora pon los archivos keras_model.h5 y labels.txt en una carpeta llamada keras y pon el programa TeachableMachineaArduino.py al mismo nivel que la carpeta.


Modificar El Programa

Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png

Para que funcione el programa hay que modificar 2 cosas:


1) en la línea 15 pon el puerto COM al cual esté conectado tu arduino


2) en las líneas 136 y 138 cambia "yo" y "nada" por los nombres que le hayas dado a tus clases en la teachable machine (si tienes más de 2 clases tienes que añadirlas aquí)


3) OPCIONAL: Puedes cambiar la precisión que deseas modificando la línea 89, por defecto la precisión es de 90%.


Conecta tu arduino por USB y ejecuta el codigo python si todo funciona bien deberias de ver una ventana con la cámara abierta que detecta las diferentes clases


Si tienes este error al ejecutar el archivo: Could not find the DLL(s) 'msvcp140_1.dll'. TensorFlow requires that these DLLs be installed in a directory that is named in your %PATH% environment variable... tienes que ir a este link, instalar la versión correspondiente y ejecutar el programa. Si tras reiniciar el ordenador sigues teniendo el error, prueba a copiar esos archivos (msvcp140_1.dll y msvcp140.dll) donde tengas instalado python y asegúrate que esa carpeta esté incluida en la variable de entorno %PATH% de tu sistema (tutorial aquí) .

Programar El Arduino

Screenshot 2023-07-13 171742.png
Screenshot 2023-07-13 171742.png

Para ver que números ha recibido el arduino podemos usar el programa Comunicacion.ino.

Si queremos usar los resultados de la teachable machine para mover un servo u otro podemos usar el programa MoverServos.ino.

Este programa es muy sencillo y no es más que un ejemplo. Ahora te toca a tí hacer cosas más grandes con Teachable Machine y Arduino!