Atom PSRAM display Une interface HDMI pour Arduino ESP32 |
Maj : 29/06/2024
Abstract :
Résumé : |
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. |
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. In summary: |
|
Maximum 720P (1280x720)
|
Maximum 720P (1280x720)
|
|
Cela est bien séduisant sur le papier et j’ai commandé trois spécimens. 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: The final report will be at the end of this page. |
|
|
||
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. |
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. |
|
|
||
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. |
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. |
|
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.
|
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 |
|
|
||
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.
|
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é. | 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. | The checkerboards are not JPGs but are calculated directly in an attempt to improve speeds. | |
|
||
Voici les réglages utilisés pour le convertisseur d’images de Bodmer de JPG en C (c'est un fichier en .h).
|
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. |
|
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. |
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. |
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. |
|
L’après Atom : Processing Je reprends mon travail d’interpréteur de commandes sur Processing 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. |
After the Atom: Processing I'm resuming my command interpreter work on Processing , 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. |
|
|
||
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. Première panne classique : Deuxième panne classique : |
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. First classic failure: Second classic failure: |
|
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...
|
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...
|
|
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. Autre solution à explorer : PcDuino de linkSprite |
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. This will be the subject of another page. Other solution to explore : PcDuino de linkSprite |
|
|
||
Mauvaise expérience... |
Conclusion Bad expérience... |
|
|
Mise à jour 29/06/2024 |