Un écran LCD pour la Fonera

Décidément La Fonera est un super jouet. Comme, de toutes façon, j’ai désactivé la console série pour utiliser le port pour autre chose, j’ai tenté l’utilisation d’un écran LCD 128*128 série fabriqué par 4D Systems et vendu par Dontronics.
Il s’agit d’un modèle d’afficheur qui n’est plus fabriqué. Celui-ci est remplacé par un modèle OLED bien plus efficace et riche incluant un lecteur micro SD pour stocker des images et des animations. Le modèle utilisé ici ne permet que d’afficher des primitives graphiques simples (trait, cercle, texte) ainsi que des images pixel par pixel.

Peu importe, ce qu’il est possible de faire avec ce vieux modèle l’est également avec les nouveaux. Le mode de connexion est relativement simple. Le module LCD est alimenté en +5Volts tiré de La Fonera, l’interfacage série est en +3.3/0V (comme le port série du routeur donc).

Il suffit donc de brancher tous cela pour que cela fonctionne ? NON !

Le module auto-détecte la vitesse du port série sur demande. C’est la première requête qu’il faut lui envoyer à la mise sous tension. Le problème qui se pose alors vient de RedBoot qui envoi sur le port série tout un blabla à la mise sous tension du routeur. Inutile de vouloir modifier RedBoot, non seulement cela semble des plus délicat mais, en plus on risque de perdre définitivement la main sur le routeur en cas de problème. Ne touchons pas a RedBoot.

La solution consiste à allumer le module LCD après le démarrage du routeur. Toutes les lignes GPIO placées à l’arrière de La Fonera de test sont utilisées pour mon bus i2c. Reste la led WAN pilotée par un transistor. La modification consiste donc à retirer la led et le transistor et utiliser la ligne via un BC547B permettant de piloter l’alimentation du module :

On voit ici que j’ai placé un petit strap entre la ligne 2 (base de l’ancien transistor) et l’anode de la led. Ceci permet, tout simplement d’utiliser l’emplacement juste dessous pour souder un fil (jaune). Il ne reste ensuite plus qu’à brancher le fil sur la base du BC547 via une résistance de 47 Ohms (c’est suffisant pour saturer le transistor). Ce qui nous donne le schémas suivant :

Il ne reste plus, ensuite qu’à piloter le module depuis le routeur. Pour cela j’ai écrit un petit code en C permettant différentes manipulations sur le module (effacement, contraste, rétro-éclairage, chargement d’image PNG). C’est une version préliminaire permettant déjà d’afficher point par point une image sur l’écran (c’est très lent car, même en 115200 il faut attendre l’accusé réception pour chaque pixel, et il y en a 16384). Une option permet de minimiser le nombre de pixels à afficher en déterminant la couleur dominante de l’image et en en remplissant le fond de l’écran. Ne reste ensuite qu’à afficher les pixels d’une couleur différente. Ce genre de choses n’est plus nécessaire avec les nouveaux modules OLED. Il suffit de stocker les images sur la micro SD et le module les affiche à vitesse grand V.

Voici le nécessaire :
Les sources pour OpenWrt
Le paquet IPKG pour Kamikaze 7.09

Les sources ne seront peut-être pas compilables avec votre BuildRoot OpenWrt et pour cause. Il semble que les règles Build/InstallDev du Makefile de la libGD soient… heu… étranges. J’ai donc un peu bricolé dedans.

Au final, La Fonera peut afficher (doucement) de sympathiques images en 128*128 :

Miaouuuuu !

Il vous faudra aussi le module kernel proc_gpio disponible ici : http://daubau.net/proc_gpio/

La vous pourrez alimenter le module avec :
insmod proc_gpio
echo 1 > /proc/gpio/2_dir
echo 1 > /proc/gpio/2_out

5 commentaires sur “Un écran LCD pour la Fonera

  1. Hou la la, miaou ! Bravo !
    Le bidouilleur a encore sévi ! Trop beau.

    Prochaine manip: le grille-pain commandé par la fonera avec capteur de température et écran LCD sur la table de nuit pour montrer que "le pain est prêt à être tartiné, il est l'heure de se lever"…

  2. Et bien, tant qu'à faire, autant pousser le vice et bricoler quelque chose pour tartiner le beurre et la confiture, me réveiller doucement avec une voix suave et… Oulha, faut que je fasse attention moi :)

  3. – Non Monsieur. Ca suffit maintenant ! Veuillez débranchez votre boite blanche du tableau de bord !!
    – Mais puisque je vous dis que ca risque rien ! Suffit juste de lancer les réacteurs aprés le redboot.
    L'homme fut maitrisé avant le décollage bien entendu. :)

Les commentaires sont fermés.