martes, 19 de julio de 2022

Tecnología Industrial I.E.S. Pintor Antonio López

Tecnología Industrial I.E.S. Pintor Antonio López


Diseño, construcción y configuración de Drones

Posted: 03 Nov 2021 02:31 AM PDT

 

Documentación curso Drones

Hola a tod@s.

Durante el curso 2018-19 participamos en La Feria Aérea organizada por El Caleidoscopio.


Los documentos de trabajo para realizar los proyectos de diseño, impresión en 3D, montaje y configuración primero de un pequeño minidron y después de un dron de un tamaño más grande y con componentes más potentes, son los siguientes:












RD-1036_2017-de-15dic-BOE-2017-15721  Real Decreto 1036/2017, de 15 de diciembre, por el que se regula la utilización civil de las aeronaves pilotadas por control remoto, y se modifican el Real Decreto 552/2014, de 27 de junio, por el que se desarrolla el Reglamento del aire y disposiciones operativas comunes para los servicios y procedimientos de navegación aérea y el Real Decreto 57/2002, de 18 de enero, por el que se aprueba el Reglamento de Circulación Aérea.


Montaje y configuración minidrone

Hola a tod@s.
En este tema vamos a trabajar con una lista de control o checklist, una herramienta fundamental en los proyectos de ingeniería, que nos ayudará a ir comprobando paso a paso que todas las fases de construcción y configuración de nuestro minidrone se han realizado correctamente y por tanto podemos comenzar la práctica de vuelos.
En la siguiente imagen puede verse una imagen de la lista que hemos creado:




Y en el siguiente enlace puede accederse a una hoja de cálculo con la lista en formato lectura que puede usarse para hacer una copia de la misma y utilizarla para comprobar que cada fase se ha realizado de manera adecuada.


Enlace de Hoja de Cálculo lista de control / checklist


Sobre todo es fundamental que las 13 soldaduras que debe llevar la controladora: 8 para los 4 motores, 2 a la bateria y 3 a la receptora, estén bien realizadas. En este documento pueden verse esos 13 puntos de soldadura en detalle.

  • Montaje y configuración drone grande

    Hola a tod@s.


    En este tema, al igual que hicimos con el drone pequeño, vamos a trabajar con una lista de control o checklist, una herramienta fundamental en los proyectos de ingeniería, que nos ayudará a ir comprobando paso a paso que todas las fases de construcción y configuración de nuestro drone grande se han realizado correctamente y por tanto podemos comenzar la práctica de vuelos.

    En la siguiente imagen puede verse una imagen de la lista que hemos creado:


    Y en el siguiente enlace puede accederse a una hoja de cálculo con la lista en formato lectura que puede usarse para hacer una copia de la misma y utilizarla para comprobar que cada fase se ha realizado de manera adecuada.

    Descarga Lista comprobación drone grande

    El el siguiente enlace pude accederse al manual de conexión y configuración del drone grande:

    Manual drone grande

    Es importante tener en cuenta un par de cosas que pueden cambiar respecto al manual.
    Por un lado que en esta imagen aparece conectada la receptora a UART2 (el de arriba) y la configuración esta hecha para UART1 por lo que el cable amarillo debería estar conectado en el pin de abajo.

    Y mucho más importante: Tenemos dos tipos de controladoras, una que va directamente conectado con el pin de cables de la controladora de motores de manera sencilla como viene en el manual: 

    Y  otra que hay que conectar con la siguiente configuración:


    Las placas controladoras que tienen que ir con esta segunda conexión tienen pines dupond soldados en todas sus conexiones para que sea más sencilla la conexión y no haya que soldar los cables.

    Es muy importante tenerlo en cuenta porque si se confunden las placas y se conectan de manera errónea seguramente se fundirán los componentes y la placa quedaría inservible.

    Un saludo,
    Raúl.

Proyecto Coche Robótico con Arduino (5/5)

Posted: 03 Sep 2021 12:33 AM PDT

 

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.



como se puede ver en la siguiente imagen finalmente he optado por quitar las ruedas negras que van por dentro de los motores ya que no las vamos a usar. Como hemos comentado sirven para medir la distancia recorrida pero es necesario usar un sensor infrarrojo que vaya captando su giro.

El siguiente paso importante será conectar los motores a la controladora:


Con el espacio que tenemos ahora podremos poner perfectamente el componente sigue líneas con los 4 detectores de líneas por debajo de la placa y la controladora de los detectores por encima. En esta imagen aparece la controladora muy al borde pero finalmente la he colocado más hacia adentro. Al colocarlo es interesante que las rueditas blancas que se ven en la imagen sean accesibles (en mi caso en la colocación que veréis al final lo son mediante los agujeros que hay en la placa de arriba) ya que esas ruedas sirven para ajustar el funcionamiento de los sensores sigue líneas y que funcionen los 4 con la misma sensibilidad. En breve os mandaré información de como conectar y programar el sigue líneas.


Sujetamos bien los sensores sigue líneas con cinta doble cara y cinta aislante:



El siguiente paso será conectar cada sensor sigue líneas a la controladora de sigue líneas. Cada sensor lleva tres cables: OUT (para la señal), Vcc (voltaje) y GND (toma de tierra, ground) que deberán conectarse en los correspondientes de la controladora. Los nombres vienen puestos en el sensor y la controladora.





Para colocar el porta pilas hay muchas opciones. Lo importante es que tiene que ser accesible para poder cambiar las pilas. En mi caso he optado por ponerlo por debajo de coche, en la zona de los motores. Sujeto con cinta doble cara y posteriormente con una goma elástica que rodea toda esa placa de abajo y sujeta el porta pilas y las pilas. Otra opción es llevarlo a la parte superior que pondremos más tarde ya que como veréis hay mucho espacio.


Con el porta pilas colocado el siguiente paso es llevar la corriente a la controladora de motores. Tenemos dos modelos de controladoras y como vimos en este vídeo https://www.youtube.com/watch?v=OVlntLxkjsU&feature=youtu.be cada controladora recibe el voltaje y ground en unos pines, es importante realizar bien estas conexiones para no dañar la controladora.


Trabajando con los coches hemos visto que mejora bastante su funcionamiento si añadimos este cable blanco de la siguiente imagen. En el vídeo de explicación de las conexiones no hablaba de ponerlo porque en principio no haría falta ya que la propia controladora de motores envía 5V de corriente a ese pin, pero como hemos visto a nivel práctico si las pilas van gastándose y el voltaje cae de los 6V (4 pilas AA de 1.5V) es posible que la placa envíe a ese pin algo menos de 5V con lo que puede fallar la señal. Es por eso que con el cable blanco de la siguiente imagen forzamos a ese pin de la placa a recibir el mismo voltaje que viene de las pilas que normalmente será algo superior a 5V aunque haya bajado de los 6V que debe dar cuando las pilas están nuevas. Ese cable blanco de la siguiente imagen que puentea la corriente hacia la controladora de motores debería quitarse si se van a conectar los motores a una fuente de alimentación de mayor voltaje (por encima de 6V) ya que ese mismo voltaje entraría a la controladora y la podría dañar.


En la siguiente imagen conectamos los dos cables de corriente que llevaremos desde la controladora de motores hasta nuestro arduino para darle corriente y los 6 cables (en el otro modelo de controladora son solo 4) que nos permiten controlar los motores desde los pines de señal del arduino. También ponemos las tuercas y tornillos para montar la otra placa encima de esta.


Colocamos la otra placa por encima con el servomotor y el ultrasonido que en realidad no he tenido que cambiarlos de tal y como estaban en la disposición anterior:



Ya solo quedar colocar en la parte superior nuestra controladora de arduino y con el shield de conexiones y terminar de colocar todos los cables en su posición.



Un último apunte es que, como puede verse en la imagen siguiente, si conectamos una pila de 9V para alimentar la controladora de arduino directamente el funcionamiento del coche mejora muchísimo. Con esta versión del coche de 4 motores hemos ido viendo que los 6V que aportan las 4 pilas AA van muy justos para alimentar por un lado a los motores a través de la controladora de motores y por otro para dar corriente a la propia controladora de motores y a la de arduino que a su vez da corriente a los sigue líneas, bluetooth, servomotor, ultrasonido... Esto hace que la corriente en los motores se vea afectada y que giren poco o nada. Lo habíamos resuelto en parte usando pilas recargables y teniéndolas siempre al 100% de carga antes de usarlas, pero otra opción muy interesante es añadir una pila de alimentación para el arduino que permitirá que las pilas AA dediquen todo su voltaje al movimiento de los motores.
Haciendo esto podría quitarse el cable de alimentación que estamos llevando desde la controladora de motores a arduino pero muy importante debe dejarse conectado el cable de conexión de GND entre placas. Esto debe hacerse siempre que se conectan componentes con fuentes de alimentación distintas, las tomas de tierra, GND, de todas ellas deben estar conectadas entre sí.


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:



Las conexiones son sencillas de realizar simplemente hay que tener cuidado de conectar el pin de OUT, VCC y GND de cada sensor con el correspondiente de IN, VCC y GND en la controladora. En los sensores y en la controladora viene escrito en pequeñito la función de cada PIN.



El siguiente paso será montar la controladora y los sensores en el coche y conectar los 6 pines de la controladora a Arduino. Dos pines para Vcc y GND y los otros 4 para cada una de las señales de los sensores. En mi caso he seguido el siguiente orden:

- Sensor de la derecha exterior PIN 7 de arduino.
- Sensor de la derecha interior PIN 8 de arduino.
- Sensor de la izquierda interior PIN 11 de arduino.
- Sensor de la izquierda exterior PIN 12 de arduino.




En el siguiente vídeo hay más información detallada sobre la controladora de infrarrojos:


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.


En la siguiente imagen puede verse un sencillo programa que nos permitirá enviar por puerto serie la información de los sensores previamente guardada en una variable. Como la información de los sensores es numérica y con decimales, previamente la convertimos a entero para que aparezca solo un 0 o un 1 y la convertimos a texto para que en la línea de resultados nos aparezcan 4 dígitos, ceros o unos, indicando el estado de cada sensor. El resultado serán líneas del tipo 0000 si todos los sensores están encima de algo claro o 1111 si están encima de algo oscuro, o 0011 si los dos primeros están sobre algo claro y los dos siguientes sobre algo oscuro.


Una imagen de la línea completa. Haciendo click sobre la imagen puede agrandarse:


Ya por último abriendo el monitor serie podemos comprobar los valores que envían los sensores que coincidirán con el encendido de los leds de la controladora que comentaba antes y que pueden regularse con los potenciómetros de la controladora de sigue líneas.



Una vez comprobado que los sensores funcionan correctamente el siguiente paso será programarlos para que hagan que el coche siga una línea negra. Para ello tendremos que tener en cuenta que tal y como hemos visto en el programa que enviaba los datos al puerto serie, los sensores devuelven un 1 cuando están sobre una línea negra y 0 cuando están sobre algo blanco o más claro.

Teniendo esto en cuenta hay muchas opciones para ir creando el programa y la forma en que el coche sigue la línea y responde a los cambios depende mucho de la eficiencia con la que se programe, de manera que dejo en las siguientes imágenes unas ideas de posibles condicionales a utilizar pero sin mostrar su contenido para que sirvan de idea, pero realmente os invito a ir haciendo vuestras propias pruebas e ir aprendiendo de ellas para ir mejorando el comportamiento del coche a la hora de seguir las líneas. Para ello es muy útil crear un pequeño circuito de pruebas o al menos una recta con un giro para probar el resultado de la programación.




Mucho ánimo con la programación, pruebas y ajustes, según vayamos avanzando en el control sigue líneas nos podremos retos algo más difíciles y circuitos más complejos.

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:



En este tema vamos a ver el código en el interior de cada uno de esos condicionales.

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:


Entrando ya en la programación la primera orden (mediante otra función) será que el coche avance y si encuentra un obstáculo delante (distancia <= 20) pare y ejecute la función "comparar_distancias" mediante la cual obtendremos un valor para las variables dist_der y dist_izq. Si ambas distancias son < que 20 entramos en un mientras del que no saldremos hasta que alguna de las dos sea igual o mayor que 20. En ese mientras iremos haciendo retroceder al coche (500ms) y ejecutando la función comparar_distancias para ir obteniendo nuevos valor de dist_der y dist_izq.

Una vez el coche sale del callejón y alguno de los dos valores dist_der y dist_izq es > = que 20 el programa continua con la programación clásica del modo MAZE, laberinto, en el que comprobamos que lado tiene un valor mayor para que el coche gire en esa dirección.





Como siempre en programación, existen más formas de programar la solución al callejón sin salida incluso los bloques del ejemplo son adaptables y mejorables. Os animo a probar vuestras propias ideas.

Un saludo,
Raúl.

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.

COMPONENTES (Elegir 2 de los x componentes)

Apartados a investigar sobre los componentes

Motores eléctricos


Sensor sigue líneas


Controladora de motores L298N


Ultrasonido


Servo motor de giro


Bluetooth


Receptor infrarrojo / Mando a distancia


Fuentes de alimentación del coche

Esquema de conexión.

Funcionamiento.

Partes que lo componen a nivel interno.

Diferentes opciones y alternativas al componente elegido.


MATERIALES (Elegir 2 de los x componentes)

Apartados a investigar sobre los materiales

Acrílico


Acero


Estaño


Cobre


PVC


Caucho (neumáticos)


Materiales de las PCB (placas de circuito impreso): PRFV (plástico o poliéster reforzado con fibra de vidrio), resina epoxi


Material de las baterías


Materiales de los infrarrojos (estudiar esta opción cuenta cómo hacer dos elementos)


Componentes internos de un circuito electrónico (estudiar esta opción cuenta cómo hacer dos elementos)


Cualquier otro material que forme parte de los componentes del coche robot

Características del material.

¿Por qué es un material idóneo para usarse en ese componente?

Proceso de obtención y/o fabricación ¿Es posible reciclarlo?

Mecanizado o como se trata el material original para construir el componente del coche robot.

¿Qué otras alternativas a este material existen para la misma función?

¿Qué otros usos pueden dársele a este material?


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

Coche Robot:
Módulo Bluetooth:

OPCIÓN 2: Coche robot con 4 ruedas (que además lleva infrarrojos de sigue líneas) + módulo bluetooth.  19.12€ + 3,02€  de bluetooth

Coche Robot. Seleccionado la opción de 4 ruedas, que lleva también infrarrojos de sigue líneas:

OPCIÓN 3: Coche robot con 3 ruedas (dos con motor y una giratoria) con mando a distancia por infrarrojos. 18,15€


OPCIÓN 4: Coche robot con 4 ruedas (que además lleva infrarrojos de sigue líneas) con mando a distancia por infrarrojos. 24,44€



Litados de materiales que componen cada opción:


OPCIONES 1 Y 2:

Crisol de grafito mini horno de oro de la antorcha de fusión del metal:
. 4 x motorreductor
. 4 x neumático
4 x Motor de fijación
2 x Chasis de coche (material acrílico)
1 x L298N controlador de motor
. 1 x placa controladora UNO328
. 1 x para la placa del sensor
1 x kit
. 1 x engranaje de dirección
. 1 x módulo ultrasónico
. 1 x módulo de seguimiento
1 x cable USB
. 1 x dibujos de montaje en 3D
Tuerca de tornillo de varios pilares




OPCIONES 3 Y 4:

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.



Sobre el módulo bluetooth:


Nota: Es HC-06 módulo Bluetooth

 

Permite que tu dispositivo envíe o reciba los datos TTL a través de la tecnología Bluetooth sin conectar un cable serial a tu ordenador.
  • 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:

Fuente de alimentación de entrada 3,3 ~ 6V, prohibido más de 7V
No "evita automáticamente que la fuente de alimentación peversing func", así que conecta la fuente de alimentación correctamente 
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.



En la parte de bloques la programación es muy sencilla. Por un lado al pulsar el botón llamamos a ObtenerTexto del reconocimiento de voz. Esta funciona está dentro de la herramienta de reconocimiento de voz al igual que el bloque de "DepuésDeObtenerTexto" que usaremos también.



Un ejemplo de como podrían ser los bloques de programación pueden verse en la siguiente imagen. En función de las palabras que haya captado el dispositivo enviará por bluetooth las letras de control del coche a arduino.


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. 

Este modelo tiene 2 etiquetas: "adelante" y "parar" que permitirán a ML4K averiguar cuál de estas dos instrucciones se le ha dado al coche en base a las palabras con las que alimentemos el modelo. Por ejemplo:


Tal y como hacíamos con el detector de sentimientos, el siguiente paso será conseguir la URL del modelo para después añadirla una extensión en App Inventor:


El app inventor he optado por añadir un nuevo botón "VOZ con IA" manteniendo el anterior botón de VOZ que no usará IA y así poder comprobar la diferencia de comportamiento del coche con una opción u otra:


Añadimos la extensión de ML4K utilizando la URL que hemos copiado antes:


Y algo importante es que, como vamos a usar dos formas diferentes de reconocer la voz, añadimos otro elemento de reconocimiento de voz "ReconocimientoDeVoz2".


En la parte de bloques añadiremos estos tres bloques, para crearlos podremos utilizar bastantes de los bloques ya existentes para el reconocimiento de voz sin IA. En la siguiente imagen vemos todos los bloques juntos y después entraremos en detalle de cada uno en imágenes ampliadas.


El primer bloque "cuando VOZ_CON_IA.Clic" ejecuta dos acciones: Lanzar el reconocimiento de voz, en este caso "ReconocimientoDeVoz2" y por otro lado Entrenar el modelo por si el modelo se ha borrado de ML4K.

El siguiente bloque son las acciones a realizar tras el obtener el texto por voz. Como vemos esta primera parte es similar a la ya vista de control por voz del coche. Simplemente comprobamos si el resultado coincide exactamente con algunas palabras y "si no, si" coincide con otras. 
Un par de detalles es que solo hace esto si el bluetooth está conectado ya que si no lo está y enviamos algún mensaje tendremos un mensaje de error. Y por otro lado pasamos la variable resultado a minúsculas antes de compararla y luego ponemos todas las palabras en minúsculas para evitar que por algún motivo la función de reconocimiento de voz añada alguna mayúscula que evita que coincida el resultado.


Como decía, hasta aquí la programación clásica, es en la parte final donde entrará la parte de IA. Como podemos ver en el bloque "DespuésDeObtenerTexto", si los comparadores han llegado al final sin haber encontrado ninguna coincidencia exacta con las palabras anteriores llegamos a un "sino" que envía el resultado del reconocimiento de voz a clasificar por parte de la ML4K.

Y un último bloque de ML4K "GotClassification" en el que si la confianza es mayor del 20% en base a la clasificación envía por bluetooth una letra A si es "adelante" la etiqueta o una letra B si es "parar".



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.


Proyecto Coche Robótico con Arduino (4/5)

Posted: 03 Sep 2021 12:29 AM PDT

 

  • Envío de datos más complejos por bluetooth

    Buenos días.

    Con este tema comenzamos la parte más interesante del proyecto en la que tendremos que poner en práctica todo lo aprendido hasta ahora en programaciones más complejas.

    Algo que será necesario en esta última parte del curso será enviar y recibir mensajes algo más complejos mediante bluetooth. Hasta ahora todos los mensajes que enviábamos para controlar el semáforo eran de una letra. En arduino/bitbloq al recibir esta letra ejecutábamos una acciones y otras.

    Ahora necesitaremos enviar por un lado letras que identifiquen que acción queremos realizar y junto a esa letra valores que determinen parámetros (ángulo, velocidad, etc...) de dicha acción.

    En la siguiente imagen podéis ver como programar en app inventor el envío por bluetooth de una letra (en esta caso la A) seguida de un número de dos cifras. El número proviene de un slider que previamente hemos creado y que tiene de rango de 0 a 99 (valor por defecto del slider 50).


    Lo primero que hacemos es crear la variable GIRO que almacenará el valor del slider. A la hora de guardarlo nos aseguramos de usar round para que redondee la posición del slider al entero más próximo de 0 a 99. Para asegurarnos que el número enviado es de dos cifras añadimos el condicional de que le añada delante un 0 en caso de que sea de una sola cifra.

    El siguiente paso será la gestión de estos datos con bitbloq. Como veis en la siguiente imagen comenzamos como es habitual en recibir en la variable datos el contenido del bluetooth. Si el mensaje que hemos recibido en la variable datos tiene una longitud de 3 caracteres guardamos el primero de ellos en la variable tipodegiro que indicará el tipo de acción y los otros dos caracteres (posiciones de 1 a 3 de la cadena/string de la variable datos) en la variable angulodegiro que es una variable numérica y por eso tenemos que poner .toInt() al final para convertirlo a entero.


    Estas dos líneas de código no existen como bloques de código de bitbloq y es por eso que usamos el bloque verde que nos permite escribir directamente código de arduino.

    tipodegiro=datos.substring(0,1);

    angulodegiro=datos.substring(1,3).toInt();

    En el programa de bitbloq podemos ver como continua con un condicional con el que si la acción que marca la primera letra es A realizamos una serie de encendidos y apagados determinados y alguno de ellos utiliza el valor de la variable angulodegiro que acabamos de recibir.

    Parece algo complicado pero veréis que es sencillo de usar y desde luego añade un potencial muy grande al envío y la recepción de datos y por tanto al tipo de proyectos que podemos realizar.

    Un saludo,
    Raúl.
    • Uso del slider para controlar el giro del coche robot

      Buenos días.

      En las siguientes imágenes vamos a presentar la programación en AppInventor y BitBloq para poder mandar órdenes complejas desde el teléfono a arduino y así poder realizar diferentes acciones con el robot.

      Programación en AppInventor:




      Programación en BitBloq:







      Un saludo,
      Raúl.
    • Programación coche robot en modo comandos. PALBOT


      Buenos días.

      En esta entrada vamos a repasar las diferentes aplicaciones para android que hemos ido generando con app inventor para ir poco a poco aprendiendo a crear la aplicación de control del robot que presentaremos en el proyecto Retotech de Endesa.

      A las primeras aplicaciones les llamamos "tabla de verdad" porque la utilizamos para controlar leds por bluetooth en base a las normas de una tabla de verdad de manera que en función de las teclas pulsadas se encendiesen unos leds u otros. Partiendo de esta versión generamos tabla_VOZ que permitía ir enviando ordenes de una secuencia de encendidos a la placa para que las fuese almacenando y las ejecutase al pulsar la tecla GO. Esta versión también permitía enviar la señal "go" mediante la voz.

      Partiendo de esta base realizamos la primera aplicación PALBOT que ya tenía los botones colocados en función de la orden que enviaría a los motores de las ruedas y añadía la opción de antes de empezar a enviar las órdenes seleccionar el tiempo de desplazamiento y de giro. El tiempo elegido era el que se asignaba a todas las instrucciones una vez enviado el mensaje de GO. Por último la aplicación recibía los datos del ultrasonido en el móvil reflejando por tanto la distancia al objeto que tuviese delante el robot.

      La siguiente aplicación PALBOT2 suponía un avance significativo ya que permitía elegir la distancia y el ángulo de giro para cada una de las instrucciones mediante un barra deslizante. Las ordenes que se van almacenando van apareciendo en la pantalla y un botón permite la opción de borrarlas. Esta aplicación sería la versión más avanzada de nuestro robot para uso en clase de primaria.


      Las aplicaciones PALBOT3 y PALBOT4 son la versión ampliada de la anterior en la que además de la aplicación para primaria descrita antes se añade una más sencilla para infantil en la que la distancia de avance es siempre la misma (el tamaño del robot) y el ángulo de giro es siempre de 90º. También permite visualizar las órdenes y borrarlas. 
      Además estas dos formas de usar el robot, se añaden la opción AUTO que hace que el robot se mueva de manera autónoma usando el ultrasonido para no chocarse y RACE que permite manejar el robot como si de un mando a distancia se tratase.
      La versión PALBOT4 añade e la 3 el hecho de que la pantalla inicial pasa a ser la del menú. Para poder cambiar el orden de las pantallas se pueden seguir los pasos que se indican en este tutorial:


      Por último la versión PALBOT5 añade varias opciones especialmente interesantes para las partes de AUTO y RACE. En race añade un slider que permite decidir el radio de giro de los botones FRONT L y R y BACK L y R, con este slider se pueden realizar automáticamente giros del arco de giro que se elija, sin duda va a ser una opción muy interesante para el examen de carrera que haremos el viernes 28 de abril. Para la opción de AUTO se han añadido botones para que cada vez que se le da a START el robot gire siempre a la izquierda, a la derecha o lo haga de manera aleatoria. Finalmente con un slider podemos decidir la distancia en cm a la que debe estar un objeto para que gire. Esta opción la pondremos a prueba en el examen del día 10 de mayo en el que los robots deben ser capaces de salir de manera autónoma de un laberinto. Para poner a prueba las aplicaciones de Infantil y Primaria hemos creado un juego al que llamamos GOLF en el que se debe llegar de un punto a otro con el menor número de "golpes" o instrucciones posible, este examen lo haremos el día 12 de mayo.




      Una última actualización de la opción AUTO con el botón MAZE (laberinto en inglés) en la que el robot comprueba la distancia de los objetos a derecha e izquierda para después seguir hacia la dirección donde tenga el camino más libre.


      En el siguiente enlace se encuentran todas los archivos de aplicación para instalar además de los archivos de app inventor que permiten importarlos desde la web de app inventor y ver la programación de cada una de las aplicaciones.


      Dejamos aquí también el código QR de la versión 5:


      Todavía queda mucho camino por recorrer para ir mejorando la aplicación desde el punto de vista de funcionamiento y sobre todo la estética, cualquier sugerencia o aportación por supuesto será bienvenida.

      Un saludo,
      Raúl.
    • Programación avanzada coche robot. Juntando todos los modos de funcionamiento.


      Buenos días.

      En esta entrada vamos a enlazar las últimas versiones del robot de los programas en bitbloq para la placa y en app inventor para el móvil.

      Empezando por esto último, la aplicación móvil va por su versión 7 que respecto a las anteriores mejora principalmente la estética (que proviene de una versión de la 5, la 5b) y también añade cosas útiles como que si estamos conectados al bluetooth reconecta automáticamente al cambiar de un modo a otro. El peso de las imágenes se ha reducido mucho para que no de problemas al ejecutarse y de momento parece que es una versión bastante estable. Aquí podéis ver algunas imágenes del nuevo diseño:






      En la siguiente imagen tenéis el código QR para poder descargar esta versión PALBOT7:
      En la carpeta de la entrada anterior hemos seguido poniendo las diferentes versiones de la aplicación.


      Por último dejamos en esta entrada los códigos de bitbloq que estamos usando para programar las placas. Tanto para la placa arduino UNO como para la ZUMKIT de BQ.


      Para que el robot funcione correctamente simplemente hay que conectar los componente tal y como están programados en los programas de bitbloq. Las conexiones serían las siguientes:
       PIN 4 y 5 para el ultrasonido: ECHO y TRI respectivamente.
      PIN 6, 7, 8 y 9 para los motores: 6 rueda derecha alante, 7 derecha atrás, 8 izquierda alante y 9 izquierda atrás.

      Todavía un mes por delante para rematar los programas, diseñar y fabricar las carcasas, el logo... mucho trabajo pero también muchas ganas e ilusión de dejar un proyecto bonito, un robot útil y divertido para que puedan usarlo los colegios de Tres Cantos.

      Por cierto que la semana pasada hicimos una visita con los robots a uno de los colegios y fue una experiencia muy bonita juntar a los alumnos de nuestro instituto (que algunos habían estudiado en ese mismo colegio) con alumnos de 4 y 11 años. Aquí tenéis el enlace que han puesto en el blog de la clase de 4 años:


      Después de la visita salimos con más motivación si cabe para terminar el proyecto.

      Un saludo,
      Raúl
    • .

      Primeros ensayos del coche robot y logo


      Buenos días.

      Os contamos en esta entrada las últimas novedades del proyecto en el que estamos construyendo un robot que pueda ser usado por los Colegios Públicos para iniciar en la robótica y la programación a los alumnos desde Infantil hasta 6º de Primaria.

      El equipo que se encarga del apartado de "marketing" del proyecto ha creado este vídeo de presentación del robot:

    • https://www.youtube.com/watch?v=XiB0cv1WPc4



    • ste vídeo está subido a la web de Retotech de nuestro centro en el que tenéis un enlace para votar por nuestro proyecto.

      Enlace a la web de retotech del IES Pintor Antonio López:


      Mientras tanto el resto de grupos sigue avanzando en el desarrollo del diseño y la aplicación para Android. Vamos ya por la versión 8 de la aplicación. En esta última versión hemos iniciado un apartado muy importante que es el de la configuración del robot antes de empezar a usarlo. Con esto conseguiremos que el robot avance siempre recto y que los giros sean de 90º exactamente, independientemente del estado de la batería, de los motores o del tipo de suelo en el que se utilicen. Es una parte muy importante del proyecto que nos hace mucha ilusión desarrollar para que una vez se los entreguemos a los colegios estos puedan usarlos sin ninguna dificultad.

      Con el siguiente código QR podéis instalar esta última versión PALBOT8:


      Y en la siguiente carpeta tenéis la versión 6 de bitbloq/arduino que es la última que hemos creado y está preparada para ser usada con la aplicación palbot8:


      También tenemos unas primeras ideas para el logo final del robot:


      Todavía tenemos muchas ideas y partes que desarrollar en cada uno de los apartados, estas tres últimas semanas hasta la presentación final prometen ser intensas y apasionantes.

      Saludos,
      Raúl.

    • Versión definitiva de PALBOT


      Buenos días.

      A falta ya de solo 5 días para la presentación del proyecto en el concurso Retotech tenemos ya una versión muy avanzada que prácticamente podemos dar por definitiva tanto de la aplicación como del código para la placa.

      La principal novedad de esta versión en el apartado SETTINGS, en el que es posible configurar el robot para corregir los posibles desequilibrios de los motores con el fin de que vaya siempre recto (le hemos llamado "equilibrado") e igualmente se puede corregir el ángulo de giro para que sea exactamente de 90º.



      Esta versión es ya la PALBOT12, que hemos vuelto a denominar simplemente como PALBOT y puede descargarse con el siguiente código QR:

       Como novedad también hemos generado un código QR dinámico que será el definitivo de la aplicación por si en algún otro momento incorporamos algún cambio más. Este código servirá para descargar siempre la última versión de la aplicación PALBOT:

      En el siguiente enlace hemos seguido poniendo las diferentes versiones de la aplicación:



      Por último dejamos en esta entrada los códigos de bitbloq que estamos usando para programar las placas. Tanto para la placa arduino UNO como para la ZUMKIT de BQ.

      En concreto el que funciona correctamente con PALBOT es la versión de la placa 8:
       Después de este largo recorrido con el proyecto, estas últimas versiones nos dejan bastante satisfechos con el resultado. Ahora ya si que creemos que hemos obtenido un resultado que puede ser presentado en los colegios para que los alumnos puedan usarlo e iniciarse en el apasionante mundo de la robótica.
      Un saludo,
      Raúl.

Proyecto Coche Robótico con Arduino (3/5)

Posted: 03 Sep 2021 12:26 AM PDT

 

Primeros pasos programación aplicación Android con Appinventor

Hola a tod@s.

Una vez hayamos conseguido conectarnos y desconectarnos al bluetooth de la placa y encender y apagar un solo led, tal y como vimos en los temas precedentes, podremos añadir más botones a nuestra apliación para así poder enviar las instrucciones necesarias que finalmente nos permitirán controlar los movimientos del coche.

En el siguiente ejemplo podemos ver una  aplicación con 3 botones que nos permiten mandar por bluetooth tres mensajes (letras A, B o C) diferentes a nuestro arduino.



En los dos imágenes siguientes vamos a ver como programar nuestra aplicación para que además de enviar datos a arduino sea capaz de recibir la información que mandemos desde arduino hacia nuestro teléfono.



Por último un ejemplo de como podríamos crear un comando de voz en nuestra aplicación para así poder controlar el coche mediante comando de voz:



Para terminar dejo el enlace a último un vídeo con un pequeño tutorial en el que enseñan paso a paso a realizar una aplicación muy parecida a las que nosotros estamos haciendo:




En la siguiente imagen podemos ver un ejemplo de como puede quedar la aplicación de control del coche robot:



Como puede verse en la imágen hemos incluido un slider que nos permitirá controlar el ángulo de giro del coche. Como programar esto lo veremos en los temas: "Envío de datos más complejos por bluetooth" y "Uso del slider para manejar el coche robot".

En próximas temas pondremos información sobre la parte de bitbloq y arduino de estos proyectos.

Un saludo,
Raúl

Control del coche robot con mando a distancia

Hola a tod@s.

Vamos a ver en este tema como conseguir controlar nuestro coche robot mediante un mando a distancia que emitirá una señal que captaremos desde un receptor de infrarrojos conectado a arduino.

Parte de la programación la haremos directamente en el IDE de arduino y después veremos como llevarla a bitbloq usando los bloques verdes para insertar código directamente.

Lo primero que necesitamos es conocer los códigos que envía nuestro mando a distancia. Para ello vamos a seguir los pasos que nos explican con mucho detalle en esta web:

https://www.zonamaker.com/arduino/modulos-sensores-y-shields/control-a-distancia-mediante-mando-infrarrojo-ir

Para conectar el receptor infrarrojos he utilizado el PIN 13 de arduino. El receptor más sencillo que suele usarse es el TL1838 que lleva tres patillas, una de señal, la de en medio de ground GND y la otra de voltaje VCC a 5 voltios. 

Tenéis una descripción en detalle en este enlace: https://drive.google.com/file/d/1B6GwlxxNVdOOYvMR1qjzPHDHPy8blcWQ/view?usp=sharing

Existen otros modelos:

En cada caso será importante saber las conexiones de señal: OUT, ground: GND, y voltaje: VCC para realizar las conexiones con arduino correctamente.

Una vez conectado correctamente el receptor el siguiente paso será cargar en nuestra placa un programa que reciba los datos y los envíe al puerto serie para poder visualizarlos.

El programa que usaremos será el siguiente:

#include <IRremote.h>  //Enlaza la librería del receptor IR

#define RECV_PIN 13

IRrecv irrecv(RECV_PIN);

decode_results results;

 void setup()

{

  Serial.begin(9600);  //Inicializa el puerto serie

  irrecv.enableIRIn(); //Inicializa el receptor

}


void loop() {

  if (irrecv.decode(&results)) //Si recibe un dato

  {

    Serial.println(results.value, HEX);  //Muestra el dato en el monitor serie

    irrecv.resume(); //Se prepara para recibir el siguiente valor

  }

}

Para poder compilarlo es necesario instalar la librería librería IRremote.h (versión antigua, que es la que funciona con esos comandos). El zip de la librería puede descargarse en este enlace: https://drive.google.com/file/d/127JTpZfRVIZd_N8xg9BqGgpGt6OsSPkl/view?usp=sharing

Para incluir la librería en arduino una de las formas es desde el IDE de arduino ir a Programas - Incluir librería - Añadir biblioteca ZIP. Buscar el archivo descargado y seleccionarlo:


Una vez tengamos el programa cargado en la placa y el receptor de infrarrojos bien conectado a nuestro arduino el siguiente paso será abrir el monitor serie para ver las señales que va recibiendo de nuestro mando a distancia. Una buena opción es hacerse una tabla con tantas filas y columnas como tenga el mando y rellenarla con los códigos de cada posición. En mi caso el resultado ha sido el siguiente:

Con los códigos ya anotados el siguiente paso es usarlo en el programa de control del coche robot. Para ello vamos a hacer algo muy parecido a lo que hacemos con la recepción de bluetooth usando una variable a la que llamamos "datos" a la que vamos a dar un valor en función del código que haya llegado por el receptor infrarrojo. Incluso podemos juntar en un mismo programa la recepción por infrarrojos y por bluetooth y podrían funcionar respondiendo el coche a ambas simultáneamente sin ningún problema.

Las partes del código a añadir en cada apartado serían las siguiente:

En la parte de VARIABLES Y FUNCIONES:

#include <IRremote.h>  //Enlaza la librería del receptor IR

 #define RECV_PIN 13

IRrecv irrecv(RECV_PIN);

decode_results results;

 

En la parte de SETUP:

irrecv.enableIRIn(); //Inicializa el receptor

 

En la parte de LOOP:

if (irrecv.decode( & results)) //Si recibe un dato
    {
        puerto_serie.println(results.value, HEX); //muestra en el monitor serie el dato
        irrecv.resume(); //Se prepara para recibir el siguiente valor
        if (results.value == 0xFF18E7) datos = "A";
        else if (results.value == 0xFF38C7) datos = "B";
                   else if (results.value == 0xFF4AB5) datos = "C";
                   else if (results.value == 0xFF10EF) datos = "D";
                   else if (results.value == 0xFF5AA5) datos = "E";
                   else if (results.value == 0xFF30CF) datos = "F";
                   else if (results.value == 0xFF7A85) datos = "G";
                   else if (results.value == 0xFF42BD) datos = "H";
                   else if (results.value == 0xFF9867) datos = "N";
                   else if (results.value == 0xFFB04F) datos = "M";
                   else if (results.value == 0xFF6897) datos = "J";
       

    }

Para llevar esto a blitbloq la forma sería mediante bloques verdes cada uno en la parte correspondiente de bitbloq:

En la parte de VARIABLES Y FUNCIONES y de SEPUP:


 En la parte de LOOP:



Con esto ya tendremos incorporado el control de nuestro coche en el programa. Podemos usarlo para que realice movimientos, aumente o disminuya la velocidad o incluso que cambie el modo de funcionamiento. Las posibilidades son muchas e iremos viéndolas de manera conjunta tanto en control por bluetooth como por mando a distancia.

Saludos,

Raúl.

  • Controlando el coche robot por bluetooth con una aplicación android

    Hola a tod@s.

    En este tema vamos a ver como ir añadiendo comandos a la programación del coche robótico controlado por bluetooth para empezar simplemente haciéndole avanzar y parar y terminar controlando todos sus movimientos.

    Empezaremos por realizar una aplicación móvil que mande diferentes letras a arduino mediante bluetooth que posteriormente nos servirán para decidir el modo de funcionamiento del coche.

    Un ejemplo de diseño de la aplicación con app inventor podría ser este. (Recordar que, si se ven demasiado pequeñas, pinchando en las imágenes se ven más grandes).


    Y el código de la misma el que ya hemos visto en temas anteriores con el listpicker de conectar al bluetooth y el botón de desconectar además del resto de botones que enviarán letras para cada acción:

    Aunque en la imagen del diseño se ha incluido un slider de control del giro en este tema no veremos todavía como usarlo.




    En arduino empezaremos por el programa más sencillo posible que hace simplemente avanzar al coche hacia adelante o pararlo.



    Es imprescindible saber que led activa cada una de las ruedas en su correspondiente sentido de giro. Y también es importante que conectemos los cables a los pines PWM de arduino (alguno de los siguientes: 3,5,6,9,10,11) que nos van a permitir controlar la potencia de encendido más adelante. Recordad que si conectáis los movimientos de las ruedas en los pines 5- izquierda adelante, 6 izquierda atrás, 9 - derecha delante y 10 - derecha atrás podremos intercambiar los programas entre nosotros sin necesidad de tener que cambiar nada en la conexión o programación.

    En el siguiente programa daremos un paso más allá añadiendo la posibilidad de que el coche vaya hacia atrás y gire a izquierda o derecha.




    En este punto es importante añadir la función "parar" que apaga los 4 leds y que usaremos antes de indicar cada movimiento ya que si del movimiento anterior arrastramos un encendido por ejemplo de derecha_atras y en el nuevo movimiento sin apagar ese led encendemos el de derecha_alante la rueda se quedará quieta ya que estará recibiendo esas dos señales al mismo tiempo.

    El siguiente paso será añadir giros no en redondo si no en arco, para ello aprovechamos la posibilidad que nos dan los pines PWM de encenderlos con un valor de intensidad entre 0 y 255. En el ejemplo encendemos una rueda al máximo de potencia y la otra a la mitad dándole un valor de encendido al pin digital de 127. Esto para los 4 giros amplios que nos quedan para controlar totalmente el robot.


    La programación del control mediante mando a distancia por infrarrojos es prácticamente igual en la parte de arduino/bitbloq únicamente será necesario averiguar los códigos que envía el mando a distancia para que al recibirlos el infrarrojo de un valor a la variable "datos".

    Saludos,

    Raúl.

  • Resumen de Programas de control del coche robótico


    Hola a tod@s.

    En este tema vamos a ver, en 5 fases, como ir añadiendo comandos a la programación del coche robótico controlado por bluetooth para empezar simplemente haciéndole avanzar y parar y terminar controlando todos sus movimientos además de la activación del modo autónomo de detección de obstáculos con ultrasonido y servomotor.

    Empezaremos por realizar una aplicación móvil que mande diferentes letras a arduino mediante bluetooth que posteriormente nos servirán para decidir el modo de funcionamiento del coche.

    Un ejemplo de diseño de la aplicación con app inventor podría ser este.


    Y el código de la misma el que ya hemos visto con el listpicker de conectar al bluetooth y el botón de desconectar además del resto de botones que enviarán letras para cada acción:

    Aunque en la imagen del diseño se ha incluido un slider de control del giro en este tema no veremos todavía como usarlo.




    En arduino empezaremos por el programa más sencillo posible que hace simplemente avanzar al coche hacia adelante o pararlo.



    Es imprescindible saber que led activa cada una de las ruedas en su correspondiente sentido de giro. Y también es importante que conectemos los cables a los pines PWM de arduino (alguno de los siguientes: 3,5,6,9,10,11) que nos van a permitir controlar la potencia de encendido más adelante.

    En el siguiente programa daremos un paso más allá añadiendo la posibilidad de que el coche vaya hacia atrás y gire a izquierda o derecha.




    En este punto es importante añadir la función "parar" que apaga los 4 leds y que usaremos antes de indicar cada movimiento ya que si del movimiento anterior arrastramos un encendido por ejemplo de derecha_atras y en el nuevo movimiento sin apagar ese led encendemos el de derecha_alante la rueda se quedará quieta ya que estará recibiendo esas dos señales al mismo tiempo.

    El siguiente paso será añadir giros no en redondo si no en arco, para ello aprochamos la posibilidad que nos dan los pines PWM de encenderlos con un valor de intensidad entre 0 y 255. En el ejemplo encendemos una rueda al máximo de potencia y la otra a la mitad dandole un valor de encendido al pin digital de 127. Esto para los 4 giros amplios que nos quedan para controlar totalmente el robot.



    El siguiente paso consistirá en añadir la posibilidad de que el coche se mueva de manera autónoma detectando obstáculos mediante el sensor de ultrasonidos colocado en la parte delantera.

    Para ello añadiremos dos componentes a nuestro arduino, el sensor de ultrasonidos y el servo motor sobre el que va instalado.



    Para poder programar este modo de funcionamiento tendremos que generar dos nueva variables, una que guardará la distancia y otra que guardará el modo de funcionamiento seleccionado. Se definen 5 modos de funcionamiento:

    El modo 0 es en el que no se usa el ultrasonido y se controla el robot con las funciones explicada antes.

    El modo 1 es en el que el coche al detectar un obstáculo a 20cm o menos gira siempre hacia la izquierda para evitarlo.

    El modo 2 es en el que el coche al detectar un obstáculo a 20cm o menos gira siempre hacia la derecha para evitarlo.

    El modo 3 es en el que el coche al detectar un obstáculo a 20cm o menos gira aleatoriamente a la izquierda o a la derecha para evitarlo.

    El modo 4 es en el que el coche al detectar un obstáculo a 20cm o menos utilizará el servo motor para mover el ultrasonido a un lado y a otro para saber hacia que lado tiene menos obstáculos y dirigirse hacia ese lado.




    Si el usuario manda un comando que activa alguna de las funciones que no son de modo ultrasonido es importante que añadamos en cada una de ellas el hecho de que el "ultra_mode" pasa a ser 0.


    Para el resto de letras enviadas por la aplicación activaremos los diferentes modos de funcionamiento que hemos comentado.

    Los modos 1 y 2 funcionan de manera sencilla:



    El 3 incluye el uso de número aleatorios y redondeo:


    Y por último el modo 4 nos llevará a crear dos nuevas variables para comparar las distancia y el uso del comando detach y attach del servo para evitar que este vibrando cuando no lo usamos. Como este comando no existe en bitbloq lo añadimos con el código verde que nos permite introducir código arduino directamente.




    Con esta última versión del programa tendremos un buen repertorio de formas de controlar el coche robot tanto de manera directa como autónoma.

    En temas posteriores veremos como poder modificar algunos parámetros como el ángulo de los giros para el modo dirigido o cambiar la distancia de detección de obstáculos para el modo autónomo.

    Un saludo,

    Raúl.


Proyecto Coche Robótico con Arduino (2/5)

Posted: 03 Sep 2021 12:22 AM PDT

 

Modo Maze: Ultrasonido montado sobre un servo motor

Hola a tod@s.

En el tema anterior hemos visto como programar el ultrasonido suponiendo que este se encuentra en la parte delantera del coche y va captando la distancia a la que tiene objetos delante según el coche va girando. Otra opción para que el coche sortee obstáculos es colocar el ultrasonido encima de un servo motor de giro que una vez detecta un obstáculo permita girar el ultrasonido para detectar si hay otros obstáculos a los lados sin necesidad de que se mueva el coche.

Para ello lo primero será asegurarnos que el servomotor que vamos a montar está en posición 90º antes de colocarle en posición mirando hacia adelante. Ya que si no es así luego el servo motor no hará el giro a izquierda y derecha cuando le pongamos en posición de 5º o 175º (se le puede poner ir a 0º y 180º pero conviene evitar los ángulos extremos que pueden producir vibraciones).

Para ello podremos realizar un sencillo programa como el siguiente con el que comprobaremos que nuestro servomotor se mueve correctamente y aprovechar a desconectarlo en la pausa más larga en la que sabemos que está a 90º.




Una vez tengamos montado nuestro ultrasonido sobre el servomotor procederemos a programar la detección de objetos y las diferentes acciones que queremos vaya realizando nuestro servomotor en base a los obstáculos que encuentre el coche en su camino.

Para ello será necesario crear variables que guarden los valores de las distancias que va detectando el ultrasonido. Por un lado la variable "distancia" que detecta la distancia a los objetos que el coche tiene delante y por otro lado las variables "dist_izq" y "dist_der" que guardarán la distancia de los objetos a los lados cuando el coche encuentre un obstáculo y mire a los lados para buscar la mejor salida. Las variables se declaran al principio del programa en el apartado "Variables globales y funciones". En este apartado hemos aprovechado para crear dos funciones que nos permitirán parar el coche y hacer que se mueva hacia adelante:



El uso de servomotores puede hacer que se produzcan vibraciones en ellos aunque no estén recibiendo mensajes de la placa es por este motivo que conviene desactivarlos cuando no están en uso y activarlos para usarlo. En las instrucciones iniciales, las que solo se realizan una vez al inicio del programa, hemos incluido una línea en verde con código directo de arduino "servo.detach();" ya que de momento en bitbloq no existe el bloque de activación y desactivación de un servo motor.

En la imagen podemos ver también el inicio del código de la parte de programación en Loop en la que guardamos la lectura del sensor de ultrasonidos en la variable distancia y comprobamos si esa variable es menor o igual que 20 para en ese momento para el coche, activar el servomotor en el pin 2 "servo.attach(2);", hacerlo girar a un lado y a otro y guardar los valores de cada lectura en las variables "dist_izq" y "dist_der". En cada caso esperamos 500ms para que se realice el giro y 250ms para que se realice la lectura correctamente. Al finalizar volvemos a poner el servo motor a 90º y volveremos a poner la orden "servo.detach();" para evitar vibraciones.


La parte final, que podemos ver en la siguiente imagen, consistirá en la toma de decisiones en base a los valores de distancia captados y guardados en las variables "dist_izq" y "dist_der", las comparamos y giramos hacia el lado donde la distancia de salida sea mayor.


De nuevo, como en el tema anterior, volvemos a usar un "Mientras" en la parte final para que una vez comience a girar el coche lo siga haciendo hasta que no detecta nada delante a 20 cm o menos.

Con este programa habremos conseguido que el coche vaya tomando sus propias decisiones. Mucho ánimo para conseguirlo, es un efecto realmente divertido ver como se va moviendo de manera autónoma buscando una salida moviendo la cabeza hacia los lados.

Un saludo,

Raúl

Conexiones a arduno con protoboard

Hola a tod@s.


En este tema haremos una recopilación de imágenes y algún vídeo explicativo sobre la conexión de los componentes a arduino usando una protoboard.

Para poder hacer la simulación de la programación de nuestro proyecto necesitaremos conectar leds que haremos encender como si fuesen los motores de nuestro coche robot:

Tal y como dicen en esta web:

"Hay dos tipos de personas, los que conectan los LEDs con resistencia y los que no… y solo una de ellas lo está haciendo bien."

Es por eso que nosotros lo vamos a hacer bien, es decir, con resistencia.


Para recordar el código de colores de la resistencia podemos usar estas imágenes en función de que lleve 3 o 4 lineas de colores + la tolerancia.



Conectar los componentes es una fase que parece que tiene menor importancia que la de programar, pero sin duda es realmente importante prestar la máxima atención y entender porque se conectan los componentes de esta manera para evitar fallos que puedan dañar a la placa o los componentes y además nos puedan hacer dar mil vueltas a la programación sin darnos cuenta de que el problema no es de código si no de instalación y conexión.

Un saludo,
Raúl.

Conexión arduino - Teléfono mediante aplicación de AppInventor y bluetooth

Buenos días.

En esta entrada vamos a dar los primeros pasos para conectarnos a la placa mediante el móvil usando el dispositivo bluetooth HC-06.

Lo primero será cambiar el nombre por defecto (HC-06) y el pin (1234) del dispositivo bluetooth. Para ello hay que usar el siguiente programa de arduino. Deberemos editarlo, cambiar los datos de la variable NOMBRE y PIN, conectar el bluetooth en los pines 2 (RX) y 3(TX) de nuestra placa y subir el programa a la placa.

Programa para cambiar nombre y pin del módulo bluetooth


El siguiente paso será sincronizar el módulo bluetooth con nuestro teléfono móvil, activando el bluetooth del teléfono, buscando el dispositivo por su nuevo nombre y sincronizando con el nuevo pin.
(En esta entrada del blog tenéis más información sobre la conexión vía bluetooth.)

Una vez sincronizado el dispositivo pasaremos a crear la aplicación con AppInventor. Para usar AppInventor es necesario tener una cuenta de gmail. AppInventor pedirá acceso directo a la cuenta de gmail, es por eso que recomiendo que creéis una solo para trabajar con esta web. Para simplificar los primeros pasos de conexión podéis importar este programa en el que ya están creados el ListPicker de conectar y el botón de desconectar. Podéis descargarlo en vuestro ordenador y una vez dentro de appinventor importar el archivo .aia de proyecto.

A este programa básico habrá que añadirle en un principio dos botones: Encender y apagar, que manden vía bluetooth información para que luego arduino la use para realizar las acciones de encender y apagar un led. En principio una forma sencilla de hacer esto es enviar las letras A para el encendido y B para el apagado.



Cuando tengamos terminada la aplicación debemos instalarla en el móvil, para ello hay que descargarla mediante el código QR o descargar el archivo .apk en el ordenador y enviarlo por mail al móvil o si lo conectamos con el cable usb al ordenador copiando y pegando el archivo. La opción de usar el código QR es muy cómoda. Una de las mejores aplicaciones gratuitas para leer códigos QR es QR Code Reader.

Solo nos queda programar la placa para que reciba la información del bluetooth. Para ello vamos a usar bitbloq y de momento hasta que veamos como usar el componente Bluetooth de bitbloq, las conexión vía bluetooth las vamos a realizar con el componente Puerto Serie. Es importante confirmar que el Baudrate del puerto serie es el mismo que el del bluetooth, en principio 9600 por defecto en los módulos HC-06.



Lo siguiente será programar los componentes. Para ello usaremos una variable "datos" que recibe la información del bluetooth y la almacena. Cuando la variable contenga algún dato (longitud>0) comprueba si es A o B para encender o apagar el led y a continuación borra el dato de la variable,


Es importante tener en cuenta que al usar el puerto de serie para las conexiones bluetooth será necesario conectar los pines TX y RX del módulo bluetooth a los pines 0 y 1 de arduino respectivamente (van cruzados el TX del bluetooth al RX de la placa que es el 0 y el RX del bluetooth al TX de la placa que es el 1) pero en el momento de cargar programas en la placa será necesario desconectarlos. Podemos mantener conectados los pines de Vcc y GND y por tanto seguir conectados al módulo con el móvil si ya está conectado. Una vez cargado el programa volveremos a conectar los pines del bluetooth a la placa para que la información que enviamos por el teléfono llegue hasta ella.

Una vez realizado este sencillo programa y comprobado que somos capaces de comunicarnos entre el teléfono móvil y la placa empezaremos a desarrollar la aplicaciones más específicas para el control del del coche robot.

Un saludo,
Raúl,


Bluetooth. Configuración y conexión

Buenos días.

En esta entrada voy a resolver varias dudas sobre el bluetooth: como probar los programas sin necesidad de usar el bluetooth y como configurar y solucionar los problemas más comunes con el bluetooth.

Probar la programación de bitbloq o arduino sin usar el bluetooth

Esta es una opción muy interesante si creemos que el bluetooth nos está dando problemas y aún así queremos programar con bitbloq y probar el resultado de nuestros programas.

La solución es mandar las ordenes a la placa mediante el Serial Monitor de la pestaña Ver de bitbloq (opción Mostrar Serial Monitor). Desconectamos completamente el bluetooth de la placa y teniéndola conectada con el cable usb al ordenador podemos dar las ordenes correspondientes desde el Serial Monitor, simplemente hay que tener el cuidado de poner el Baudrate que hayamos puesto al componente Puerto Serie (que en principio para la placa UNO debería de ser 9600).
Desde el puerto de serie podemos mandar las letras o textos que hayamos predefinido para mandar las ordenes desde appinventor a bitbloq. Escribiremos A y le damos al botón de enviar si es ese el mensaje que queremos probar o cualquier otro. Para poder hacer esto hay que colocar el robot de manera que las ruedas no toquen el suelo ya que lo tendremos conectado al ordenador con el cable. No servirá por tanto para verlo en movimiento pero si para ver la respuesta de la programación a la entrada de comandos.
Dos consideraciones importantes para usar el Serial Monitor de esta manera:
- Hay que asegurarse de que el bluetooth no está conectado a la placa y que no están ocupados los pines 0 y 1 por ningún otro componente, ya que el puerto serie usa esos pines para enviar y recibir datos. (Esto también es imprescindible para cargar programas en la placa).
- Es necesario tener el interruptor encendido y por tanto las pilas alimentando a la controladora de motores, ya que aunque por el USB le llega corriente a la placa y resto de componente no es suficiente como para hacer girar los motores.

Cambio de nombre, pin y baudrate del bluetooth

Esta es una opción muy interesante ya que todos los bluetooth que tenemos tienen un mismo nombre por defecto (normalmente HC-06) y un mismo PIN, 1234, y por tanto si tenemos varios coches con el mismo nombre de bluetooth puede hacerse difícil identificar si estamos conectando con el nuestro o con otro (aunque cada dispositivo bluetooth tiene identificador único del tipo 20:68:6A... y algunos teléfonos móviles permiten asignarle nombre a ese identificador sin cambiar directamente el nombre al módulo bluetooth).

Hay dos posibilidades dependiendo del tipo de módulo bluetooth que tengamos. Como exteriormente son iguales toca probar una forma y luego la otra en caso de no funcionar la primera.

El proceso viene explicado en la siguiente web:
https://www.aranacorp.com/es/comunicacion-con-arduino-y-el-modulo-hc-06/


Es sencillo: hay que poner el bluetooth con TX en el 2 y RX en el 3 y desde el IDE de arduino cargar el programa que viene en la web que es el siguiente:

#include <SoftwareSerial.h>

SoftwareSerial hc06(2,3);

void setup(){
//Initialize Serial Monitor
Serial.begin(9600);
Serial.println("ENTER AT Commands:");
//Initialize Bluetooth Serial Port
hc06.begin(9600);
}

void loop(){
//Write data from HC06 to Serial Monitor
if (hc06.available()){
Serial.write(hc06.read());
}

//Write from Serial Monitor to HC06
if (Serial.available()){
hc06.write(Serial.read());
}
}
A partir de aquí tenemos dos opciones en función del tipo de módulo Bluetooth que tengamos:

PRIMERA OPCIÓN: Configuración tipo HC-06 (etiquetado ZS-040 con la versión 3.0-20170609)

Después abrir el Monitor Serie, (seleccionado en la parte inferior "Ambos NL & CR" y "9600 baudio") y escribir:
AT para comprobar que da OK estamos conectados y para cambiar nombre y pin:
AT+NAME=<Nombre>   Ejm: AT+NAME=Robot 
AT+PSWD=<"Pin">   Ejm: AT+PSWD="2560"  


SEGUNDA OPCIÓN: Configuración tipo HC-06 diferentes

La diferencia es muy pequeña con la opción primera, simplemente para el cambio de nombre es no poner el = después de AT+NAME que en la primera opción si que hay que ponerlo y en la segunda no y para el cambio de pin en esta segunda opción es AT+PIN y justo pegado el pin y en la primera era AT+PSWD= y el pin entre comillas. 
De esta manera los comandos a escribir en el monitor (seleccionado en la parte inferior "Ambos NL & CR" y "9600 baudio") serie serían:

Para cambiar el nombre del módulo, escriba AT+NAMEmodulename. El módulo debe responder OK setname. (Por ejemplo: si desea cambiar el nombre del módulo a BTM1, escriba AT+NAMEBTM1)

Para cambiar el código PIN del módulo, escriba AT+PINxxxx. El módulo debe responder OKsetPIN. (Por ejemplo: si desea cambiar el PIN a 0000, escriba AT+PIN0000)

Son pequeñas diferencias pero que hacen que funcione o no el cambio de nombre y pin. 

Para más opciones y modelos diferentes puede consultarse esta web con mucha información: http://www.martyncurrey.com/bluetooth-modules/

Un saludo,
Raúl.


Guía de las diferentes fases del proyecto


Buenos días.

Tras las primeras fases en la que hemos aprendido a programar y configurar las placas Zumkit con bitbloq y app inventor y a construir la base de los robots y el chasis, en esta tercera fase estamos ya centrados en la programación de las placas y de las aplicaciones móviles finales para el robot educativo. En el siguiente enlace podemos descargar una guía para realizar los primeros ensayos que llevaremos a cabo tanto con las placas Zumkit de BQ como con placas UNO genéricas.

En el siguiente documento podéis descargar el documento para paso a paso poder ir trabajando con las placas las diferentes programas y aplicaciones de control del robot:


Un saludo,
Raúl