FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples mas não simplórios, astuto mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques.
Mostrando postagens com marcador Arduíno / ESPs. Mostrar todas as postagens
Mostrando postagens com marcador Arduíno / ESPs. Mostrar todas as postagens

domingo, 4 de outubro de 2020

Fonte Ajustável 1.2 à 37V - 7A com proteção de curto-circuito com CI LM723

Fonte Ajustável 1.2 à 37V - 7A com proteção de curto-circuito com CI LM723

No post de hoje, iremos montar uma fonte para bancada regulável com uma tensão que varia entre 1.2 à 37V Corrente Contínua, com proteção contra curto-circuito, um circuito simples utilizando o velho e versátil Circuito Integrado LM723, que é perfeito para ser utilizado em bancada, já que constantemente estamos executando projetos que em muitas vezes acontecem interpéries não esperada e que ocasionam geralmente a queima da fonte quando não se tem proteção.

O diagrama esquemático da Fonte Ajustável está disposto na Figura 2 logo abaixo, como podemos ver, o circuito projetado, tem a sua entrada de 27V CA, ou seja vindo direto de um transformador, que tem suas especificações da entrada de tensão "Primário" de acordo com sua rede elétrica, 220V ou 110V, e sua saída "Secundário", de 27V CA, que quando passar pelo circuito de retificação e filtro, a tensão será elevada para próximo dos 40V. 

Fig. 2 - Fonte Ajustável 1.2 à 37V - 7A com proteção de curto-circuito com CI LM723

Seguimos a fórmula básica para se calcular essa tensão após o filtro, que é .
Formula: 
Vca * √2 = Vcc

Vca - Tensão de entrada - Corrente Alternada
√2 = 1.414 - é da fórmula
Vcc = Tensão de saída - Corrente Contínua

Que no nosso caso fica assim:
Vca = 27V

27 * 1.414 = 38.18V

Isso na teoria, o que acontece que na prática pode variar um pouco, pois não só depende dos cálculos, mas também da precisão dos componentes, desgastes, tolerâncias e etc... mas  os valores sempre estão bem próximos.

A corrente do transformador deve ser no mínimo de 7A. A retificação e filtro já está integrada no própria circuito, que provém de uma ponte D1 KBPC5010 que é uma ponte de diodos para 50A, você pode está utilizando outro tipo de ponte, no entanto fique atento que no mínimo a ponte de diodos tenha o dobro da corrente do circuito ou seja, ao menos entre 15 á 20A para não have aquecimento do mesmo.
Devemos também estar certo de utilizarmos um dissipador de calor nos dois transistores de potência TIP35C.

Características da Fonte

  • Proteção contra sobrecargas
  • Proteção contra Curto-circuito
  • Alta Corrente de Saída: 7A
  • Tensão de ondulação de saída: ~ 0,5 mV
  • Tensão de saída: ajustável de 1.2 a 37V
  • Tensão de entrada: 27Vca

Lista de componentes

U1 ----------------------- Circuito Integrado LM723
Q1 ----------------------- Transistor NPN BD139
Q2, Q3 ------------------ Transistor NPN TIP35C
D1 ------------------------ Ponte de Diodo KBPC5010
LED1 -------------------- Led 3mm de uso geral
R1 ------------------------ Resistor 8.2KΩ 1/8w 
R2 ------------------------ Resistor 2.2KΩ 1/8w 
R3 ------------------------ Resistor 560Ω 1/8w  
R4 ------------------------ Resistor 3.9KΩ 1/8w
R5 ------------------------ Resistor 15KΩ 1/8w
R6 ------------------------ Resistor 0.15Ω 10W
R7, R8 ------------------- Resistor 0.15Ω 5W
C1 ------------------------ Capacitor Eletrolítico 4.700µF 50V
C2, C3  ------------------ Capacitor de Cerâmico/Poliéster 1nF
C4 ------------------------ Capacitor Eletrolítico 1000µF 50V
POT1 -------------------- Potenciômetro 5KΩ
P1, P2 ------------------- Terminal tipo Bloco Parafusado soldável 2-Pinos, 5 mm
Outros ------------------  PCI, Fios, Solda, Caixa, Knob Radiador de Calor, etc.

O layout da Placa de Circuito Impresso está disposto logo abaixo na Figura 3, e estamos dispondo todos os arquivos necessários para você poder imprimir a sua PCI, com os arquivos GERBER, Layout em PDF, PNG, tudo com um link direto para você poder baixar e montar o seu.
Fig. 3 -  Layout da placa Circuito Impresso 3D

Download

Link Direto: Arquivos PNG, PDF, GERBER

E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click aqui - FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom

quinta-feira, 6 de agosto de 2020

Como fazer um Módulo Relé para dispositivos digitais como; ESP8266, Arduíno, PIC Etc.

Como fazer um Módulo Relé para dispositivos digitais como; ESP8266, Arduíno, PIC Etc.

Olá a Todos!!!
No post de hoje, iremos montar um simples módulo Relê, que poderá ser ativado através de um dispositivo de controle digital, como ESP8266, ESP32, NodeMCU, Wemos, Arduino, PICs, e etc, tudo isso de forma bastante simplificada, e com o custo realmente baixo.

Os Módulos Relés

Módulos Relés, são dispositivos compostos por um conjunto de componentes eletrônico, que juntos conseguem controlar uma carga de alta tensão e alta corrente com apenas um sinal de baixa tensão com baixíssima corrente, e de forma totalmente isolada da rede de alta tensão, o que é bastante interessante para nós que fazemos circuitos para automação, e necessitamos de isolar a rede de energia do nosso circuito de controle.

Os Relés

O relé é um interruptor eletromecânico que é acionado eletricamente por um eletroímã, que quando energizada, a corrente elétrica percorre a bobina criando o campo magnético que faz com que uma pequena aleta ferromagnética mude o estado das conexões de chaveamento do Relé, ocasionando assim o acionamento da carga ou o desligamento da carga, e isso com o circuito de controle independente da carga, ou seja isolado da carga. Com isso nos possibilita controlarmos dispositivos eletrônicos de alta tensão acionado por pequenas tensões e baixa corrente além de tudo isolado da rede controlada.
Existem diversos tipos de relé, mas o que vamos abordar aqui é o mais simples e conhecido, que são os relés de 5 pinos, como podemos visualizar na figura 2 abaixo, mas, vale lembra que o princípio de funcionamento é exatamente semelhante à todos os relés.
Fig. 2 - Relé 5V ,10 Amperes, HJR-3FF-S-Z 5 Pinos

O Circuito

O circuito é bastante simplista, mas não quer dizer que não seja funcional, na verdade ele é exatamente igual aos módulos que compramos já prontos no mercado. 
Existem três configurações que iremos abordar aqui neste Post, e cada um deles teem suas características e suas vantagens e é claro suas desvantagens.

Módulo com isolamento Total:

O módulo de isolamento total é a mais utilizada em circuitos industriais, devido as interpéries indesejadas que acontecem em campo, há uma necessidade de termos total redundância em assegurar o funcionamento e evitar a queima e, ou mal funcionamento de todo os circuitos, na Figura 3 logo abaixo, podemos analisar o diagrama esquemático do circuito do módulo de relés, nessa configuração o circuito da carga não tem nenhum contato com o circuito de ativação, pois é isolado através do Opto-acoplador que emite sinais de Luz para trafegar os comandos de acionamentos e a alimentação do circuito é totalmente independente do circuito de controle, trazendo assim garantias que o circuito módulo de acionamento não irá de maneira alguma interferir no controlador digital, caso aconteça alguma curto-circuito na carga.
Fig. 3 - Módulo Relé isolamento total

Nesta configuração o circuito controlador, Arduíno, ESPs, PICs, CPUs etc., não tem contato algum com o circuito da carga, que tem uma fonte independente para a ativação do Relé, e o Relé isola a carga do circuito de controle.

Lista de Materiais Módulo isolamento Total:

TR1 --------------------------- Transistor NPN de uso geral 2N3904, BC548, etc.
OA ---------------------------- Opto-Acoplador PC817
D1 ----------------------------- Diodo 1N4148, 1N4001, 1N4002... 4007, etc.
LED1 ------------------------- Led de uso geral 3mm vermelho
R1 ----------------------------- Resistor 1K (morron, preto, vermelho)
RL ----------------------------- Relé de 5 Pinos HJR-3FF-S-Z, JQC-3FF-S-Z, etc. 
J1, J2 -------------------------- Conector Barra Macho 2 Pinos
J3 ------------------------------ Borne Conector Kre 3 Vias
Diversos ---------------------- Placa Circuito Impresso, estanho, fios, etc.

Módulo com isolamento Parcial:

Essa configuração quase idêntica ao módulo com isolamento total, o que difere é que a alimentação do circuito Relé é a mesma alimentação do circuito de controle, como podemos ver na Figura 4 logo abaixo, a alimentação de 5 volts do circuito controlador está também conectado ao pino Vcc do circuito para ativar o relé através do Opto-acoplador, e nesta configuração não existe isolamento da fonte de alimentação do relé e a fonte de alimentação do Microcontrolador, no entanto o circuito de acionamento "microcontrolador" ainda tem sua porta digital GPIO isolada do circuito de acionamento através do Opto-acoplador, e a carga ainda está isolamento do circuito, que é ativada através do Relé que é isolado totalmente da carga.
Fig. 4 - Módulo Relé isolamento parcial

Lista de Materiais Módulo isolamento Parcial:

TR1 --------------------------- Transistor NPN de uso geral 2N3904BC548, etc.
OA ---------------------------- Opto-Acoplador PC817
D1 ----------------------------- Diodo 1N41481N40011N4002... 4007, etc.
LED1 ------------------------- Led de uso geral 3mm vermelho
R1 ----------------------------- Resistor 1K (morron, preto, vermelho)
RL ----------------------------- Relé de 5 Pinos HJR-3FF-S-ZJQC-3FF-S-Z, etc. 
J1 ------------------------------ Conector Barra Macho 3 Pinos
J2 ------------------------------ Borne Conector Kre 3 Vias
Diversos ---------------------- Placa Circuito Impresso, estanho, fios, etc.

Módulo simples:

Esse tipo de circuito é o mais simples, e por incrível que pareça é bem utilizado em módulos Relés utilizados em automação residencial, dado a sua simplicidade, o mais simples de todos, ele não tem o circuito de ativação isolado do circuito de controle, pois o pino de sinal digital é conectado diretamente ao transistor que controla o Relé, sendo alimentado com a mesma fonte de alimentação, como mostrado na Figura 5 logo abaixo.
Fig. 5 - Módulo Relé Simples

Lista de Materiais Módulo Simples:

TR1 --------------------------- Transistor NPN de uso geral 2N3904BC548, etc.
D1 ----------------------------- Diodo 1N41481N40011N4002... 4007, etc.
LED1 ------------------------- Led de uso geral 3mm vermelho
R1 ----------------------------- Resistor 1K (morron, preto, vermelho)
R2 ----------------------------- Resistor * Ver texto abaixo
RL ----------------------------- Relé de 5 Pinos HJR-3FF-S-ZJQC-3FF-S-Z, etc. 
J1 ------------------------------ Conector Barra Macho 3 Pinos
J2 ------------------------------ Borne Conector Kre 3 Vias
Diversos ---------------------- Placa Circuito Impresso, estanho, fios, etc.

O resistor R2, é um resistor que serve para limitar corrente no LED, tanto o LED quanto o R2, não são necessários no circuito, servem somente para indicar que o circuito foi ligado na fonte, quando se vai utilizar uma tensão de alimentação independente, Podemos seguir da seguinte maneira:
Par alimentação com uma tensão de:
12V - R2 = 1.2K
9V - R2 =1K
6V - R2 = 560R
3V - Não precisa utilizar R2. 

Existe ainda, a opção de se alimentar esse circuito com uma fonte separada, caso haja necessidade de se utilizar por exemplo um Relé de 12V, o que é necessário fazer, é simplesmente cortar a ligação +V que vem do controlador e ligar em uma fonte separada, deixando em comum para ambos circuitos a ligação do GND, que servirá para referenciar os dois circuitos, ficando assim uma alimentação independente do controlador.
.
Você pode também se interessar por:

OBS.: Os pinos de entrada do módulo funcionam de forma inversa, já que estamos conectando as conexões de ativação do Opto-acoplador no positivo da fonte e o negativo do Opto-acoplador na porta digital, isso significa que quando a porta estiver em nível lógico ALTO, ela emitirá os 5V na sua saída, ocasionando o não ddp "diferença de potencial" no opto-acoplador que não ativará o led emissor de luz, quando o nível lógico do controlador estiver em BAIXO, na sua GPIO, "porta", estará em nível BAIXO, ou seja GND, terra, negativo, etc, o que fará com que a corrente flua vindo dos 5V da fonte, passando pelo Opto-acoplador e terminando no GND, fazendo o ciclo causando a ddp, e acendendo o LED, com isso acionando a carga através da alimentação do base do transistor que conduzirá para acionar o RELÉ.

ATENÇÃO: Tenha muita atenção nas ligações da carga, estamos tratando de ligações direto na rede elétrica, existe risco de choque elétrico, que pode causar lesões simples até mesmo lesões letais, se você não tem experiências, não faça esse circuito em ambiente em que você se encontra sozinho, compartilhe do seu projeto com pessoas mais experientes, nós não nos responsabilizamos por qualquer danos causados por suas ações.

Estamos dispondo para Download os materiais necessários para quem deseja montar com a PCI - Placa de Circuito Impresso, os arquivos estão divididos em 3 pastas, para cada modelo que você precise montar, e em cada pasta estamos dispondo os devidos arquivos em PDF e arquivos GERBER para quem deseja enviar para impressão.
Fig. 6 - Módulo Relé Acionamento digital PCB 3D


Download:

Link Direto: Arquivos PDF, GERBER

E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click aquiFVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom


domingo, 21 de junho de 2020

Controle de potência de carga 110/220Vac. Controlado por: ESPs Arduínos ou PICs + PCI

Controle de potência de carga 110/220Vac. Controlado por: ESPs Arduínos ou PICs + PCI

Olá a Todos!!!

Hoje em dia, todos nós estamos envolvidos com circuitos de automação, disparos remoto, controle de cargas remotamente e etc, e sempre utilizamos o velho e conhecido Relê, seja ele Relê de contato, utilizando bobinas com contatos de fechamento metálico, ou com os mais avançados "caros" Relê de Estado Sólidos, mas para controlar uma carga de potência em 220V, com níveis de controle diferentes com o seu microcontrolador isolado da rede de energia, podemos dizer que não é tão simples de encontrar um módulo para dimerização e controle de carga controlado por Microcontroladores com um custo baixo. Foi pensando nisso que estamos a apresentar esse pequeno circuito que pode controlar eficientemente a; luminosidade de uma lâmpada incandescente,  velocidade de um motor elétrico, temperatura de uma estufa, secador de cabelos ou qualquer outro eletrodoméstico elétrico que pode ser controlado através de um dimmer. Todo esse controle se dar ao uso de um microcontrolador que pode ser um ESP8266, ESP32, Arduíno, PIC ou qualquer outro Microcontrolador que você tiver utilizando, que controla o módulo de potência baseado em um TRIAC
O TRIAC é acionado através de um DIAC que conduz à partir de uma tensão de 28V, ele é quem controla o ângulo de condução do TRIAC, disparando-o em diversos pontos do sinal senoidal da rede de energia sendo assim possível aplicar potências diferentes na carga controlada.
Para controlar o disparo do TRIAC, é usado um circuito RC, de maneira que a modificação dessa resistência, dispara o TRIAC em pontos de semiciclos de energia da rede. 
Para conseguirmos modificarmos a resistência controlando por um Microcontrolador, implementamos um divisor somador com 3 resistores diferentes que são conectados através de um opto-acoplador, e é através desse conjunto de resistores que formamos o Req pelo qual podemos controlar o circuito RC de retardo onde Req setada no máximo valor, o tempo de carga de C1 até o disparo do DIAC é maior, pela qual ocorre um tempo maior do semiciclo da energia da rede fazendo com que a carga tenha uma menor potência, já com Req na posição mínimo a carga de C1 é rápida e o disparo do DIAC ocorre no início do semiciclo, tornando a potência da carga no máximo, sendo assim, podemos controlar a potência máxima e mínima na carga. E vale salientar que quando utilizamos esse circuito para controlar motores, ele corta uma parte do semiciclo, mantendo a tensão em 220V, o que significa que o torque de um motor se mantém mesmo sendo controlado em baixa velocidade, o que o assemelha ao motor DC controlado por PWM.

Na figura 2, temos o diagrama esquemático do circuito de Controle de potência de carga 110/220Vac. Controlado por: ESPs Arduínos ou PICs com TRIAC TIC246, utilizamos 3 portas digitais do Arduíno, D9, D10, D11 para controlar o circuito de potência, foi utilizado resistores em série para controle de corrente no entre a saída digital do Arduíno (5V), e o Opto-acoplador, que utiliza um LED Infra-vermelho interiormente, e sabemos que se aplicarmos uma tensão de 5V direto no LED, ele irá queimar. O Opto-acoplador que utilizamos foi um MOC3021, mas, você pode está substituindo pelos  MOC3020, MOC3021, MOC3022, MOC3023, OPI3020, OPI3021, OPI3022, OPI3023, MCP3020, MCP3021, MCP3022, GE3020, GE3021, GE3022, GE3023, todos são compatíveis.
Fig. 2 - Controle de potência de carga 110/220Vac. Controlado por: ESPs Arduínos ou PICs
As séries de Opto-acopladores MOCs são dispositivos de driver TRIAC isolados opticamente. Esses dispositivos contêm um diodo emissor de infravermelho GaAs e um comutador bilateral de silício ativado por luz, que funciona como um TRIAC. Eles são projetados para interface entre controles eletrônicos e TRIACs de potência para controlar cargas resistivas e indutivas para operações de 115 ou 220 VCA.
E é através desse fechamento que conseguimos diminuir a resistência que colocamos em seus terminais, e baixamos a queda de tensão que ocorre através dessa resistência e assim, aumentamos a carga em C1, e o disparo do DIAC ocorre no início do semiciclo, aumentando a potência da carga.

Por utilizarmos 3 resistores em série/ponte, conseguimos 8 combinações de resistências diferentes, e na figura 3 temos a tabela para verdade para seguirmos e podermos programar as combinações sequenciadas nas portas do Arduíno.

Fig 3 - Tabela Verdade Controle de potência de carga 110/220Vac. Controlado por: ESPs Arduínos ou PICs
A potência total da carga que podemos colocar em nosso circuito, só dependerá unicamente do tipo de TRIAC que você vai utilizar, em nossa montagem, fizemos com o TIC246, por ser um TRIAC que suporta até 16 Amperes, o que é uma carga muitíssimo grande, se falamos de carga residencial, no entanto existem diversos tipos de TRIACs para ser utiliazdos, deixamos alguns dos mais conhecidos e fácil de se encontrar no mercado para você poder utilizar de acordo com o seu projeto: TIC116 para 6A, TIC226 ou BT137 para 8A, TIC236 para 12A, TIC246 para 16A.

Lista de Materiais

T1 -------------------------- Triac de Potência TIC246D ou substituto *ver texto*
D1 -------------------------- Diodos DIAC DB3 ou substituto
D4 -------------------------- Ponte retificadora KBPC5010 - 100V, 50A
U1, U2, U3 --------------- Opto-acoplador MOC3021 ou substituto *ver texto*
R1 -------------------------- Resistor 47Ω 1/4W  (amarelo, violeta, preto)
R2 -------------------------- Resistor 6.8KΩ 1/4W  (verde, cinza, vermelho)
R3 -------------------------- Resistor 47KΩ 1/4W  (amarelo, violeta, laranja)
R4 -------------------------- Resistor 100KΩ 1/4W  (marrom, preto, amarelo)
R5 -------------------------- Resistor 220KΩ 1/4W  (vermelho, vermelho, amarelo)
C1 -------------------------- Capacitor Poliéster / Cerâmico 0.22uF ou 220nF
C2 -------------------------- Capacitor Poliéster / Cerâmico 0.12uF ou 120nF
J1 --------------------------- Conector Barra Macho 4 pinos
P1, P2 ---------------------- Terminal Kre Block Borne Conector Duplo 2 Vias
Diversos ------------------- Placa Circuito Impresso, estanho, fios, etc.

Download:

Estamos dispondo para Download o link com os arquivos para impressão da placa de circuito impresso, são eles: Gerber, PDF layout, webp, tudo isso com link direto para o Mega.
Fig 4 - PCI - Controle de potência de carga 110/220Vac. Controlado por: ESPs Arduínos ou PICs

Link Direto: Arquivos, Layout PCB, PDF, GERBER

E por hoje é só, espero que tenham gostado!!!
Qualquer dúvida, digita nos comentários que logos estaremos respondendo.
Se inscreva no nosso Blog!!! Click aqui - FVM Learning!!!
Forte abraço.

Deus vos Abençoe
Shalom

terça-feira, 28 de abril de 2020

Como saber, obter, pegar o MAC Address do NodeMCU ESP8266 e ESP32 na IDE Arduíno

Como saber, obter, pegar o MAC Address do NodeMCU ESP8266 e ESP32 na IDE Arduíno

Olá a Todos!!!


No Post de hoje, faremos um guia rápido de como saber, obter, pegar, o endereço MAC do NodeMCU ESP8266 ou ESP32 utilizando a IDE Arduíno. 
O endereço MAC "Media Access Control" ou (Controle de Acesso de Mídia) que muitas vezes é entendido por ""Machine Access Control" ou (Controle de Acesso a Máquinas), isso quando referido a maquinas mesmo, eles são endereços de hardware exclusivo que identificam um adaptador de rede, sendo assim jamais teremos dois dispositivos com mesmo Endereço MAC.
O endereço MAC é formado por um conjunto de 6 bytes, sendo cada byte representado por dois algarismos na forma hexadecimal, como por exemplo: "00:38:0F:2V:5M:7L".

O código

O código é bastante simples, inicializa incluindo a biblioteca ESP8266WiFi.h.
#include <ESP8266WiFi.h>
extern "C" {
#include <espnow.h>#include <user_interface.h>
}

Que é a biblioteca que ativa o módulo WiFi, seguido da inclusão da biblioteca espnow.h, com a diretriz de encaminhamento extern "C", que informa ao software o caminho para a biblioteca do ESP8266 ou ESP32.

Depois já se entra no void setup.
void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("Starting fvm learning, get mac address");
Iniciamos o Serial com a função Serial.begin(115200), decorrido da velocidade do Bounce da comunicação entre o módulo e o computador na porta serial. Depois já imprimimos uma mensagem vazia, só para pular uma linha, logo após, imprimimos a mensagem de inicialização, "Inicializando o fvm leaning, obter endereço mac".

Logo esse código imprime dois tipos de Endereços Mac, O Mac Address AP "Access Point"  e o Mac Address STA "Station".
  Serial.print("This node AP mac: ");   Serial.println(WiFi.softAPmacAddress());  Serial.print("This node STA mac: ");   Serial.println(WiFi.macAddress());}

E fechamos aqui todo o código, pois como podemos visualizar, no void loop, não ha atividades alguma.
void loop() {

}
Logo abaixo temos todo o código, não ha necessidade de fazer-se nenhuma mudança, é só você copiar o código abaixo e colar na sua IDE Arduíno, ou se preferir, você pode estar baixando pelo link de Download logo abaixo do código, "Recomendável".
//==================================================================================//
// Getting Mac Address from NodeMCU ESP8266 on IDE Arduino                          //
// Created by: Engineer Jemerson Marques, On: 21.01.2019 - FVM Learning website     //
// Available at: https://www.fvml.com.br                                            //
// https://www.youtube.com/c/FVMLearning - I hope you have fun - Good luck          //
//----------------------------------------------------------------------------------//

#include <ESP8266WiFi.h>
extern "C" {
#include <espnow.h>#include <user_interface.h>
}

//===================================================================================
void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("Starting fvm learning get mac address");  Serial.print("This node AP mac: ");   Serial.println(WiFi.softAPmacAddress());  Serial.print("This node STA mac: ");   Serial.println(WiFi.macAddress());}

//===================================================================================
void loop() {

}
//================================ www.fvml.com.br ===================================
Muitas vezes quando copiamos o código direto do navegador, ocorre troca de caracteres, dando assim erros no código, por isso recomendamos e disponibilizamos um link direto para baixar.

Click no Botão abaixo para baixar os arquivos: 


Logo depois de ter baixado, abra o código baixado na sua IDE Arduíno, coloque o cabo USB do NodeMCU no seu computador, sete a porta que você colocou, e faça o Upload do código.
Quando o upload do código terminar, abra o Serial Monitor e lá você irá encontrar os Endereços Mac do seu NodeMCU ESP8266 ou ESP32

E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click Aqui FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom

quinta-feira, 23 de janeiro de 2020

Controlando LEDs com dois ESP8266 utilizando Protocolo ESP-NOW

ESP-NOW - Controlando LEDs com dois ESP8266 utilizando Protocolo ESP-NOW

Olá a Todos!!!

No post de hoje, iremos fazer a comunicação entre dois ESP8266, uma conexão direta sem roteadores executando a conexão, iremos acionar duas cargas, que serão simuladas utilizando dois LEDs, utilizaremos o protocolo de comunicação ESP-NOW. Essa protocolo foi desenvolvido pela fabricante Chinesa ESPRESSIF. Esse protocolo tem sido bastante utilizado em muitos Gadgets como: Mouses sem fios, teclados sem fio, sensores de incêndios Wireless, controles remotos, etc. por ter uma conexão rápida e direta e com pouco consumo de energia.
Se você não conhece esse protocolo, ou deseja saber mais sobre ele, recomendamos à você dar uma olhadinha em nosso POST que explica o código detalhando por etapas e cada parte dos processos do código:
O que é ESP-NOW - E como Funciona? - Código exemplo explicado!!!

O que iremos fazer é, utilizar a biblioteca espnow.h, que é uma biblioteca desenvolvida para ESP8266, e o motivo é bastante simples, uma grande maioria de pessoas teem o ESP8266, e códigos utilizando a biblioteca espnow.h que é a biblioteca utilizada no ESP8266, são bastante difíceis, o mais comum de se encontrar são códigos que utilizam a biblioteca esp_now.h biblioteca utilizada no ESP32, mas, a grande maioria ainda utilizam o ESP8266 assim como eu, tenho o ESP32, mas utilizo mais o ESP8266.

O que vamos precisar

  • Precisaremos ter instalado a biblioteca espnow.h na IDE Arduíno. Se você não o fez, ou estar em dúvidas se já está instalado, confere no nosso post, como instalar a biblioteca espnow.h na IDE Arduíno. 
  • 2 - ESP8266
  • 4 - LEDs "2 opcionais"
  • 2 - Chave Micro-Switch
  • Protoboards, Fios rabichos, etc.
A montagem é bastante simples, ficando teremos apenas dois LEDs no Receiver, e duas Chaves com Dois LEDs no Controle.
No Controle, os LEDs estão ligados nas GPIOs: D2 e D3, e as MicroSwitchs estão ligados nas GPIOs D1 e D4, você pode está modificando essas GPIOs, para o que mais se adeque em seu projeto, não vai fazer diferença alguma se mudarmos, só não podemos esquecer de ligá-la na porta correta e modificar na Sketch.
No Receiver, os LEDs estão ligados nas GPIOs: D0 e D1, como já mencionado acima, você pode também estar modificando diacordo com o seu projeto. Logo abaixo temos os dois códigos para completos para você poder acompanhar.

Código do Controle

//=================================================================================================//
// MASTER                                                                                          //
// Controlling LEDs with Two ESP8266 Uses ESP-NOW Protocol                                         //
// Edited and Adapted by: Engineer Jemerson Marques, On: 22.12.2019 - FVM Learning website         //
// Available at: https://www.fvml.com.br and on Youtube channel                                    //
// https://www.youtube.com/c/FVMLearning - I hope you have fun - Good luck                         //
//-------------------------------------------------------------------------------------------------//

#include <ESP8266WiFi.h>
extern "C" {
#include <espnow.h>
}
// This is the slave MAC Address which receives the data
 uint8_t mac[] = {0x5C, 0xCF, 0x7F, 0x4C, 0x82, 0x5C}; //AP MAC SLAVE'S ADDRESS

  #define WIFI_CHANNEL 4
  int prevstate_1 = LOW;
  int prevstate_2 = LOW;

// Data structure, must be the same for the slave

struct __attribute__((packed))DataStruct {
  char text[32];
};
    DataStruct button_1;
    DataStruct button_2;

//=====================================================================================================
void setup() {
  pinMode(D1, INPUT_PULLUP);
  pinMode(D4, INPUT_PULLUP);
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);

  Serial.begin(115200); Serial.println();
  Serial.println("Starting EspnowController.ino");
  WiFi.mode(WIFI_STA); // Station mode for esp-now controller
  WiFi.disconnect();
  Serial.printf("This mac: %s, ", WiFi.macAddress().c_str());
  Serial.printf("slave mac: %02x%02x%02x%02x%02x%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  Serial.printf(", channel: %i\n", WIFI_CHANNEL);
  if (esp_now_init() != 0)
  {
    Serial.println("*** ESP_Now initialization failed");
  }
  esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
  esp_now_add_peer(mac, ESP_NOW_ROLE_SLAVE, WIFI_CHANNEL, NULL, 0);
  strcpy(button_1.text, "Button 01 pressed");
  strcpy(button_2.text, "Button 02 pressed");
  Serial.println("Setup finished");
}

//======================================================================================================

void loop() {
  sendData();
}

//======================================================================================================
void sendData() {

  int currentstate_1 = digitalRead(D4);
  if (prevstate_1 != currentstate_1) {
    if (currentstate_1 == LOW) {
      uint8_t bs[sizeof(button_1)];
      memcpy(bs, &button_1, sizeof(button_1));
      esp_now_send(mac, bs, sizeof(button_1));
      Serial.println(button_1.text);
      digitalWrite(D2, !digitalRead(D2));
    }
  } prevstate_1 = currentstate_1;

  int currentstate_2 = digitalRead(D1);
  if (prevstate_2 != currentstate_2) {
    if (currentstate_2 == LOW) {
      uint8_t bs[sizeof(button_2)];
      memcpy(bs, &button_2, sizeof(button_2));
      esp_now_send(mac, bs, sizeof(button_2));
      Serial.println(button_2.text);
      digitalWrite(D3, !digitalRead(D3));
    }
  } prevstate_2 = currentstate_2;
}

//========================================== www.fvml.com.br ===========================================

Código do Receiver

//=================================================================================================//
// SLAVE                                                                                          //
// Controlling LEDs with Two ESP8266 Uses ESP-NOW Protocol                                         //
// Edited and Adapted by: Engineer Jemerson Marques, On: 22.12.2019 - FVM Learning website         //
// Available at: https://www.fvml.com.br and on Youtube channel                                    //
// https://www.youtube.com/c/FVMLearning - I hope you have fun - Good luck                         //
//-------------------------------------------------------------------------------------------------//

#include <ESP8266WiFi.h>
extern "C" {
#include <espnow.h>#include <user_interface.h>
}
 uint8_t mac[] = {0x5C, 0xCF, 0x7F, 0x4C, 0x82, 0x5C}; //AP MAC SLAVE'S ADDRESS

//=====================================================================================================
  int Led1 = D0;
  int Led2 = D1;

void initVariant() {
  WiFi.mode(WIFI_AP);
  wifi_set_macaddr(SOFTAP_IF, &mac[0]);
}

//=====================================================================================================

#define WIFI_CHANNEL 4
// Must match the controller structstruct __attribute__((packed))DataStruct {
  char text[32];
unsigned int time;};

DataStruct receivedData;
//=====================================================================================================
void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("Starting EspnowSlave.ino");  Serial.print("This node AP mac: "); Serial.println(WiFi.softAPmacAddress());  Serial.print("This node STA mac: "); Serial.println(WiFi.macAddress());  pinMode(Led1, OUTPUT);
  pinMode(Led2, OUTPUT);

  if (esp_now_init() != 0){
    Serial.println("*** ESP_Now init failed");    while (true) {};
  }
  esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
  esp_now_register_recv_cb(receiveCallBackFunction);
  Serial.println("End of setup - waiting for messages");}

//======================================================================================================

void loop() {
}

//======================================================================================================
void receiveCallBackFunction(uint8_t *senderMac, uint8_t *incomingData, uint8_t len) {
  memcpy(&receivedData, incomingData, sizeof(receivedData));

  String DataCompare = String(receivedData.text);

  if(DataCompare == "Button 01 pressed"){
  digitalWrite(Led1, !digitalRead(Led1));
  Serial.println(" Message = " + DataCompare);
 }
  if(DataCompare == "Button 02 pressed"){
  digitalWrite(Led2, !digitalRead(Led2));
  Serial.println(" Message = " + DataCompare);
   
  }
}

//========================================== www.fvml.com.br ===========================================
Logo abaixo temos um link com os arquivos dos códigos do Controle como do Receiver, nós aconselhamos a você baixar e não copiar no código acima, pois pode vir com algum erro de acentuação ou qualquer outra coisa, então disponibilizamos o link para baixar.

Click no Botão abaixo para baixar os arquivos: 

Você pode também está acompanhando esse post em nosso canal do youtube, é uma forma de você acompanhar o funcionamento do mesmo.


E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click Aqui FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom