Tabla de contenido:

Control remoto Bluetooth de madera para tren Lego Duplo: 3 pasos (con imágenes)
Control remoto Bluetooth de madera para tren Lego Duplo: 3 pasos (con imágenes)

Video: Control remoto Bluetooth de madera para tren Lego Duplo: 3 pasos (con imágenes)

Video: Control remoto Bluetooth de madera para tren Lego Duplo: 3 pasos (con imágenes)
Video: casi no alcanzo a chocar Ferromex xd 😧 2024, Diciembre
Anonim
Control remoto Bluetooth de madera para tren Lego Duplo
Control remoto Bluetooth de madera para tren Lego Duplo
Control remoto Bluetooth de madera para tren Lego Duplo
Control remoto Bluetooth de madera para tren Lego Duplo

A mis hijos les encantó este pequeño tren Lego Duplo, especialmente a mi hija menor, que lucha por comunicarse con palabras, así que quería construirle algo que la ayudara a jugar con el tren independientemente de los adultos o los teléfonos / tabletas. Algo que agregaría una dimensión adicional al tren y le daría un valor de juego extra

El set de Lego ya tiene pocas formas de controlar el tren, puedes empujarlo hacia adelante para arrancar y sostenerlo para detenerlo, puedes controlarlo usando etiquetas de colores que van en la vía para que cuando el tren lo pase por encima desencadena diferentes acciones, es decir. avanzar, retroceder, reproducir sonidos enciende las luces. También puede descargar una aplicación para su teléfono o tableta que se puede conectar al tren a través de bluetooth.

Aquí una revisión completa del tren.

Después de buscar en Internet, descubrí que había bastantes personas diferentes que tenían todo el código escrito listo para controlar el tren. El nodo 'Poweredup' escrito por nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) parecía un comienzo perfecto. Fue escrito usando Javascript con el que no estaba parcialmente familiarizado, pero pensé que si podría encontrar un microchip basado en Java, este sería un buen comienzo.

Nuevamente, después de buscar en Internet nuevamente, encontré el sistema espruino, esto es similar al ardiuno pero basado en javascript. El código espriuno se puede cargar en un mircochip MDBT42Q que tenga incrustación de bluetooth. Pensé que si podía cargar el módulo "encendido" estaría a la mitad del camino, sin embargo, este simple no era el caso, ya que el módulo contenido en muchas bibliotecas era demasiado grande para cargarlo en el MDBT42Q, así que parece que tengo que hacerlo. encuentre una solución más simple….

Paso 1: el código

El código
El código

Esprinuo

Para aquellos que no conocen la plataforma Espruino https://www.espruino.com (y yo no) es muy similar a Arduino, hay algunas diferencias principales, una que escribió para javascript en lugar de c, se siente un poco más nuevo así que no hay ejemplos, sin embargo, el soporte a través de los foros es excelente y muy útil.

Javascript conoce el tren

El primer obstáculo fue conectarse al tren a través de bluetooth. Esto se puede hacer usando la clase NRF que se envía con el código espruino.

NRF.connect se puede usar para conectarse al tren; sin embargo, su primera necesidad de encontrar la dirección del tren en sí, puede usar NRF.findDevices para obtener esta información

Una vez hecho esto, debe enviar el valor del tren dos al protocolo de enlace con el tren. Para mi tren, este fue "00001623-1212-efde-1623-785feabcd123" seguido de "00001624-1212-efde-1623-785feabcd123", creo. Esto será el mismo para todos los trenes de vapor, pero las otras versiones, es decir, el juego de carga, puede ser diferente.

Una vez que tenga esto, puede conectar el tren usando una función como la siguiente, ¿puede saber cuándo el tren se ha conectado, ya que parpadeará en los faros azules?

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Luego (función (g) {

console.log ("Iniciando la conexión2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (feature) {Characteristic_store = feature; return feature.readValue ();}). then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Las cosas divertidas

Ahora que está conectado al tren, es hora de todas las cosas divertidas, como moverlo hacia adelante, hacer sonidos y encender y apagar la luz. Es un trabajo simple de enviar al tren un valor de preparación, seguido del comando real, es decir

function play_horn () {

console.log ("mensaje =", Characteristic_store); const prepval = new Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (sendvalue);}); }

Puede que tengas que investigar un poco para encontrar otro comando que no sea el que utilicé.

Botones y palancas

El lado físico del control remoto es muy sencillo, cuatro botones (para reproducir sonidos, encender y apagar las luces) y un potenciómetro que se conecta a la palanca para que puedas controlar la velocidad y la dirección del tren.

El botón no necesita resistencia de extracción, en su lugar, puede hacer esto en el código, es decir

pinMode (D15, 'input_pulldown');

Puede conectar el potenciómetro a una de las entradas y luego leer la señal analógica usando el siguiente comando

lectura var = analogRead (D31);

La otra diferencia con el arduino es que esprunio no tiene una configuración y un ciclo. Entonces, en lugar de eso, coloco todos los comandos / disparadores separados en funciones y luego configuro setInterval que se repite cada 100 milisegundos, escucho el botón y luego ejecuto la función requerida cuando se presiona el botón.

if (digitalRead (D15) == 1) {play_horn (); }

Accionar la palanca fue un poco más complicado, ya que quería poder ajustar gradualmente la velocidad, así que primero tuve que enviar el valor analógico para que funcionara.

lectura var = analogRead (D31);

train_direction (lectura * 1024);

Luego, en la función train_direction, dividí el comando en 6 incrementos diferentes según el valor del bote

Todo el camino hacia arriba, le dice al tren que avance a toda velocidad

A mitad de camino, le dice al tren que avance al 50% de velocidad.

Medio, le dice al tren que se detenga

A mitad de camino, le dice al tren que retroceda al 50% de velocidad.

Todo el camino hacia abajo, le dice al tren que vaya a toda velocidad en reversa

es decir

function train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = new Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val {Characteristic_store.writeValue (sendvalue);}); }

El código completo puede estar abajo para el enlace a continuación

Paso 2: el cableado

El cableado
El cableado
El cableado
El cableado

El cableado fue la parte más simple.

Solo consistía en 4 pulsadores conectados a D15, D16, D17 y D18 sin ninguna resistencia de extracción, ya que esto se hizo en el código y 1 resistencia de 10k conectada a D31

Todavía estoy trabajando en la fuente de alimentación, pero actualmente toda la energía proviene de una ruptura micro usb y esto podría conectarse directamente a un banco de energía o un puerto USB.

Paso 3: la construcción

La construcción
La construcción
La construcción
La construcción
La construcción
La construcción
La construcción
La construcción

El control remoto es principalmente de hojas de madera contrachapada A4 de 3 mm, 6 mm o 9 mm, se cortaron en mi máquina CNC, sin embargo, utilizando la plantilla proporcionada, lo haría, aunque no sería imposible hacerlo a mano.

Espero que la plantilla y las fotos le brinden todo lo que necesita para rehacer, sin embargo, hay algunas notas que podrían ayudar

El soporte del botón pulsador de 3 mm es para pegar el botón pulsador, el espacio colocará el botón en el lugar correcto, pero le permitimos acceder a la pata en la parte posterior para que pueda soldar al microchip, en el reverso también puede montar el MDBT42Q usando un poco de pegamento. En el frente, deberá agregar espuma para que los botones reboten un poco cuando los presione hacia abajo, también puede usar resortes

Los botones de 9 mm necesitarán pintura, grabado o algo más del logotipo para mostrar qué botón hace qué

La palanca / mango deberá colocarse en capas, utilicé una clavija de 6 mm para ayudar a alinearlos en todas las posiciones correctas

Recomendado: