mardi 21 juin 2016

A la recherche d'un afficheur OLED

A la recherche d'un afficheur OLED


L'idée est de pouvoir ajouter un petit écran au module ESP8266 ! Et oui ici à l'association nous avons un projet de réalisation d'un jeu connecté collaboratif. Et pour cela nous avons prévu d'utiliser un anneau de Led NeoPixel déjà explorer, quelque boutons, maintenant nous passons à l'écran.
Pour faire plus smart, nous pensons utiliser un OLED monochrome pour limiter l'utilisation mémoire. En effet en regardant la documentation de l'ESP8266-12E, nous pouvons lire que nous ne disposons que d'environ 50Ko de RAM. Or pour gérer un écran, il est nécessaire d'avoir un buffer qui correspond au pixel que nous souhaitons afficher, ceci afin d'optimiser les accès lecture/écriture.

Donc partant de ce principe, si par exemple nous prenons un écran 128x128 en couleur codé sur 16bit, le buffer nécessitera : 128 x 128 x 2octets donc de 32Ko soit 64% de la mémoire... C'est définitivement trop !, donc pourquoi pas utiliser un écran OLED monochrome de  128x64 (qui utilisera que 1Ko (128x64 / 8 (hé oui nous pouvons placer 8 pixels par octet :-) ).

Il existe plusieurs tailles d'écran chez nous fournisseur mondial, notamment certain basé sur le chipset SSD1306 (0.96") et d'autre en général plus grand (1"5) basé sur le chipset SH1106.


Ce point du chipset est important car les librairies de pilotage sont plus ou moins aboutit en fonction du protocole de communication (SPI 3 Wire/ 4Wire ou I2C). Pour le Cas du SSD1306 nous trouvons de bonne librairie basé sur Adafruit (Environnement Arduino qui fonctionne parfaitement avec l'ESP8266). Par contre pour le chipset SH1106 en I2C c'est un peu plus compliqué. J'ai donc fini par prendre le code de Rene MT (et Daniel Eichhorn (@squix78) et Fabrice Weinberg (@FWeinb) en améliorant la partie driver I2C (publication à venir). Cette librairie apporte des outils sympathiques comme l'écriture de texte, l'import de bitmap et un mode de pagination.

Voici une petite démo en attendant la publication du code ;-) !



Le code est par ici.




Aucun commentaire:

Enregistrer un commentaire