Pesquisar

AFSmartRadio Tranceiver 915Mhz Lora

AFSmartRadio Tranceiver 915Mhz Lora Módulo AFsmart Lora V1.0 montado Arduino Pro-Mini e Rádio Rf4463PRO A Internet das coisas (...

Controle Saídas Módulo AFSmart ESP8266 ESP-01 dois Reles

Controle Saídas Módulo AFSmart ESP8266 ESP-01 dois Reles


Exemplo de Aplicação Web com a placa Desenvolvimento AFSmart 2 Reles dois pulsadores ESP8266 ESP-01 desenvolvido pela AFEletrônica 


Módulo Desenvolvimento ESP8266 ESP-01

Especificações Módulo Desenvolvimento
Tensão de operação: 100~240Vac @ 50-60Hz
Contatos: NA, 1 NF e o Comum.
Corrente Contatos Rele: 28 VDC ~ 10A ou 125VAC ~ 10A.
Led’s indicadores: Alimentação/Rele acionado
Dimensões: 50mm x 50mm x 20mm

O módulo possibilita conexão direta do Conversor USB-Serial ao módulo de Desenvolvimento, sem necessidade de conexão de jumpers. Conexões muito mais limpa e rápida para desenvolvimento de suas aplicações, isso usando os conversores fornecidos pela AFEletrônica, mas caso já possua um conversor, basta seguir a pinagem TX/RX/GND e conectar ao módulo..

Botão Reset e Program direto na placa, tudo o que você precisa em uma única placa para você pensar no desenvolvimento do software e não perder tempo com montagens e mau contatos.




Energia Elétrica pode matar, desligue a alimentação geral para manuseio, use os equipamentos de segurança individual

Proposta de Conexão de Carga ao módulo AFSmart 2Reles e 2 Pulsadores



Jamais conectar tenção AC nos pulsadores

Instalando o Driver PL2303 caso adquirido junto com o produto AFSmart - procedimento para o driver em específico. Para demais driver realize a instalação conforme orientação do fabricante.

Abra propriedades de seu computador/Gerenciador de Dispositivos, para verificar se o mesmo não foi reconhecido automaticamente pelo Windows.

Importante: Caso tenha reconhecido automaticamente, procure enviar sua aplicação pela IDE do Arduino, se não houver sucesso no envio, o mesmo pode estar desatualizado, desinstale e instale a versão mais atual do driver. Sempre atente para a versão de seu Windows, 32 ou 64 bits, de forma a instalar do driver correto. 

Instale o driver sem a placa estar conectada ao computador, uma vez realizada a instalação do driver, caso necessário reinicie o computador, após conecte a placa para o reconhecimento automático da mesma. Escolhendo a Placa na IDE Escolha a placa ESP8266 conforme imagem abaixo.

Em porta escolha a serial que foi atribuída à placa. Caso apareça mais de uma COM em Porta, Vá até gerenciador de dispositivos do Windows, desconecte a placa, conecte novamente para verificar a serial a ser escolhida em Porta


Módulo desenvolvido e testado na  versão IDE Arduino 1.6.12, versões superiores não testado.

Se sua IDE não possuir a placa ESP8266, instale seguindo o seguinte procedimento:


1.0 - Em: Arquivos\Preferências no em laranja adicione o seguinte caminho:


1.1 -  Em Ferramentas\BoadManager clique na opção em laranja:



1.2 -  Siga até ao final, clique para realizar a instalação das placas ESP8266


Pronto sua IDE esta pronta para trabalhar com módulos ESP8266

Para enviar sua aplicação para o módulo, a mesma deve estar alimentada, não basta somente conectar  à porta USB do computador.

Enviando sua aplicação ao módulo AFsmart ESP8266 ESP-01


1. Pressione e segure simultaneamente os botões RESET e PGM
2. Solte o Botão RESET mantendo PGM pressionado
3. Solte Botão PGM
4. ... Pronto envie sua aplicação, o módulo já esta no modo de receber sua aplicação.

5. Nota Atente à pinagem de seu conversor USB-Serial que pode ser diferente se não foi adquirido junto com o produto.

Pinout Módulo ESP-01



 /*
 * Aplicação adaptada para módulo desenvolvimento AFSmart INT-021605
 */

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char *ssid = "SSID"; //  SSID da sua rede
const char *password = "PASS_SSID"; // senha da sua rede


IPAddress ip(192,168,1,33); // ip atribuido ao módulo
IPAddress gateway(192,168,1,1); // base ip da sua rede
IPAddress subnet(255,255,255,0); 

/*converte os pinos Tx&Rx em entrada
 De forma a usar os pinos TX e RX como entrada para os pulsadores, 
 Deve habilitar o " #define habilita_pulsadores true" de forma a fazer com que estes pinos virem duas entradas.
 Atente que após isso realizado estes dois pinos IO1 e IO3 perdem a função de Serial Tx/Rx no entando em nada interfere no modo de atualização do módulo
 O que fazemos é tão  somente usar dois pinos que estavam perdidos como duas I/O
 Caso precise fazer algum Debug em sua aplicação, basta definir " habilita_pulsadores" como false - e após seus debug's mude novamente para true de forma a converte-los
 novamente para o modo I/O entrada
 */

#define habilita_pulsadores true
WiFiServer server(80); // porta para entrada externa
const int rele1 = 0;
const int rele2 = 2;
const int  pulsador = 1; //  usa o pino TX em entrada pulsador
const int  pulsador2 = 3;  // usa o pino RX em entrada pulsador
boolean estado_pulsador = HIGH;
boolean estado_pulsador2 = HIGH;
String header;

const char* APssid = "AFE_Teste"; // para mudar o nome da placa na rede
const char* APpassword = "12345678"; // senha para conexão à placa modo AP

// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers
int buttonState;            // the current reading from the input pin
int buttonState2;           // the current reading from the input pin
int lastButtonState = LOW;  // the previous reading from the input pin
int lastButtonState2 = LOW; // the previous reading from the input pin


void setup ( void ) {

pinMode ( rele1, OUTPUT );
  digitalWrite ( rele1, 1 );
  
  pinMode ( rele2, OUTPUT );
  digitalWrite ( rele2, 1 );

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("creating ");
  Serial.println(APssid);
  
  //WiFi.softAP(APssid);
  int channel = 2;
  WiFi.softAP(APssid, APpassword, channel);
  //WiFi.begin(ssid, password);
  WiFi.config( ip,  gateway,  subnet);
  

Serial.begin ( 115200 );
  delay(10);

  Serial.println();
  Serial.println();
  Serial.print("Conectando a...");
  Serial.println();
  Serial.println(ssid);
  
  
WiFi.begin ( ssid, password );
Serial.println ( "" );

// Wait for connection
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}

Serial.println ( "" );
Serial.print ( "Connected a " );
  Serial.println();
Serial.println ( ssid );

  server.begin();
  Serial.print ( "Server Inicializado" );
  Serial.println();
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );

  
  if(habilita_pulsadores)
  {
      delay(500);
      pinMode(pulsador,INPUT);
      pinMode(pulsador2,INPUT);
  }
  

}

void loop ( void ) {
 //String buf = "";
    int estado_rele1 = digitalRead(rele1);
   // Serial.println(estado_rele1);

    int estado_pulsador= digitalRead(pulsador);
    int estado_pulsador2 = digitalRead(pulsador2);


// If the switch changed, due to noise or pressing:
  if ((estado_pulsador != lastButtonState)|| (estado_pulsador2 != lastButtonState2)) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:
    //Serial.println(buttonState);
    // if the button state has changed:
    if (estado_pulsador != buttonState) {
      buttonState = estado_pulsador;
   
        if (buttonState == LOW) {
        digitalWrite(rele1,!digitalRead(rele1));
      }
    }

     if (estado_pulsador2 != buttonState2) {
      buttonState2 = estado_pulsador2;
        if (buttonState2 == LOW) {
        digitalWrite(rele2,!digitalRead(rele2));
      }
    }
    
  }
   lastButtonState = estado_pulsador;
   lastButtonState2 = estado_pulsador2;



 // Listenning for new clients
  WiFiClient client = server.available();


  if (client) {
    Serial.println("Novo Cliente");
       
    // bolean to locate when the http request ends
    boolean blank_line = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        header += c;
      // String req = client.readStringUntil('\r');
      // Serial.print(req);
  
        if (c == '\n' && blank_line) {
              // Serial.print(header);
          
                    client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            //client.println("Refresh: 10");  // refresh the page automatically every 10 sec
            client.println();
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");

            client.println("");
            
            /*
            if(estado_rele1 == 0)
            client.println("Rele 1 esta ligado");
            else if(estado_rele1 == 1)
            client.println("Rele 1 esta Desligado");
            */
                
                
                 String buf = "";
                
                  
                  //buf += "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n";
                
                    buf += "<head>\r\n";
                    buf += "   <title>esp8266 webserver</title>\r\n";
                    buf += "</head>\r\n";
                    buf += "<body>\r\n";
                    buf += "<h1><a href=\"http://www.afeletronica.com.br/wireless-ct-8f6da\"><span style=\"color:#000000;\">ESP8266</span></a></h1>\r\n";
                
                  
                  buf += "<h3> ESP8266 Web Server by AFELetronica</h3>";
                  buf += "<p>RELE1 <a href=\"?function=Rele1_on\"><button>ON</button></a> <a href=\"?function=Rele1_off\"><button>OFF</button></a></p>";
                  buf += "<p>RELE2 <a href=\"?function=Rele2_on\"><button>ON</button></a> <a href=\"?function=Rele2_off\"><button>OFF</button></a></p>";
                  buf += "<h4>AFEletronica</h4>";
                  buf += "</html>\n";
                  
                 //  client.println ("<button style=\"width:300px;height:40px;color:green;background-color:#87CEFB\"");
                 client.print(buf);
                
               // buf +=("<button style=\"width:300px;height:40px;color:green;background-colord:#87CEFB\"");
                // client.println("<button style=\"width:120px;height:40px;color:green;background-color:#87CEFB\"");
           
                  //client.flush();

                  if (header.indexOf("Rele1_on") != -1){
                    digitalWrite(rele1, 0);
                    }
                  else if (header.indexOf("Rele1_off") != -1){
                    digitalWrite(rele1, 1);
                  }
                  
                 else if (header.indexOf("Rele2_on") != -1)
                    digitalWrite(rele2, 0);
                  else if (header.indexOf("Rele2_off") != -1)
                    digitalWrite(rele2, 1);
                  else {
                    Serial.println("invalid request");
                  //  client.stop();
                  }
                 // Serial.println("Client disonnected");
            
        header = "";
        break;
        }
        if (c == '\n') {
          // when starts reading a new line
          blank_line = true;
        }
        else if (c != '\r') {
          // when finds a character on the current line
          blank_line = false;
        }
      }
    }  
    // closing the client connection
    delay(1);
    client.stop();
    Serial.println("Client disconnected.");

  }
                   
                 
  }