écran ITEAD et logiciel NEXTION

Bonjour à tous,

je suis fervent amateur d'arduino, et depuis un peu plus d'un an je programme ces petite bête dans mon « coin » et, ayant tout appris de moi même, comme beaucoup ici, je suis maintenant assez « apte » pour concevoir tout mes programmes mais il y a un domaine que j’affectionne tout particulièrement c'est l'affichage des données sur des écran divers, lcd, tft et oled, et pour tout vous dire je suis content des résultats obtenue !!
Alors je me suis dit pourquoi ne pas monter d'un cran l'apprentissage dans ce domaine et c'est la raison pour la quel j'ai acheté un écran ITEAD et monté le logiciel NEXTION , et j'ai enfin réussit à mettre une image sur mon écran ( un 7 pouces ) par l'intermédiaire de la carde SD intégré, mais par contre là où je ne comprend pas vraiment c'est comment faire réagir mon écran en fonction des données géré par mon arduino ( j'utilise pratiquement que des arduino mega2560 r3 ) !
je voudrai en effet, faire avec mon écran et un arduino mega, une station météo avec affichage de l'heure ( avec une RTC ) des polluant de l'atmosphère ( capteur série « MQ » ) et humidité ( am2320) et pression barometrique ( bmp180), et afficher les données sur plusieurs pages que je changerais en me servant du pavé tactile de cet écran ;
Le problème c'est que je ne comprend pas comment faire évoluer le arduino au travers mon ecran et interagir avec ; en fait je ne suis pas encore tout à fait à l'aise avec les sorties numériques TX et RX, et ce que quelqu'un pourrai prendre un peu de son temps pour m'expliquer un peu le système ?? je regarde un peu le site NEXTION et ITEAD mais ce n'est pas super explicite et en plus c'est en anglais, je suis sur qu'il y a une « broutille » à régler sur mon programme arduino mais je ne connais pas cette « broutille » par contre étant donné ceci je n'ai pas encore réalisé de programme dédié j'ai juste intégré à l'IDE arduino les 3 types d'exemples NEXTION et ITEAD ; je vous remercie à l'avance pour l'aide que vous pourrez m'apporter !!

Vous avez regardé cette librairie et/ou cette page ?

En gros c'est un écran avec interface série, donc les échanges se font avec un certain niveau d'abstraction (ordres de haut niveau) par des commandes sur le port série, un peu comme Le langage de commande AT des GSM ou Bluetooth ou des GPS séries par exemple, sauf que les commandes dépendent de la modélisation de votre interface utilisateur et des objets créés pour l'écran

La librairie propose un niveau d'abstraction supplémentaire en déclarant les objets et associant des callback des actions sur ces objets (procédure appelée si vous touchez un sur l'écran par exemple)

(Je ne les utilise pas car ils n'ont pas d'éditeur d'interface sur Mac ni Linux)

merci pour cette réponse, je n'ai pas tout compris mais je vais faire avec, par contre j'ai tout de même réussit ( après deux jour d'essais) à afficher une image et lui donner la dimension voulu et j'ai réussis à afficher différente figure donc je pense que çà "rentre doucement" dans mon esprit mais par contre je ne comprend pas encore ce que signifie "callback" mais je vais regarder çà de près dès que possible ...

je pense qu'il faut un "brainstorming" sur le sujet de ma part, comme je l'ai fait avec l'apprentissage du langage Arduino, mais je croie que çà va prendre un peu de temps ;

n'y a t il pas de tutoriel en Français sur le sujet ( avec arduino et écran car j'en ai vu sur raspberry et sur d'autre microcontroleur mais je n'ai pas trouver un site qui me plaise, mais je n'ai peut être pas cherché là où il faut ?!) ??
ah autre chose : comment installe t on le logiciel ITEAD / NEXTION sous linux ??car sous window j'ai fait mais je ne comprend pas comment faire sous linux !? enfin s'il est possible de m'aiguiller mais je ne sais pas si çà rentre dans le cadre du forum arduino ??

En tout les cas merci pour vos aides c'est toujours instructif de poser des questions et obtenir des réponses sur ce forum !!

@bientôt ...

autre chose : comment installe t on le logiciel ITEAD / NEXTION sous linux ?

On ne peut pas ils n'ont qu'une version Windows. Donc je n'utilise pas leurs produits... j'ai regardé à un moment (il y a longtemps à à titre de curiosité intellectuelle) leurs spécifications et solution

En gros

  • vous utilisez leur logiciel pour créer une interface utilisateur (modèle vue contrôleur), qui se compose de plusieurs pages (chacune avec un numéro) et un certain nombre d'objets sur ces pages (chacun avec un numéro et un petit nom). ça génère un fichier qui doit être chargé dans la mémoire de l'écran et qui va communiquer avec votre programme Arduino sur le port série.

Pour le charger vous concevez et générez le fichier de définition de l'interface avec leur logiciel,puis vous le sauvez sur une carte SD, mettez la carte SD dans l'écran, rebootez l'écran, ça lit le modèle en mémoire de l'écran. Vous retirez la carte SD et vous rebootez et votre interface utilisateur apparaît alors et les échanges entre l'écran et votre Arduino vont s'effectuer par le biais de communication série 9600 bauds. (Vous pouvez aussi connecter un adaptateur USB vers série (genre FTDI) et depuis le logiciel uploader directement par le port série le modèle dans la mémoire de l'écran. Ce sera plus lent que par la carte SD mais pour des petits modèles c'est pratique (la gestion du reboot est automatique et l'interface s'affiche directo))

Une fois le dessin de l'écran défini, avant de charger dans l'écran, tous les éléments visuellement interactifs ou modifiables peuvent/doivent etre paramètrés pour envoyer ou recevoir des messages

Par exemple (simplification un peu abusive pour illustrer):

  • si vous crééz une zone de texte dans l'éditeur avec comme nom t0 et qu'ensuite vous envoyez un message par le port série qui va dire t0.txt="125" alors l'affichage mettra à jour le champ texte et présentera la valeur 125. C'est testable directement dans leur outil

  • si vous créez une barre de défilement (slider) avec le nom h1 par exemple et que dans l'éditeur vous le configurez pour envoyer l'ID du slider quand il est bougé et relâché (touch release event), si vous passez en mode simulation et bougez le slider à la souris, vous pouvez voir le message qui sera envoyé depuis l'écran envers votre micro contrôleur par le port série (une suite de code hexa décimaux genre "0x65 0x00 0x01 0x00 0xFF 0xFF 0xFF"). Votre Arduino doit donc décoder ce langage barabare pour comprendre que le slider a bougé... c'est un peu pénible à faire à la main et c'est la que les libraires sont utiles

  • la librairie officielle se paramètre en modifiant un fichier de config pour dire quels sont les ports séries à utiliser puis par un modèle déclaratif de ce qui existe sur l'écran --> si vous avez créé un objet texte dans l'interface sur la page 0, objet N° 10 de petit nom t0 alors il faut instancier un objet texte dans votre programme Arduino par exempleNexText t0 = NexText(0,10,"t0"); // No de page, No d'objet, Nom de l'objet , idem pour les boutons puis vous listez tous ses objets dans un tableau de pointeurs vers des instances d'objets de type NexTouch terminé par NULL par exemple NexTouch * liste = {&t0, NULL};

Pour les éléments actifs, genre boutons, sliders, etc vous définissez alors pour chacun une fonction dans votre code et associez cette fonction à la réception d'un événement spécifique: sur le bouton par exemple quand il est appuyé ou relâché et l'associez à votre objet bouton (c'est ce qu'on appelle le callBack, la librairie appellera automatiquement cette fonction pour vous quand elle reçoit l'événement)

C'est dans le code de cette fonction callBack que vous faites vos modifications et calculs, puis si vous avez instantané un objet texte par exemple, vous pouvez appeler une méthode sur cet objet pour changer l'affichage - l'objet se débrouillera pour envoyer la bonne commande sur le bon port série genre

char message[] = "Hello";
t0.setText(message)

affichera Hello dans le champs text parce que l'objet se sera chargé d'envoyer t0.txt="Hello" (suivi de trois 0xFF) sur le port série pour vous

Le setup commence alors par un appel à nexInit(); (avant votre Serial.begin() si vous utilisez la fonction de debug), vous attachez les callbacks, et dans la loop il suffit d'appeler souvent nexLoop(liste); pour dire à la librairie d'aller écouter sur le port série si un Message en provenance d'un des objets de la liste à été reçu et si oui d'appeler le bon callback pour vous

J'espère que ça clarifie un peu - prenez un de leurs exemples dans la librairie pour voir comment tout cela se fait

waw, merci pour cet éclairage c'est très instructif, je vais relire et essayer les différents outils du logiciel et avec vos explications çà devrais aller , vraiment merci !!

il ne me viens pas d'autres questions pour le moment, alors de ce pas je vais essayer tout çà!!

merci beaucoup !!

Nicolas

Bonjour,

Perso j'emploie le nextion et en suis très comptant,

Toute les page sont a créer via le logiciel d’édition.
On peu y créer des boutons etc.
Il y a aussi un model dans la game qui possède une RTC interne et des I/O ainsi il est totalement autonome mais ne peut égaler toutes les possibilité d'un arduino.

si besoin n' hésite pas a me demander.

A+ et amuse toi bien

Bonjour le_joebar C'est gentil de proposer de l'aide car là j'ai passé un bonne heure et plus moyen de charger une image ( picture) avec le logiciel et je ne comprend pas d'où çà viens !!

je fait comme suit : je telecharge une image du logiciel nextion vers la carte sd puis je sort la carte sd du plot de mon ordi, je debranche l'écran et j'insert la carte sd puis je rebranche l'ecran et il me dit baud: 9600 sd card update no find file !!!!!!!!!!!

c'est incompréhensible !!

j'ai fait pareil avec la première image et çà marchait et là plus moyen je suis dégouté !!

est ce possible que la carte sd et foutu ?? car sur l'ordi il me met 14.8go de dispo et 14.8 go de libre alors je doit mal faire un truc mais là je suis vraiment en pétard !!

peux tu me venir en aide ?? parce que là je ne sais plus quoi faire !!

merci !

Bonjour,

je pense que j'ai localisé le problème mais je ne suis pas certain : je fait un dossier .hmi sur ma carte sd ( disque F de mon ordi ) et quand je la place sur mon ecran rien ne se passe il me dit qu'il n'y a pas de fichier( no find file ) je pense donc que c'est soit ma carte sd soit ma façon de procéder !
Pour régler le premier truc suspect j'ai commandé deux carte sd de 16go pour vérifié si c'est bien çà qui coince !
mais j'ai des doutes ! en effet je ne comprend pas pourquoi la carte sd serai foutu et personne pour me guider je suis seul !!
j'espère que je comprendrais vite le pourquoi du comment , mais en attendant je met en standby mon histoire le temps que mes deux sd card soit arrivées !!

à bientôt ...

Elle est formattée comment cette carte ?

Il faut que tu lises la documentation, c'est pourtant très explicite.

2.4.2. How to upload project firmware (tft format) via SD card?

Prepare a SD card, make sure SD card in FAT32 format and less than 32 GB.

Copy the project file from PC (Open Nextion Editor→File→Build Folder) to SD card, make sure there is only one .tft project file in it.

Insert the SD card into Nextion SDcard slot, then power on, project installation will be automatically proceeded.

When the screen displays "Program completed", power off your Nextion, remove the SD card, the entire process is completed.

Salut Photonnoir,

Désoler de n'avoir répondu j’étais sur un problème dont J-M-L m'a apporté son aide maintenant c'est résolus.

Perso je n'emplois pas la SD cart je transfert en rs232 via mon nano qui reste vide de programme.

Je connecte mon écran sur le port RX TX du nano et je fait le transfert direct de l’éditeur vers l'écran !

J'ai aussi rencontré des problèmes pour le transfert via la sd et j'ai donc opte pour la solution reprise plus haut :wink:

Ce qui me conviens très bien pour mais applications.

Bonjour, je viens juste de voir vos message et c'est, à mon avis, mon système de transfert venant du logiciel nextion vers ma sd card ( je viens de voir que moi je n'ai pas de "programme .tft" mais .hmi je pense que çà viens de là !!)
je vais essayer comme le dit la notice ( j'ai pas encore regarder celle ci c'est une faute de ma part je sais, mais je pensais que c'était moins "compliqué" ) et je vous dirais si çà marche ou pas...

en tout les cas je mettrais un retour sur ce forum, et je vous remercie de vos réponses

à bientôt .

Re-bonjour,

je viens d'essayer un"scrolling text" sur une image et çà marche impeccable, il fallait juste que je comprenne bien la procédure à suivre et installer le fichier .tft en lieu et place du .hmi !! et il faut uniquement mettre un seul .tft sur la sd card ;

donc merci beaucoup pour vos explications !!

par contre je n'ai pas encore compris comment on fait la relation entre le soft nextion et le soft arduino mais cela je pense qu'après quelques essais je trouverai en tout les cas j'ai déjà avancé et çà je vous le doit merci !!

@bientôt
Nico

par contre je n'ai pas encore compris comment on fait la relation entre le soft nextion et le soft arduino mais cela je pense qu'après quelques essais je trouverai en tout les cas j'ai déjà avancé et çà je vous le doit merci !!

regardez les exemples

il faut créer un objet en mémoire qui représente l'objet de l'écran - ensuite la librairie se charge de tout pour vous

Bonjour,

hier j'ai reussi donc la mise en place de bouton , de "scrolling text" et d'image sur mon écran nextion mais je n'arrive toujours pas, malgré vos explication ( désolé ), à faire de sorte que si j’appuie sur ce "bouton virtuel" sur l'écran à faire quoi que ce soit sur l'arduino !

J'ai bien le bouton qui change de couleur sur l'écran comme je l'ai demandé , mais malgré la librairie arduino "button" je n'arrive pas à trouver là ou il faut intervenir sur le logiciel nextion et/ou arduino !!

vous n'auriez pas d'exemple ?? genre montrer ce qu'il y a sur le logiciel nextion et le logiciel arduino ( programme de l'un et de l'autre ) juste au moins sur le mode "button" ?!

en Fait je ne sais pas ou agir sur l'un et l'autre soft !!

J'ai bien noté un changement ( le bouton ne changeais plus de couleur ) si je modifie le programme arduino à un endroit, mais je ne comprend pas comment cela ce fait réellement ?!

merci pour votre patience !!

Nico