Coche Robot de 4 motores. Modificación de la forma del chasis
Hola a tod@s.
En las siguientes imágenes se puede ver como he llevado a la práctica una idea "thinking out of the box" de Rodrigo de 1ºbto B que propuso colocar las placas del chasis del coche de una manera diferentes a la de los vídeos de montaje que suele haber en internet. El cambio supone un coche más alto y disponer de más espacio para colocar los componentes.
Veámoslo en imágenes:
Comenzamos por desmontar todo y dejar solo la placa con los motores y las ruedas. Los motores ahora quedarán por debajo de la placa.
Espero que os haya resultado interesante esta propuesta de colocación del chasis, como decía hace que los componentes queden más alto pero deja mucho más espacio para todo.
Saludos,
Raúl.
Coche robot con arduino: Sigue líneas de 4 canales (Parte 1 de 2)
Hola a tod@s.
En este tema vamos a ver como realizar las conexiones de hardware de los diferentes componentes del sigue líneas, la comprobación de que funcionan correctamente y las ideas principales de como programarlo.
Con el kit de coche robótico tenemos 4 sensores. Cada uno de ellos compuesto por un emisor de LED infrarrojo y un receptor fototransistor. De la web <enlace> : El LED infrarrojo emite luz infrarroja, o sea, de mayor longitud de onda (o menor frecuencia) que la podemos ver los humanos, así que para nosotros es invisible. Si esta luz choca contra una superficie blanca se reflejará y llegará al fototransistor. Si por el contrario golpea en una superficie negra, el material absorberá la mayoría de la luz y no llegará al fotorreceptor. Pero el concepto de la emisión y recepción de señales infrarrojas no es, ni mucho menos trivial, y exige tener nociones de ondas electromagnéticas (energía, frecuencia, longitud, etc...) que sobrepasan nuestro nivel. No obstante para aquellos que querás profundizar más en el tema os recomiendo la excelente descripción de artículo de Prometec sobre sensores infrarrojos.
Además de los 4 sensores tenemos una placa controladora que permite tres cosas principalmente:
- Reducir los 4x3 = 12 cables que vienen de los 4 sensores a 6 cables, 4 de señal uno de voltaje y otro de ground, ya que unifica todos los voltajes y ground de los sensores.
- Permite regular los sensores utilizando los potenciómetros azules con la rueda blanca que pueden girarse para graduar la sensibilidad de los mismos.
- Permite también comprobar la recepción de señal de cada sensor gracias a los pequeños leds que lleva incorporados la controladora que se encienden o apagan para cada uno de los 4 sensores en función de que mande una señal de 1 o 0.
Y por último el kit viene con el cableado para realizar las conexiones:
Con todo montado en el coche podremos hacer las primeras pruebas utilizando los leds de señal de la controladora sigue líneas. Para ello habría que ir poniendo los sensores encima de una superficie oscura para comprobar que se apagan y encienden las luces de cada sensor. Con el potenciómetro de cada uno de ellos podemos regular los encendidos. Estas comprobaciones también se pueden hacer desde arduino como veremos en el siguiente paso.
Utilizando bitbloq para la programación en la siguiente imagen vemos un programa dedicado solo al sigue líneas por eso no tiene el resto de componentes del coche, aunque al final acabaremos teniendo todos juntos. Lo primero será colocar cada componente de bitbloq en los mismos pines y con un nombre que nos ayude a saber de que sensor se trata. En la siguiente imagen se ve el componente del pin 7 que he llamado: infraref_right_ext.
Un saludo,
Raúl.
Coche robot con arduino: Sigue líneas de 4 canales (Parte 2 de 2)
Hola a tod@s.
En el tema anterior sobre sigue líneas dejaba la siguiente imagen como propuesta de trabajo para programar el sigue líneas. Estaban los diferentes condicionales pero sin desarrollar:
El primero ya lo vimos: Cuando los sensores interiores están devolviendo un 1 (es decir están sobre la línea negra) le damos la orden de avanzar al coche. Realmente nos da igual el valor que tengan los sensores exteriores.
En los dos siguientes condicionales tenemos uno de los dos interiores sobre la línea negra, devolviendo valor 1, y el otro está ya fuera, está sobre algo más claro y por tanto está devolviendo 0. Como en el caso anterior no entramos a valorar lo que están devolviendo los exteriores porque realmente no nos hace falta para la orden que le vamos a dar al coche que es: girar hacia el lado donde está devolviendo 1 ya que se está saliendo por el lado donde está devolviendo 0. Ese giro, para que el coche siga avanzando lo máximo posible, lo hacemos de manera que mantenemos el motor del lado que da 0 encendido (máxima potencia) y el del lado que da 1 le hacemos un encendido de valor analógico 220 (de un máximo de 255) para que vaya algo más lenta esa rueda. Ese valor de 220 hay que ajustarlo para cada coche, incluso puede variar el comportamiento un poco si las pilas están más gastadas.
Importante que cuando hacemos girar al coche guardamos el sentido de giro en una variable que se llama "ultimo_movimiento", que como podéis comprobar es 0 en caso de giro a la derecha y 1 en caso de giro a la izquierda.
Por último entramos en la opción en la que los dos sensores interiores están dando valor 0 porque se han salido de la línea negra. Aquí si consultamos el estado de los sensores exteriores para ver por que lado nos estamos saliendo y procedemos de manera similar a como hemos hecho antes, ralentizando la velocidad de la rueda del lado que de 1 en el sensor exterior. Al igual que antes guardamos en la variable "ultimo_movimiento" el sentido hacia el que le hemos dicho que gire.
La última opción es aquella en la que todos los sensores dan 0, es decir el coche esta por completo fuera de la línea negra, en ese momento es cuando usaremos el valor de la variable "ultimo_movimiento" para indicar al coche hacia donde tiene que girar, que es en el sentido del movimiento que le estábamos indicando ya que lo que ha ocurrido es que aunque se lo hemos indicado no le ha dado tiempo a hacerlo o bien por ir muy rápido o porque el giro era muy brusco. Aquí ya si hacemos un giro total del coche encendiendo una rueda hacia atrás y otra hacia adelante para que no avance mientras no esté de nuevo sobre la línea.
Es muy divertido programar el sigue líneas y comprobaréis que la respuesta del coche depende mucho de como se programe. Las ideas de condicionales que he puesto son solo una de las muchas posibilidades para programarlo, seguro que podréis ir creando las vuestras propias.
Por último recordar que es muy importante que comprobéis que los sensores funcionan bien antes de probar la programación del sigue líneas y así podéis trabajar con más tranquilidad y confianza la programación.
Un saludo,
Raúl.
Solución del "Callejón sin salida" en el modo MAZE, laberinto
Hola a tod@s.
En este tema vamos a ver una posible solución al problema del callejón sin salida cuando nuestro coche robot está intentando salir de un laberinto.
Hemos llamado callejón sin salida a una situación en la que el coche robot encuentra una pared de frente (ultrasonido detecta algo a menos de 20cm) y al mirar a los lados las dos paredes, derecha e izquierda, están también a menos de 20cm. En ese caso el planteamiento ha sido hacer retroceder al coche para salir del callejón parando cada cierta distancia para ver si ya hay salida hacia alguno de los lados.
Para poder programarlo primero he creado una función que realiza toda la acción de obtener la distancia de las paredes a la izquierda y a la derecha "comparar_distancias". Esta función empieza conectando el servo (en mi caso el componente servomotor se llama así en la programación "servo" y está conectado al pin 2 de arduino), mirando hacia los lados y guardando el valor en las respectivas variables para finalmente desconectar el servo.
Trabajar con esta funciona simplificará bastante la programación después:
Coche robot arduino. Estudio sobre componentes y materiales utilizados
Hola a tod@s.
En este tema vamos a proponer un trabajo de investigación sobre los diferentes componentes y materiales de los coches robot.
El trabajo va a consistir en elegir 2 componentes y 2 materiales del coche y realizar una investigación que dé respuesta a las preguntas que aparecen en la parte derecha.
En el siguiente enlace tenéis las tablas en un documento de texto que puede servit de base para comenzar a trabajar las opciones que elijáis.
https://docs.google.com/document/d/14t-DUWKWEeLX8a3KlNWxDQRFUXT7r3vv7AHwQcchE8E/edit?usp=sharing
La entrega se realizará mediante un documento de texto o presentación y una breve exposición en clase, por grupos, de los resultados de las diferentes investigaciones.
La evaluación se realizará mediante una rúbrica para el escrito y otra para la presentación que pondré en classroom en el momento del envío de la actividad.
Un saludo,
Raúl.
P.D. A continuación tenéis los enlaces necesarios para obtener algo de información sobre los kits y que hemos comprado y sus componentes:
Diferentes propuestas de compra que planteamos:
OPCIÓN 1: Coche robot con 3 ruedas (dos con motor y una giratoria) + módulo bluetooth. 13,79€ + 3,02€ de bluetooth
Litados de materiales que componen cada opción:
Lista de componentes:
1 Uds R3 Junta
1 Uds cable de USB
1 Uds V5.0 Placa de extensión
1 Uds L298N tarjeta de control para motor
1 Uds Sensor ultrasónico
1 Uds ultrasónico titular
1 Uds Servo motor
Placa fija de servomotor 1 Uds
2 uds Motor
2 uds rueda
1 Uds remoto
1 Uds Módulo receptor de infrarrojos
1 Uds celular caja
1 Uds placas de acrílico
2 tornillos y tuercas para cada pieza
1 Uds 20pin F-F dupont de alambre
1 Uds destornillador
2 uds Bunding cinturón
1 Uds CD con el tutorial
Imagen OPCIÓN 3:
Imagen OPCIÓN 4:
A todos estos componentes habría que sumarle los que hemos aportado nosotros: Cableado, estaño para las soldaduras y baterías para alimentar a los motores y componentes electrónicos.
Nota: Es HC-06 módulo Bluetooth
- Funciona con cualquier adaptador USB Bluetooth.
- Tasa de baudios predeterminada: 9600,8,1,n.
- Antena integrada.
- Cobertura de hasta 30 pies.
- Versión Bluetooth: V2.0 + EDR
- Voltaje de funcionamiento: 3,3 V
- Tasa de baudios predeterminada: 9600,8,1,n.
- Cobertura de la señal: 30 pies
- Tamaño del artículo: 4,3*1,6*0,7 cm
- Peso del artículo: 3g
- Tamaño del paquete: 9*3*1cm
- Peso del paquete: 8g
- Serie comercial: serie de módulos Bluetooth
- Con luz indicadora de LED, utiliza un chip de regulación de 150mA y 3,3 V.
- Con pie VCC.GND.TXD.RXD para el Bluetooth
- Con el botón "Re-seach" (ON/OFF/WAKE pie para él, MCU externo outinput "High level" puede controlar el módulo para volver a coser)
- Compatible con módulo maestro bluetooth ". Módulo esclavo" o módulo maestro-esclavo (todo).
- Voltaje de entrada: 3,3 ~ 6V
- Tamaño: 1,55 cm * 3,98 cm
Nota:
Recomendamos instalar "Módulo maestro Bluetooth"
El "estado" es el pie de salida para el estado del LED, Cuando bluetooth "no está conectado", salida "Pulse"; Cuando bluetooth "conectado", salida "alto nivel", podemos determinar los estados de "MCU"
Si solo es la placa, No hay ninguna "función Bluetooth"
Control por voz del coche robot
Hola a tod@s.
En este tema vamos a ver como controlar mediante la voz el coche robot. Una función que es realmente espectacular y que gracias a la tecnología existente es bastante sencilla de programar.
El control lo implementaremos mediante AppInventor y sus funciones de reconocimiento de voz.
Recordar que si no tenéis ya iniciada la aplicación de control del coche mediante bluetooth podéis usar este archivo .aia como base. En él encontrareis ya incluido el componente bluetooth y el selector de lista de conectar y botón de desconectar:
Archivo .aia base de conexión bluetooth: https://drive.google.com/file/d/1oqlpDn9KrgrQOGGfGlU5ku2eHjoRjf1L/view?usp=sharing
Por un lado en la parte de diseño, dentro del apartado de Medios, tendremos que añadir la función "ReconocimientoDeVoz". Añadiremos también un botón que servirá para activar la captura de voz. Esta es la opción más sencilla pero también podría programarse para que se active al agitar el dispositivo o al acercarlo al oido.
El siguiente paso que daremos será el control del coche por voz mediante Inteligencia Artificial, de manera que no será necesario decir exactamente las palabras que tenga prefijadas App Inventor para controlar el coche. Crearemos etiquetas con diferentes acciones, que alimentaremos con un modelo de IA generado en Machine Learning for Kids, de manera que el dispositivo será capaz de asociar la información recibida por voz a una etiqueta/acción aunque el mensaje recibido no coincida con los valores de ejemplo.
En caso de que la acción realizada no sea la que esperábamos podremos realimentar el modelo desde la propia App para que pueda ir aprendiendo y mejorando sus respuestas.
Saludos,
Raúl.
Aplicación de detección de sentimientos mediante Inteligencia Artificial (parte 1/2)
Hola a tod@s.
En este tema dejaré los vídeos del curso de Inteligencia Artificial en AppInventor mediante Machine Learning for Kids (ML4K).
Por un lado un vídeo introductorio: La inteligencia artificial creará 58 millones de puestos de trabajo.
https://www.youtube.com/watch?v=ZgKAII5UIxg&t=2s
Y los 12 enlaces a vídeos cortos explicando cada una de las partes del primer proyecto que vamos a hacer: una sencilla aplicación que utilizará la IA para detectar si las frases que escribimos o decimos trasmiten sentimientos positivos o negativos.
Los 5 primeros vídeos que explican la programación de la aplicación de manera clásica, usando listas.
Desarrollo de app: EPCIA19 - App Inventor - detector sentimientos.Vídeo 1: https://www.youtube.com/watch?v=Qp3VYEq1Acs&t=1s
Enlace a los recursos con las imágenes para la aplicación. (solo accesible desde las cuentas de gsuite) https://drive.google.com/drive/folders/1TWL7Tv4l7dUfSNt8ylmWUa9ckG1PIXi7?usp=sharing
Vídeo 2: https://www.youtube.com/watch?v=sL01f4lfmVI
Vídeo 3: https://www.youtube.com/watch?v=cyX439RR6s4
Vídeo 4: https://www.youtube.com/watch?v=HFqNOdpXvqE
Vídeo 5: https://www.youtube.com/watch?v=1DJIEi4nzAU
Los vídeos 6 a 9 que explican como realizar el modelo en ML4K:
Vídeo 6: https://www.youtube.com/watch?v=VNe-QMBsY4o&t=1s
Vídeo 7: https://www.youtube.com/watch?v=tKMwpWMg8tM
Vídeo 8: https://www.youtube.com/watch?v=X_hg-7CRrnI&t=1s
Vídeo 9: https://www.youtube.com/watch?v=bvSPcqLOmnE&t=2s
Los tres últimos vídeos que explican como añadir la extensión de ML4K en AppInventor y utilizar sus bloques para incorporar la IA.
Vídeo 10: https://www.youtube.com/watch?v=qhL7rqGejSM
Vídeo 11: https://www.youtube.com/watch?v=KzC6n3Yu4ks
Vídeo 12: https://www.youtube.com/watch?v=qoY-fhNGXHY&t=1s
Para poder trabajar con https://machinelearningforkids.co.uk/ crearemos cuentas de alumnos que compartiremos entre varios alumnos. Los nombres de usuario y las contraseñas de acceso estarán en la hoja de cálculo de notas que usamos para las evaluaciones.
También usaremos una cuenta de App Inventor https://appinventor.mit.edu/ que como sabéis requiere usar una cuenta de google para registrarse. En este caso el registro será individual.
Para compartir los trabajos crearemos más adelante otras tareas asociadas a esta actividad.
Espero que os resulte interesante y que aprendáis mucho con este proyecto.
Saludos,
Raúl.
P.D. Pongo aquí como ejemplo el enlace al vídeo de como me quedó la aplicación una vez terminada: https://drive.google.com/file/d/13-CpCQMwr2kJnwxyYE83HkxuJFZ8yTL6/view?usp=sharing
Otros enlaces:
Este vídeo que hace un repaso general a algunas de las herramientas que vamos a utilizar: La generalización en la Inteligencia Artificial - EPCIA.
https://www.youtube.com/watch?v=_hYGRBkQWsQ&t=4s
Dejo también aquí el enlace al documento para quien quiera profundizar algo más: Envisioning AI for K-12: What Should Every Child Know about AI?
https://ojs.aaai.org//index.php/AAAI/article/view/5053
Web: https://ai4k12.org/
Aplicación de detección de sentimientos mediante Inteligencia Artificial (parte 2/2)
Hola a tod@s.
En este tema vamos a ver como añadir la posibilidad de introducir el texto mediante voz en nuestra aplicación y también como poder realimentar el modelo de Machine Learning for Kids (ML4K) enviando información desde App Inventor a ML4K para que las incorpore a las etiquetas.
Lo primero que tendremos que hacer en la parte de Diseño de AppInventor es añadir el componente "ReconocimientoDeVoz" que se encuentra en el apartado de Medios. También añadiremos tres nuevos botones. Uno para poder generar "TEXTO MEDIANTE VOZ" y otros dos para "AÑADIR A POSITIVAS" y "AÑADIR A NEGATIVAS".
En el apartado de bloques programaremos tanto la entrada de texto por voz como la realimentación del modelo de manera sencilla usando bloques de los componentes "ReconocimientoDeVoz" y "ML4KComponent".
En la siguiente imagen pueden verse en la parte superior los dos bloques correspondientes al reconocimiento de voz, el primero para lanzar el reconocimiento al pulsar el botón y el segundo para poner el texto en la etiqueta una vez que lo ha obtenido.
Los otros dos bloques son los que realizan la función de realimentar el modelo en la etiqueta de positivos o negativos en función del botón que se haya pulsado.
Con esto ya tendríamos completada esta primera parte de aprender a utilizar ML4K en AppInventor y utilizar la función de reconocimiento de voz para enviar la información que después trataremos con la IA.
Un saludo,
Raúl.
Control por voz del coche robot mediante IA
Hola a tod@s.
En este tema vamos a ver todos los pasos a seguir para añadir la Inteligencia Artificial al control de VOZ del coche robot.
Antes de hacer esta tarea es conveniente haber hecho las tareas de creación de una app de detección de sentimientos con IA. Entradas:
https://iespalti.blogspot.com/2021/04/aplicacion-de-deteccion-de-sentimientos_8.html
https://iespalti.blogspot.com/2021/04/aplicacion-de-deteccion-de-sentimientos.html
Y haber añadido el control de voz con programación clásica, sin IA:
https://iespalti.blogspot.com/2021/02/control-por-voz-del-coche-robot.html
Con todo lo anterior bien trabajado no tendremos problema en añadir el control por voz añadiendo la opción de que las frases sean analizadas mediante la IA de Machine Learning for Kids, ML4K, para detectar la instrucción que el usuario quiere mandar al coche.
Lo primero que haremos es entrar a ML4K https://machinelearningforkids.co.uk/ y crear un nuevo modelo o utilizar el modelo compartido (puede verse que es compartido por el pequeño icono de la parte derecha) de la imagen siguiente.
Como veis no es muy difícil de programar y el resultado es realmente espectacular, ya que con esos sencillos bloques habremos incorporado el trabajo de la red neuronal creada en ML4K a la programación de nuestra aplicación. Añadiendo nuevas palabras a las etiquetas o incluso diferentes etiquetas podremos incorporar más instrucciones al coche robot que sumadas a los otros modos de control: botones, sigue líneas... dan como resultado una aplicación realmente completa de control.
Un saludo,
Raúl.