Introduction: Locomotora "Sofia" Controlada Por Infrarojos, Con Control De Velocidad Por Ultrasonidos Y Motor Superior Multiusos (Lego Duplo)

LOCOMOTORA "SOFIA" CONTROLADA POR INFRARROJOS, CON CONTROL DE VELOCIDAD POR ULTRASONIDOS Y MOTOR SUPERIOR MULTIUSOS (LEGO DUPLO)

* DESCRIPCIÓN GENERAL:

- La locomotora “Sofía” lleva un Arduino Nano v3.0, es controlado por un mando por infrarrojos y lleva un sensor de distancia por ultrasonidos el cual nos puede variar la velocidad y parar en caso de detectar un obstáculo.

- Lleva 2 luces Led´s blancas delanteras para iluminación, más una central verde de señalización de "Control de velocidad por ultrasonidos Activo".

- Tiene un motor para las ruedas motrices (traseras) y un segundo mini motor con reductora metálica de bajas revoluciones (30 r.p.m) , el cual el eje va situado en la parte superior de la locomotora para propósitos variados. Yo le he situado una rueda en interior con imanes de neodimio para posibles juegos magnéticos.... Éstos motores están controlados por el driver HG7881 (L9110S). También podemos bajar o subir la velocidad manualmente cuando el control de velocidad por ultrasonidos lo tenemos desactivado.

- Lleva un interruptor de encendido y un pequeño altavoz activo (reproduce pitidos) para señalizar diversas opciones.

- Está alimentado por 2 baterías de Litio recargables tipo 18650.

- Podéis encontrar las piezas para construirlo en: https://www.thingiverse.com/thing:4012245

Supplies

·

COMPONENTES PARA EL MONTAJE:

- NOTA: LOS ENLACES AQUÍ PUESTOS SON SIMPLEMENTE ORIENTATIVOS, TENDREIS QUE BUSCAR EN INTERNET (ALIEXPRESS, EBAY, AMAZON, ETC…), ESTOS COMPONENTES, QUE SEGURAMENTE LOS ENCONTRÉIS MÁS ECONÓMICOS.

- Un Arduino Nano v3.0 , podéis encontrarlo en muchos sitios, algo como esto: https://www.ebay.es/itm/NANO-V3-0-ATmega328P-CH34...

- Un controlador o driver de 2 motores de C.C. modelo HG7881 (L9110S), algo como esto:

https://www.ebay.es/itm/DC-Motor-Treiber-Board-St...

- Un motor de corriente continua con eje doble para montar las 2 ruedas motrices (traseras), de éste modelo (enlace para un pack de 10 motores) con Velocidad de giro: 1:48:

https://www.ebay.es/itm/10-piezas-Intelligent-Car-...

- Un segundo mini motor con reductora metálica de bajas revoluciones 30 rpm, para la colocación de una rueda porta imanes en parte superior del modelo, algo como esto: (Nota: en éste enlace podemos escoger 2 modelos 1 de 6v y 30rpm (el usado en éste proyecto) y otro de 300rmp y 12v.

- https://www.ebay.es/itm/Low-Gear-Motor-300-600-30...

- 2 baterías de Litio recargables modelo 18650 para la alimentación de la locomotora algo como esto:

- https://www.ebay.es/itm/1-2-4-6-10pcs-18650-Bater...

- . NOTA: Estas baterias necesitan un cargador aparte para poder recargarlas, podréis encontrar algunos pack económicos de estas baterías que ya incluyen el cargador, por internet.

- Un Sensor de distancia por Ultrasonidos modelo HC-SR04, algo como esto:

- https://www.ebay.es/itm/SENSOR-DE-DISTANCIA-ULTRA...

- Un kit de sensor de infrarrojos con mando a distancia (modelo VS1838) algo como esto:

- https://www.ebay.es/itm/Kit-modulo-IR-con-mando-d...

- 1 varilla metálica de 3mm de espesor para el eje de las ruedas delanteras (las traseras no necesitan ya que van montadas sobre el propio motor), las de éste ejemplo son de 140mm de largo, después tendremos que cortarla a la medida adecuada (sobre 48mm de largo), algo como esto:

- https://www.ebay.es/itm/5pcs-varillas-redondas-de...

- También necesitamos una varilla de 2 mm de espesor (éstas son de 160mm) tendremos que cortarlas a la distancia de 51mm aproximadamente para hacer de bisagra de la tapa superior de la locomotora, algo como esto:

https://www.ebay.es/itm/10pcs-varillas-redondas-to...

- 2 diodos led blancos (3,6v cada uno) para la iluminación delantera, y un diodo led verde (2,1V) para la señalización de “control por ultrasonidos” activo. Ambos son de 5mm de grosor, más 2 resistencias, una de 47 ohms para las dos luces blancas y otra de 150 ohms para el led Verde de 1/4w.

- Un altavoz activo de 12mm de grosor y 5v algo como esto:

- https://www.ebay.es/itm/5PCS-5V-12MM-Active-Buzze...

- Un interruptor (pulsador) de encendido de 8mmx 8mm, algo como esto:

- https://www.ebay.es/itm/lote-5-pcs-Interruptor-pu...

- Tornillería métrica 2mm, estos son de 10mm de largo, en alguna ocasión en el montaje es necesario cortarlos un poco, algo cómo esto:

- https://www.ebay.es/itm/HOTsell-100-pcs-M2-x-10mm...

- 4 Imanes de Neodimio para el cierre magnético de la tapa superior de tamaño 4x4mm cilíndricos, algo como ésto:

- https://www.ebay.es/itm/Imanes-Potentes-4x4mm-Neo...

- Nota: Tener especial atención al montarlos para que queden las dos partes (tapa superior) y parte inferior con los polos opuestos (es decir, de modo que se atraigan). Si no la tapa nunca quedará cerrada.

- 6 imanes de Neodimio de 10x3mm para el disco imantado situado en parte superior (para juegos magnéticos, opcional), algo como esto:

- https://www.amazon.es/Fridge-Magnets-Storage-Magn...

- Cables tipo Dupont (Hembra–Hembra) a poder ser de 2 longitudes (20cm y 10 cm), con esto realizamos todo el conexionado del proyecto y evitamos tener que realizar soldaduras (aún así es necesario realizar alguna).

(Nota: Si encontramos de 15cm de longitud también nos viene bien para dejarlos sin mucho sobrante).

- https://www.ebay.es/itm/40x-Cables-Hembra-Hembra-...

- https://www.ebay.es/itm/40-CABLES-HEMBRA-HEMBRA-1...

- Terminales para la bateria (2 con muelle y 2 planos) de 12mm, algo cómo esto:

- https://www.amazon.es/sourcing-map-Terminal-Lamin...

Step 1: ESQUEMA, FUNCIONES DEL MANDO Y MONTAJE

MONTAJE:

- Nota: Los diseños de las piezas que se pueden ver en alguna de éstas fotografías pueden ser algo diferentes a las piezas finales dejadas en Thingiverse, ya que se han hecho pequeñas modificaciones desde el diseño inicial.

- Primeramente acoplamos las ruedas traseras (motrices) al eje de la reductora del motor y las fijamos con un tornillo tipo rosca madera, creo recordar de 2mm. La fijación del motor al chasis de la locomotora es con tornillería de M3x30 con sus respectivas tuercas, (entran algo justos debido al tamaño de la rueda trasera). Nota: Debemos tener ya soldados los dos cables que van al motor, dejando una longitud suficiente para que lleguen hasta el driver HG7881 (L9110S), 15cm es más que suficiente.

- Para el montaje de las ruedas delanteras necesitamos cortar una varilla de 3mm de grosor a aproximadamente 48mm de largo. Lás ruedas delanteras entran a presión en ésta varilla, aúnque podemos darle algo de pegamente tipo Loctite para fijarlas más robustamente. Posteriormente montaremos la tapa que evita que se salga la varilla con tornillería de 2mm tipo rosca madera.

- Para la parte superior de la locomotora, aquí es donde va montado el receptor del mando a distancia por infrarrojos y el motor porta imanes de neodimio, tenemos que tener especial atención a la posición en la que colocamos el diodo receptor de infrarrojo. Debe ir cómo se ve en la fotografía, las patillas hacia el centro de la pieza y el diodo tumbado hacia la parte delantera de la pieza.

- En la parte interior colocamos la plaquita que viene en el kit del mando a distancia con infrarrojos y con algo de pericia introducimos las patillas del diodo infrarrojo por los huecos en la placa, posteriormente tendremos que soldarlas para dejarlas fijadas.

- En las patillas de conexión que tenemos en la placa usaremos los cables tipos Dupont Hembra-Hembra que irán hasta nuestro Arduino Nano, llevándolos por los huecos laterales de la pieza, para que no interfieran con el movimiento del motor porta imanes. Tener en cuenta que la alimentación (VCC) del sensor infrarrojo va a la patailla de 3V3 de nuestro Arduino Nano.

- Ésta pieza lleva 2 imanes de neodimio de 4mmx4mm cilíndricos en los huecos delanteros para el cierre magnético con la parte inferior y va sujeta mediante una varilla de 2mm de espesor que hace de bisagra a la parte superior trasera de aproximadamente 51mm de longitud.

- Para el montaje de la protección “SOFIA” del diodo infrarrojo en parte superior necesitamos 2 tornillos de 2mm algo cortos para no sobresalir (yo he utilizado los que salen en la descripción del material, simplemente los cortamos un poco, esto ha sucedido en el montaje de varias piezas de éste proyecto).

- Para la fijación del motor porta Imanes, sólo necesitamos 2 tornillos de 2mm cómo los comentados en la descripción. Tendremos que montar primero el disco con los imanes de neodimio redondos (10mm de largo x 3mm de grosor) que irán colocado a presión en el disco (quizás sería recomendable darle algo de pegamente tipo Loctite si quedan algo flojos), los imanes van colocados mirando hacia el interior de la locomotora, yo los he puesto con la misma polaridad hacia abajo.

- El Arduino Nano v3.0 y el driver de control de los 2 motores van colocados en la pieza media trasera. El Arduino va encajado con las 6 patillas traseras sobre la pieza (en los huecos dejados para ello) y fijado con un tornillo de 2mm (éste quizás no encaje a la perfección). El driver puede ir sujeto con 4 tornillos en los huecos dejados para ello, (yo sólo he puesto 2 en diagonal). Esta pieza trasera va fijada al chasis hasta con 5 tornillos de 2mm.

- Para la fijación del sensor de distancia por ultrasonidos usaremos 4 tornillos de 2mm, quizas tengamos que taladrar un poco más el hueco en la placa del sensor ultrasónico HC-SR04 para que entren correctamente (yo sólo he usado 2 en diagonal, para los diodos led de las luces tendremos que usar algo de pegamento o cola térmica. Nota, podemos montar las resistencias al lado de las patillas para no ocupar mucho espacio y ponerle algo de funda termo-retráctil para esconderlas como se ve en alguna de las fotos. Podemos soldarlas a la distancia adecuada usando los huecos por la parte delantera. Ésta pieza frontal va fijada al chasis por 2 tornillos de 2mm en la parte delantera y hasta 4 en la parte trasera. Lleva 2 imanes de neodimio 4mmx4mm cilíndricos en los huecos delanteros para el cierre magnético con la parte superior.

- NOTA: Especial atención a la hora de colocar estos imanes de cierre magnético de tapa superior con tapa inferior, (MONTAR DE FORMA QUE SE ATRAIGAN LAS 2 PIEZAS), sino no conseguirás cerrar nunca las 2 piezas.

- Usaremos los huecos laterales para llevar los cables dupont hembra-hembra desdes el sensor ultrasónico hasta nuestro Arduino Nano, también para todos los leds. Conectaremos los cables dupont cortos desde el driver al arduino nano, también podemos dejar conectados los cables de los 2 motores al bornero verde del driver. Tener en cuenta que la alimentación (VCC) del sensor de distancia por ultrasonidos va a la patilla de 5V de nuestro Arduino Nano.

- Colocaremos el interruptor (tipo pulsador) de encendido en su pieza que irá fijada con tornillería de 2mm a la pieza superior trasera (ésta pieza también evita que el altavoz se salga de su alojamiento). En éste dejaremos uno de los hilos con cable dupont Hembra para llevar junto con la alimentación del driver a la entrada de Vin del Arduino, el otro hilo irá directamente soldado al terminal positivo de la batería. Nota: Mejor dejar 2 hilos con cable dupont hembra para llevar a la Vin de Arduino y VCC del driver HG7881 (L9110S), (EN LAS FOTOS SÓLO APARECE UNO).

- Dejaremos el altavoz ya soldado, éste tiene polaridad, fijarse bien cual es el hilo positivo ya que lo dejaremos con conector dupont hembra y el negativo, que quedará unido a los pines GND del Arduino, junto con negativo de la batería, negativo del sensor infrarrojo, negativo del sensor ultrasonido, negativo del driver HG7881 (L9110S), negativo del Arduino y de los 3 diodos leds. Esta pieza lleva 3 tornillos de 2mm para su fijación con la pieza media trasera (2 tornillos son necesario recortarlos un poco para que no sobresalgan. Las dos piezas superiores van unidas por una varilla de 2mm de grosor y aproximadamente de 51mm de largo. Luego lleva una pequeña pieza redonda que hace de tapón.

- Para el montaje de la pieza que va sobre el interruptor (pulsador de encendido) simplemente daremos una gotita de pegamento tipo loctite en la parte de arriba del pulsador una vez montado todo en sus sitio, para fijarla. No hechar demasiado ya que podríamos estropear el pulsador.

- En la batería tendremos que unir los termianles de uno de los lados (el terminal macho y el que lleva muelle, por la parte que se encuentra algo rebajada “hilo verde en la fotografía”) y dejarémos los terminales de conexión positivo y negativo hacia la parte de atrá de la locomotora, deberemos plegarlos un poco para que no moleste al poner la tapa de la batería. Ésta está pendiente de recortar un poco para que no tropiece con los terminales del sensor de ultrasonidos ya que entra muy justa. Va fijada al chasis con 2 tornillos de 2mm.

- Bueno, esto es un poco por encima la explicación del montaje, tener en cuenta que el arduino está montado con los terminales de conexión hacia arriba y no se observa que es cada pin ya que la serigrafia está por la otra cara de la placa, por lo que es sencillo equivocarse. Revisar con lupa el montaje una vez finalizado para que todo trabaje correctamente.

Step 2: CARGA DE PROGRAMA EN ARDUINO NANO

CARGA DE NUESTRO PROGRAMA EN ARDUINO NANO:

- Nota: La carga de nuestro programa, sería recomendable hacerlo primeramente antes de tener todo montado y conectado, así ya tendríamos las entradas y salidas ya definidas con las que vamos a trabajar (aunque no habría ningún problema, el no hacerlo).

- Primeramente descargamos e instalamos el software Arduino Nano en caso de no tenerlo instalado de ésta dirección: https://www.arduino.cc/en/main/software

- También debemos de instalar la librería “IRLIB2” que se incluye en el proyecto para que pueda trabajar correctamente nuestro mando infrarrojo, podemos descargarla de ésta dirección: https://github.com/cyborg5/IRLib2

- De todos modos la incluiré en la pagina de Thingiverse para que podáis descargarla fácilmente, nombre de la carpeta “IRLib2-master”.

- Tenemos que descomprimir las carpetas de ésta librería y copiarlas dentro de la carpeta (Arduino/libraries) quedando cómo se ve en la imagen.

- La carpeta principal "IRLib2-master" dónde estaban contenidas el resto de carpetas "IRLib2, IRLibFreq, ..." se elimina.

- Nuestro Arduino nano (versión china) lleva el chip CH340 para la comunicación mediante cable USB, por lo tanto también tenemos que tener instalado los drivers para poder comunicar correctamente. Podemos descargarlos de ésta dirección (los enlaces se encuentran al final de la página web): https://www.geekfactory.mx/tutoriales/tutoriales-...

- Una vez instalado los drivers y conectado mediante un cable USB de nuestro ordenador al Arduino Nano (no es necesario tener nada más conectado a nuestro Arduino Nano) podemos observar el puerto que utiliza para la comunicación entrando en el “Administrador de Dispositivos” dentro de nuestro Windows. Posteriormente debemos seleccionarlo en el software Arduino para poder mandarle nuestro programa.

- Bien finalmente descargamos el programa que vamos a mandarle a nuestro Arduino Nano “Tren_Lego_Duplo_Sofia_v1.2.ino” (debe de estar contenido en una carpeta con el mismo nombre)

- Una vez tenemos todo lo necesario ya descargado y conectado, arrancamos el Software Arduino, vamos a la pestaña “Herramientas” y “Placa” y seleccionamos “Arduino Nano”

- Ahora dentro de la misma pestaña de “Herramientas”, seleccionamos “Procesador” y luego seleccionamos “ATmega328P” .

- Bien aquí también podemos seleccionar “ATmega328P(Old Bootloader)”, en caso de que no consigamos comunicar bien con la primera opción. A mi me ha pasado con dos diferentes Arduino Nano, tener que seleccionar uno u otro para que la comunicación fuera correcta. Se seleciona el primero, si tarda demasiado en subir el programa, debemos probar con el otro.

- Ahora dentro de ésta pestaña de “Herramientas” escogemos “Puerto”, y seleccionamos el puerto que nos aparecía en el “Administrador de Dispositivos” en mi caso “COM8” y con esto tenemos listo la configuración para poder Subir nuestro programa.

- Abrimos el archivo “Tren_Lego_Duplo_Sofia_v1.2.ino”, y le damos a la tecla de “Verificar” para comprobar que no hay ningún error en el programa y posteriormente le damos a “Subir” . Si todo está correcto debería de salir el mensaje de subido y los datos de espacio libre, bytes usados….

- Una vez todo conectado, y con nuestro programa cargado, al darle alimentación a la locomotora (con pulsador de encendido) debería de encenderse el led “verde” (central) de trabajo con sensor de distancia por ultrasonidos activado (varía la velocidad del tren hasta pararse si está cerca de colisionar).

- Si tenemos el mando por infrarrojo recomendado en la descripción del material (kit VS1838) podemos probar todos los botones para su correcto funcionamiento.

- Nota: En caso de que el motor de las ruedas giren en sentido contrario a lo que sale en la descripción del mando a distancia (“CH+” = Avance de la Locomotora), lo más sencillo es intercambiar los 2 cables que van a ese motor en el bornero “verde” (con tornillos) del driver HG7881 (L9110S). Esto es importante ya que el Control de Velocidad mediante el sensor de distancia por ultrasonidos sólo trabaja en el sentido de avance del tren (lo normal ya que es donde tenemos montado nuestro sensor ultrasónico), cuando estamos marcha atrás pues evidentemente no tenemos otro sensor que pueda evitar colisiones. Si sucede que están invertidos éstos botones de avance y retroceso del mando (“CH+” y “CH-“) lo que pasaría es que el sensor de ultrasonidos trabajaría cuando el tren va marcha atrás (evidentemente, mal funcionamiento).

- En caso de tener otro mando infrarrojo (se puede utilizar el de un televisor, si lo soporta la librería) debemos configurar cada tecla de nuestro nuevo mando y modificar el programa del Arduino para que trabaje correctamente.

- Para hacer ésto una vez subido nuestro programa, nos vamos a “Herramientas” y Seleccionamos “Monitor Serie”.

- Nos saldría una nueva ventana en la cual, después de pulsar una tecla de nuestro mando infrarrojo, nos genera una valor en hexadecimal (despues de Value:), en éste ejemplo “FF38C7” (Sin la comillas), que es el que vamos a tener que usar para modificar en nuestro programa.

- Nota: Si tenemos el “control de Velocidad por Ultrasonidos Activo” (señalizado por led verde encendido), tendremos que apagarlo para que no esté refrescando continuamente el valor de velocidad actual y distancia que esta midiendo el sensor ultrasónico en la pantalla de Monitor Serie. Pulsamos Tecla “Prev” a Anterior del mando a distancia, (se tiene que apagar el led verde). También podemos hacerlo despinchando la casilla “Autoscroll” en esta ventana.

- Dentro de el programa de Arduino buscamos la rutina del mando infrarrojo, llamada “translateIR()” , las diferentes teclas del mando infrarrojo se configuran en la instrucción “switch”y el valor generado anteriormente va situado después de cada “case” , que tendremos que modificar para nuestro nuevo mando. Se le añade el valor “0x” (Sin la comillas) quedando de ésta forma case 0xFF38C7: (para éste ejemplo). Dependiendo en que “case” lo pongamos pues nos hará una cosa u otra, va comentado en el programa de Arduino que sucede en cada opción.

- Cuando tenga algo más de tiempo para hacer pruebas quizás haga modificaciones en el programa para mejorar el comportamiento del sensor de distancia por ultrasonidos. Tener en cuenta que éste modelo de sensor tiene un rango de hasta unos 5 metros de detección (aunque a partir de los 4 metros se vuelve impreciso según fabricante) y un ángulo de detección de 15 grados. Éste ángulo nos limita por ejemplo a la hora de detectar otro tren que va por la misma vía en una curva, ya que el sensor siempre va controlando la distancia de frente, por lo que siempre nos lo va a detectar, cuando ya esté casi pegado, llegando a chocar ligeramente en muchas ocasiones. Tampoco nos serviría en caso de un cruze por la misma razón.

- De todos modos al tener la opción de control manual pudiendo subir y bajar la velocidad siempre se hace algo más divertido para los peques y no tan peques (modo ultrasonidos desactivado).

- Normalmente una vez que cambiamos el sentido de giro de nuestra locomotora (led verde apagado), éste se para y comienza con una velocidad media. Esta velocidad media también, es el tope programado cuando tenemos el control de velocidad por ultrasonidos activado (led verde encendido), que de todos modos es mas rápido que la velocidad del tren original de Lego Duplo.

- NOTA SOBRE LOS SONIDOS (PITIDOS) Y LUCES:

- Normalmente cuando seleccionamos una opción se producen 2 pitidos y cuando la deseleccionamos se produce un sonido “apagado”. Podéis ver el dibujo del mando a distancia para saber que hace cada tecla.

- Cuando se llega a la velocidad máxima (tiene que estar el control de velocidad por ultrasonidos deshabilitado (led verde apagado) y subimos la velocidad pulsando varias veces el pulsador de avance (si estamos avanzando) o retroceso (si estamos marcha atrás), al llegar a la velocidad máxima se produce 1 pitido. También sucede lo mismo cuando le damos al motor porta imanes varias veces en el mismo sentido de giro, (1 pitido = llegó a la velocidad máxima de giro).

- Cuando pulsamos la tecla “100+” de nuestro mando se produce el sonido llamado “Claxon” que son 3 pitidos.

- Podemos deshabilitar todos los “sonidos” (pitidos) si pulsamos la tecla número “200+” de nuesto mando infrarrojo (VS1838), recordarlo “padres” para tener un poco de “paz” y nunca comentárselo a vuestros hijos……. JJJ.

- ACTUALIZACION: También se ha añadido que cuando se habilite o deshabilite alguna opción, las luces delanteras nos hagan un par de parpadeos para señalizar que se ha activado/desactivado una opción (esto siempre lo hace incluso con los sonidos desactivados). También en la versión del programa “v1.2” podemos bajar la velocidad gradualmente hasta llegar a parar cada motor (dando varias pulsaciones) para los 2 motores.

- También se ha añadido el poder controlar 2 trenes con un mismo mando (se tiene que dejar teclas comunes para ambos) ya que no hay teclas suficientes para dejar todas las opciones programadas individualmente. Simplemente tendremos 2 programas y cargaremos uno diferente a cada coche. Nombre de archivo “Tren_Lego_Duplo_Sofia_v1.2_Tren1.ino” y “Tren_Lego_Duplo_Sofia_v1.2_Tren2.ino”