MicroPython: réutiliser un afficheur VFD du lecteur CD CDP-CX350 (partie 2)

 

Bonjour amis Maker,

Le précédent article sur les tubes VFD (Vaccum Fluorescent Display) c'était le contrôleur VFD M9202 (aussi appelé MSM9202) de mon ancien Sony compact disk player CDP-CX35.


Poursuite du hacking

Après la prise en main de l'afficheur VFD, je veux maintenant prendre le contrôle du restant de la facade... cela concerne les LEDs, les encodeurs rotatifs et les boutons.
Sony compact disk player CDP-CX350


Interface Clavier

Le connecteur principal était déjà partiellement décodée pour l'afficheur VFD.

CDP-CX350 - détail de la carte principale

En poursuivant les investigations, j'ai découvert que les LEDs étaient contrôlées par un GPIO expander 16 bits (M66310). Pour leur part les boutons sont raccordés en grappe.

Voici donc le complément d'information concernant le connecteur principal (CON1) et le connecteur vers la carte fille (CON2).


On peut y voir que les broches DataIn, ShiftClk, Reset de l'afficheur VFD sont ici utilisées pour contrôler le GPIO Expander M66310 (plus le signal LatchClk).

Contrôler les LEDs

Pour prendre le contrôle des LEDs, il faut donc envoyer les 16 bits de données vers le M66310 puis activer le signal LatchClk pour mettre à jour les sorties sur le GPIO Expander.


Les données sont envoyés en utilisant les mêmes signaux DataIn, ShiftLck que l'afficheur VFD. Le contrôleur VFD a son ChipSelect désactivé durant la communication avec le M66310.

Comme déjà précisé, une fois les 16 bits de données envoyés vers le M66310, une impulsion est envoyé sur LatchClk pour envoyer les bits sur les sorties.

En suivant les traces, il est alors possible de relier LEDs et GPIOs du MF66310.

Une fois la bibliothèque m66310.py rédigée, le contrôle du GPIO expander est relativement simple.

from machine import Pin
from m66310 import M66310
import time

_reset = Pin(Pin.board.GP18, Pin.OUT, value=True ) # Reset désactivé
_cs = Pin( Pin.board.GP14, Pin.OUT, value=True ) # VFD désactivé
_sdata = Pin( Pin.board.GP13, Pin.OUT )
_sck = Pin( Pin.board.GP16, Pin.OUT, value=True )

# M66310 GPIO Expander, Latch on raising edge
_latch = Pin( Pin.board.GP20, Pin.OUT, value=True ) 

# Modifier tous les bits en un fois (sous forme de nombre)
leds = M66310( _sdata, _sck, _latch, _reset )
leds.data = data = 0b0000000000011100 # 16 bits.
leds.update()
time.sleep_ms( 500 )
leds.clear()
leds.update()

# Modification bit à bit
for bit_idx in range( 2, 16 ):
	print( bit_idx )
	leds[bit_idx]=True
	leds.update()
	time.sleep_ms(100)
	leds[bit_idx]=False
	leds.update()
leds.clear()
leds.update()

Détecter les boutons pressés

Dès le début de ce projet, je suis assez étonné de trouver deux entrées 5V et deux masses totalement distinctes sur le connecteur principal.

Il m'aura fallu attendre le décodage de la partie bouton pour me rendre compte que les boutons sont raccordés en grappe chacun avec une résistance d'une valeur différente.

En voici un exemple d'une série de boutons branché sur la broche "key1".

Raccordement des boutons en grappe

Il faut donc ajouter une résistance pour compléter un pont diviseur et ainsi obtenir une tension (qui dépend du bouton pressé).

Cela explique aussi la raison pour laquelle il existe deux masses et deux sources 5V. Un circuit est destiné à la lecture analogique et un autre circuit est destiné au circuits logiques et contrôleurs.
Le circuit analogique ne peut pas être perturbé par des parasites, variation de tension ou courant qu'il est plus facile de rencontrer sur le circuit logique (surtout à cause du contrôleur VFD).

La quantité de boutons sur le panneau fait qu'ils sont regroupés sur différentes grappes indépendantes. C'est ainsi que la carte présente les sorties Key0, Key1, Key2, Key3, Key4. Les encodeurs étant également des boutons un peu spéciaux, ceux-cis sont également repris sur les grappes.

J'ai documenté toutes les grappes dans le dépôt micropython-M9202-VFD.

Ensuite

  1. Je dois toujours réaliser un étage d'alimentation pour rendre un projet VFD autonome (j'avance sur ce point).
    Cela me facilitera aussi la vie lors du test d'autres VDF.
  2. La réalisation d'une carte personnalité permettra d'interagir facilement avec les éléments de ce panneau.

Ressources

Aucun commentaire