A la veille d'une sortie cruciale, c'est très agacé que j'écris cet article qui, une fois de plus, étale les conséquences d'un fondamental manque de réflexion chez Payconiq/Banksys!
En effet, une récente modification technique chez Payconiq créée la panique chez les clients du WebMarchand MC Hobby.
Depuis quelques jours, Payconiq : spécialiste du paiement sûr et facile, très apprécié des belges, a étendu sa fenêtre de réponse aux WebMarchands de 2 heures!
En gros, vous payez tout de suite... mais le WebMarchand n'aura confirmation du paiement que dans un intervalle de 2 heures (ce qui est confirmé, 2 heures, vraiment!).
Et puisque le WebShop ne reçoit pas de confirmation, le panier n'est pas transformé en commande. D'autant que le prélèvement sur le compte bancaire du client est immédiat! Pour une méthode de paiement instantané... "Ca la fout mal!".
Conséquence:
Nous avons des appels de clients débités sur leur compte bancaire qui ne comprennent pas pourquoi il n'ont pas la commande correspondante dans le web-shop après leur paiement!
Web-marchand prit au piège:
Comme la solution Payconiq est liée à Bancontact, il est impossible de désactiver l'un sans désactiver l'autre.
Si le WebMarchand veux garder le moyen de paiement Bancontact (c'est dans son intérêt), il présente de-facto les paiement PayConiq.
Le mot de la fin
Espérons que Payconiq/Banksys se rendra rapidement compte de leur erreur!
Je n'arrête décidément plus mes expérimentations avec les tubes VFD (Vaccum Fluorescent Display). Cette fois, je me suis penché que contrôleur VFD M9202 (aussi appelé MSM9202) qui a sa propre petite histoire.
Introduction
Il y a bien des années, je me suis payé un Sony compact disk player CDP-CX350, un carrousel capable de contenir 300 Compact Discs. J'adorai ce lecteur.
Sony compact disk player CDP-CX350
Je parle au passé car ce magnifique appareil n'a pas survécu à ses multiples déménagements. C'est que 300 CD, cela fait son poids et jeunesse aidant j'ai habité divers endroits. Et c'est avec désolation que j'ai découvert que mon génial lecteur CD avait mécaniquement dépassé tout espoir de réparation.toute lecture... nous étions en 2005!
Le maker était en sommeil
Bien qu'en 2005 je n'y connaissais pas grand chose en programmation microcontrôleur, j'ai procédé à la récupération de la face avant me disant qu'un jour, peut-être, je pourrai le recycler.
Sony compact disk player CDP-CX350 (face avant)
Sony compact disk player CDP-CX350 (face avant)
De nos jours
Nous sommes en 2025, j'ai ressorti la face avant du lecteur (photos ci-dessus) en vue d'un recyclage complet de l'afficheur VFD mais aussi les boutons, les LEDs, les encodeurs rotatifs, etc!
La carte principale à l'afficheur VFD est visible ci-dessous
CDP-CX350 Carte principale
De haut en bas, la carte reprend les éléments suivants:
Connecteur d'interface : en haut a gauche, destiné à recevoir un ruban. Ce connecteur 23 contacts permet de communiquer avec tous les éléments de la carte principale et carte fille.
Connecteur carte fille : ce connecteur bleu (toujours en haut) permet de connecter les éléments de la carte fille (encodeurs rotatifs, bouton play/pause/...)
Récepteur infrarouge : en haut à droite, permet de réceptionner les signaux de la télécommande.
L'afficheur VFD : superbe comme tous les autres et contenant de nombreux symboles. Ce VFD est piloté par un contrôleur VFD M9202 (OKI).
LEDs oranges : contrôlée avec un GPIO expander 16 bits M66310FP. Ce GPIO expander est aussi un LED Driver. Les deux contrôleurs M66310FP & M9202 partagent le même bus de communication.
Boutons : les nombreux boutons présent sur cette carte (comme la carte fille) sont regroupés par lot sur 5 lignes "keys" distinctes. Chacun de ces boutons ayant une résistance pull-down spécifique (dans son groupe), il faut utiliser une entrée analogique pour déterminer quel bouton est pressé dans un groupe donné.
Emetteur infrarouge : les 5 LEDs "bleues" sont en fait des émetteurs infrarouges accompagnés de leur circuit de puissance (les transistors) et connecteur d'interface (en bas à gauche)
Le contrôleur VFD M9202
CDP-CX350 - détail de la carte principale
A partir de la fiche technique du M9202, j'ai pu identifier les différentes connexions nécessaires au contrôle de l'afficheur.
C'est en lisant la fiche technique du M9202 (MSM9202) que j'ai remarqué que le protocole est identique à celui utilisé pour le ChipSet PT6302 de Princeton Technology.
Clk : signal d'horloge du M9202 utilisé pour la transmission de données.
DataIn : signal de données du M9202 (communiqués bit-à-bit en commençant par le bit le moins significatif)
ChipSelect : activation du M9202. Nécessaire lorsque le microcontrôleur doit envoyer des données.
VFL : tension négative permettant de contrôler les grilles ( -25V est suffisant).
Heater1 & 2 : filament de chauffe (5 Ω), alimenté en 2.9V (consommation 170mA).
Les signaux identifiés, voici comment brancher le Pico pour contrôler le VFD.
Un 74AHCT125 est utilisé pour convertir les signaux logiques.
Le circuit Cut-off bias voltage est réalisé à l'aide de 2 diodes Zener et résistance de 2.2K il m'a fallu un certain temps pour me rendre compte que j'avais oublié de le monter... raison pour laquelle l'afficheur n'affichait absolument rien.
Il est maintenant possible de tester les Digits et d'identifier leurs positions. La disposition des caractères est un peu bizarre mais n'empêche en rien la représentation de texte.
Comme pour les autres VFD, le contrôle individuel des segments permet aussi de contrôler les divers symboles (voir le Digit #16 ci-dessous).
Contrôle des segments 0 à 34 d'un digit.
L'exemple test_btn_segment.py montre justement comment prendre le contrôle des segments sur le Digit #16.
Pour la première fois, j'utilise aussi l'ADRAM du contrôleur VFD.
ADRAM, 2 bits complémentaires par digits
l'ADRAM est un espace mémoire de deux bits supplémentaires par Digits (donc 35 segments + 2 bits ADRAM). Ces bits additionnels peuvent être utilisés pour activer/désactiver des symboles (ou points) supplémentaires.
Les bits ADRAM sont souvent utilisés pour activer un point décimal, double-point ou un curseur sur l'afficheur.
Dans le cas présent l'ADRAM est utilisé pour activer un symbole supplémentaire sur l'écran. Ainsi, en fixant l'ADRAM du Digit #8 à 0b01, le libellé "GROUP" est illuminé au dessus du Digit #8.
M9202 : code et exemples
Le dépôt github micropython-M9202-VFD dispose des informations nécessaires à la prise de contrôle de l'afficheur VFD avec le contrôleur OKI M9202.
Le dépôt contient plusieurs exemples utilisés pour tester l'afficheur VFD.
test_display_all.py : active le mode de test du VFD illuminant toutes les segments.
test_display_chars.py : les caractères A à Z sur les 16 positions du VFD.
test_display_str.py : affiche la chaîne de caractères "ABCDEFGHIJKLMNOP" sur l'afficheur à partir de la position 1. Très pratique pour deintifier la position de chaque Digit.
test_custom_char.py : création et affichage d'un caractère personnalisé.
test_segments.py : active progressivement les segments 0 à 34 du digit sélectionné.
test_btn_segment.py : utilise un bouton Up et Down (sur GPIO 0 et 1) pour contrôler le segment allumé entre 0 et 34.
test_adram.py : modifie les bits ADRAM des digits de 1 à 16. Permet d'identifier les éléments/symboles activés par les combinaisons binaires testées.
test_adram_raw.py : manipulation brut de l'ADRAM par envoi direct des messages. Uniquement à des fins de démonstration.
test_btn_adram.py : Utilise un bouton Up et Down (sur GPIO 0 et 1) pour contrôler le Digit (de 1 à 16) dont l'ADRAM est modifié.
test_raw.py : test brut de l'afficheur VFD en envoyant des messages brutes. Uniquement à des fins de démonstration.
Boutons, encodeurs et LEDs
Le décodage de ces éléments est en cours. Le dépôt contient déjà des informations mais il reste encore un travail non négligeable à réaliser. Cela fera l'objet d'un autre article.
Cet article intéresse certainement tous les Makers mais les Belges se sentiront privilégié ;-) Après le contrôleur VFD M660004 dans le précédent article, cette fois, c'est le contrôleur VFD PT6302 qui est à l'honneur.
Introduction
Mon tout premier afficheur VFD (Vaccum FLuorescent Display) fût récupéré sur un décodeur Belgacom TV (aujourd'hui Proximus TV) de 4ieme génération.
En 2022, je démontais le décodeur pour le transformer en alimentation d'établi. A cette occasion, je mettais l'afficheur de côté en espérant pourvoir le hacker.
Fort de ma toute récente expérience avec le VFD de Sony, j'ai embrayé sur celui de Belgacom/Proximus TV que l'on peu admirer dans toute sa gloire ci-dessous!
A l'évidence, la carte est équipée des éléments nécessaires pour générer la tension négative pour les grilles ainsi que l'alimentation du filament. Diandre! Je ne suis jamais arrivé à la faire fonctionner!
J'ai donc sorti mon fer à souder et j'ai éliminé tous les composants entre les boutons poussoirs et le bord opposé de la carte! J'ai bien entendu préservé le contrôleur et les composants directement attachés.
VEE: Tension négative utilisé pour fixer le potentiel du filament de chauffe (-25 à -35 volts)
VSS: masse commune.
RSTB: Reset du contrôleur
CSB: Chip Select. Placez le au niveau bas pour communiquer avec le composant.
CLKB: signal d'horloge. L'acquisition du bit de données se fait sur le flan montant du signal d'horloge.
DIN: Data Input=entrée de donnée. Les données sont envoyée bit à bit (LSBF = bit le moins significatif en premier).
Brancher sur un Pico
Avant d'envisager le branchement sur un Pico, il faut:
Recréer le circuit de polarisation du filament de tungstène. C'est qu'en enlevant tous les composants... j'ai aussi enlevé ces éléments.
Récupérer les signaux VDD, VEE, VSS, RSTB, CLKB, DIN du contrôleur (sans oublier ceux du filament de chauffe).
Polarisation du filament
Par expérimentation, une tension de 2.9V est suffisant (le courant de chauffe atteint 150mA). Deux résistance de 500 Ohms sont utilisés (appris avec le VFD de Sony)
Par expérience, encore, une tension VEE (ou VP) de -25V est suffisante pour un fonctionnement correct. Une tension de -35V est également convenable mais fait un peu trop chauffer la résistance de 2.2K (1/4W). Avec VEE de -25V, la tension bias est alors de -19V, un différence de 6V qui s'est révélée suffisante à l'usage.
Récupération des signaux
Vient ensuite la localisation de tous les signaux VDD, VEE, VSS, RSTB, CLKB, DIN sur le contrôleur (où différents endroits de la carte).
Brancher sur Raspberry-Pi Pico
Ayant décidé de garder une tension logique de 5V pour le contrôleur VFD, il faut donc utiliser un LevelShifter (un 74AHCT125) pour adapter les tensions.
vfd_pt63.py : contrôle des fonctions essentielles du contrôleur VFD.
vfd_proximus.py : fonctions avancées facilitant la prise en main de l'afficheur utilisé sur Proximus TV / Belgacom TV.
Scripts d'exemple
le dépôt reprend de nombreux exemples mais c'est principalement ceux relatifs à ProximusTV qui sont les plus intéressants.
Ce premier exemple indique comment afficher du texte et allumer/éteindre les symboles de l'écran.
from vfd_proximus import *
from machine import Pin
import time
d = VFD_Proximus( sck_pin=Pin.board.GP16, sdata_pin=Pin.board.GP13, cs_pin=Pin.board.GP14, reset_pin=Pin.board.GP18 )
d.print("VFD Proximus")
# affiche toutes les options une par une
# TITLE, CHANNEL, TRACK, STEREO, RECORD, CLOCK, ANTENNA, AM, FM
for option in ALL_OPTIONS:
d.options += option
time.sleep_ms( 500 )
for option in ALL_OPTIONS:
d.options -= option
time.sleep_ms( 500 )
d.clrscr()
d.print("Done !")
Alors, l'afficheur de Belgacom TV / Proximus TV dispose de trois sections d'affichage sur le dessus de l'écran. C'est trois sections sont accessibles par l'intermédiaire des propriétés left , center , right .
Il existe pas mal de moyen d'y afficher des informations, y compris des entiers et nombre décimaux comme l'indique l'exemple ci-dessous.
from vfd_proximus import *
from machine import Pin
import time
d = VFD_Proximus( sck_pin=Pin.board.GP16, sdata_pin=Pin.board.GP13, cs_pin=Pin.board.GP14, reset_pin=Pin.board.GP18 )
d.print("Show float")
VALUES = [1.25,15.2,32,133.78,73.1,5.2]
for value in VALUES:
d.center.float( value )
d.update()
time.sleep(1)
d.center.clear()
d.update()
for value in VALUES:
d.left.float( value )
d.update()
time.sleep(1)
d.left.clear()
d.update()
d.clrscr()
d.print('Done!')
Ce second exemple se concentre sur le disque dans la section de droite. Le script fait d'abord clignoter le disque... puis fait tourner un secteur sur le disque.
from vfd_proximus import *
from machine import Pin
import time
d = VFD_Proximus( sck_pin=Pin.board.GP16, sdata_pin=Pin.board.GP13, cs_pin=Pin.board.GP14, reset_pin=Pin.board.GP18 )
d.print("Show DISC")
# Allumer éteindre le disque
for i in range( 10 ):
d.right.disc( i%2 )
d.right.update()
time.sleep_ms( 500 )
d.right.disc( False )
# Rotation du disque
d.right.disc_start()
d.update()
while True:
d.right.disc_step()
d.update()
time.sleep_ms( 50 )
d.right.disc( False )
Enfin, un exemple simple mais celui que je préfère.... afficher l'heure. Les heures et minutes sont affichées sur la section centrale... tandis que les secondes sont affichées sur la section de droite.
MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.