lunes, 5 de mayo de 2025

Sega Megadrive Limpieza y puesta a punto

Hace poco ha llegado a mis manos una consola iconica de mi juventud, la Sega Mega Drive

La Sega Mega Drive, junto con su contemporánea Super Nintendo (SNES) fueron las consolas de 16Bits más icónicas de los 90. La nueva consola de Sega se empezó a comercializar en Europa a finales de 1990.

Por suerte con la consola me han llegado 4 cartuchos, el mítico Sonic The Hedgehog, Los Lemmings, Power Ranger Mighty Morphing, y un cartucho 3 en 1 con The revenge of Shinoby, Street of rage, Golden Axe. No está mal para empezar.

Con el pack también me incluían 2 mandos de 3 botones, la fuente de alimentación y un cable de vídeo AV.

Antes de continuar con la limpieza y la experiencia de devolver la juventud a esta pequeña joya de los 90s veamos sus características técnicas, accesorios y periféricos más comunes:

💾 Especificaciones técnicas

  • Procesador: Motorola 68000 (16-bit) a 7.67 MHz.
  • Memoria: 64 KB RAM, 64 KB VRAM.
  • Colores: Podía mostrar 512 colores en pantalla (hasta 64 simultáneos).
  • Resolución: 320×224 píxeles.
  • Sonido: Chip YM2612 (6 canales FM) + PSG (4 canales).
  • Compatibilidad: Zilog Z80 para ser compatible con Sega Master System 

🎮 Accesorios y periféricos

  • Control estándar: Mando de 3 botones (A, B, C) y luego el de 6 botones para juegos como Street Fighter II.
  • Sega CD (Mega CD): Add-on para juegos en CD (1991).
  • Sega 32X: Expansión para juegos 32-bit (1994, fracaso comercial).
  • Sega Mega Drive Mini: Versión mini lanzada en 2019 con 40 juegos preinstalados.

Ahora que ya hemos visto los puntos mas importantes de esta consola vamos con lo que llego a mis manos, como siempre, lo primero fue una buena limpieza exterior, no me gusta andar tocando cosas con tantos años. Una vez limpia tocaba enchufarla a la pequeña TV de tubo ideal para este tipo de cacharreo.

Encendió a la primera!!! Pero la alegría no duro mucho, al probar los otros juegos no daba imagen, volvemos a probar el primero y tampoco...

Saque los bastoncillos y el alcohol isopropilico y le di una buena limpieza a los cartuchos, que dicho sea de paso, les hacia mucha falta, con eso conseguí probar los otros cartuchos que con dificultades, fueron funcionando.

Esto ya da pistas sobre el problema ya que los juegos funcionan, da imagen y sonido. De esta manera podemos casi asegurar que sera un problema de limpieza.

Limpieza total de la Sega Mega Drive:

Como es normal con un aparato con de esta época, la carcasa esta bien pero tiene algún arañazo pero las condiciones son más que aceptable:

Mega Drive frontal
Mega Drive parte posterior

Para iniciar la limpieza, lo primero es retirar los 6 tornillos que hay en la parte posterior:


Aquí, por suerte, ya se podía intuir cual era el problema, en el socket donde se insertan los cartuchos una de las patillas tenía un color feo, verde, muy similar al que tienen las pilas de un mando olvidado en un cajón con las pilas puestas durante años. O más comúnmente llamado sulfatado.


Bien ahora vamos a quitar la placa de protección que hay sobre la placa base de la Mega Drive, para esto tenemos que retirar 7 tornillos, 1 en la parte superior y otros 6 en las diferentes pestañas, como se indica en la siguiente imagen:


Ya tenemos el cerebro de la bestia a la vista el Motorola 6800 el chip de sonido Yamaha YM2612 y un microprocesador Zilog Z80, es curioso que el Z80 esta en muy presente en la tecnología de esta época.


También los chips propios de Sega como el Sega 315-5313 Video Display Processor (VDP) o la SRAM para el Motorla con los chips TC51832SPL-10.

Los últimos tornillos son los que anclan la placa base de la Sega Mega Drive a la carcasa, 6 en total:

A partir de este punto todo lo que le hagas a la consola siguiendo este tutorial (vamos a llamarlo así) queda bajo tú propia responsabilidad

Para la limpieza del socket el vinagre puede ser un gran aliado, aplicando unas gotas lo dejamos actuar 1 minuto y con una brocha fina "rascamos" un poco, pero con delicadeza. Es un metal muy fino y se podría doblar.

Con el socket de los cartuchos limpio.. Toca baño!!! Una de las mejores maneras de limpiar cualquier placa. Lo mejor es usar jabón, agua y una brocha:


Le damos una buena limpieza con la brocha y jabón y lo enjuagamos con agua limpia, hecho esto lo dejamos secar. Esta es la parte más critica.

La placa tiene que estar completamente seca y además sin rastro de humedad. Por suerte para mi, dispongo de una buena cantidad de sol que hace el secado mucho más rápido, en este caso, la placa estuvo entre 2 y 3 horas al "solano".

Después de esto, con un secador de pelo le dimos un repaso a partes como el interruptor, parte baja de los integrados o donde está el circuito de RF.

Si no estamos seguros de que la placa este totalmente seca y si humedad, mejor esperar al día siguiente para seguir con el montaje, mientras puedes limpiar las carcasas y piezas de plástico.

Con todas las pieza limpias realizamos el proceso inverso al desmontaje de la Sega Mega Drive descrito más arriba.

Para darle un poco más de brillo podemos pasarle un trapo con algún limpiador de plásticos tipo salpicadero de coche.

Hecho todo esto, conectamos alimentador, cable AV, monitor encendido, e inserto el primer cartucho de Sonic y arranca sin problemas, inserto los demás y todos funcionan a la primera!!!

Una consola que daba algunos fallos con la carga de los cartuchos que ahora funciona como si fuera nueva.

Os dejo un enlace donde encontre información sobre los chips y como se comunican entre ellos. Me pareció muy curioso el hecho de tener un Motorola 6800 (16bits)y un Zilog Z80 (8bits) trabajando conjuntamente para favorecer la compatibilidad con versiones anteriores y manejar la entrada de audio y controlador

La web se llama Retrosix y tiene mucha información técnica de muchas consolas.

Ahora toca disfrutar de esta magnifica Sega Mega Drive, Saludos!!!

miércoles, 30 de abril de 2025

DFPlayer Mini Bluetooth 2025

Muy buenas a todos!!!

Hace ya un tiempo escribimos sobre estos módulos para reproducir MP3 llamados DFPlayer Mini. Para hacer un pequeño resumen, este módulo es capaz de reproducir archivos de música mp3 tanto de manera autónoma con unos pulsadores como con una conexión serial con algún dispositivo tipo Arduino, ESP8266 o ESP32, por poner algunos ejemplos.

El DFPlayer Mini cuenta además con un amplificador de 3W y 6 niveles de ecualización entre otras características que puedes ver aquí.

Para el programa que presento hoy DFPlayer Mini Bluetooth for Android, vamos a usar el ESP32, siendo más específicos un DOIT Esp32 DevKit v1, pero el código nos puede servir para cualquier ESP32.

La elección de este microcontrolador es, por supuesto, que lleva el Bluetooth integrado. Esto nos ahorra material, tiempo y dinero.


Diferencias con los programas anteriores:

La principal diferencia con los programas anteriores es el uso de la librería de DFRobot, DFRobotDFPlayerMini. El cambio se debe a que la que usábamos anteriormente: DFPlayer-Mini-mp3, (también del mismo autor) esta descontinuada.

Por otra parte DFPlayer Mini Bluetooth for Android ha tenido un evidente lavado de cara y se han añadido las nuevas funciones de la nueva librería. 

 


Las conexíones del módulo utilizamos Tx2 y Rx2 que corresponden a los pines Gpio 17 y Gpio 16 respectivamente para la comunicación con el módulo DFPlayer y el pin Gpio 19 para la función busy.

La función busy es imprescindible para detectar el final de la canción, si no, el módulo no sabe cuando tiene que pasar a la siguiente.

Problemas con reinicios: Si el módulo no tienen una buena alimentación puede dar problemas en el momento de, por ejemplo, subir el volumen al máximo. Esto hará que el módulo DFPlayer Mini se reinicie emitiendo un sonido un poco desagradable

Aquí están los programas para probar el módulo DFPlayerMini:

Arduino:

Descargar DFPlayerMiniBluetooth desde GitHub

Android:

Descargar DFPlayer Mini BT for Android desde Play Store

Saludos!!!

lunes, 14 de abril de 2025

Amstrad CPC 464 Reparación parte 1

Muy buenas a todos y todas!!!

Hoy traigo la segunda adquisición de Amstrad: El Amstrad CPC 464.

Antes de empezar con mis idas y venidas con este ordenador vamos a ver sus especificaciones técnicas:

Como su hermano mayor, el CPC 6128, el CPC 464 cuenta con procesador Zilog Z80. También con una velocidad de 4Mhz de los cuales son efectivos 3,3Mhz.


Zilog Z80 en Amstrad CPC 464

Su memoria RAM es de 64Kb (La mitad que el CPC 6128).

Su memoria ROM es de 48Kb.

Su Controlador de vídeo es un Amstrad Gate-Array 40010 y un controlador de gráficos 6845 CRTC. Esto nos permite tener 3 diferentes modos de texto y 3 modos gráficos:

  • Los 3 modos de texto:
    • 20x25 caracteres
    • 40x25 caracteres
    • 80x25 caracteres
  • Los 3 modos gráficos:
    • Modo 0: 160x200 en 16 colores
    • Modo 1: 320x200 en 4 colores
    • Modo 2: 640x200 en 2 colores

Otras particularidades de la máquina son:

  • Paleta de 27 colores.
  • Unidad de casete integrada, con 2 velocidades, 1000 y 2000 baudios.
  • Conectores para monitor RGB, impresora Centronics, joysticks y salida de audio.
  • Chip de sonido General Instrument AY-3-8912, con 3 canales de sonido y un canal de ruido blanco.

Amstrad CPC Locomotive Basic 1.0

Mi Amstrad CPC 464

Lo adquirí en una web de cosicas de segunda mano con un estado "En condiciones aceptables".. Spoiler: No eran tan aceptables.

Por suerte, su primera conexión fue exitosa, Una pantalla azul casi identica a la que sale en CPC 6128. Hasta aquí todo bien.

Ahora empiezan los problemas: Al pulsar una tecla... nada... al pulsar otra.. nada... EL TECLADO NO FUNCIONA y esto no me lo había comentado el vendedor...

Tocaba destripar al paciente.

Primero tenemos que retirar los 6 tornillos que están en la parte posterior del teclado y con esto ya tenemos separadas las carcasas. 


 

Separamos poco a poco ya que hay cables conectados entre las dos carcasas, el cable del teclado, que son dos conectores de plástico y El conector que sale de la unidad de cinta y va hacia la placa.

Hecho esto podemos ver la placa del Amstrad CPC 464:


Primera misión: Encontrar el fallo:

La parte que va dedicada al teclado está en la parte izquierda de la placa. No ha sido difícil encontrar el fallo: La Membrana esta rota y faltan de algunos muelles que presionan las membranas.

Aquí falta algo...

Según tengo entendido gracias a este magnifico vídeo de Manuel Cuenca llamado Reparación Amstrad CPC 472 de Juanan, no enciende, fallo parcial de teclado y sin sonido. en su canal de Youtube: "Manuel Cuenca (MMChip)".

Aunque no es especifico para el Amstrad CPC 464, nos puede servir como una excelente guía para detectar el fallo. En mi caso me centre en el minuto 5:00 que es donde explica como probar que la placa este correctamente haciendo unos puentes entre los diferentes puntos del conector CP002. Haciendo esto comprobé que aprecian letras y números.

Podemos comprobar esto con un puente entre los pines 9 y 19 en el conector CP002:

Esta combinación activa la tecla "intro", de esta manera descartamos que sea la placa del CPC la que pueda tener algún integrado en mal estado.

En la siguiente imagen están todas las combinaciones de teclas tal y como viene descrito en la pagina 11 del Service Manual (en Ingles):


Pincha en la imagen para agrandar.

Segunda misión: Encontrar repuestos.

Esta es la parte mas difícil hasta ahora, encontrar repuestos... y para la membrana nada menos!!! Navegando por diferentes Webs podemos encontrar algunas alternativas. Pero antes de comprar mejor tener la mayor información posible, así que recurrí otra vez al canal de Manuel Cuenca quien, desde un principio se ofreció a echarme una mano con mi pequeña empresa de arreglar esta pequeña joya.

La solución ha venido de la mano de "Retro Fuzion", una web situada al sur de Australia dedicada a repuestos de Commodore, Atari, Amiga y alguno más.

Es curioso que siendo un aparato de origen Ingles, los únicos que tengan este tipo de repuestos sea el sur de Australia.

Bien!! hasta aquí la primera parte, continuaré con la entrada cuando reciba el repuesto y lo ponga en la máquina.

Saludos Retro!!!

Repuesto para membrana Amstrad CPC 464 de Retro Fuzion

Manual de mantenimiento CPC 464 en Ingles.

Manual de usuario CPC 464 en Español.

Guía de usuario CPC 464 en Español.

Manual de referencia BASIC en Español.

miércoles, 2 de abril de 2025

Geo6Mv2 GPS for Android

Muy buenas a todos!!!


En este Blog ya hemos visto usar el módulo NEO6MV2 GPS en dos modos diferentes, NEO6MV2 GPS serial y representando la ubicación en un programa escrito en Python y OpenStreetMaps.

Pero ahora toca salir al exterior y probar el el modulo NEO6Mv2, para esto tenemos Geo6Mv2 for Android un pequeño programa para teléfonos Android con el que nos podemos conectar vía Wifi y ver los datos recibidos en nuestro terminal Android.


Además podemos marcar los puntos que necesitemos y la misma aplicación trazará una linea entre los diferentes puntos.

Configuración de Geo6Mv2:


En su configuración podremos cambiar ciertos parámetros como:

  • Use Marks: Opción para usar marcadores sobre la pantalla.
  • Big Icon mark: Icono de marcación grande o pequeño.
  • Short Mark description: Para cambiar el titulo que aparecera en los marcadores
  • Minimun distance to update: Distancia mínima a la que el sensor actualizará la posición. Ideal para mejorar la precisión entre puntos. Si la última posición es mayor a ese valor se creará un nuevo punto en el mapa.
  • Custom zoom: Zoom con el que se inicia el programa y cualdo se pulse sobre el botón "Centrar.
  • Show data input: Muestra en la pantalla principal los datos que recibe directamente desde el módulo NEO6MV2.
  • Show coordinates with one tap: Para mostrar las coordenadas al pulsar sobre el mapa.
  • Start point: Latitud y longitud en los que aparece el mapa al iniciar el programa.

También podemos copiar esas coordenadas en el portapapeles y copiarlas donde queramos. Para esto haremos una pulsación larga sobre las coordenadas que aparecen en la parte inferior de la pantalla principal:





Con una interfaz sencilla capaz de mostrar todos los datos recibidos por este sensor de posicionamiento.

La librería que se utiliza es "TinyGPSPlus.h" de Mikal. La librería TinyGPSPlus se puede descargar desde el mismo gestor de bibliotecas del que dispone el IDE de Arduino.

Con la librería instalada, descargamos el programa para el ESP8266 geo6mv2-for-android desde GitHub. En este caso la placa que vamos será un NodeMCU 1.0, aunque puede servir cualquier ESP8266 al que le podamos añadir una entrada serial extra con la librería "SoftwareSerial.h". Este es el diagrama de conexiones.

Recuerda que los pines D3(tx) y D4(rx) corresponden a los GPIO 2(tx) y 0(rx). Esto suele crear confusión a la hora de definir los pines. Revisa la hoja de datos de tu placa para evitar posibles errores.

Configuración Geo6mv2-for-android.ino

Unicamente tenemos que configurar la conexión wifi a la que nos vamos a conectar completando los parámetros YOUR_SSID y WIFI_PASSWORD.


const char* ssid = "YOUR_SSID";
const char* password =  "WIFI_PASSWORD";

  • Wifi en red local
  • Android en modo punto de acceso (AP)

Red Local:

Este es el router wifi o punto de acceso que tenemos normalmente en casa, el inconveniente es que solo nos podemos mover en el rango que nos permita el router. En este caso YOUR_SSID y PASSWORD serán las mismas que utilizas para conectar cualquier dispositivo Wifi.

Android en modo punto de acceso (AP):


Esta es la mejor opción para exteriores. Se encuentra en la configuración del propio teléfono, su acceso dependerá de la versión de Android que estemos usando.

Ya en la pantalla de configuración nos muestra el SSID y pulsando sobre Hotspot password nos mostrará el password de la red.

Copiamos estos datos en YOUR_SSID y WIFI_PASSWORD y ya tenemos los datos de la red para exteriores.

Nota:

En algunos modelos de Android es necesario desactivar el Wifi "normal" antes de empezar con la conexión con Arduino

Subir el programa al ESP8266 NodeMCU:

Si ya has configurado la red wifi el último paso es subir el programa al ESP8266 seleccionando el puerto donde este conectado COM X para Windows o /dev/ttyUSBX si usas Linux.

Con la placa y el puerto seleccionado, pulsamos sobre el botón "cargar".

En cualquiera de los dos casos, red local o punto de acceso, cuando abrimos el monitor serial del IDE de Arduino nos aparece la IP a la que nos tenemos que conectar desde el dispositivo Android: 


Primera conexión

La primera conexión que realiza el módulo puede demorar más de un minuto dependiendo de la cobertura que tengamos. Recuerda que si estas en un interior poner el módulo cerca de una ventana para mejorar la recepción.

Abrimos el programa que ya tenemos descargado en nuestro dispositivo Android y pulsamos sobre el menú en la opción "Start Wifi y se abrirá la siguiente pantalla: 

 


Y pulsamos sobre el botón "Connect!

Ahora solo hay que esperar a que el módulo Neo6MV2 tenga los suficientes satélites para que podamos fijar la posición. 


Como al iniciar el programa aparecemos en Madrid, este valor se puede cambiar para iniciar en la localización que más nos guste. Pulsamos sobre "Add mark" para fijar la posición que recibimos desde el ESP8266 y seguidamente pulsamos "Center" para central la última marcha creada.

Podemos crear todas las marcas que necesitemos y al pulsar sobre ellas si abrirá una ficha con los datos de la posición.

Aquí tienes los programas para probar el módulo NEO6MV2 GPS:

Descargar Geo6MV2 GPS for Android desde GitHub Arduino

Descargar Geo6MV2 for Android desde Play Store Android

Saludos!!!

sábado, 8 de febrero de 2025

MPU6050 Acelerómetro y Giroscopio con Arduino

Muy buenas a todos!!!

Vamos a ver que funcionalidades tiene el sensor MPU6050 el cual integra un acelerómetro de 3 ejes un giroscopio de 3 ejes y un sensor de temperatura, aunque este último no es muy preciso.

Antes de empezar vamos a destacar algunos de los términos que se usan con este sensor:

¿Que mide el acelerómetro?

Como su nombre indica, un acelerómetro mide la aceleración que es una magnitud vectorial, es decir, magnitud el cambio de velocidad, y la dirección, hacia donde se realiza el cambio.

A grandes rasgos hay tres tipos de aceleración:

  • Aceleración positiva: La velocidad de un objeto aumenta en el tiempo.
  • Aceleración negativa: La velocidad de un objeto disminuye con el tiempo.
  • Aceleración centrípeta: La dirección cambia a una velocidad constante.

¿Que mide el giroscopio?

Un giroscopio es un dispositivo que mide la velocidad angular o tasa de rotación de un objeto en los ejes X, Y y Z. La velocidad angular se expresa en grados por segundo (°/s) o radianes por segundo (rad/s).

El MPU6050, está basado en tecnología Micro-Electro-Mechanical Systems más conocido como MEMS . Esta tecnología utilizan un pequeño elemento vibrante que, al girar, experimenta una fuerza llamada efecto Coriolis. Esta fuerza es detectada y convertida en una señal eléctrica, que luego se traduce en una medida de la velocidad angular. Esto nos permite detectar rotaciones en cualquier dirección.

También podemos configurar el rango de medición teniendo en cuenta que rotaciones más rápidas equivalen a una menor precisión.

El rango de medición es configurable con los siguientes valores:

  • ±250 °/s
  • ±500 °/s
  • ±1000 °/s
  • ±2000 °/s

Resumen de aceleración y giroscopio en el contexto del MPU6050

El acelerómetro del MPU6050 mide la aceleración en los ejes X, Y, Z. Esto incluye:

  • La aceleración debida al movimiento por ejemplo, si mueves el sensor.
  • La aceleración debida a la gravedad 9.8 m/s² hacia el centro de la Tierra.

El acelerómetro del MPU6050 mide la velocidad angular en los ejes: X, Y y Z.

  • La velocidad angular se expresa en grados por segundo (°/s) o radianes por segundo (rad/s).

Diferencia entre giroscopio y acelerómetro


  • Acelerómetro: Mide la aceleración lineal (cambios en la velocidad en línea recta) y la inclinación respecto a la gravedad.
  • Giroscopio: Mide la velocidad angular (cambios en la rotación o giro).

La combinación de ambos sensores trabajando juntos para proporcionan una imagen completa del movimiento de un objeto. Por ejemplo:

  • El acelerómetro puede decirte si un objeto está inclinado.
  • El giroscopio puede decirte si el objeto está girando y a qué velocidad.

Conexiones MPU6050:

  • VCC: Alimentación +.
  • GND: Alimentación - o masas.
  • SCL: Serial Clock pin para la interfaz I2C.
  • SDA: Serial Data pin para la interfaz I2C.
  • XDA: I2C externo Serial Data para conectar sensores externos como un magnetómetro.
  • XCL: I2C externo Serial clock.
  • AD0: Cambia de dirección para evitar conflictos: GND -> Dirección 0X68 o +3.3V -> Dirección 0x69.
  • INT: Pin de interrupción. El MPU6050 puede programarse para generar interrupciones al detectar ciertos gestos o vibraciones.

Librerías para MPU650:




#include <Wire.h>

// Dirección del sensor
const int MPU6050_addr=0x68;


int16_t AccX, AccY, AccZ; 
int16_t GyroX, GyroY, GyroZ;
int16_t Temp;

void setup(){
  
  Wire.begin();
  Wire.beginTransmission(MPU6050_addr);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  
  Serial.begin(115200);
}

void loop(){
  Wire.beginTransmission(MPU6050_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU6050_addr,14,true);
  
  AccX=Wire.read()<<8|Wire.read();
  AccY=Wire.read()<<8|Wire.read();
  AccZ=Wire.read()<<8|Wire.read();
  Temp=Wire.read()<<8|Wire.read();
  GyroX=Wire.read()<<8|Wire.read();
  GyroY=Wire.read()<<8|Wire.read();
  GyroZ=Wire.read()<<8|Wire.read();
  
  Serial.print("AccX = "); Serial.print(AccX);
  Serial.print(" || AccY = "); Serial.print(AccY);
  Serial.print(" || AccZ = "); Serial.print(AccZ);
  Serial.print(" || Temp = "); Serial.print(Temp/340.00+36.53);
  Serial.print(" || GyroX = "); Serial.print(GyroX);
  Serial.print(" || GyroY = "); Serial.print(GyroY);
  Serial.print(" || GyroZ = "); Serial.println(GyroZ);
  delay(100);
}


Una vez que subamos el programa al microcontrolador, en el monitor serial, tendremos la siguiente salida:


AccX = 13432 || AccY = -792 || AccZ = 9780 || Temp = 44.06 || GyroX = 911 || GyroY = -10038 || GyroZ = -5514


Problemas con las librerías


Mientras he realizado las pruebas he tenido algunos problemas con las librerías, por lo que al final he usado la obtención de datos usando unicamente la librería "Wire.h". Con estos datos podemos hacer casí cualquier sistema que necesite conocer su posición, movimiento y posición angular tales como...

  • Drones: Para estabilizar el vuelo y detectar cambios de orientación.
  • Robótica: Para controlar la dirección y el movimiento de robots.
  • Realidad virtual: Para rastrear movimientos de la cabeza o manos.
  • Navegación: En sistemas de navegación inercial para vehículos.

Hoja de datos del MPU6050


Aquí tienes otros enlaces de este blog relacionados con sensores y Arduino:

Esp8266 y adxl345 acelerómetro de 3 ejes, lectura serial

Arduino: Grabación y lectura de Infrarrojos (IR) y control de 4 reles


Saludos!!

miércoles, 18 de diciembre de 2024

La maqueta de Infotronikblog

Muy Buenas Arduineros y Arduineras!!!

Hace ya un tiempo, cuando empecé a programar, descubrí uno de los programas que más alegrías me ha dado desde que me dedico a esto. La central DCC++...

Hoy traigo al blog lamaquetade.infotronikblog.com una web dedicada al modelismo ferroviario y a la central DCC creada con Arduino.

Aunque no solo esta dedicada a la electrónica sino que también podemos encontrar trucos para la decoración de maquetas como un aplicador de césped electroestático o software dedicado al modelismo ferroviario como Rocrail o JMRI

Aunque el mayor premio se lo llevan la librería para el control de trenes DCC llamada DCCpp LMD y el software para Android con el que controlar esta y otras centrales DCC llamado DCCpp Android Cab.

Veamos algo más sobre este software:

La librería DCCpp LMD


DCCpp LMD es una librería que incluye todo lo necesario para montar una central DCC (Digital Command control) desde las funciones básicas hasta tener pantalla, comunicación Bluetooth y Wifi.

Características principales:

  • Flexibilidad: Una central DCCpp LMD es altamente configurable, lo que permite adaptarla a las necesidades específicas de cada maqueta. Puedes personalizar la configuración de las locomotoras, los accesorios, sensores y los diferentes aspectos de las operaciones de tu trenes.
  • Escalabilidad: DCCpp LMD cuenta con una amplia variedad de módulos y accesorios disponibles, como módulos S88 para detectar la ocupación de vías, módulos de radiofrecuencia para control remoto y mucho más. Esto te permite ampliar las funcionalidades de tu maqueta según tus necesidades.
  • Autonomía: Aunque la comunicación serial es su base, la central DCCpp LMD puede operar de manera autónoma gracias a la adición de una pantalla OLED, un teclado y un encoder rotatorio. Esto te permite controlar tus trenes directamente desde la central sin necesidad de una ordenador o teléfono inteligente.
  • Comunicación serial: Al comunicarse a través de serial facilita su integración con otros dispositivos y sistemas. Esto te permite conectar la central a un ordenador, un Arduino o cualquier otro dispositivo con capacidad serial.
  • Automatización: La DCCpp LMD se puede programar para realizar secuencias de comandos automáticas, como la simulación de horarios de trenes o la activación de señales.

Y estas son las opciones principales que nos ofrece la central DCCpp LMD con respecto a las locomotoras:

  • Direcciones de locomotoras de 2 y 4 bytes.
  • Velocidad de 128 pasos.
  • Programación en pista principal.
  • Control simultaneo de múltiples locomotoras.
  • Control de todas las funciones de cabina F0-F28.
  • Activación y apagado de todas las direcciones de accesorios 0-2048.
  • Programación en vía de programación.
  • Pantalla Oled 128*64 I2c.
  • Puertos seriales extras.

Ahora que ya hemos visto sus características y funciones principales...

¿Porqué existe DCCpp LMD y por que la uso?

La central DCC+ Base Station creada por Gregg E. Berman hace ya más de 9 años, revoluciono de una manera económica y sencilla el uso de las locomotoras que tienen incorporado un decodificador DCC

Estas centrales de tipo comercial, por lo general, tienen un coste elevado que añadido al coste de los decodificadores no hacía que fuera un entretenimiento asequible al bolsillo de cualquier aficionado.

Después de la central DCC++ Base Station todo eso cambio. Era relativamente sencillo conseguir una placa Arduino UNO y un MotorShield, podías encontrar los dos componentes en paginas webs por menos de 10€.

Visto esto y con mi consabida afición a los trenes en miniatura, ya sabes.. - ¿que hay mejor que un tren? - Dos trenes. decidí hacerme con todas las piezas y montar este cacharro y ver si daba lo que prometía... y vaya si lo hizo!!! Locomotoras y accesorios funcionaban al 100%, incluso se le podía añadir un sensor de consumo para prevenir cortocircuitos

No pude resistir el conocer a fondo como funcionaba, cuales eran sus entresijos, como recibía los datos con la comunicación serial y los distribuía entre las diferentes funciones así que termine empapándome de todo lo relacionado con esta central.

Finalmente llego a mi navegador de la mano de LocoDuino el mismo programa, pero en formato librería y paso a llamarse DCCpp. Nunca había tocado una librería... fue otro retro más que tenia que resolver. 

Después de un tiempo había añadido la pantalla Oled y el uso de los demás puertos seriales que tiene disponibles la placa Arduino MEGA. Por que si, para esta central, la placa que mejor se adapta tanto a el hardware como al software es la  placa Arduino MEGA. Sobre el 2020 la librería DCCpp dejo de actualizarse siendo su última versión la número 1.4.2. Una autentica pena la verdad.

Después de esto o incluso mientras otras centrales DCC surgieron de esta idea, la más destacada ahora mismo es la DCCEX. La rama americana de esta central. Ahí me perdí... Es un proyecto enorme en el que contribuyen muchas personas con mucho código que, si bien cubren las necesidades de muchos otros usuarios, para mi eran excesivas. Realmente no necesitaba tanto.

Volví a mi proyecto de la librería DCCpp modificada y pase a llamarla DCCpp LMD. La librería desde la que parte el proyecto, la V1.4.2, ya tiene todas las funciones que necesito, además de ser compatible con el software de gestión de trenes. Partiendo de esa base, fui añadiendo diferentes funciones y funcionalidades, mejorando el código en la medida de lo posible y adaptándola a mi maqueta.

Puedo programar secuencias de eventos, monitorear el consumo de corriente en tiempo real, detección con diferentes tipos de sensores, comunicación Bluetooth y wifi. Esto añadido al programa Rocrail, hace que me pueda pasar tardes enteras "jugando" con los trenes que tienen instalado un decodificador DCC,. Por desgracia no todas mis pequeñas cuentan con uno de estos decodificadores.

Si te gustan los trenes el modelismo y el sistema DCC y quieres descubrir como Arduino es capaz de adaptarse a cualquier entorno visita Lamaquetade.infotronikblog.com

Pantalla de llegada de trenes Adif - Lamaquetade.infotronikblog

Descargar librería DCCpp LMD para el control de locmotoras desde GitHub.

Decodificadores DCC realizados con Arduino en GitHub

Espero que te guste el contenido sobre Arduino y trenes y sobre todo que os guste la web, Saludos y felices fiestas!!!