Difference between revisions of "Retro-Inge-LCD"
(Created page with "=Exemple de rétro-ingénierie d'un LCD : Balance Téraillon TX6000= ==Contexte== Le but est de pouvoir hacker une balance qui coûte en moyenne 20 euros afin de pouvoir lire dir...") |
m |
||
Line 16: | Line 16: | ||
Ensuite, le LCD de la LX6000 est en fait constitué de plages d'affichage qui sont multiplexées. Chaque segment est une plage, les points ou unités aussi. | Ensuite, le LCD de la LX6000 est en fait constitué de plages d'affichage qui sont multiplexées. Chaque segment est une plage, les points ou unités aussi. | ||
− | Il faut donc faire des essais pour connaître les "coordonnées" de chaque segment. | + | Il faut donc faire des essais pour connaître les "coordonnées" de chaque segment. Maintenant que l'on sait tout ça, on démonte la bête et on injecte du courant directement dans le LCD grâce au code et montage ci-après. |
Pour cela on utilise un Arduino avec 2 pins en digitalWrite de façon alternative. Le code ressemble à ça : | Pour cela on utilise un Arduino avec 2 pins en digitalWrite de façon alternative. Le code ressemble à ça : | ||
Line 29: | Line 29: | ||
Le montage à ça : | Le montage à ça : | ||
− | [[File:retro-inge-LCD-LX6000.png]] | + | [[File:retro-inge-LCD-LX6000.png|700px|thumb|none]] |
Il vous faut ensuite faire des essais et en noter le résultat pour reconstituer le cablage du LCD. | Il vous faut ensuite faire des essais et en noter le résultat pour reconstituer le cablage du LCD. | ||
Pour la balance LX6000 on obtient : | Pour la balance LX6000 on obtient : | ||
+ | |||
+ | [[File:cablage-LCD-LX6000.png|800px|thumb|none]] | ||
+ | |||
+ | ==Etape 2: souder et remonter la bête== | ||
+ | |||
+ | Perso j'ai utilisé une vieille nappe de pc que j'ai soudé comme sur la photo. Il reste ensuite à connecter le tout à un arduino. On observe que sur le TX6000 il existe un petit bouton qui est censé controler les unités. Il est très utile car il peut ervir à réveiller la balance de sa torpeur pour lancer une mesure à distance. Sachant que le tarage est fait une fois pour toute à la première mise en route, on peut alors mesurer des charge à distance sans avoir besoin de remettre le tout à 0 et donc d'enlever la charge avant la pesée. Pratique pour une télérelève ! | ||
+ | [[File:retro-inge-SpyNappe-LX6000.png|700px|thumb|none]] | ||
+ | |||
+ | |||
+ | ==Etape 3 : code arduino de lecture du LCD= | ||
+ | Le principe est tout simple : Échantillonner rapidement les sorties des pins et backplane de la balance. A chaque lecture on détermine quel backplane est actif (Valeur analogique différentes des autres), on note quels pins sont actifs et on en déduit quels sont les segments actifs. La lecture durant plusieurs secondes, on aura statistiquement des résultats pour tous les couples Backplane/Pin qui sont actifs. On fait une moyenne en divisant par le nombre de lecture validées pour chaque backplane et tout ce qui se rapproche de 1 est considéré comme allumé. | ||
+ | |||
+ | On créer ensuite une fonction qui détermine les digits en fonction des ségments allumés et on en déduit le poids ! |
Revision as of 14:40, 14 December 2013
Contents
Exemple de rétro-ingénierie d'un LCD : Balance Téraillon TX6000
Contexte
Le but est de pouvoir hacker une balance qui coûte en moyenne 20 euros afin de pouvoir lire directement le poids sur un autre device.
Les sources d'inspiration sont :
http://quo.vadis.stojkovic.ch/hacking-a-weighing-scale/ http://troels.leegaard.org/misc/grundtal20047/ <= code final retenu à partir de cette base. et surtout celui là pour la compréhension du fonctionnement d'un LCD (pas la partie sur le Zilog) : http://troels.leegaard.org/misc/grundtal20047/lcd-an0162.pdf
Etape 1 : comprendre comment fonctionne le LCD
Il faut déjà savoir qu'il est actionné par un courant alternatif de l'ordre de 50 htz et 2.3 V
Si jamais on l'actionne avec du DC trop longtemps, les cristaux liquides vont se coller à l'une des électrode et le LCD est foutu !!
Ensuite, le LCD de la LX6000 est en fait constitué de plages d'affichage qui sont multiplexées. Chaque segment est une plage, les points ou unités aussi.
Il faut donc faire des essais pour connaître les "coordonnées" de chaque segment. Maintenant que l'on sait tout ça, on démonte la bête et on injecte du courant directement dans le LCD grâce au code et montage ci-après.
Pour cela on utilise un Arduino avec 2 pins en digitalWrite de façon alternative. Le code ressemble à ça :
digitalWrite(5, HIGH); digitalWrite(6, LOW); delay(20); digitalWrite(5, LOW); digitalWrite(6, HIGH); delay(20);
Le montage à ça :
Il vous faut ensuite faire des essais et en noter le résultat pour reconstituer le cablage du LCD. Pour la balance LX6000 on obtient :
Etape 2: souder et remonter la bête
Perso j'ai utilisé une vieille nappe de pc que j'ai soudé comme sur la photo. Il reste ensuite à connecter le tout à un arduino. On observe que sur le TX6000 il existe un petit bouton qui est censé controler les unités. Il est très utile car il peut ervir à réveiller la balance de sa torpeur pour lancer une mesure à distance. Sachant que le tarage est fait une fois pour toute à la première mise en route, on peut alors mesurer des charge à distance sans avoir besoin de remettre le tout à 0 et donc d'enlever la charge avant la pesée. Pratique pour une télérelève !
=Etape 3 : code arduino de lecture du LCD
Le principe est tout simple : Échantillonner rapidement les sorties des pins et backplane de la balance. A chaque lecture on détermine quel backplane est actif (Valeur analogique différentes des autres), on note quels pins sont actifs et on en déduit quels sont les segments actifs. La lecture durant plusieurs secondes, on aura statistiquement des résultats pour tous les couples Backplane/Pin qui sont actifs. On fait une moyenne en divisant par le nombre de lecture validées pour chaque backplane et tout ce qui se rapproche de 1 est considéré comme allumé.
On créer ensuite une fonction qui détermine les digits en fonction des ségments allumés et on en déduit le poids !