O ecrã Nextion é uma das melhores soluções para criar uma interface gráfica para controlar o seu projeto Arduino. A interface mais conhecida para interagir com um Arduino é o ecrã LCD com alguns botões e potenciómetros à custa de E/S e de sobrecarga de código Arduino. Neste tutorial, veremos como configurar um ecrã Nextion e como utilizá-lo com o Arduino.
Hardware
- Arduino (ou outra placa com porta UART)
- Ecrã Nextion
- Adaptador USB-TTL 5V
- 4x fio Dupont com conetor JST
Apresentação do cartão Nextion
A interface básica para controlar um Arduino, e presente em todos os kits, é o ecrã LCD com alguns botões e potenciómetros, que existe sob a forma de um LCD Shield. Existem também Shields com ecrãs tácteis, mas estes utilizam todas as E/S do Arduino e sobrecarregam o código do Arduino. Uma solução é utilizar um ecrã Nextion, que contém o seu próprio programa e comunica com qualquer microcontrolador através da porta série.
N.B.: É possível criar uma interface gráfica num PC ou criar uma interface Web para controlar o projeto, adicionando um módulo de comunicação sem fios.
Instalação e apresentação do editor Nextion
Descarregar e instalar o editor Nextion
Quando abre um novo projeto ou ficheiro, o software pede-lhe o modelo de ecrã (no nosso caso, NX4832K035_011). Pode alterar a seleção no menu Dispositivo>Definições.
Em seguida, escolha a orientação do ecrã e a codificação.
Criar uma interface gráfica
Vamos utilizar o editor gráfico Nextion para criar a nossa interface gráfica. Neste exemplo, vamos adicionar:
- Uma imagem
- Alguns textos para o título ou para apresentar dados
- Um botão que altera a interface
- Um botão que envia um comando para a porta série
- Um temporizador que actualiza a interface
- Uma variável que armazena os dados recebidos da porta série
Para adicionar um objeto, clique no objeto pretendido na janela Caixa de ferramentas e o objeto será automaticamente inserido na janela Mostrar. Pode então configurar o objeto na janela Atributos
Pode descarregar o ficheiro GUI para o importar para o Editor Nextion. Com este exemplo, será capaz de criar interfaces muito mais complexas.
Adicionar uma imagem
Para adicionar uma imagem, comece por importá-la para o software utilizando o botão (+) na janela “Imagem”.
Pode então inserir um objeto Imagem na janela de visualização e selecionar a imagem premindo o atributo pic > procurar….
N.B.: Adicionar uma imagemaux dimensions désirées
Adicionar texto
Antes de adicionar um objeto de texto, é necessário gerar um tipo de letra. Isto pode ser feito em Ferramentas> Gerar tipo de letra
Quando o tipo de letra tiver sido gerado, pode seleccioná-lo no atributo font do objeto Text. Pode então modificar o texto no atributo txt (tenha em atenção o número máximo de caracteres txt_maxl).
Estamos a adicionar quatro objectos de texto:
- A etiqueta do título
- o estado do LED
- a etiqueta “Analog Val
- o valor analógico recebido do microcontrolador
Adicionar um botão
Depois de o objeto botão ter sido adicionado à interface, pode ajustar os seus atributos:
- o texto apresentado
- a cor quando o botão é premido
- a cor quando libertada
Na janela Eventos, pode programar o que o ecrã fará quando o botão for premido ou libertado. Há uma série de instruções que pode utilizar nestas janelas. Estas incluem
- Modificar elementos da interface (por exemplo, t0.txt=”Pressionado”)
- Enviar identificador de botão através da porta série
- Envoyer une autre commande avec prints
- Botão b0
- Botão b1
No separador Touch Release Event, escrevemos o seguinte comando, que é um comando predefinido da biblioteca Nextion e corresponde a trigger1()
printh 23 02 54 01
- Botão b2
Para o botão b2, utilizamos o mesmo comando, mas para trigger2()
printh 23 02 54 02
Adicionar um temporizador
O objeto Timer pode ser utilizado para executar código numa base regular. É particularmente útil para obter dados da porta série e atualizar a interface.
No separador Evento do temporizador, utilizamos a função covx para converter o valor da variável numa cadeia de caracteres e escrevê-la no texto t4
covx analog0.val,t4.txt,0,0
Carregar o programa no ecrã Nextion
Ligar o cartão Nextion ao conversor USB-TTL
Para carregar a interface, prima Compilar e depois Carregar
Ligar o ecrã Nextion ao microcontrolador Arduino
Para descarregar o código Arduino para a placa, os pinos RX e TX devem ser desligados do ecrã.
Usando a biblioteca Nextion.h
Existem várias bibliotecas que podem ser utilizadas para gerir um ecrã Nextion
Utilizamos o EasyNextion
No Editor Nextion, definimos um evento de libertação “printh 23 02 54 01” para o botão ON e um evento de libertação “printh 23 02 54 02” para o botão Off.
Utilizando a função NextionListen(), estes comandos activam as funções trigger1 e trigger2.
#include "EasyNextionLibrary.h" #define baudrate 9600 EasyNex myNex(Serial); //Variables uint16_t analog; bool ledstate; const int REFRESH_TIME = 100; unsigned long refresh_timer = millis(); void setup() { myNex.begin(baudrate); pinMode(A0, INPUT); pinMode(LED_BUILTIN, OUTPUT); } void loop() { myNex.NextionListen(); if ((millis() - refresh_timer) > REFRESH_TIME) { analog = analogRead(A0); myNex.writeNum("analog0.val", analog); refresh_timer = millis(); } } //`printh 23 02 54 XX` , where `XX` the id for the triggerXX() in HEX. void trigger1() { digitalWrite(LED_BUILTIN, HIGH); myNex.writeStr("t2.txt", "LED ON"); } void trigger2() { digitalWrite(LED_BUILTIN, LOW); myNex.writeStr("t2.txt", "LED OFF"); }
Resultados
Bónus: Simulador do editor Nextion
A Nextion propõe um simulador para testar as interacções entre o ecrã, o microcontrolador e a interface gráfica. Este simulador pode ser acedido clicando em “Debug”.