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!

terça-feira, 11 de junho de 2019

Controle Remoto WI-FI 3 Canais - ESP para ESP8266 - Controlando Cargas

Fig. 1 - Controle Remoto WI-FI 3 Canais - ESP para ESP8266 - Controlando Cargas

Olá a Todos!

No post de hoje, aprenderemos como construir um controle remoto WI-FI, de 3 Canais com dois NondeMCU ESP8266, para controlar cargas de qualquer tipo, que podem ser: uma lâmpada, um motor, um ar condicionado, um portão eletrônico, um ventilador, ou seja, qualquer coisa que você deseje controlar, você pode com esse controle remoto sem fio. 

A quantidade de chaves “canais” só depende do que você deseja em seu projeto e da disponibilidade da quantidade de portas que o ESP8266 tem.

Esse projeto foi inspirado no nosso projeto anterior que faz a comunicação entre 4 ESPs NodeMCU ESP8266, sem a necessidade de um Modem Roteador, uma comunicação direta com uma Central ESP, sem a necessidade de internet, ou modem para ligá-los em rede.
Que você pode ver clicando no link abaixo!

  • Comunicação entre 4 ESPs com central ESP sem Roteador!

Postamos esse artigo devido a uma dúvida de um dos nossos inscritos que queria construir um tipo de controle de ESP para ESP com vários botões de acionamento, decidimos trazer isso a todos, pois acreditamos que se um tem essa dúvida, dezenas de outros inscritos também devem ter.

Para a realização deste procedimento, é necessário você já ter as bibliotecas do ESP instalada na IDE Arduíno.

Se você ainda não instalou, confira o nosso Post:

Depois de tudo instalado, proponho prosseguirmos…

Neste projeto, nós iremos criar um Controle Remoto Wi-Fi com o ESP8266, que pode acionar qualquer tipo de carga, só dependerá do tipo de evento que você irá fazer, podendo ser usado para, por exemplo, interruptores inteligentes sem fio para automação residencial. 

É um controle remoto que você pode levar no bolso, como um controle de portão de garagem, ou colocar em qualquer lugar, como um interruptor na parede que, quando pressionado, ativa algum dispositivo. É como os dispositivos inteligentes como os da Amazon Dash Button, só que do tipo FVM = “Faça Você Mesmo”.

Você pode se interessar também!

Descrição!

Controle de dispositivos, chave sem fio, interruptor sem fio, etc., não é uma ideia nova, e este conceito foi popularizado pela Amazon que criou o interruptor Dash, sendo um pequeno interruptor que envia comandos instantaneamente a um dispositivo remotamente, e hoje podemos ver dezenas de modelos de fabricantes diferentes no mercado.

Mas… como as plaquinhas do ESP são tão baratas, podemos fazer um projeto semelhante que funciona como o interruptor Dash, mas de uma forma mais econômica.

Logo abaixo temos o código inscrito na IDE Arduíno, para que deseja uma melhor explicação, temos o vídeo no nosso canal do YouTube no final desse Post que explica passo a passo os principais conceitos dessa programação.

Código Fonte do Transmissor "Controle"

//==================================================================================//
// Created by: Engineer Jemerson Marques, On: 10.06.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          //
//----------------------------------------------------------------------------------//

//------------------------------------------------------------------------------------
// Libraries Needed For This Project
//------------------------------------------------------------------------------------
#include <ESP8266WiFi.h>    // The Basic Function Of The ESP NODE-MCU

//------------------------------------------------------------------------------------
// Defining I/O Pins
//------------------------------------------------------------------------------------
#define       LEDBOARD     2        // WIFI Module LED
#define       BUTTON_1    D1        // Button 1 channel one
#define       BUTTON_2    D2        // Button 2 channel two
#define       BUTTON_3    D3        // Button 3 channel three

//------------------------------------------------------------------------------------
// WIFI Authentication Variables
//------------------------------------------------------------------------------------
char ssid[] = "fvml";                // SSID of your AP
char pass[] = "fvmlearning";         // password of your AP

//------------------------------------------------------------------------------------
// WIFI Module Mode & IP
//------------------------------------------------------------------------------------
IPAddress server(192, 168, 4, 15);   // IP address of the AP
WiFiClient client;

//====================================================================================
void setup() {
  Serial.begin(9600);
  pinMode(LEDBOARD, OUTPUT);        // Initiate the Onboard Led Output
  pinMode(BUTTON_1, INPUT_PULLUP);  // Initiate the ESP Pin: INPUT_PULLUP - Its mean that you no need put resistor
  pinMode(BUTTON_2, INPUT_PULLUP);  // Initiate the ESP Pin: INPUT_PULLUP - Its mean that you no need put resistor
  pinMode(BUTTON_3, INPUT_PULLUP);  // Initiate the ESP Pin: INPUT_PULLUP - Its mean that you no need put resistor

  WiFi.begin(ssid, pass);           // connects to the WiFi AP

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
}
//====================================================================================
void loop() {
  ReadButton_1();
  ReadButton_2();
  ReadButton_3();
}

//====================================================================================
void ReadButton_1() {
  int reading = digitalRead(BUTTON_1);
  if (reading == LOW) {
    client.connect(server, 80);
    digitalWrite(LEDBOARD, LOW);
    client.print("BUTTON_1\r");
    client.flush();
    digitalWrite(LEDBOARD, HIGH);
    client.stop();
  } delay(75);
}

//====================================================================================
void ReadButton_2() {
  int reading = digitalRead(BUTTON_2);
  if (reading == LOW) {
    client.connect(server, 80);
    digitalWrite(LEDBOARD, LOW);
    client.print("BUTTON_2\r");
    client.flush();
    digitalWrite(LEDBOARD, HIGH);
    client.stop();
  } delay(75);
}
//====================================================================================
void ReadButton_3() {
  int reading = digitalRead(BUTTON_3);
  if (reading == LOW) {
    client.connect(server, 80);
    digitalWrite(LEDBOARD, LOW);
    client.print("BUTTON_3\r");
    client.flush();
    digitalWrite(LEDBOARD, HIGH);
    client.stop();
  } delay(75);
}

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


Código Fonte do Receptor "Central ESP"



//==================================================================================//
// Created by: Engineer Jemerson Marques, On: 10.06.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          //
//----------------------------------------------------------------------------------//

//------------------------------------------------------------------------------------
// Libraries Needed For This Project
//------------------------------------------------------------------------------------
#include     // The Basic Function Of The ESP NOD MCU

//------------------------------------------------------------------------------------
// WIFI Module Config
//------------------------------------------------------------------------------------
WiFiServer server(80);
IPAddress IP(192, 168, 4, 15);
IPAddress mask = (255, 255, 255, 0);

//------------------------------------------------------------------------------------
// Defining I/O Pins
//------------------------------------------------------------------------------------
#define       LedBoard   2        // WIFI Module LED
#define       LED1      D0        // LED Receiver One
#define       LED2      D1        // LED Receiver Two
#define       LED3      D2        // LED Receiver Three

//====================================================================================
void setup() {
  pinMode(LedBoard, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);

  WiFi.mode(WIFI_AP);
  WiFi.softAP("fvml", "fvmlearning");
  WiFi.softAPConfig(IP, IP, mask);
}

void loop() {
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  digitalWrite(LedBoard, LOW);
  String request = client.readStringUntil('\r');
  client.flush();
  
  if (request == "BUTTON_1") {
    digitalWrite(LED1, !digitalRead(LED1));
    digitalWrite(LedBoard, HIGH);
  }
  if (request == "BUTTON_2") {
    digitalWrite(LED2, !digitalRead(LED2));
    digitalWrite(LedBoard, HIGH);
  }
  if (request == "BUTTON_3") {
    digitalWrite(LED3, !digitalRead(LED3));
    digitalWrite(LedBoard, HIGH);
  }
}


Aconselhamos baixar os arquivos originais, pois quando copiamos e colamos, sempre vem com erros, então estamos disponibilizando os arquivos para você fazer o download.

Arquivos para Download:


Você pode estar verificando o passo a passo com mais detalhes, assistindo o vídeo que postamos em nosso canal no YouTube logo abaixo.


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

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.
Se inscreva no nosso Blog! Clique aqui - FVM Learning!

Forte abraço.

Deus vos Abençoe!
Shalom!

4 comentários:

  1. Lean Marques
    Lean Marques
    1 segundo atrás
    Então eu copiei os codigos e me deparei com dois erros mesmo depois de corrigir-los não funcionou por algum motivo
    quando eu aperto botão do D1 o esp transmissor desliga o ledboard e o recepitor não faz nada

    ambos ficam com os leds board acesos .


    Achei o seguintes erros nos seu códigos:
    No transmissor falta ( WiFi.mode(WIFI_STA);
    No receptor falto (#include )
    Porem mesmo alterando não funcionou você tem alguma ideia do que possa ser o problema?

    ResponderExcluir
    Respostas
    1. Olá Lean Marques
      Como descrevi no Post, é melhor baixar os arquivos, pois quando copiamos do próprio site, algumas coisas, como acentuações ficam diferentes, então aconselho você a baixar direto, pois são os mesmos arquivos que utilizei sendo impossível de você encontrar algum erro.

      Qualquer dúvida, estaremos à disposição.

      Abraços.

      Excluir
  2. Obrigada por Compartilhar
    Deu muito certo aqui
    parabéns pelo site, já me inscrevi.
    bjs.

    ResponderExcluir
    Respostas
    1. Olá!!!
      Que ótimo que funcionou para você, e muito obrigado por estar conosco.
      Forte abraço.

      Excluir