Arduino e Display Nextion

 

Tutorial – Arduino e Display Nextion

Autor: Edney Rossi





Introdução:

Este tutorial objetiva acionar uma saída da placa Arduino, como por exemplo o LED onboard localizado no pino 13, ou outra saída a escolha, sendo acionado através de botão touchscreen localizado no display Nextion. O Display Nextion  se comunica com o Arduino através da porta serial. Devemos usar uma alimentação exclusiva de 5v e pelo menos 500mA, para alimentar o Display, essa alimentação pode ser provida através de um carregador de smartphone.

Ingredientes:

Preparo:

1 – Baixar e instalar os aplicativos para desktop: 

Nextion Editor e Arduino IDE.

2 – Instalar a biblioteca Nextion na sua Arduino IDE:

Para isso baixe a biblioteca(arquivo.zip) do repositório GitHub da empresa fabricante do Nextion ITEAD, descompacte o arquivo dentro da pasta Library do Arduino, no Windows 10 geralmente o caminho é: 

C:\Users\User\Documents\Arduino\libraries\

3 – Configurar biblioteca para Arduino UNO:

Por padrão a biblioteca do nextion é configurada para trabalhar com  Arduino MEGA2560 . Para que funcione no Arduino Uno, é necessário fazer a seguinte configuração:

Abra a pasta \ITEADLIB_Arduino_Nextion\

Deve haver um arquivo NexConfig.h – abra esse arquivo.

Comente a linha 27, usando // de modo que permaneça da seguinte forma:

// # define DEBUG_SERIAL_ENABLE

Comente a linha 32:

// # define dbSerial Serial

Mude a linha 37, para que você tenha o seguinte:

#define nexSerial Serial

Salve o arquivo NexConfig.h .

4 – Criar botão no Nextion Editor:

Agora precisamos criar um botão no Nextion para acionar uma porta do Arduino, então abra o Nextion Editor, crie um novo projeto baseado no modelo de seu Display, no meu caso estou usando o Basic NX4827T043_011, é um display touchscreen resolução 480×270 com tela de 4.3 polegadas, o modelo pode ser facilmente encontrado gravado na placa de circuito impresso do display.

Clique em File > New e de um nome e salve o projeto.hmi, na próxima tela selecione o modelo do display. Selecione a orientação do display, estaremos usando 0° horizontal, clique em ok.

Eu sei, nessa hora bate a ansiedade e fechamos  o tutorial e ligamos o modo intuitivo, Epa! “Erro de compilação”. O que acontece é o seguinte: o Nextion precisa gerar pelo menos um arquivo de fonte para funcionar, então é isso que faremos na próxima etapa.

Clique em Tools > Font Generator, na janela que se abre escolha uma uma fonte, determine um tamanho e de um nome para a fonte Nextion que será gerada, escolhi Arial Black tamanho 24, e dei nome de ArialBlack24, clique no botão  Generate Font, dei o nome para o arquivo de arialblack24.zi , ao clicar em Salve o Nextion Editor pergunta se queremos adicionar a fonte recém gerada ao projeto apenas respondi Yes, O Nextion Editor volta a tela do Font Creator, para se quisermos gerar outra fonte, por hora vamos apenas fechar a janela no “X”.

Agora sim com a fonte gerada, vamos em Toolbox e clicamos em Button, o Nextion editor coloca para gente um botão na tela com o texto padrão: newtxt .

Em Attibute, rolamos a tela e editamos o atributo txt de newtxt para ligar .

Ainda em Attribute do botão,  algumas informações são importantes, vamos anotá-las, pagina em que está o botão: page0, ID do componente(botão):ID=1, e objname=bOn

Veja se o botão está selecionado, se não tiver basta clicar nele, na janela Event, selecione aba Touch Release Event e marque a caixa Send component ID, assim quando clicarmos no botão que acabamos de criar, o Display Nextion envia um sinal via porta serial para o Arduino.

Save no projeto, Compile e clique em Debug para ver se tudo está certo. Ao clicar no botão Ligar que criamos o emulador irá enviar um sinal na janela Simulator Return.

Botão Ligar criado só repetir os passos e criar o botão Desligar, da mesma forma vamos criar um texto que irá indicar o estado do LED.

Agora só fazer Upload, existem dois métodos, um usando um cartão SD ou através de um conversor serial USB, vamos fazer pelo conversor serial USB, estou usando a “Placa FTDI FT232RL Conversor USB Serial”. Importante a Alimentação 5V do Display Nextion deverá vir de uma fonte usb que pode ser um carregador de Smartphone, o Display acompanha um adaptador para isso, o TX do display deverá ser ligado ao RX do FTDI, e o RX do Display no TX do FTDI, como no esquema abaixo:

FTDI USB    Display Nextion

TX———-RX

RX———-TX              Carregador de Smartphone

GND———GND————-GND

       +5V————-+5V

Tudo ligado? Clique em Upload e Go, o Display irá exibir na tela o progresso do upload, e terminado exibirá a tela que criamos.

5 – Criar um sketch para o Arduino

Primeiro Vamos criar um novo arquivo Sketch na IDE do Arduino: Arquivo > Novo.



//incluir a biblioteca do Nextion Display

#include “Nextion.h”

//A seguir definir  o pino do led

const int led1 = 13;

// Definir o objeto(botão)do Nextion (page id = 0, component id = 1, component name = “b0”) 

 

NexButton bOn = NexButton(0, 1, “bOn”);

NexButton bOff = NexButton(0, 2, “bOff”);

NexText tState = NexText(0, 3, “tState”);

// REgistrar o botão como um evento Touch.  

NexTouch *nex_listen_list[] = {

  &bOn,

  &bOff,

  NULL

};

/*

 * Botão bOn função component pop callback. 

 * Quando o botão é solto (release) o Led1 é ligado. 

 */

void bOnPopCallback(void *ptr) {

  tState.setText(“Led: on”);

  digitalWrite(led1, HIGH);

}

/*

 * Button bOff função pop callback. 

 * Quando o botão é solto (release) o Led1 é Desligado. 

 */

void bOffPopCallback(void *ptr) {

  tState.setText(“Led: off”);

  digitalWrite(led1, LOW);

}

void setup() {

  Serial.begin(9600);

  nexInit();

  // Register the pop event callback function of the components

  bOn.attachPop(bOnPopCallback, &bOn);

  bOff.attachPop(bOffPopCallback, &bOff);

  

  

  //nesta secção definir o pino do led como saída

  

  pinMode(led1, OUTPUT);

}

void loop() {

  /*

   * Quando um botão for apertado,

   * o evento correspondente é disparado.

   */

  nexLoop(nex_listen_list);

}


Sejam Bem vindos

 Sejam bem vindos pessoal ao meu blog, sou Tecnólogo em Informática e entusiasta em eletrônica, eletrônica industrial, eletrônica valvulada, eletrônica para áudio, Arduino e afins,  resolvi aceitar o apelido colocado por meus alunos eu sou o Prof.° Gambiarra.