Publié le 3 décembre 2024 - par

Utilisation de l’écran rond CrowPanel IPS tactile Elecrow 1,28 pouce ESP32

Après la présentation de l’écran tactile circulaire équipé d’un ESP32 C3 que propose Elecrow, j’ai voulu tester l’afficheur en microPython, avec Thonny. Vous trouverez dans cet article les étapes de l’installation de microPython et les premiers tests.

Cliquer pour plus d’infos

Utilisation de l’écran rond CrowPanel IPS tactile Elecrow 1,28 pouce

Installation de microPython

On va commencer par effacer la mémoire Flash pour partir avec un ESP32-C3 « propre ». J’ai utilisé Python sur un PC sous Windows 11, ainsi que Thonny

J’ai créé un dossier crowpanel puis environnement virtuel Python dans ce dossier :

python3 -m venv crowpanel

On peut ensuite activer l’environnement virtuel

En fin d’utilisation on sortira proprement avec la commande  deactivate, mais c’est pour plus tard, quand on aura fini.

Puis installer esptool dans cet environnement

(crowpanel) pi@framboise314:~ $ pip install –upgrade esptool

Ensuite on peut effacer la mémoire Flash de l’ESP32-C3

(crowpanel) D:\Elecrow_CrowPanel1.28>python -m esptool –port COM3 –chip esp32c3 erase_flash

 

 

Enfin installer microPython (j’ai utilisé la version fournie dans le dossier de Elecrow).

(crowpanel) D:\Elecrow_CrowPanel1.28>python -m esptool –port COM3 -b 460800 –before default_reset –after hard_reset –chip esp32c3 write_flash –flash_mode dio –flash_size detect –flash_freq 40m 0x0 MicroPython-1.28-Demo\firmware\esp32C3_1.2.4_micropython.bin

On a fini la préparation de l’ESP32-C3 en Python, vous pouvez sortir de l’environnement virtuel

(crowpanel) pi@framboise314:~ $ deactivate

 

Vous pouvez maintenant télécharger les démos

https://www.elecrow.com/download/product/CrowPanel/ESP32-HMI/1.28-DIS12824D/MicroPython-1.28-Demo.zip

puis décompresser l’archive

 

Le microPython avec Thonny

On peut alors lancer Thonny

Et on se retrouve avec le prompt du microPython qu’on vient d’installer sur l’ESP32c3, prêt à travailler…

Les exemples sont fournis par Elecrow et c’est ce que j’ai testé.

Test de l’horloge RTC avec affichage de l’heure dans la console. Pour info, arrivé de chez Elecrow depuis une bonne semaine, l’écran est toujours à l’heure exacte.


Test du bouton « utilisateur » la console indique quand le bouton est appuyé.

Test du buzzer. J’ai aussi testé le vibreur, puis écrit un programme pour personnaliser l’affichage :

Programme final

Dans la bibliothèque gc9a01.py vous pouvez rajouter les couleurs qui vous intéressent

self.pink = 0x10c6
self.yellow= 0xffe0

En final j’ai effacé l’affichage (écran noir) et utilisé le bouton sur la montre pour afficher l’heure à la demande…

C’est l’assemblage de plusieurs programmes de démo fournis par Elecrow, avec un petit aménagement maison… J’ai aussi ajouté quelques couleurs dans la bibli de l’écran, on est en BGR sur 16 bits 😉

Après on peut modifier le programme pour laisser l’écran allumé 2 ou 3 secondes quand on appuie… je vous laisse vous amuser.

Ajouter des images

Passer de BMP à RGB565

Le format BMP est plutôt complexe avec une entête et des couleurs codées sur 3 octets (RVB) soit 24 bits.
Pour afficher sur l’écran CrowPanel on a besoin d’un fichier de données brutes au format RGB565 sans entête.

 

Première étape préparer un fichier bmp de 240x240px (j’ai pris mon logo) et le transformer de .bmp en RGB565. J’ai utilisé ce programme https://github.com/liyanboy74/bmp24-to-rgb565  que j’ai compilé sur un Raspberry Pi 5 qui a servi aussi à convertir les fichiers en RGB565.

Il suffit ensuite de lancer le programme Bmp24ToRGB565. Saisir le nom du fichier .bmp SANS L’EXTENSION (ici bluemarble) puis n et il génère un fichier .h qui contient…

Ici bluemarble est un tableau (ou array) de valeurs de type uint16_t ( uint16_t est un type de donnée représentant des valeurs entières positives sur 16 bits).C’est un tableau de 240*240 éléments, ce qui signifie qu’il peut contenir 57 600 valeurs uint16_t.
Mais ce n’est pas ce dont on a besoin, il nous faut juste les données. En plus ici elles sont en caractères hexa. J’ai donc écrit un bout de programme en Python pour « nettoyer » ce fichier (ne garder que les octets) et les écrire en binaire dans un autre fichier qui sera celui qu’on enverra à l’écran, enfin au framebuffer de l’écran !

Programme conv_bmp_565.py

Pour exécuter ce programme :

python conv_bmp_565.py bluemarble.h bluemarble.bin
Fichier binaire ‘bluemarble.bin’ créé avec succès.

Enfin pour l’affichage de ce fichier sur l’écran, j’ai ajouté une fonction à la bibliothèque microPython fournie par Elecrow (gc9a01.py)  dans le dossier démo microPython. Ajouter cette fonction dans la classe class LCD_1inch28(framebuf.FrameBuffer):

L’affichage en une fois produisait une erreur (sans doute due à la taille de mémoire utilisée) en faisant un affichage par blocs ça fonctionne et c’est aussi rapide… Le programme suivant est identique au précédent, mais on affiche le logo et on passe à l’affichage de l’heure quand on appuie sur le bouton.

Le programme d’affichage devient :

 

et avec plusieurs images :

La fin du programme devient

et on obtient :

Vidéo

 

Conclusion

Pour un écran qui coûte moins de 14$ on a des possibilités intéressantes. Je n’ai pas encore testé le Wifi ou le BT, mais on peut imaginer de se faire sa propre montre, chrono, d’afficher des infos etc… de quoi s’amuser pour pas cher.

Source

Acheter cet écran

Wiki de l’écran CrowPanel 1,28 pouce rond

Démonstration des possibilités par Felix Biego

https://openclassrooms.com/fr/courses/6951236-mettez-en-place-votre-environnement-python/7014018-creez-votre-premier-environnement-virtuel

https://forum.mchobby.be/viewtopic.php?t=750

https://github.com/russhughes/gc9a01_mpy

https://github.com/liyanboy74/bmp24-to-rgb565

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.