Acionamento de relés e leitura de entradas com IHM Nextion

Atualizado: há 6 dias

Na publicação anterior vimos um hack para programar a IHM Nextion sem a necessidade de usar um conversor USB TTL. Com isso, minimizamos recursos e aceleramos a etapa de gravação.


Agora, avançaremos um pouco mais trazendo uma aplicação prática com a placa Arduino Profissional CPB 0u um Arduino Uno.


O aplicação escolhida foi "Acionamento de relés e leitura de entradas com a IHM Nextion".


PASSO 1: GRAVAÇÃO NA TELA NEXTION


Para colocar logos e outras figuras, usa-se o ambiente abaixo:

Inserimos 3 botões do tipo Dual State para bater os 3 relés primeiramente:


Obs: Adicionamos os logos, possível de colocar o de suas empresas/soluções.

PASSO 2: GRAVAÇÃO NA CPB (OU ARDUINO)


E vamos começar a programar a IDE do Arduino, baixe a library no link e importe para a IDE https://github.com/itead/ITEADLIB_Arduino_Nextion


Para aprender a instalar a biblioteca assim o vídeo abaixo, se você já sabe, execute e siga adiante!



Sugerimos sempre dar uma olhada daí nos exemplos mais simples, caso queira dominar o conhecimento.


Neste momento da pesquisa verificamos que o material pesquisado até o momento, ou estava usando uma placa Arduino Mega, ou estava usando os pinos 0 e 1 do Arduino Uno, que são os pinos onde a CPB (Arduino) debugam os códigos, sempre que possível, nós da Crescer evitamos deixar estes pinos dedicados a um projeto, pois preferimos sempre deixa-los livres para desenvolver o projeto tentando o mesmo durante o avanço.

Então pesquisamos se alguém no mundo já usou o Arduino Uno com a tela Nextion e o SoftwareSerial.h.

O SoftwareSerial.h é uma biblioteca do arquino que transforma qualquer pino do atmega328 (exceto A6 e A7) em pino RX TX de comunicação serial.


O primeiro link encontrado foi https://www.hackster.io/tsavascii/nextion-lcd-communicate-with-arduino-uno-188a44


Já tendo uma imagem animadora que condiz com o que pesquisamos:

Pois mostra a tela Nextion nos pinos 10 e 11 do Arduino, e parece que este link já resolverá nossa demanda...


Primeiro pede para abrirmos o arquivo "Nexconfig.h" que está dentro da biblioteca baixada recentemente.


Dentro do arquivo precisamos encontrar a linha #define nexSerial Serial2” que está logo no início.


E então vamos trocar esta linha por:

#include <SoftwareSerial.h>
externSoftwareSerial HMISerial;
#define nexSerial HMISerial

Resultando em:

Aí no software que criaremos para comunicar com a tela, colocaremos no início:

SoftwareSerial HMISerial(10, 11);  

Criando assim a porta HMISerial. Criando a seguinte topologia de Hardware:


PASSO 3: CONEXÃO IHM NEXTION - CPB (OU ARDUINO)


1 - Alimentar com a Fonte a CPB e a tela Nextion

2 - TX NEXTION - 10 CPB

3 - RX NEXTION - 11 CPB

Assim temos uma estrutura onde podemos fazer todos os testes e


desenvolvimento que precisamos.



PASSO 4: CONTINUAÇÃO DA GRAVAÇÃO NA CPB (OU ARDUINO)


Na Crescer Professional Board para bater os relés e ler o pino 4, terá o seguinte


código:


#include "Adafruit_MCP23017.h"  // biblioteca para bater relés da cpb
Adafruit_MCP23017 mcp;    // cria objeto do componente que bate os relés

#include "Nextion.h"
SoftwareSerial HMISerial(10, 11);  // porta de comunicação com a nextion

// Objetos da Nextion
NexDSButton RL1 = NexDSButton(0, 4, "bt0");
NexDSButton RL2 = NexDSButton(0, 5, "bt1");
NexDSButton RL3 = NexDSButton(0, 6, "bt2");
NexPicture Led1 = NexPicture(0, 7, "p0");

//Variáveis de Trabalho
uint32_t statusRL1 = 0;
uint32_t statusRL2 = 0;
uint32_t statusRL3 = 0;
uint32_t entrada = 0;

void setup() {
  nexInit();

  mcp.begin();
  mcp.pinMode(0, OUTPUT);
  mcp.pinMode(1, OUTPUT);
  mcp.pinMode(2, OUTPUT);
  pinMode(4, INPUT_PULLUP);

  Serial.end(); // por default, a tela usa a serial como debub, então, uma vez funcionando, pode desligar
}

void loop() { 

  RL1.getValue(&statusRL1);  // função para ler os botões
  mcp.digitalWrite(0, statusRL1);

  RL2.getValue(&statusRL2);
  mcp.digitalWrite(1, statusRL2);
  RL3.getValue(&statusRL3);
  mcp.digitalWrite(2, statusRL3);

  entrada = digitalRead(4);
  Led1.setPic(entrada + 2); // funcao para mudar a imagem de uma figura
}

RESULTADO:

Tela final da IHM Nextion com a Crescer Professional Board.

Vídeo demonstrativo das funcionalidades:


Fim! Compartilhem conosco seus projetos, suas aplicações, conheçam mais sobre a Crescer Professional Board. Vamos dividir conhecimento para multiplicar resultado.


80 visualizações0 comentário

Posts recentes

Ver tudo