viernes, 13 de junio de 2025

Raspberry Pi sensor DHT11 y DHT22

DHT11
Uno de los sensores más populares utilizados en conjunto con la Raspberry Pi es el DHT11, un sensor de humedad y temperatura de bajo costo y fácil de usar.

¿Qué son los sensores DHT11 y DHT22?

Los sensores DHT11 y DHT22 son dispositivos electrónicos que mide la temperatura y la humedad relativa del aire. Es un sensor digital, lo que significa que los datos que proporciona son en formato digital y pueden ser fácilmente leídos por un microcontrolador como la Raspberry Pi.

DHT22


A pesar de su bajo costo, el DHT11 más que el DHT22, son bastante precisos y fiables, lo que los convierte en una excelente opción para una amplia gama de aplicaciones.

El DHT11 esta más indicado para Proyectos educativos o prototipos simples y ambientes interiores controlados como pueden ser habitaciones, oficinas.

Sin embargo el DHT22 será más útil en proyectos de tipo invernadero, neveras y exteriores.

Funciones del Sensor

  • Medición de temperatura
  • Medición de humedad
  • Salida digital
  • Bajo consumo
  • Fácil de usar

Comparativa: DHT11 vs DHT22

Característica DHT11 DHT22
Precisión (Temp) ±2°C ±0.5°C
Rango (Temp) 0°C a 50°C -40°C a 80°C
Precisión (Hum) ±5% RH ±2% RH
Rango (Hum) 20% a 80% RH 0% a 100% RH
Frecuencia de Muestreo 1 Hz 0.5 Hz
Resolución 1°C / 1% RH 0.1°C / 0.1% RH
Consumo Eléctrico 0.5 - 2.5 mA

Instalación y Configuración en Python:

Para utilizar los sensores DHT11 y DHT22 con una Raspberry Pi, necesitaremos un entorno de programación adecuado y una biblioteca para interactuar con el sensor. Python es uno de los lenguajes de programación más populares para la Raspberry Pi, y existen varias bibliotecas que facilitan la lectura de datos del DHT11.

Necesitamos instalar la biblioteca Adafruit. Ahora en un terminal de tu Raspberry Pi y ejecuta el siguiente comando para instalar la biblioteca adafruit-circuitpython-dht:


pip3 install adafruit-circuitpython-dht


Esta biblioteca proporciona una manera sencilla para leer datos de los sensores DHT11 y DHT22.

Ahora tenemos que conectar el sensor DHT a a la Raspberry Pi. Para esto identificaremos los pines de cada sensor y los conectamos siguiendo las serigrafias que vienen en el sensor:

  • Data: al GPIO21 (pin40)
  • VCC: al cualquier pin 5V
  • GND: al cualquier pin GND

Ahora en la terminal creamos un nuevo archivo Python llamado "dht11_test.py y escribimos el siguiente código que nos mostrará en pantalla los datos de temperatura y humedad del DHT11:



# Código para lectura del sensor DHT11
import time

import board

import adafruit_dht

#Inicia el dispositivo DHT con el pin de datos conectado a:
dhtDevice = adafruit_dht.DHT11(board.D21)

# Si no deseas usar pulseio puedes usar DHT11 use_pulseio=False
# Esto puede ser necesario en ordenadores de tipo Raspberry Pi con Linux
# Pero no funcionará en CircuitPython
# dhtDevice = adafruit_dht.DHT11(board.D18, use_pulseio=False)

while True:
    try:
        # Imprime los valores en el puerto serie
        temperature_c = dhtDevice.temperature
        temperature_f = temperature_c * (9 / 5) + 32
        humidity = dhtDevice.humidity
        print(f"Temp: {temperature_f:.1f} F / {temperature_c:.1f} C    Humidity: {humidity}% ")

    except RuntimeError as error:
	# Los errores ocurren con bastante frecuencia, los DHT son difíciles de leer, 
    simplemente sigue adelante.

        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

    time.sleep(2.0)

Guarda el archivo como dht11_test.py y ejecútalo desde la terminal:


python3 dht11_test.py
o
python3 -m dht11_test


Para el caso del DHT22 es exactamente igual menos la linea "sensor = adafruit_dht.DHT11" que tenemos que cambiar por "sensor = adafruit_dht.DHT22" y se ve así:


# Código para lectura del sensor DHT22
import time

import board

import adafruit_dht

#Inicia el dispositivo DHT con el pin de datos conectado a:
dhtDevice = adafruit_dht.DHT22(board.D21)

# Si no deseas usar pulseio puedes usar DHT22 use_pulseio=False
# Esto puede ser necesario en ordenadores de tipo Raspberry Pi con Linux
# Pero no funcionará en CircuitPython
# dhtDevice = adafruit_dht.DHT22(board.D21, use_pulseio=False)

while True:
    try:
        # Imprime los valores en el puerto serie
        temperature_c = dhtDevice.temperature
        temperature_f = temperature_c * (9 / 5) + 32
        humidity = dhtDevice.humidity
        print(f"Temp: {temperature_f:.1f} F / {temperature_c:.1f} C    Humidity: {humidity}% ")

    except RuntimeError as error:
	# Los errores ocurren con bastante frecuencia, los DHT son difíciles de leer,
    simplemente sigue adelante.

        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

    time.sleep(2.0)

Guardamos el archivo como dht22_test.py y ejecutamos desde la terminal:


python3 dht22_test.py
o
python3 -m dht22_test

El código de este ejemplo llamado dht_simpletest.py lo podemos encontrar en el repositorios de Adafruit_CircuitPython_DHT


Solución de errores:

uno de los errores que más comunes es el uso de la librería "board". Muchas veces podemos recibir el siguiente mensaje:


    import board
ModuleNotFoundError: No module named 'board'

O también este:


    dhtDevice = adafruit_dht.DHT11(board.D21)
                                   ^^^^^^^^^
AttributeError: module 'board' has no attribute 'D21'

Nos hace referencia a la librería board que se instala normalmente con "pip install board". Pero al estar haciendo uso de Adafruit CircuitPython necesitamos la librería que esta asociadad a Adafruit llamada "Adafruit-Blinka"

Esta librería instalara "board" y otras librerías como "pyserial" o "pyusb".

En el caso de que haya un error nos puede aparecer este mensaje:


Unable to set line 18 to input


Si aparece este error, nos hace referencia al pin, que o bien no esta activo o no es el puerto correcto donde esta conectado el sensor DHT 11.

Aplicaciones del DHT11 y Raspberry Pi

La combinación de Raspberry Pi y DHT11 o DHT22 ofrece un sinfín de posibilidades para proyectos de IoT. Algunas de las aplicaciones más comunes incluyen:

  • Estaciones meteorológicas caseras: Crea una estación meteorológica personalizada para monitorear la temperatura y humedad en tu hogar o jardín.
  • Sistemas de control de invernaderos: Automatiza el riego y la ventilación de tu invernadero en función de las condiciones ambientales.
  • Monitoreo de condiciones ambientales: Utiliza el sensor para monitorear la temperatura y humedad en espacios cerrados, como oficinas o almacenes.
  • Proyectos de domótica: Puedes integrar el sensor en sistemas de domótica para crear ambientes más cómodos y eficientes.
  • Prototipos de IoT: Utilizalos como punto de partida para desarrollar prototipos de dispositivos IoT más complejos.

Conclusión:

El sensor DHT11 es una herramienta invaluable para cualquier persona interesada en proyectos de electrónica y programación. En combinación con la Raspberry Pi, ofrece una plataforma potente y flexible para crear una amplia variedad de aplicaciones.

Con este artículo, has adquirido los conocimientos básicos para comenzar a trabajar con el DHT11 y la Raspberry Pi. ¡Anímate a experimentar y crear tus propios proyectos!

Instalación librería Adafruit-Blinka

Librería adafruit-circuitpython-dht

Aquí tienes otros enlaces de este blog relacionados con Raspberry Pi:

Programa de ejemplo de este articulo en GitHub

Raspberry Pi 3 Oled i2C

Raspberry Pi PWM

Poner Ip fija en Raspberry Pi


Un saludo a todos!!

domingo, 8 de junio de 2025

Raspberry Pi 3B+ Alimentación con LM2590

Muy buenas a todos los amantes de la informática!!!

Hace poco hemos desempolvado unas Raspberry Pi (2x3B + 1x3B+) estaban montadas en un rack y les fui dando diferentes usos hasta que ya los deje un poco de lado por que casi siempre había problemas de alimentación.

Con ellas hemos visto algunos proyectos como la pantalla oled I2C o el uso del PWM para controlar el ventilador de la Raspberry Pi.

En mucho foros y paginas de internet hay referencia al temido mensaje "low-voltage". Este error es debido a que el chip que se encarga de entregar la energía a la Raspberry Pi detecta un voltaje por debajo de los 4.65V.

En este caso usaba una fuente de 3A que iba de maravilla cuando se estaba usando solo una de ellas y aún así al conectar un disco duro sata con conexión USB. En este punto la Raspberry Pi 3B+ arrancaba con el dichoso mensaje pero el disco duro no, y muchas veces ni si quiera arrancaba.

Este mensaje aparece al llegar a los 4.65V. Sabiendo esto medimos los pines +5V y GND del puerto GPIO y si, las sospechas se confirman, incluso sin el HDD el voltaje nunca llegaba a los 5V.

Entre las diferentes soluciones pasan por un buen cargador y un buen cable de alimentación. para este caso se decidió poner una fuente de alimentación de PC Usando la salida de 5V que puede entregar hasta 30A lo que es más que suficiente para alimentar las 3 Raspberry del proyecto.

Tampoco funciono...

Para este punto la frustración era máxima. Pero entro en juego una placa basada en el integrado LM2590.

¿Que es el LM2590?

El LM2590 es un circuito integrado regulador de voltaje. Y voltaje es lo que le falta a la Raspberry. Lo más interesante es el potenciómetro con el que podemos regular hasta el voltaje que queramos. Estas son los valores de entrada y salida así como la corriente capaz de entregar:

  • Tensión de entrada: 4V - 40V
  • Tensión de salida: 1.25V - 37V
  • Corriente máxima: 3A

Así que si medimos en los puertos USB 4.80V, con el potenciómetro podremos regular esos 0.20V que nos hacen falta.

Esto no es una regla de tres, para poder conseguir el voltaje adecuado hay que tener en cuenta que solo podemos subir a un máximo de 5.3V según las especificaciones

Para esta Raspberry Pi 3B+ lo he dejado en 5.15V aunque el display muestre 5.25V. También hay que tener en cuenta que este LM2590 alimenta al HDD mecánico y, sobre todo en el arranque, necesita un extra de potencia.

Por el momento he conectado la alimentación de la Raspberry y el HDD así:


Y en la siguiente fotografía se puede ver la medición con el voltímetro del voltaje que sale hacia los dispositivos:

Como se observa son diferentes dependiendo de si tienen carga o no, en fotografía superior se ve como marca los 5.30V pero realmente salen 5.20V.

Al aplicar la carga (RPI 3B+ + HDD + ventiladores) ese valor fluctuá un poco durante el arranque, pero una que ha cargado el sistema y esta en reposo, el voltaje se mantiene a 5.25V que marca el display y los 5.15V que tenemos realmente si medimos con el voltímetro.


Conclusión:

Y ya está! Después de tantos quebraderos de cabeza el modulo LM2590 es la solución que mejor ha funcionado después de varias pruebas entre cargadores y fuentes de PC.

Estamos pendientes de recibir un par de módulos más para las otras 2 Raspberry Pi 3B que están sin funcionar por el mismo problema.

Y bueno hasta aquí hemos llegado esta semana solucionando este pequeño pero insufrible problema "Low Voltage" que estaban sufriendo las Raspberry.

Esto es aplicable a casi todas las Raspberry Pi, tanto para 3 como 4, aunque para esta ultima no hemos realizado ninguna prueba ya que no tenemos ninguna disponible. Pero en casi todos los artículos y foros en los que se ha comentado, parecen tener el mismo problema.

Con esto no queremos decir que las Raspberry tengan ningún problema, pero imagino que intentamos usar cosas que tenemos por casa, como cargadores o en mi caso una fuente de PC un poco "destartalada" y si no hay un tanto un voltaje de 5.1V como la capacidad de entregar hasta 3A, no tendremos un funcionamiento optimo del sistema.

Aquí podemos descargar las hojas de datos (datasheet) de los diferentes chips y partes como cámaras o sensores para Raspberry Pi.

Muchas gracias a todos! Saludos!

viernes, 30 de mayo de 2025

Restauración ZX Spectrum +2 Gris - Limpieza y puesta a punto

Buenas amigos y amigas de los retro!!!

Con un presupuesto de 80€ me propuse encontrar en la web de venta de segunda mano, Wallapop, algún aparato retro que tanto nos gustan.

Le tenía echado el ojo al ZX Spectrum +2 pero en unas condiciones aceptables no encontraba gran cosa por menos de 100€. Y a muchos les faltaba el transformador o no estaba muy claro su funcionamiento.

En una de estas apareció este:

Tenía una pinta un poco rara... pero incluía el transformador, un joystick SJS-1 y el manual de usuario.

Cuantas más fotos veía.. la cosa no mejoraba....

Transformador original

Joystick SJS-1

Sin duda lo que mejor estaba era el manual de usuario.

No lo pensé mucho y lo compré... ¿había sido una buena idea? El vendedor se puso en contacto conmigo y hablamos sobre la máquina. Fue sincero desde el primer momento y me comento el mal estado en el que se encontraba este ZX Spectrum +2 y que había estado por mucho tiempo en un trastero. Incluso me envío vídeos del estado. La verdad, de 10.

Después de recibir el paquete empezamos con la limpieza, es preferible tenerlo limpio antes de trabajar con el. Esto ya se ha comentado más de una vez en el blog.

Empezamos desmontando todo y comprobando el estado de las piezas.

Con las "tripas" del Spectrum a la vista todo parece estar correcto. Mucha suciedad mucha.... pero todo lo demás como se puede ver esta completo.

Lo que no es tan correcto es poner componentes encima de la protección de burbujas, esto puede crear corriente electrostática y malograr algún componente. No lo hagáis en casa ;)

Una de las partes más perjudicadas en todos los elementos del ZX Spectrum eran las carcasas. Por suerte, solo era eso, restos de décadas de olvido en un trastero.

En este caso el corazón de la bestia sigue aparentemente en buenas condiciones. No hay restos de oxido o de liquidos derramados. Los condensadores también parecen en buen estado y si falla alguno son fáciles de reemplazar (siempre que no dañen otro componente).

El teclado también tenía mucha suciedad pero las pulsaciones eran correctas.

La casetera más de lo mismo...

Ahora empieza lo interesante... Con todos los elementos fuera procedemos a la limpieza: NOTA: El agua y la electricidad no son muy amigos, recuerda secar completamente todos los elementos de cualquier resto de humedad.

Para esta parte, mis mejores aliados son el barreño (verde), jabón de cocina y un pincel suabe. En ultima instancia podemos usar desengrasante, pero puede ser muy agresivo con la pintura y las pegatinas.

Como ya hemos comentado un buen secado es imprescindible antes de empezar a montar el equipo.

Al final la placa, una Z70500 ISS3 en cuanto a suciedad, era lo más limpio, todo lo demás tuvo dos pasadas de barreño...

Después de muchas horas de investigación la mejor opción para probar la placa, ya que no tengo ningún cable para su conexión con la TV era usar la conexión AV de la que no dispone. El ZX Spectrum +2 cuenta con salida RF y una salida RGB. Pero con una pequeña modificación podemos obtener esta señal. Solo necesitamos una resistencia de 15 ohmios.

La conexión se realiza entre el vivo del conector de RF (la parte central) y primero tenemos que retirar la resistencia que ya tiene conectada. Solo hay que desoldarla y proteger la punta de la resistencia para que no haga contacto con otro componente.

Ahora soldamos la resistencia de 15ohm en la misma posición en la questaba la otra y aprovechando un agujero que hay en un lateral de la caja de RF, la pasamos por ahí y el otro extremo le soldamos un cable que llevamos a la salida del diodo D4.

Este diodo se encuentra en la parte posterior del conector 8DIN y viene desde el integrado TEA2000 en su patilla 6 COVO (Composite Video Out). Es recomendable limpiar el conector del AV ya que si hace mucho que no se usa, puede tener una película de suciedad (oxido) que hace que la conexión no sea la correcta.

Es muy interesante tener a mano el manual de servicio, no confundir con el manual de usuario. Gracias a theoldrobot.com que lo tienen disponible online.

Una vez hecho esto toca presentar todo para hacer una primera prueba de encendido. Enchufamos todo y....

Y se hace la magia ochentera!!!

La calidad de imagen no es excelente, pero por lo menos puedo comprobar que el ZX Spectrum +2 gris funciona perfectamente. Es simplemente increíble que aparatos con más de 30 años funcionen perfectamente solo con un poco de limpieza y cariño. A ver si aprenden nuestros fabricantes contemporáneos...

Antes de cerrar decidí aventurarme con otra modificación, en concreto con el mod de audio.

¿En que consiste el mod de audio para el ZX Spectrum?

El sistema de carga de este microordenador es el antiguo sistema de cintas, si como las que, si ya tiene una edad, escuchabas en tu flamante walkman o en el coche. Si bien este sistema era muy de agradecer en los 80's debido a su bajo coste, hoy en día es una rareza, como los discos de 3.5.

Por suerte a día de hoy existen bastantes alternativas basadas en Arduino y otras tantas en Android, cada una con sus ventajas e inconvenientes. Y esta modificación es valida para los dos sistemas.

En ambos casos la modificación del sistema de audio nos permitirá cargar las cintas, en este caso audios, directamente a la placa del reproductor de casete. De esta manera nos saltamos el cabezal y prácticamente no necesitaremos más la parte mecánica del reproductor.

Para esta modificación he seguido una explicación de Manuel Cuenca Chips donde explica los puntos donde es mejore o peor dicha conexión. Esta variación dependerá de si el sistema que estamos usando esta amplificado o no.

¡¡¡ATENCIÓN!!! Existen diferentes tipos de placa para la casetera, comprueba cual es la tuya.

Vamos a intentar darle un poco de luz al tema...

Primera opción

La primera opción es el conector donde se enchufa el reproductor de cintas. El problema de estos pines es que necesitamos que la fuente de la que proviene el audio tiene que estar amplificada. En este caso solo servirían reproductores de cintas con un amplificador interno. Para usarlo con dispositivos tipo TZXduino o teléfonos móviles necesitamos la segunda opción. 

Y consiste en soldar el cable del + del RCA en el punto que transmite la información directamente a la placa. Este punto ya viene amplificado desde integrado de amplificación LA6324A. Al conectarlo en la salida no hacemos uso de ese integrado y la señal tiene que llegar ya amplificada.  

Segunda opción:

El reproductor del ZX Spectrum lleva integrado un amplificador y en este modelo en particular es el LA6324A y esta situado en la misma placa del reproductor de casete que podemos usar si queremos utilizar los dispositivos que acabamos de comentar.

Al fina me decidí a usar la segunda opción del amplificador internoLA6324A y aún así he necesitado amplificar la señal con un LM386 que, por suerte, tenía disponible.

Hay muchos circuitos para el LM386 disponibles en internet pero he usado un pequeño módulo de apenas 0.80€ que tenía por el taller.

Con esto logramos aumentar la señal de tal manera que el ZX Spectrum "escuche mejor". Para esta operación solo necesitamos 6 cables, 4 para la alimentación y 2 para la salida de audio.

El LM386 lo podemos alimentar con los 5 voltios desde la misma casetera, igual que la salida y entrada de audio. Estas son sus conexiones:


  • Alimentación +5V: Tomaremos los 5V desde el casete.
  • Entrada de audio +: Toma + desde el RCA.
  • Entrada de audio -: Toma - desde el RCA.
  • Masa de alimentación (GND): Tomaremos GND desde el casete.
  • Salida de audio +: A la placa del casete.
  • Salida de audio -: A la placa del casete. Es común con GND de alimentación.

En la parte de las pistas de la placa del casete solo necesitamos estos 3 puntos de conexión:

  • 1-. Toma de alimentación de 5V
  • 2-. Toma de masa o GND. Aquí conectamos las lineas marcadas como GND de la entrada de alimentación y el GND salida de audio
  • 3-. Entrada de audio.

El conjunto entero queda con la siguiente configuración:


Montaje final

Ya con todo montado tocaba probar el invento. Hay que decir que probamos primero sin amplificación, es decir con el programa PlayZXen el teléfono y el cable de audio directamente al mismo punto pero, aunque se escuchaba a través de spectrum en la tv, no se movían las lineas que indican que se esta cargando una cinta.

Solo tuve que regular el volumen hasta que empezaron a moverse las lineas... en un principio dio fallo de carga, pero poco a poco fuero apareciendo las famosas lineas de carga hasta que empezó a mostrar la imagen del juego que estaba cargando (1942). No solo estaba vivo, también funcionaba perfectamente.


Conclusión:

Ha sido un proyecto al que le tenia muchas ganas, bueno en general le tenia ganas a estas tres joyas retro, sobre todo después de ver vídeo sobre programación del Profesor Retroman. Un profesor de la Universidad de Valencia (creo) con explicaciones de sobre programación o el uso de la memoria.

Y aunque están basados mayoritariamente en ordenadores Amstrad,  ya me pico la curiosidad. Ahora con la Gotek y con esta modificación de audio (que también llevare al CPC464) se hace más fácil hacer todo tipo de pruebas.

También puede parecer que estos sistemas obviamente obsoletos en pleno 2025 no tienen ningún uso práctico pero son una gran plataforma para empezar a entender la programación desde el bajo nivel hará que mejore nuestra programación en alto nivel.


NOTA:
Todo lo mostrado en esta entrada esta realizado con el máximo cuidado y siguiendo varios tutoriales. Todo lo que realices a tú máquina queda bajo la responsabilidad del usuario.

Os dejamos algunos enlaces en los que hay gran cantidad de información sobre el ZX Spectrum.

Saludos retro!!!


lunes, 26 de mayo de 2025

Gotek Flashfloppy en Amstrad CPC 6128

Muy buenas amigos y amigas de lo retro!!!

Amstrad CPC 6128 fue uno de los ordenadores más icónicos de Europa y por supuesto, en España. Este microordenador de 8bits ya lo hemos visto anteriormente cuando le dimos una buena limpieza y puesta a punto.

En competencia directa con el Commodore 64 y el ZX Spectrum, su hardware robusto, teclado de calidad y gráficos en color lo convirtieron en una plataforma ideal para juegos y aplicaciones. Sin embargo, como toda tecnología de la época, dependía de un soporte físico frágil y obsoleto hoy en día: los disquetes de 3 pulgadas.

Con el paso de los años, las disqueteras originales han ido fallando debido al desgaste de los cabezales, la degradación de las bandas elásticas y la escasez de discos en buen estado.

Esto hace cada vez más difícil disfrutar de la amplia biblioteca de software del CPC... hasta que llegó la Gotek, un dispositivo que ha revolucionado la forma en que los usuarios de sistemas retro interactúan con su software.


¿Qué es exactamente una Gotek?

La Gotek es una unidad de disquete emuladora basada en un microcontrolador STM32, diseñada originalmente para entornos industriales como reemplazo económico de disqueteras.

Sin embargo, la comunidad retro rápidamente descubrió su potencial: al conectarla a un ordenador clásico como el Amstrad CPC y cargar un firmware alternativo como FlashFloppy, la Gotek se convierte en una "disquetera virtual" capaz de leer cientos de juegos desde una simple llave USB.


¿Qué es FlashFloppy?

FlashFloppy es un firmware alternativo y mejorado para las unidades Gotek, desarrollado por keirf. Esta disponible en su repositorio de GitHub y con el podemos sacarle mucho más jugo a nuestros amados ordenadores de 8bits.

El firmware de Flashfloppy ofrece muchas más funciones que el original, mejoras funcionales ya que admite diferentes mods como pantalla OLED o encoder rotativo.

El mod de la pantalla OLED ofrece mejoras visuales como mostrar el archivo seleccionado o la navegación por carpetas:

  • Soporte para múltiples formatos de disco (.DSK, .EDSK, .IPF, .HFE, etc.).
  • Navegación por carpetas en el USB.
  • Pantallas OLED o LCD para visualizar el archivo seleccionado.
  • Soporte para rotary encoder (selector giratorio en lugar de botones).
  • Autoconfiguración para diferentes sistemas (Amstrad CPC, Spectrum, MSX, etc.).
  • Personalización de sonidos y temas visuales.

Es en este punto donde decidimos integrar este sistema en el CPC 6128 y estas son los puntos que tenemos que tener en cuenta antes de empezar:

Microcontrolador: Los dispositivos Gotek han presentado tres generaciones de MCU:

  • STM32F105
  • Artery AT32F415
  • Artery AT32F435

La Gotek que tenemos es la que tiene el chip Artery AT32F415.

Materiales:

  • Cable USB-A a USB-A Este cable lo podemos fabricar con un par de cables USB que tengamos sin usar. Solo hay que unir los cables que tengan el mismo color. En el caso de que no lo sean, hay que medir con el polímetro que los pines coincidan.
  • Pines y puentes Necesarios para que la operación sea más cómoda para la instalación y futuras actualizaciones.

Ahora que tenemos todos los materiales, vamos a ver las modificaciones que tenemos que realizar sobre la placa:

La pantalla Oled en la Gotek es algo prácticamente imprescindible, puede ser de 128x32 o 128x64. Dispondremos de una información más detallada sobre las capetas y archivos.

Listado de pines del zócalo de programación:

  • Boot Jumper: Puenteado con "3V" ponemos la Gotek en modo de programación.
  • 3V: Alimentación 3V
  • Tx: Puerto Tx para programador USB.
  • RX: Puerto Rx para programador USB.
  • RST: No se usa.
  • 5V: Alimentación 5V.
  • GND: GND o masa.

Listado de pines de control:

  • J5: Cambio de disco.
  • JA: Botón Seleccionar/Expulsar/Insertar con pulsador.
  • JC
  • JB: Conexión de un pequeño altavoz o buzzer (J- y B+).
  • S0: On=Gotek seleccionada como unidad A (S1=OFF).
  • S1: On=Gotek seleccionada como unidad B (S0=OFF).
  • M0

Listado de pines para pantalla Oled:

  • SDA: Conexión de datos I2C
  • SCL: Conexión de datos I2C
  • 3V: Alimentación + .
  • GND: Alimentación - .

Actualización del Firmware

En este paso necesitamos el cable USB-A a USB-A y en la placa puentear los pines marcados como Boot Jumper y 3V como se muestra en la parte inferior de la siguiente imagen:


En este paso vamos a cargar el firmware en una maquina con Linux instalado, en este caso Ubuntu:

Vamos a utilizar la herramienta "dfu-util" para flashear el firmware de la Gotek que soporta el protocolo DFU (Device Firmware Upgrade).

Abrimos un terminal y escribimos:


sudo apt update && sudo apt-get install dfu-util

Con la herramienta instalada descargamos el software de Flashfloppy y descargamos la última versión.

Solo falta descomprimir el archivo, lo podemos hacer en el mismo directorio /Descargas. Encontraremos el archivo con extensión .dfu dentro del directorio dfu.

Recuerda usar el firmware correspondiente al microcontrolador que use la placa, en este caso el Artery AT32F435.

Ahora seguimos los siguiente pasos:


1-. Configuración de pines:

Establecemos el pin de programación en la Gotek tal y como hemos visto en la imagen anterior.


2-. Conexión:

Conectamos la Gotek con el cable USB-A a USB-A


3-. Desbloqueamos el firmware actual:

Abrimos un terminal y escribimos:


  dfu-util --list

dfu-utils nos devuelve la siguiente información:

Para romper la protección del firmware en el hilo original proponen el siguiente comando:


sudo dfu-util -D /path/to/flashfloppy-at415-st105-3.36.dfu -a 0 -s 0x08000000:unprotect:force

Pero por algún motivo nos daba un error como que había dos unidades y que le especificara la dirección de la disquetera correcta.

Este dato lo obtenemos del mismo comando "dfu-utils --list" y en este caso es: 2e3c:df11 al que llamaremos "MAC_GOTEK". Investigando un poco por internet tenemos esta variación del comando dfu-util en la que se incluye dicha dirección:


sudo dfu-util -v -d MAC-GOTEK -a 0 -s 0x08000000:unprotect:force -D /path/to/flashfloppy-at415-st105-3.36.dfu 

Esto termina con un error, pero desactiva la protección, por mi parte bien...


4-.Instalacion de Flashfloppy:

Ahora instalamos el firmware Flashfloppy donde tenemos que cambiar /path/to/ por el directorio donde tengamos el archico .fdu y X.XX por la versión de flashfloppy que hayamos descargado


sudo dfu-util -D /path/to/flashfloppy-at415-st105-X.XX.dfu -a 0


5-. Comprobación

Ya tenemos instalado Flashfloppy en nuestro dispositivo Gotek, Ahora desconectamos el cable USB y retiramos el puente entre el "Boot Jumper" y "3V"

Ahora volvemos a conectar el cable USB y en la pantalla aparecerá la siguiente imagen:

¡¡¡Enhorabuena ya tienes la Gotek con firmware Flashfloppy!!!

¿Y ahora?

Ahora nos toca configurar las opciones básicas que, por suerte, son pocas.

En el directorio "examples" tenemos el archivo FF.CFG con la configuración básica de la Gotek. Este archivo lo leera la unidad USB antes de empezar y modificará la configuración con los parámetros que hayamos definido en el archivo FF.CF.

Es decir, para que tenga efecto solo tenemos que copiar el archivo FF.CFG en la raíz de la memoria USB.

A continuación estos son algunos parametros a los que merece la pena echar un vistazo

Mantener pantalla encendida:


# Turn an LCD or OLED display off after N seconds of inactivity.
# N=0: always off; N=255: always on
# - Values: 0 <= N >= 255
# display-off-secs = 60
display-off-secs = 255

Cambio del tamaño del texto

Primero definimos la pantalla en display type y activamos la opción -narrow:


# Display Type.
# auto: Auto-detect (7-seg LED, LCD, OLED)
# lcd-CCxRR: CCxRR backlit LCD with I2C backpack (16<=CC<=40, 02<=RR<=04)
# oled-128xNN: 128xNN I2C OLED (NN = 32 | 64)
#  -rotate:     OLED view is rotated 180 degrees
#  -hflip:      OLED view is flipped horizontally
#  -narrow[er]: OLED view is restricted to Gotek display cutout
#               (-narrow: 18 chars; -narrower: 16 chars)
#  -inverse:    Inverse/reverse video (black text on white background)
#  -ztech:      ZHONGJY_TECH 2.23" 128x32 SSD1305 OLED display
#  -slow:       Run I2C bus slower (use this if OLED regularly blanks/corrupts)
# Values: auto | lcd-CCxRR | oled-128xNN[-rotate][-narrow[er]]...
# display-type = auto
display-type=oled-128x32-narrow

Y cambiamos el tamaño en la sección OLED Font:


# OLED Font. Narrow and wide options.
# Narrower 6x13 font permits:
#  - More characters per row
#  - Use of Gotek display cutout (eg. "display-type=oled-128x32-narrow")
# Values: 6x13 | 8x16
# oled-font = 6x13
oled-font = 8x16

Podemos volver a la configuración original si retiramos la memoria USB y después mantenemos pulsados los botones A(+) y B(+) durante 3 segundos y nos aparece el mensaje: Reset Flash Configuration

Con todo configurado ya podemos conectar la Gotek a nuestro Amstrad CPC6128 con un cable de disquetera estándar FDD que tenga la entrada para disqueteras de 5.25. No hace falta ninguna modificación en el cable FDD.


Ahora si, Cargar discos con Gotek

Con la memoria USB con los juegos y el archivo FF.CFG, lo introducimos en la Gotek y le damos alimentación.

El archivo FF.CFG se carga automáticamente (no hay que hacer nada) y ya podemos pasar a utilizar el archivo que seleccionemos.

Para movernos entre archivos y directorios la Gotek cuenta con 2 pulsadores para el controlar el disco que queremos cargar:

Pulsador A (+) :

  • Siguiente Archivo

Pulsador B (-) :

  • Archivo anterior

Ambos:

  • Reset memoria Flash

Resolución de problemas frecuentes

Como todo, siempre pueden surgir fallos o cosas que salen como deseamos, veamos los fallos mas comunes:

  • Cable de datos mal conectado:

En este caso nos aparece un mensaje en la pantalla OLED informando que el cable no esta mal conectado. Este mensaje no aparece si no hay cable.

  • Inserte Disco en la unidad B:

Si tenemos este error limpia los conectores del puerto de disco. Para una buena limpieza es recomendable usar alcohol isopropílico y un bastoncillo para los oídos. Si esto no funciona cambia el cable.

Este fallo nos puede volver un poco locos, si escribimos:

  • |b

y luego el comando:

  • "cat"

y leía el contenido del archivo pero al ejecutar run"program.bas" saltaba el mensaje de que no hay disco. Como ya hemos comentado arriba, una buena limpieza al conector y un repaso al cable con un pincel y problema solucionado.


Otro proyecto que me he escontrado es con Symbos, un sistema gráfico capaz de funcionar en un cpc 6128.


jueves, 22 de mayo de 2025

Amstrad CPC 464 Reparación parte 2

Muy buenas a todos y todas!!!

La espera ha sido larga pero, desde Australia, ya tengo en mis manos la membrana para el Amstrad CPC 464!!!

De la mano de RetroFuzion una web que se dedica a repuestos para estas "reliquias" de los años 80, tanto Amstrad como Amiga o Commodore entre otros.

La membrana es nueva, y al tenerla en la mano se nota que es de buena calidad. Al igual que la original es de plástico, pero se nota tanto por peso como al tacto se nota que el material es más resistente que el original.

Como se aprecia en la fotografía es exactamente igual (salvando las diferencias en las pistas) y colocarla ha sido realmente fácil. Veamos que tenemos que desmontar para poner la nueva membrana.

Ya teníamos el Amstrad desmontado quitando los 6 tornillos de la parte posterior del Amstrad 464 como vimos en el articulo anterior Amstrad CPC 464 reparación parte 1. Ahora ya tenemos a la vista la parte posterior del teclado y podemos ver que tiene otros 6 tornillos que fijan el teclado a la carcasa.

Ahora que ya tenemos el teclado separado, tenemos que retirar con mucho cuidado las pestañas que fijan el teclado a la parte metálica. Esta pestañas son de plástico y son fáciles de romper, de hecho, faltan un par, aunque no influye a la hora de volver a montarlo y su funcionamiento.


Ahora si ya tenemos a la luz la parte del teclado que nos interesa, la parte mecánica del teclado:

Como se puede observar en la fotografía y ya comente anteriormente, faltan algunos muelles de las teclas, unos cuantos la verdad.

Como medida temporal he cambiado los muelles del teclado numérico a las teclas principales puesto que ya tengo números en el teclado normal, y como digo es temporal.

Ya con todo en su sitio, ponemos la nueva membrana en su posición y comprobamos que esta bien centrada y volvemos a los pasos anteriores pero de manera inversa. Primero ponemos la parte trasera metálica con las pestañas. Colocamos el teclado en su posición y ponemos los 6 tornillos que lo fijan a la carcasa.

Ahora conectamos los cables flex en sus sockets (2) y por último los cables de alimentación y un cable negro que va conectado al teclado. Alineamos las carcasa con cuidado de no "pisar" los cables flex entre ambas carcasas.

Con todo listo queda la parte más tensa después de la larga espera, ¿funcionará? ¿Tendremos algún problema extra? Solo hay una manera de comprobarlo...

Conectamos el cable RGB, alimentación, accionamos el botón de encendido y ....

Funciona todo correctamente aunque por el tema de los muelles no he podido probar el teclado númerico de la parte derecha. Pero todo lo demás de 10.

Los muelles seguramente los compraré por Aliexpress o similar, aunque he pillado unos del chino (si, en el chino venden muelles) aún no he tenido tiempo de probar si funcionan o encajan (se me hacen un poco grandes).

La siguiente misión es la carga de algún juego o programa desde cinta o desde un dispositivo tipo TZXDuino o similar. Creo que hay algunas opciones para Android como PlayTZX , pero eso lo veremos la próxima entrada donde tocaré estos temas ya que me parecen proyectos muy interesantes para estas bestias de 8bits.

Recuerda que puedes visitar Amstrad CPC 464 reparación parte 1 donde encontrarás la primera parte de esta aventura ochentera.

También tienes más información sobre su hermano mayor, el CPC 6128 en Amstrad CPC 6128 Limpieza y puesta a punto.

Saludos retro!!