home castoo
chapitre electronique
Electronique carte Yunshan HW622

Ecran NEXTION
Découverte

mars 2020

Découvrir les possibilités et la philosophie des écrans Nextion

Je ne vais pas détailler toutes les opérations nécessaires à l'utilisation des écrans Nextion, je vais simplement vous faire part de ma découverte de cette nouvelle approche de codage. Quand on utilise un Arduino une des principales préoccupations est de surveiller l'occupation mémoire du code et des variables. Avec l'arrivée des Esp-8266 et Esp-32, la préoccupation sur la mémoire restante est devenue moins préoccupante, mais cependant pour exploiter des images, voire de la vidéo avec ces processeurs reste compliqué, il faut mettre en oeuvre la mémoire SPIFFS...
Pour ce test ma principale préoccupation a donc été de voir si les écrans Nextion pouvaient faciliter cela...
Les possibilités que j'ai découverte avec ces écrans sont vraiment nouvelles (en tout cas pour moi !) :
Seulement deux sorties Gpio sont nécessaire, toutes les autres entrées sorties restent donc disponible pour le projet !
Toute la partie IHM (Interface Homme Machine) est codée coté écran à l'aide d'une interface sur PC très ergonomique. Cela veut donc dire que comme le code est stocké coté écran il reste presque toute la mémoire disponible pour le projet coté processeur.
Le fait que l'affichage soit réalisé derrière une liaison série va par contre interdire certains projets ou la vitesse est primordiale, si vous avez besoin d'afficher un dialogue qui, arrive sur une autre entrée série à 115200 bauds ça va coincer (même si vous pouvez régler le dialogue entre l'UC et l'Ecran à cette même vitesse !).
En résumé je pense que ce type d'écran est vraiment génial sur certains projets mais qu'il faut parfois revenir à des écrans plus traditionnels.
En tout cas pour les débutants ce type d'écran est TOP, codage basique avec une interface graphique sur PC (ni linux ni Mac) !

Fin du blabla on découvre l'interface entre l'UC et l'écran


Voilà c'est ok que quelques fils et quelques lignes de code, c'est pas cool ! Ecran Nextion en fonction avec esp32




Le code de base qui doit vous permettre de démarrer pour vos propres projets...


// Exemple utilisation écran Nextion avec un Wemos esp32 kit mini
// Mars 2020
// Castoo https://castoo.fr 
// Code libre de droit
//
#include "HardwareSerial.h"
#include "Nextion.h" // Librairie a modifier pour utiliser interface serie matériel
#define nextion Serial2 // sur esp 32 gpio 16 et 17

Nextion myNextion(nextion, 9600); // Déclaration de l'objet

// On déclare une variable par bouton
boolean b_diapo;
boolean bd;
boolean bg;
int v_cpt = 1;

void setup() {
  myNextion.init(); // Initialisation de la cnx avec l'écran
}

// Affiche la photo v_cpt en x=10 et y=20 
// Pour trouver le détail de la commande "pic" ainsi que de nombreuses autres commandes
// Voir dans la doc Nextion sur leur site.
void aff_diapo(){
	char str_cpt[1];
	char str_cmd[12];
	dtostrf(v_cpt, 1,0, str_cpt);
	sprintf( str_cmd, "pic 10,20,%s", str_cpt);
	// sendCommand permet de passer divers commandes mais attention suivant le type d'écran (Basic, Enhanced ou Intelligent)
	// vous n'avez pas droit à toutes les commandes et vous n'aurez pas de message d'erreur ici, simplement l'opération
	// ne se réalisera pas ! C'est un peu déroutant !
	myNextion.sendCommand(str_cmd); 
}

void loop() {
	String message = myNextion.listen(); //Lecture de l'entrée de l'écran si appuit sur un bouton message va se remplir avec code
	// Le 0 page 0 le 5 c'est l'id bouton droit dans mon cas le 0 actif lors du relachement
	if (message == "65 0 5 0 ff ff ff") {
		myNextion.buttonToggle(bd, "bd", 0, 5);
		v_cpt++;
		// Initialisation du champ numérique sur l'écran (juste pour l'exemple)
		myNextion.setComponentValue("val_diapo", v_cpt);
		aff_diapo();
	}
	// Autres boutons............
	if (message == "65 0 6 0 ff ff ff") {
		myNextion.buttonToggle(bg, "bg", 0, 6);
		v_cpt--;
		myNextion.setComponentValue("val_diapo", v_cpt);
		aff_diapo();
	}
	if (message == "65 0 3 1 ff ff ff") {
		myNextion.buttonToggle(b_diapo, "b_diapo", 0, 3);
		v_cpt = 1;
		myNextion.setComponentValue("val_diapo", v_cpt);
		aff_diapo();
	}
	delay(100);
 }	
	


Télécharger test_2.HMI


Un écran qui permet très simplement d'explorer des domaines inhabituelles avec des petits systèmes comme l'arduino ou l'esp. Bonne découverte à vous, en tout cas moi, je vais creuser car ce type de matos est intéressant, même s'il ne remplacera pas toujours nos écrans traditionnels.



accueil electronique

Bricolage Robotique Informatique Peinture Voyage
Téléc. portail Le robot "mécano" Astuces informatique Henri Bertrou Auvergne
Bat. Iphone 6S Le robot "solaire" Réseau couche app. Jean-Michel Castille Floride
Robot piscine Servo et IR" Réseau Les couches New York
Xiaomi M365 Le robot "thymio" Réseaux Outils L'Ouest américain
Mac Mini Le robot "Rovio" Unités grandeur inf. L'Ile Maurice
Putty SSH Windows L'Italie / Venise
Bases Raspberry Tunisie
Termius IPhone/IPad Grece
Le vieux ZX 81
...
Navigation La Rochelle CNC / Imp3D Electronique Programmation
Rencontre dauphins Les Minimes Construction CNC Alim. TPL 5110 Doc. programme
Analyse NMEA 0183 Le Vieux port CNC du commerce Carte ESP8266 Indent programme
graph. NMEA 0183 L'Ile de Ré Martyr CNC ESP8266 1 relai Prog. objet
Analyse trames AIS A visiter Réa. imp. 3D ESP8266 Alarme Prog. procédurale
Analyse AIS TCP-IP Cura impression 3D ESP8266 MQTT
Sortie en ketch Plateau CR10 ESP8266 Temp.
Echange GPS C80 Anémomètre.
HP Sun-Odyssey CNC / 3D en vrac MCP9808 Librairie
LCD yanmar Saisie Oled
Testeur nmea esp1 i2c