miércoles, 30 de diciembre de 2020

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"






Coche robot con arduino: Sigue líneas de 4 canales (Parte 1 de 3)

 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.

lunes, 7 de diciembre de 2020

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.

sábado, 21 de noviembre de 2020

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.