Anthias
mail

r

Atom PSRAM display

Une interface HDMI pour Arduino ESP32
An HDMI interface for Arduino ESP32

m5


Introduction
Mon expérience
Quelques applications
Le bilan final
Conclusion

Maj : 29/06/2024

Abstract :
I have always been frustrated on Arduino by the limited selection of high-resolution SPI TFT screens availables.The idea of using an ESP32 with HDMI output was a dream, to works with the rich variety of Raspberry's screens, and I was excited to discover the Atom PSRAM! However, after intensive testing, my enthusiasm waned and I abandoned the idea.
I returned to my previous solution, which involves using Processing on a Raspberry Pi emulator as a slave, with commands sent via WiFi from an ESP32.

Résumé :
J'ai toujours été frustré sur Arduino par la sélection limitée d'écrans TFT SPI haute résolution disponibles. L'idée d'utiliser un ESP32 avec sortie HDMI était un rêve, pour fonctionner avec la riche variété d'écrans Raspberry, et j'étais ravi de découvrir cet Atom PSRAM ! Cependant, après des tests intensifs, mon enthousiasme s’est estompé et j’ai abandonné l’idée.
Je suis revenu à ma solution précédente, qui consistait à utiliser Processing sur un émulateur Raspberry Pi comme esclave, avec des commandes envoyées via WiFi depuis un ESP32.

nextion  Introduction

Enfin une sortie HDMI pour mes ESP32 !

Le concept de l’Atom PSRAm semblait bien séduisant. Le prix d’une cinquantaine d’Euros était très correct.
La maigre documentation est ici :
https://docs.m5stack.com/en/atom/atom_display

En résumé :

a

nextion  Introduction

Finally, an HDMI output for my ESP32!

The concept of the Atom PSRAM seemed very enticing. The price of around fifty Euros was quite reasonable.
The sparse documentation can be found here:
https://docs.m5stack.com/en/atom/atom_display

In summary:

Maximum 720P (1280x720)
image output 2K
Programmable RGB LED (classic WS2182), reset button x1, button
x1, Grove expansion port x1, (2 GPIO avalaibles).
Use FPGA (Gowin GW1NR-9C) to simulate traditional SPI TFT-LCD Data output
Built-in LT8618SX RGB to HDMI chip (supports 24bit color depth)
SPI interface (FPGA) + I2C interface (LT8618SX)((<-- Non disponible de l'extérieur !)
USB driver chip CH9102
ATOM Display PSRAM (ESP32-PICO-V3-02)
8MB flash   520KB SRAM + 2MB PSRAM
G22, G19, G5, G33, G25, G21 (<-- Utilisation réservée au FPGA !) G26, G32 utilisables


Il existe aussi une version Pico, sensiblement au même prix, mais avec deux fois moins de mémoire.

m5

Maximum 720P (1280x720)
image output 2K
Programmable RGB LED (classic WS2182), reset button x1, button
x1, Grove expansion port x1, (2 GPIO avalaibles).
Use FPGA (Gowin GW1NR-9C) to simulate traditional SPI TFT-LCD Data output
Built-in LT8618SX RGB to HDMI chip (supports 24bit color depth)
SPI interface (FPGA) + I2C interface (LT8618SX)((<-- Non disponible de l'extérieur !)
USB driver chip CH9102
ATOM Display PSRAM (ESP32-PICO-V3-02)
8MB flash   520KB SRAM + 2MB PSRAM
G22, G19, G5, G33, G25, G21 (<-- Utilisation réservée au FPGA !) G26, G32 utilisables


There is also a Pico version, roughly the same price, but with half the memory.

 

Cela est bien séduisant sur le papier et j’ai commandé trois spécimens.
J’ai fait tourner les quelques dizaines d’exemples disponibles, en décortiquant les codes et les bibliothèques pour tester ces limites et pallier à cet énorme problème qui est apparu immédiatement :
Il n’y a aucune documentation sur ce produit, il faut tout deviner !
Deux raisons :
1. Il est très peu diffusé, donc aucun forum ni personne pour poser des questions.
2. Le nom choisi est stupide, si vous faites une recherche « ATOM », vous trouverez une multitude de liens mais aucun n'a de rapport avec cette carte.

Le bilan sera en fin de cette page.

 

This looks very enticing on paper, so I ordered three specimens.

I ran the few dozen available examples, dissecting the codes and libraries to test their limits and address this huge problem that immediately became apparent:
There is no documentation on this product, you have to figure everything out on your own!
Two reasons:
1. It is very poorly distributed, so there are no forums or people to ask questions.
2. The chosen name is stupid. If you search for "ATOM," you will find a multitude of links, but none of them relate to this board.

The final report will be at the end of this page.

Haut de page

nextion  Mon expérience de l'Atom PSRAM

Matériel utilisé pour les tests : Téléviseur 2k, 24 pouces, évidement en HDMI.

J’ai travaillé intensément sur ce produit pendant de nombreuses semaines.
Je n'ai pas réussi à faire reconnaitre LVGL ou Square Line sur ce matériel.
Voici quelques-uns de mes programmes Atom développés sous PlatformIO.

r

nextion  My expérience on Atom PSRAM

Equipment used for the tests: A 24-inch 2k television, obviously using HDMI.

I worked intensively on this product for many weeks.
I was unable to get LVGL or Square Line recognized on this hardware.
Here are some of my Atom programs developed under PlatformIO.

Haut de page

nextion  Quelques applications

Mon obsession, le cadran Rolex, j’en ai fait sur tous les cartes possibles pour tester les performances. Le principe est complètement différent de celui du Nextion qui affichait une photo du cadran sans aiguilles (c’est trop banal !), ici aucune photo, le fond est entièrement calculé par l’ESP32 de l’Atom!

Pour le reste, les couches d’aiguilles sont calculées à l’identique et superposées au fond.

Cet éclaté montre la construction simplifiée des aiguilles comme sur Nextion avec un faisceau de segments calculés. Cela ne marche pas sur l’Atom car le moirage est très important suivant les angles.

exemple page : rolexA arduino

SinCos

nextion  Some Applications

My obsession, the Rolex dial, is something I've recreated on all possible boards to test their performance. The principle is completely different from that of the Nextion, which displayed a photo of the dial without hands (too mundane!). Here, there is no photo—the background is entirely computed by the ESP32 of the Atom!

For the rest, the layers of the hands are calculated identically and superimposed on the background.
This exploded view shows the simplified construction of the hands as on Nextion, with a bundle of calculated segments. This doesn't work on the Atom due to significant moiré effects depending on the angles.

Les aiguilles Atom ont été créées en utilisant la fonction drawTriangle pour les pointes, mais pour le centre, il n’existe pas de fonction drawQuadangle (la fonction drawRectangle ne permet que des rectangles horizontaux). Pour faire un rectangle incliné, il suffit de juxtaposer deux triangles sur une diagonale. Cela crée un remplissage de points sans trous éliminant le moirage.
Je n’ai pas pu implanter la trotteuse comme d’habitude, l’affichage est beaucoup trop lent, j’ai limité le rafraichissement à la minute.
The hands on the Atom were created using the drawTriangle function for the tips. However, for the center, there is no drawQuadangle function (the drawRectangle function only allows horizontal rectangles). To create an inclined rectangle, you simply juxtapose two triangles along a diagonal. This creates a point fill without holes, eliminating the moiré effect.
I couldn't implement the second hand as usual; the display is much too slow, so I limited the refresh rate to once per minute.

Un autre problème de l’Atom est que l’écran HDMI n’est pas tactile !

Pour contourner le défaut, j’ai utilisé une petite télécommande infrarouge (quelques € en Chine), branchée sur le GPIO G26, disponible sur la prise externe J3. Il reste G32 pour sortir un petit buzzer car le HDMI ne passe pas le son.

 

i

Another problem with the Atom is that the HDMI screen is not touchscreen!

To work around this, I used a small infrared remote control (a few euros in China), connected to the GPIO G26, available on the external socket J3. There is still G32 to output a small buzzer because the HDMI does not pass the sound.

 

 

Le cadran n’est pas une photo, il est entièrement calculé et vectorisé afin d’adapter n’importe quelle taille.

Cela fonctionne très bien et permet de simuler la souris pour changer les pages et valider des commandes.

The dial is not a photo, it is fully calculated and vectorized to adapt to any size.

This works very well and allows you to simulate the mouse to change pages and validate commands

Haut de page

Diverses images JPG pour tester les vitesses d’affichage, les qualités sont bonnes.

Le problème est le temps d’affichage de la page considérable, une seconde pour ces exemples, c’est inacceptable.

 

 

i

Various JPG Images for Testing Display Speeds

The display quality is good, but the problem is the considerable page display time—it takes one second for these examples, which is unacceptable.

 

 

Cela est toutefois suffisant pour des applications lentes comme la domotique qui n’implique qu’un rafraîchissement d’écran toutes les deux minutes, un scintillement étant alors parfaitement toléré.
y
However, this is sufficient for slow applications like home automation, which only requires a screen refresh every two minutes; in this case, flickering is perfectly tolerable.
Les damiers ne sont pas des JPG, mais calculés directement pour tenter d’améliorer les vitesses.
i
The checkerboards are not JPGs but are calculated directly in an attempt to improve speeds.

Haut de page

 

Voici les réglages utilisés pour le convertisseur d’images de Bodmer de JPG en C (c'est un fichier en .h).


Il est préférable d’éviter le 24 bits, la taille du .h étant déjà énorme en 16 bits, ici 1.8 Mb…
Le calcul du nombre de points retrouve cette valeur : 1280 * 720 *2
Les couleurs sont déclarées en « short » de 16 bits, en non pas en « int » qui prend 32 bits.

c

 

Here are the settings used for Bodmer's image converter from JPG to C (which generates a .h file).

It's better to avoid 24-bit color, as the size of the .h file is already huge at 16 bits—in this case, 1.8 MB.
The calculation of the number of points confirms this value: 1280 * 720 * 2.
Colors are declared as 16-bit "short" rather than 32-bit "int."

Une petite collection de quelques fonts pour tester les rendus.

Il faut conserver « size 1  », sinon chaque pixel est multiplié, choisir des fonts plus grands si nécessaire. Il n’y a pas de font vectoriel.

f

A Small Collection of Fonts for Testing Renders

It's important to keep the "size 1" setting; otherwise, each pixel is multiplied. Choose larger fonts if necessary. There are no vector fonts available.

 
 
Premier brouillon rapide pour tester le positionnement de mes outils de domotique.
Un relevé toutes les 2 minutes pendant 24 heures : 24*60/2 = 720, impose la taille du graphique à 720 points de large, détails dans mes autres pages domotique.
Il reste de la place à gauche pour afficher une petite Rolex.
Les données sont reçues en WiFi, l’ensemble étant autonome.
d

First Quick Draft for Testing the Positioning of My Home Automation Tools

A reading every 2 minutes for 24 hours: 24 * 60 / 2 = 720, determines the graph width to be 720 points wide. More details can be found in my other home automation pages.
There is space on the left to display a small Rolex.
The data is received via WiFi, making the system autonomous.

 
 
 
 

L’après Atom : Processing

Je reprends mon travail d’interpréteur de commandes sur Processing nextion en sommeil depuis quelques années.

L’avantage est qu‘un projet sur Processing développé sur une plateforme est immédiatement transposable sur une autre sans rien changer.
Sur l’Atom, il n’y a aucune documentation, mais sur Processing c’est l’inverse, documentation immense et quantité d’exemples spectaculaires créés par des artistes talentueux, avec une syntaxe très simple.

r

After the Atom: Processing

I'm resuming my command interpreter work on Processing nextion, which has been dormant for a few years.

The advantage is that a project developed on Processing can be immediately transferred to another platform without any changes.
On the Atom, there is no documentation, but with Processing, it's the opposite. There is extensive documentation and a plethora of spectacular examples created by talented artists, all with very simple syntax.

 
c
 

Haut de page

nextion  Le bilan final

J’ai pu obtenir des informations précises, et communiquer avec la société, et il s’avère que ce PSRAM est extrêmement peu fiable.
J’ai eu droit aux deux pannes récurrentes classiques et obtenu le remplacement de deux de mes Atom PSRAM.

Première panne classique :
La communication avec l’ESP2 se fait normalement, il est possible de faire tourner un programme qui sort des données en série, aucun problème de programmation, aucune erreur, mais il n’y a plus aucune sortie HDMI, comme si le câble était débranché. Ayant plusieurs unités (je me méfiais), j’ai constaté que le gros bloc contenant le FPGA n’était pas en cause, mais que le problème venait du petit module PSRAM, c’est pour cela que vous en voyez deux de plus (en panne) sur la première photo.

Deuxième panne classique :
Toujours du module PSRAM, le port USB disparait un jour (et ne revient jamais) comme si le câble USB n’existait plus. Le test est fait sur divers PC (les deux autres PSRAM fonctionnaient), il n’y a aucune solution autre que le remplacement.

p

nextion The Final Report

I was able to obtain precise information and communicate with the company, and it turns out that this PSRAM is extremely unreliable.
I experienced both of the classic recurring failures and got two of my Atom PSRAM modules replaced.

First classic failure:
Communication with the ESP2 proceeds normally, allowing a program to run that outputs data in series without any programming issues or errors, but there is no longer any HDMI output, as if the cable were unplugged. Since I had several units (I was wary), I observed that the large block containing the FPGA was not the problem, but rather the issue came from the small PSRAM module. This is why you see two additional faulty ones in the first photo.

Second classic failure:
Again with the PSRAM module, the USB port disappears one day (and never comes back) as if the USB cable no longer existed. The test was conducted on various PCs (the other two PSRAM modules were working), and there was no solution other than replacement.

Autre classique pénible, après avoir chargé un programme, ou un reset, plus rien ne s’affiche, il faut débrancher puis rebrancher USB, HDMI et cela peut repartir.

Cela fait beaucoup de problèmes et m’a bien refroidi, à chaque branchement, je me demandais si cela allait recommencer. Les deux modules isolés sur la photo du haut sont tombés en panne...
Le bloc chauffe beaucoup, tout est très tassé sur une toute petite surface et il n’y a aucune aération, ce qui est préjudiciable à la fiabilité.

 

Another annoying classic issue is that after loading a program or a reset, nothing is displayed. It requires unplugging and replugging the USB and HDMI cables, and then it might start working again.

This involves a lot of problems and really discouraged me. With each connection, I wondered if it would fail again. The two isolated modules in the top photo broke down...
The block heats up a lot, everything is very cramped in a small area, and there is no ventilation, which is detrimental to reliability.

 

L’idée était d’alimenter en 3.3V par la prise J3 et laisser le module autonome sans USB, interprétant les commandes distantes en WIFI.

Après ces essais, j’ai abandonné ce matériel et rebasculé sur Processing, qui est considérablement plus rapide et offre des possibilités graphiques sans aucune comparaison possible.
Regardez sur le site Processing les énormes possibilités graphiques et la vitesse, ce qui change des commandes très limitées et de la lenteur de l’Atom.
Le développement fait sur PC est transposé simplement sur Raspberry Pi, sur miniPC, ou sur tablette Android, la communication se faisant par WiFi.
Cela fera l’objet d’une autre page.

Autre solution à explorer : PcDuino de linkSprite

a

The idea was to power it with 3.3V through the J3 connector and let the module operate autonomously without USB, interpreting remote commands via WiFi.

After these trials, I abandoned this equipment and switched back to Processing, which is considerably faster and offers incomparable graphical capabilities.
Look at the Processing website to see the enormous graphical possibilities and speed, which is a stark contrast to the very limited commands and slowness of the Atom.
Development done on a PC is easily transferred to Raspberry Pi, miniPC, or Android tablet, with communication via WiFi.

This will be the subject of another page.

Other solution to explore : PcDuino de linkSprite

Haut de page

Conclusion

Mauvaise expérience...

m5

Conclusion

Bad expérience...

Haut de page

Mise à jour 29/06/2024

Vous trouverez tous les logiciels de cette page dans cette archive sur --->
You will find all softwares of this page in this archive on --->

eclate

Haut de page

© Christian Couderc 1999-2024     Toute reproduction interdite sans mon autorisation


* Page vue   1498   fois       IP : 3.22.42.189

 Haut de page         Dernière retouche le 29 Juin 2024 à 14 h         Retour page précédente

   Collector