Afficheurs « intelligents » Nextion Le pour et le contre |
Maj : 18/05/20
Abstract :
Résumé : |
Après avoir commencé la programmation sur des gros IBM à cartes perforées en Cobol (et oui, elles ont fini en 1975…), j'ai pratiqué sans discontinuer le langage machine depuis l'Apple 2 (1977), les premières calculatrices scientifiques Hewlett Packard (HP 28 en 1987), puis tous les microcontrôleurs du marché. Au fil des ans, mes boîtes sont pleines de prototypes utilisant tous les types de microcontrôleurs du marché (mais principalement sur famille 8051 et un peu de Pic). Tout avait été développé avec de nombreux langages assembleurs et compilateurs variés, ce qui rend impossible de ressortir une ancienne carte et l'associer à son bon environnement de l'époque pour reprendre le développement.
Je suis arrivé à des situations bloquantes pour lesquelles l'assembleur montrait ses limites. Il devenait extrêmement pénible de gérer les cartes SD, les disques durs, et surtout l'Ethernet, l'Internet, le Wi-Fi, le Bluetooth, le Xbee...
Pour sortir de cette impasse et changer de stratégie, il n'y avait d'autre solution que de tout jeter et de repartir sur de nouvelles bases.
Après de longues réflexions, et divers vagabondages, j'ai définitivement basculé sur Arduino, pour diverses raisons :
° L'environnement Arduino est totalement ouvert, toutes les sources et hardwares sont parfaitement bien documentés.
° Il existe une multitude de bibliothèques qui facilitent le développement d'innombrables périphériques.
° La communauté Arduino est très active, la diffusion est très grande.
°
Il est possible de développer son code source capable de tourner à la fois sur une carte très puissante (DUE, AT Mega 2560, Pic32,...) et sur un très petit circuit 8 pattes (ATtiny).
Il suffit de déclarer sa cible au compilateur et évidemment de n'utiliser que ce dont dispose le contrôleur choisi.
° Le langage principal est le très classique C (et C++), universel et rigoureusement indémodable, ce qui assurera la pérennité des développements.
Vous trouverez ici plus de détails : Choisir entre le C et l'assembleur
Les afficheurs intelligents Nextion ont de grandes qualités, mais aussi d'énormes défauts !
Il faudra apprendre à jongler avec.
Il est normal au premier contact de se sentir dérouté par cette approche nouvelle quand l’habitude est prise de travailler avec des afficheurs passifs, mais il existe de bons tutoriaux pour découvrir les bases et se lancer.
Le site Nextion offre une documentation indispensable pour comprendre l’esprit du produit qui semble toutefois non finalisé et de conception étrange.
Points positifs :
1. Très bel affichage en 800*480 (5 et 7 pouces).
2. Ecran tactile sensible (bien que résistif).
3. Liaison à l’Arduino par 2 fils série seulement (plus alimentation), ce qui permet de déporter l’affichage très facilement.
4. Ecriture facile des programmes utilisateur par transfert via la microSD.
Points négatifs :
1. Absence catastrophique de la notion de fonctions permettant d’échanger des données, cela fait des codes très longs et illisibles car il faut répéter de gros blocs identiques de code (voir "aiguilles complexes" en page "Rolex Nextion").
Il n’y a même pas de macros…
2. Pas de nombres flottants, la trigonométrie est pénible.
3. Aucun accès à la RAM, impossible de créer des tableaux indexés.
4. La taille de l’EEPROM n’est que de 1024 pauvres bytes, et comme une écriture utilise 64 bits (4 bytes), il n’y a que 256 adresses utiles. Ceci n’est valable que pour les versions « enhanced », pour les « basic », c’est pire, pas d’EEPROM, aucune solution.
5. Il n’y a aucun moyen d’accéder à l’excellent et très puissant STM32 exploité au minimum pour faire tourner le Nextion, il est impossible d’ajouter des bibliothèques personnelles, le firmware est verrouillé, non abouti et confidentiel. Il manque énormément de fonctions utiles pour faire du graphisme.
6. Pas de sinus, cosinus…. Voir mes exemples pour contourner.
7. Pas de fonction de remplissage graphique pour des triangles ou des formes.
8. Syntaxe étrange, ce n’est pas du C normal : fins de lignes sans « ; », interdiction des espaces, obligation du « .val » pour chaque variable… Au premier abord on croit reconnaître du Visual C, mais Nextion n’en imite qu’une partie.
9. Documentation indigente ne montrant que les bases simples, tout ce qui est complexe renvoyant à des pages « SonOff » effacées.
10. Le firmware n’évolue pas malgré les doléances des utilisateurs.
Le développement du produit semble abandonné depuis des années.
11. Prix beaucoup trop élevé
12. Consommation élevée due au rétro-éclairage, presque 500 mA en 5V.
13. Impossibilité d’exploiter la micro SD pour autre chose que charger le programme compilé.
* * * J’arrête ici, vous en avez assez pour vous faire une idée…
Après de multiples développements sur Nextion et la découverte des défauts et avantages, une question se pose :
Faut-il persister sur Nextion ou chercher une alternative ?
° Pour : Nous avons vu les avantages, le principal est que cela existe clefs en main !
°Contre : Beaucoup de problèmes déjà cités, manque de souplesse, prix, suivi…
Le STM32 qui équipe le Nextion est extrêmement sous-employé. Malheureusement le firmware n’est pas open source ni téléchargeable, et il n’y a aucun moyen d’améliorer la situation en l’état.
L’idée est donc de se faire son « Nextion maison », en prenant les avantages du modèle et en gommant les défauts.
Pour réaliser cela, choisir un bon afficheur tactile disposant de bonnes bibliothèques (ce n'est pas gagné...).
Le coupler en parallèle avec un ESP32 dédié uniquement à l’affichage et au tactile.
Le plus gros morceau est de développer son firmware personnel, mais cela peut se faire petit à petit.
Cet assemblage permet de dialoguer avec les autres applications Arduino, en deux fils série comme sur le Nextion et en plus Wi-Fi et Bluetooth.
Il est ainsi possible de gommer tous les défauts du Nextion qui visiblement n’est pas fini et dont le développement semble abandonné…
Cela fera l’objet de futures pages.
Remarque : Une nouvelle série « Intelligent » est sortie, améliorant un peu la série « Enhanced », mais sans corriger aucun des gros problèmes.
J’ai maintenant changé de paradigme !
Après avoir exploité au maximum les limites du Nextion en lui faisant faire tout ce qui est possible, il ne fait plus rien dans mes nouvelles applications…
Je charge seulement images et fonts et toutes les commandes passent par l’Arduino, c’est beaucoup plus souple.
Tous les détails et logiciels sont dans cette page à jour au : 220511 |