Mostrando postagens com marcador NodeMCU. Mostrar todas as postagens
Mostrando postagens com marcador NodeMCU. Mostrar todas as postagens

sábado, 17 de junho de 2017

Criando caracteres especiais no display LCD

Caracteres especiais no LCD



Nesse tutorial, vamos demonstrar como criar caracteres especiais para aplicação em projetos com microcontroladores. 
Os conceitos aplicados podem ser adotados em qualquer modelo de placa que o usuário tiver mais afinidade em usar, levando sempre, em consideração as diferenças e particularidades entre elas.
No caso estarei demonstrando com o módulo Node MCU.
A aplicação de caracteres especiais podem ser necessários em aplicações onde, muitas vezes precisa-se inserir na tela do LCD uma aplicação exclusiva.
No tutorial também estarei usando um módulo I2C para display. Esse módulo tem a praticidade de utilizar somente 4 fios de ligação, 2 para alimentação e 2 para dados.

Componentes

Módulo NodeMCU
Módulo I2C
Display LCD 16x2
Fonte de protoboard 5 Vcc/ 3.3 Vcc
Protoboard e cabos jumpers

Deve ser feita a ligação dos componentes conforme o esquema.

fonte: próprio autor

Para melhor entendimento do funcionamento do display LCD deve-se ter o conhecimento de que o display é dividido da seguinte maneira: quando em sua especificação denomina-se 16x2 quer dizer que a tela está dividida em 16 colunas e 2 linhas.

fonte: blog baú da eletrônica

Em cada divisão das colunas com as linhas existem segmentos que numa visão ampliada divide-se em outro segmentos de 5 colunas e 8 linhas.


fonte: próprio autor

Para formar a figura que atenda a necessidade do programador, o caractere pode ser feito na divisão dos segmentos ou em vários segmentos e serem agrupados no display.
O programa (LCDv1.0) pode auxiliar na organização dos seguimentos para formar caracteres mais complexos.



fonte: próprio autor

O programa facilita, cabendo ao usuário inserir os bits conforme os caracteres necessários.

Código fonte

O código exibido abaixo é um exemplo utilizado, que pode ser visto melhor no vídeo, ao final desse tutorial.

//Caracteres Display LCD 16 x 2
//Autor: Tony Emerson Marim
//===http://www.mecatronizando.com.br===
 
#include <Wire.h>  //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F, 16, 2); //FUNÇÃO DO TIPO "LiquidCrystal_I2C"
 
// copiar para aqui o codigo fornecido pela aplicação de criar caracteres
// caracter 1
byte punho[8] = {
B00000,
B00000,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000
};
// caracter 2
byte mao[8] = {
  B10000,
  B11000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
// caractere 3
byte youtube[8] = {
  B11111,
  B11111,
  B01111,
  B00111,
  B00111,
  B01111,
  B11111,
  B11111
};
 byte youtube2[8] = {
  B11111,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11111
};
void setup() 
{

  lcd.init();   // INICIALIZA O DISPLAY LCD
  lcd.backlight(); // HABILITA O BACKLIGHT (LUZ DE FUNDO)


lcd.createChar(1, punho);

lcd.createChar(2, mao);

lcd.createChar(3, youtube);

lcd.createChar(4, youtube2);

lcd.begin(16, 2); //inicializa o LCD 16x2
 
lcd.setCursor(0, 0); //aponta para coluna 0, linha 2
lcd.write(1); //escreve o caracter
lcd.setCursor(1, 0); //aponta para coluna 0, linha 2
lcd.write(2); //escreve o caracter
lcd.setCursor(2, 0);
lcd.print(" ****CURTA****");
lcd.setCursor(1, 1); //aponta para coluna 0, linha 2
lcd.write(3); //escreve o caracter
lcd.setCursor(0, 1); //aponta para coluna 0, linha 2
lcd.write(4); //escreve o caracter
lcd.setCursor(2,1);
lcd.print(" -INSCREVA-SE- ");
 
}
 
void loop() 
{

}


fonte: próprio autor

Para elaborar os mais diferentes caracteres que atenda a função do usuário é só deixar a imaginação fluir.



Gostou? Curta e Compartilhe a FanPage!
Assine o canal!
Adquira seus componentes!

Caso seja necessário, os arquivos apresentados podem ser baixados por esse LINK!

Bons estudos!

quinta-feira, 15 de junho de 2017

Conectando display LCD ao NodeMCU

Conectando display LCD ao NodeMCU


fonte: próprio autor

Esse tutorial vai ser destinado ao usuário que pretende realizar uma ligação entre o NodeMCU e um display LCD com I2C. 
As informações exibidas no display deverão aparecer de forma estática, onde são trocadas depois de um período e de maneira em que rolam da direita para a esquerda.

Para esse projeto vai ser utilizado:


Esquema

A ligação do circuito é bastante simple, para ligar o display LCD ao NodeMCU, foi utilizado somente duas portas digitais do módulo D1 e D2, além do VCC e GND.
O módulo I2C torna o projeto ainda mais prático, pois otimiza o uso de pinos e sua conexão é direta com o display.


fonte: próprio autor


Com as ligações feitas é necessário carregar os códigos na IDE do Arduino e testar o projeto.
Selecione a placa utilizada, NodeMCU e a porta COM. Caso seja iniciante no uso dos módulos relacionados, acesse o tutorial de uso pelos atalhas NodeMCU e I2C.

Código 1

Nesse código as informações exibidas no NodeMCU trocam conforme o delay especificado, de forma estática.

//Tony Emerson Marim em 15/06/2017.
/** mecatronizando@gmail.com **/
/** Display LCD **/

#include <Wire.h>  //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F, 16, 2); //FUNÇÃO DO TIPO "LiquidCrystal_I2C"
 
void setup()
{
  lcd.init();   // INICIALIZA O DISPLAY LCD
  lcd.backlight(); // HABILITA O BACKLIGHT (LUZ DE FUNDO) 
}

void loop()
{
 lcd.clear();
 lcd.setCursor(2, 0);
 lcd.print("Mecatronizando"); // EXIBE O TEXTO DA PRIMEIRA LINHA
 lcd.setCursor(0, 1);
 lcd.print("ESP8266 nodeMCU"); // EXIBE TEXTO DA SEGUNDA LINHA
 delay(5000);//TEMPO EM QUE PERMANECE EXIBINDO
 lcd.clear();// LIMPA O DISPLAY
 lcd.setCursor(0, 0);
 lcd.print("Tutoriais"); // EXIBE O SEGUNDO TEXTO NA PRIMEIRA LINHA
 lcd.setCursor(0, 1);
 lcd.print("CompartilheCURTA"); // EXIBE O SEGUNDO TEXTO NA SEGUNDA LINHA
 delay(5000);
}

Código 2

No segundo exemplo, os textos a serem exibidos devem rolar da direita para esquerda, exibindo constantemente.

//Tony Emerson Marim em 15/06/2017.
/** mecatronizando@gmail.com **/
// Baseado no programa original de Nishant Arora 
/** Display LCD_2 **/

#include <Wire.h>  //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x3F, 16, 2); //FUNÇÃO DO TIPO "LiquidCrystal_I2C"
 
//line1 = TEXTO DA ROLAGEM SUPERIOR
String line1 = "Mecatronizando: www.mecatronizando.com.br/ curta / inscreva-se / compartilhe"; 
 
//line2 = TEXTO DA LINHA INFERIOR  
String line2 = "-MECATRONIZANDO-";  
   
// REFERENCE FLAGS 
int stringStart, stringStop = 0;  
int scrollCursor = 16;  
int tamanho =0;  
   
void setup() 
{  
  lcd.init();   // INICIALIZA O DISPLAY LCD
  lcd.backlight(); // HABILITA O BACKLIGHT (LUZ DE FUNDO)   
}  
   
void loop() 
{  
  lcd.setCursor(scrollCursor, 0);  
  lcd.print(line1.substring(stringStart,stringStop));  
  lcd.setCursor(0, 1);  
  lcd.print(line2);  
 
  delay(200); //TEMPO DE TRANSPOSIÇÃO DA ROLAGEM 
  scroll_sup(); //ROTINA DA ROLAGEM

  //VERIFICA TAMANHO DA STRING 
  tamanho = line1.length();  
  if (stringStart == tamanho)  
  {  
    stringStart = 0;  
    stringStop = 0;  
  }  
}  
//ROTINA DE ROLAGEM 
void scroll_sup()  
{  
  lcd.clear();  
  if(stringStart == 0 && scrollCursor > 0)
  {  
    scrollCursor--;  
    stringStop++;  
  } else if (stringStart == stringStop){  
    stringStart = stringStop = 0;  
    scrollCursor = 16;  
  } else if (stringStop == line1.length() && scrollCursor == 0) {  
    stringStart++;  
  } else {  
    stringStart++;  
    stringStop++;  
  }  
}

No vídeo abaixo possível ver o funcionamento do projeto.



Se necessário, por meio deste LINK é possível baixar os arquivos e bibliotecas relacionadas ao projeto.

Curta! Compartilhe e Inscreva-se no Canal!

Todos os componentes utilizados podem ser adquiridos por esse LINK!


Bons estudos!

quinta-feira, 22 de dezembro de 2016

Potências com NodeMCU


NodeMCU : chaveamento de potências


Em continuidade ao circuito que foi iniciado anteriormente (CLIQUE AQUI), vamos implementar agora alguns componentes para que seja realizado um chaveamento entre diferentes potências.
Nesse projeto vamos trabalhar com tensões de 3Vcc, 5Vcc e 127Vac da rede.
Foi visto anteriormente as condições de funcionamento do NodeMCU e está entre suas características funcionar com uma tensão de 3Vcc, pois nele existe um regulador que baixa a tensão de 5Vcc para 3Vcc, mas vamos precisar utilizar uma tensão 127 VAC para acionamento de uma carga, sendo necessário a implementação de um módulo relé (CLIQUE AQUI).

Raciocinando: O módulo NodeMCU é alimentado com 5Vcc da porta USB, mas internamente baixa para 3Vcc, então sai um sinal digital de +3V. O módulo relé trabalha com uma bobina de alimentação com 5Vcc, devemos chavear um sinal de +5V para o relé então.

Faremos uso do optoacoplador 4n25. Trata-se de um componente eletrônico conhecido como isolador óptico composto por um fototransistor sensível a luz, que quando acionado apresenta um ótimo tempo de resposta.

fonte: https://www.rapidonline.com

De uma maneira geral o 4n25 trabalha conforme a figura abaixo.


fonte: http://br-arduino.org


fonte : datasheet do componente

O papel principal desse componente é levar os +5V necessários para o acionamento da bobina do relé.

Para o circuito devemos ter em mão os seguintes componentes:

1 módulo NodeMCU
1 módulo relé 5Vcc  
1 CI 4N25
2 botões tipo push-button
1 resistor de 150 ohm
3 resistores de 1k
1 fonte externa de 5Vcc
1 lâmpada (127/ 220V)
cabos tipo jumpers

O esquema elétrico


É possível observar que boa parte da ligação é proveniente da ultima postagem feita sobre o NodeMCU.


fonte: próprio autor


fonte: próprio autor


O código fonte


Vamos utilizar o mesmo código fonte que foi usado no acionamento do LED On/Off, por isso estou repetindo ele abaixo.
Copie e cole o código na IDE do Arduino e descarregue no NodeMCU.

 /** Código **/
// Elaborado por Tony Emerson Marim em 18/12/2016.
/** mecatronizando@gmail.com **/
/** Chaveamento **/
//Constantes
int rele = 16;
int botaoLig = 15;
int botaoDes = 13;

//Varável de estado dos botões
int estadobotaoLig = 0;
int estadobotaoDes = 0;

void setup() {
  // Define o pino 16 como saida
  pinMode(16, OUTPUT);
  //Define os pinos como entrada
  pinMode(15, INPUT);
  pinMode(13, INPUT);
}
 
void loop() {

  //Atribuindo resultado para o estado do botão
  estadobotaoLig = digitalRead(botaoLig);
  estadobotaoDes = digitalRead(botaoDes);
  
  //Lógica de funcionament0
  if (estadobotaoLig == HIGH)// Botão recebe 1
  {
    digitalWrite(16,HIGH);//Acende lampada
    }
    if (estadobotaoDes == HIGH)// Botão recebe 1
    {
  digitalWrite(16, LOW);    // Apaga lampada
 }
}

O funcionamento do circuito pode ser visto no vídeo abaixo.



Curtiu? Compartilhe pela nossa FanPage.
Assine o Canal no Youtube.
Caso seja necessário todo conteúdo pode ser baixado nesse LINK!

segunda-feira, 19 de dezembro de 2016

NodeMCU - Ameça real ao Arduino?

NodeMCU - Ameaça real ao Arduino?



fonte: próprio autor

Preferida entre a maioria dos hobbista ou makers de projetos de mecatrônica e eletrônica, o Arduino desde sua criação em 2005 destaca-se como uma ótima opção de ferramenta de baixo custo e fácil utilização contando com entradas e saídas digitais e analógicas, interface serial e USB e sem contar a infinidade de extensões com fins específicos (shields e módulos).

A facilidade de reprodução fez surgir no mercado uma infinidade de placas, aumentando as opções para os usuários e possibilitando a escolha de diversos tipos de microcontroladores à sua preferência.


Em 2014 a empresa Espressif lança a NodeMCU, um projeto derivado do ESP8266.
A NodeMCU em comparação com o Arduino é de tamanho bastante reduzido, mais veloz, mais potente, possui integrado conexão Wi-fi e o mais importante custa aproximadamente 50% mais barato (comparando placa por placa sem considerar o wi-fi).


fonte: http://thearduinoguy.org

Outra facilidade em que a placa NodeMCU têm destaque é a facilidade de integração com uma tendência que vem crescendo a cada dia: o conceito de projetos conectados na internet (IoT - internet of things), a internet das coisas.

Constituído por um módulo ESP 12-E, um conversor FTDI e um regulador de tensão que baixa de 5V para 3,3V consta com pinos padrões conectáveis em protoboards.



fonte: github.com

Sua programação é simples, utiliza somente um cabo para alimentação e transferência de dados, utiliza originalmente a linguagem de programação Lua (concebida em terras brasileiras por uma equipe da PUC-Rio), mas pode ser facilmente utilizada fazendo uploads em outras linguagens, em linguagem C por meio da SDK da Espressif e C++ por meio da IDE do Arduino.

Hardware


Possui um processador que pode atingir até 160 MHz (Tenscilica LX106), memória RAM de 20 KB e memória Flash de 4 MB, conexão Wi-fi 802.11 e g e limite de 300MBps de velocidade.

fonte: http://docs.thinger.io

Ponto Negativo

Um dos pontos negativos do módulo é contar com somente uma porta analógica (inviabilizando o uso de muitos sensores),  além de única essa porta limita-se a um valor máximo de entrada de 1 volt necessitando de conversões para atingir o desejado. Pode-se considerar um outro ponto negativo a quantidade de portas digitais que é menor se comparada com o Arduin Uno.

Conclusão

É realmente impressionante a gama de oportunidades oferecidas por essa placa que consegue difundir o conceito IoT mesclando performance e baixo custo, Não é possível enxergar no horizonte um fim para essa evolução no ramo da eletrônica, o conceito de embarcados veio para ficar, então só nos resta desfrutar das possibilidades oferecidas. 
Aguardaremos futuros lançamentos de empresas como Esprssif (que já anunciou a produção do ESP32) e outras para sistemas com componentes cada vez mais velozes e potentes, de tamanhos reduzidos que além do hardware o custo caiba nos nossos bolsos.

Continua...

Utilizando o NodeMCU

Utilizando o NodeMCU



fonte: próprio autor

Programando o NodeMCU


Depois de apresentado o NodeMCU, é hora de começarmos a utilizar suas características a nosso favor.
Nesse post, vamos realizar algumas programações básicas para começarmos a trabalhar um pouco mais esse módulo.
Como o modulo permite, vamos programa-lo utilizando a IDE do Arduino.

Projeto 1: acionamento de um LED piscando

Para essa atividade vamos precisar de:

1 módulo NodeMCU
1 LED de qualquer cor
1 resistor 150 ohms
protoboard (matriz de contatos)
cabos jumpers

Esquema de ligação


fonte: próprio autor

O código fonte

Antes de escrever o código, é necessário algumas alterações na configuração da IDE do Arduino para que possa ser utilizada na programação do módulo.

1º Passo:
  • Entre na IDE;
  • Arquivo;
  • Preferências.




fonte: próprio autor


Digite em URLs adicionais de Gerenciadores de Placas:
http://arduino.esp8266.com/package_esp8266com_index.json

OK!

2º Passo:

Clicar em :


  • Ferramentas;
  • Placas;
  • Gerenciadores de Placas.

fonte: próprio autor

Uma janela vai abrir, selecionar ao final da barra de rolagem: esp8266 by ESP8266 Community e instalar.



fonte: próprio autor


3º Passo

Selecionar a placa que deve ser utilizada no projeto: NodeMCU 1.0( ESP12E Module)


fonte próprio autor


fonte próprio autor

Pronto! Agora é só carregar o código fonte como de costume usando a IDE do Arduino, copie e cole o código na montagem para piscar o LED conforme o tempo programado.

 /** Código 1 **/
// Elaborado por Tony Emerson Marim em 18/12/2016.
/** mecatronizando@gmail.com **/
/** Pisca LED**/

void setup() {
  // Define o pino 16 como saida
  pinMode(16, OUTPUT);
}
 
void loop() {
  digitalWrite(16, HIGH);   // Acende o Led
  delay(1000);              // Aguarda 1 segundo
  digitalWrite(16, LOW);    // Apaga o Led
  delay(1000);              // Aguarda 1 segundo
}


fonte próprio autor

Projeto 2: acionando LED com botão.


Seguindo o mesmo esquema de ligação, implementar agora um botão tipo push button que permite ao LED permanecer aceso enquanto estiver pressionado.
Realizando o esquema abaixo é possível realizar o projeto.

1 módulo NodeMCU
1 LED de qualquer cor
1 resistor 150 ohms
1 resistor 1k
1 botão tipo push button
protoboard (matriz de contatos)
cabos jumpers



fonte: próprio autor

O código fonte

 /** Código 2 **/
// Elaborado por Tony Emerson Marim em 18/12/2016.
/** mecatronizando@gmail.com **/
/** Liga LED**/
//Constantes
int led = 16;
int botao = 15;

//Varável de estado do botão
int estadobotao = 0;

void setup() {
  // Define o pino 16 como saida
  pinMode(16, OUTPUT);
  //Define o pino 15 como entrada
  pinMode(15, INPUT);
}
 
void loop() {

  //Atribuindo resultado para o estado do botão
  estadobotao = digitalRead(botao);

  //Lógica de funcionament0
  if (estadobotao == HIGH)// Botão recebe 1
  {
    digitalWrite(16,HIGH);//Acende led
    }
    else//Senão
    {
  digitalWrite(16, LOW);    // Apaga o Led
 }
}

Projeto 3: acionar LED com botões ON/OFF


E para finalizar, o esquema de uma montagem com dois botões onde pode ser observado o funcionamento de um LED sendo ligado por uma entrada e desligado por outra.

Nos materiais necessários para a execução deve ser adicionado mais um botão, mais um resistor no valor de 1k e fios jumpers.
1 módulo NodeMCU
1 LED de qualquer cor
1 resistor 150 ohms
2 resistor 1k
2 botões tipo push button
protoboard (matriz de contatos)
cabos jumpers



fonte: próprio autor

O código fonte

 /** Código 3 **/
// Elaborado por Tony Emerson Marim em 18/12/2016.
/** mecatronizando@gmail.com **/
/** Liga LED**/
//Constantes
int led = 16;
int botaoLig = 15;
int botaoDes = 13;

//Varável de estado dos botões
int estadobotaoLig = 0;
int estadobotaoDes = 0;

void setup() {
  // Define o pino 16 como saida
  pinMode(16, OUTPUT);
  //Define os pinos como entrada
  pinMode(15, INPUT);
  pinMode(13, INPUT);
}
 
void loop() {

  //Atribuindo resultado para o estado do botão
  estadobotaoLig = digitalRead(botaoLig);
  estadobotaoDes = digitalRead(botaoDes);
  
  //Lógica de funcionament0
  if (estadobotaoLig == HIGH)// Botão recebe 1
  {
    digitalWrite(16,HIGH);//Acende led
    }
    if (estadobotaoDes == HIGH)// Botão recebe 1
    {
  digitalWrite(16, LOW);    // Apaga o Led
 }
}

No vídeo é possível ver o comportamento dos códigos em funcionamento com acionamentos com LEDs, nos próximos post, vamos elaborar um pouco mais a programação e explorar as possíbilidades dessa plaquinha com chaveamentos de tensões e inseri-la na rede Wi-Fi.




Gostou? Curta e compartilhe pela nossa FanPage!
Assine o Canal!

Caso seja necessário todos os projetos podem ser baixados por esse LINK!

Bons Estudos!