Ir ao conteúdo
  • Cadastre-se

ESP8266 - A Pequena Maravilha para Comunicação WIFI


aphawk

Posts recomendados

23 minutos atrás, ViniciusKruz disse:

@lucianolcoa  Seria um botão físico então? Bom, a parte do hardware seria basicamente como todo botão em microcontroladores: um resistor de 10k ligando o positivo(3v3) ao pino do ESP e o botão é ligado do pino do ESP para o terra, assim, o pino ficará sempre em nível alto(3v)  e caso o botão seja pressionado, a tensão nesse pino cai pra (0v). Com esse exemplo de ligação, se você quiser checar se o botão foi pressionado, deverá fazer um if(!input()), ou seja, se o pino estiver em nível 0, foi pressionado, tem como também colocar o pino invertido, ou seja, ele ficaria sempre em nível baixo (0v) e quando o botão for pressionado, passaria para nível alto(3v), nesse caso, pra saber se o botão foi pressionado, seria assim: if(input()), ou seja, se houve tensão no pino, o botão foi pressionado.

 

Na prática eu faço assim:

 

declaro em qual pino o led, relé, ou seja lá o que for acionado está ligado:

 

int Rele1 = 14;  //relé 1 ligado ao GPIO14

 

Declaro em qual pino está o botão:

int btn = 16;//botão ligado ao GPIO16

 

No setup, declado os pinos como entrada ou saída:

 

void setup() {
  pinMode(Rele1, OUTPUT);      // configura o pino do relé 1 como saida
  pinMode(btn, INPUT);      // configura o pino do botão como entrada
}

 

Agora é só colocar o IF no loop sempre verificando o botão:

 

void loop() {

   
    if(digitalRead(btn)==LOW){//se o botão foi pressionado...

          digitalWrite(Rele1, !digitalRead(Rele1));//aqui, ele inverte o estado do relé, se estiver ligado, desliga, se estiver desligado, liga...
          delay(1000);//tempo para debounce(evitar apertar duas vezes muito rápido)

    }

}

 

Se for o que eu entendi, é isso aí...

Ahe que mora o meu problema. NO arduino isso funciona, so que no NOde não, achei um código doido na internet que ate funciona, mas to tentando implementar ele com acionamentos pelo wifi... olha o codigo que eu achei e note a diferença do jeito "tradicional"

const int buttonPin = D7;
const int ledPin = D2;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (digitalRead(buttonPin) == HIGH)
  {
    digitalWrite(ledPin, HIGH);
  }
  else
  {
    digitalWrite(ledPin, LOW);
    pinMode(buttonPin, OUTPUT);
    digitalWrite(buttonPin, HIGH);
    pinMode(buttonPin, INPUT);
  }
}

Eu joguei a toalha, vou fazer uma gambiarra partilhando os acionamentos com o meu bom e velho de guerra arduino uno, numa versão standalone da placa. Vai funcionar do jeito que eu quero e ira resolver de uma vez por todas esse problema.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, lucianolcoa disse:

digitalWrite(ledPin, LOW); pinMode(buttonPin, OUTPUT); digitalWrite(buttonPin, HIGH); pinMode(buttonPin, INPUT);

 

Kkkkkk que loucura é essa??!!! que maluquice que foi feita nesse trecho!! Isso aí não tem a menor lógica: pinMode(buttonPin, OUTPUT);

 

Se ninguém pressionar o botão, o pino dele vira uma saída, e ainda coloca ele em nível alto, que loucura, nunca vi isso kkkkk

 

Esse código aí tá pra lá de doido. Vai no exemplo que te passei, ele ta funcionando aqui comigo e se não funcionar aí com você é porque pode haver falhas no hardware. Uma coisa já percebi, o ESP tem os pinos muito doidos, não é todo pino que funciona não, você tem que ir testando os pinos e vendo os que funcionam. 

 

 

Faz assim, coloca um println dentro da função que detecta o botão e fica de olho no monitor serial, se apertar o botão e nada aparecer, verifica tudo.

Link para o comentário
Compartilhar em outros sites

@ViniciusKruz

HUM, tentei acionar o d7 e o d8 pelos pinos, nao logrei o minimo exito... Esse código eu tirei de um site americano e por incrivel que pareça fumfou. Mas me diz amigo, sei que voce ja fez muito por mim e estou ate te explorando demais, mas por favor voce saberia em quais pinos o input funciona? pra eu poder testar?

Link para o comentário
Compartilhar em outros sites

@lucianolcoa  Esquenta não, até onde eu puder ajudar ta de boa, meu conhecimento é um pouco limitado, mas na medida do possível vamos remando...

 

 

Seguinte, eu nunca precisei de muitas conexões nos ESPs, mas geralmente eu uso o GPIO 16 para um botão e também já usei os GPIOs: 2, 10 e 14 como saídas para leds e relés... 

 

Lembrando que tem que definir tudo antes, como no exemplo que te dei acima, segue à risca que vai funcionar.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@lucianolcoa, com certeza o @ViniciusKruz está nos ajudando muito! Mas eu recomendo fortemente que você não fique apenas a colecionar receitas. O que ele trocou em miúdos na mensagem #1226 você deve aprofundar estudando "resistores em pull up ou pull down".

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@lucianolcoa  Cada pino do Arduíno corresponde ao mesmo GPIO no ESP, por exemplo, se no arduíno estiver usando o pino 10, no ESP o seu equivalente seria o GPIO10 e assim por diante.

 

Se no arduíno, um determinado sketch estiver definindo os pinos: 

 

const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

 

nesse caso os mesmos pinos 2 e 13 correspondem aos GPIOs 2 e 13 do ESP, porém se esses pinos não funcionarem, você pode trocar por outros.

 

 

Link para o comentário
Compartilhar em outros sites

@ViniciusKruz Vinicius,perdoe a minha zanga. Mas voce me resolveu uma jogo de xadrez deveras complicado. Agora entendi que voce estava certo e.. eu tambem,rs...

Realmente a programação funciona do jeito conforme voce mencionou e eu ja havia programado assim, ate mesmo chegeui a programar um arduino jogado que tinha para confirmar...

Mas voce soltou a resposta chave desse problema. Não é todo pino que aceita INPUT. E se voce programar um pino que aceita input com um pino que não aceita, o código não funciona. Bem até agora sei de um pino que aecita INPUT, vou procurar os demais e conforme vou achando alerto o povo aqui. Novamente valeu^

 

Cumprindo minha promessa, achei 2 pinos "inputaveis" o D0 e o D4, e como precisava apenas de 2,parei por aqui. Novamente valeu, problema resolvido.Me corrigindo,achei apenas o D4, o D0 o vinicius que falou pra mim.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@ViniciusKruz Eu tentei aqui e não consegui, então novamente venho recorrer aos seus conhecimentos. Minha ideia e linkar os buttons do site com uma switch fisica, sempre atualizando no site seja acionando os botões fisicos ou virtuais, pois eu implementei a automaçao e pela praticidade senti necessidade de um botao fisico também.

 

Ate consegui usar os buttons, como voce mencionou, mas quando eu adiciono o wifi por algum motivo buga...

Vou postar o código que estou testando mais uma súplica... Me ajude por favor :(

#include <ESP8266WiFi.h>
 
const char* ssid = "xxxxxx";
const char* password = "yyyyy";
 
int ledPin = D1; // GPIO13
int teste=D2;
int botao1=D0;
int botao2=D4;
  int valor1=0;
  int valor2=0;


String vetor1;
String vetor2;
WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(teste,OUTPUT);
  digitalWrite(teste,LOW);
  pinMode(botao1,INPUT);
  pinMode(bota2,INPUT);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  if (request.indexOf("/quarto=ON") != -1)  {
  valor1=1;
    
 
  }
  if (request.indexOf("/quarto=OFF") != -1)  {
  valor1=2;
   
  }
  if (request.indexOf("/corredor=ON") != -1)  {
  valor2=1;
    
  }
  if (request.indexOf("/corredor=OFF") != -1)  {
  valor2=2;
   
  }
  if(digitalRead(botao1)==LOW){
  valor1=valor1+1;
  }
  if(digitalRead(botao2)==LOW){
  valor2=valor2+1;
  }
  if(valor1>=3){
  valor1=1;
  }
  if(valor2>=3){
  valor2=1;
  }
  switch (valor1){
  case 1:digitalWrite(ledPin, HIGH);
    vetor1="aceso";
  break;
  case 2:digitalWrite(ledPin, HIGH);
    vetor1="apagado";
  break;
  }
  switch(valor2){
  case 1:digitalWrite(teste, HIGH);
 vetor2="aceso";
  break;
  case 2:digitalWrite(teste, LOW);
 vetor2="apagado";
  break;
  }
   
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<center>");
  client.print("Eletronica e utilidades:Automacao residencial ");
 
  
  client.println("<br><br>");
  client.println("<a href=\"/quarto=ON\"\"><button>Ligar quarto  </button></a>");
  client.println("<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />");
  client.println("<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>");
  client.println("<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />");    
 client.println(vetor1);
 client.println("<br><br>");
 client.println(vetor2);
  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

 

Link para o comentário
Compartilhar em outros sites

@lucianolcoa

 

Pra fazer isso que você ta querendo, vai precisar do Javascript/Ajax, eu postei um exemplo de como fazer isto ha algum tempo atrás, só tem que adaptar para seu código. 

 

O código completo é esse:


#include <ESP8266WebServer.h>

String botao_1 = "0";

ESP8266WebServer server(80);

int Rele1 = 10;    

int btn_Rl1 = 16;//botão para acionar manualmente

// config static IP
IPAddress ip(192,168,0,35); 
IPAddress gateway(192,168,0,1); 
IPAddress subnet(255,255,255,0); 

String esid="Atual";
String epass = "acesso301";

void status_btn(){//página monitoramento
  Serial.println("Atualizar");
  if (server.hasArg("status_btn")){
    if (botao_1 == "1"){
        server.send(200, "text/html",  "Desligar");
      }else{
        server.send(200, "text/html",  "Ligar");
      }
    //Serial.println(botao_1);
    //server.send(200, "text/html",  botao_1);
  }
}
  
void btn1(){//página de acionamento

  String content;
  int statusCode=0;
  if (server.hasArg("botao1")){
      if (botao_1 == "1"){
        botao_1 = "0";
        server.send(200, "text/html",  "Ligar");
      }else{
        botao_1 = "1";
        server.send(200, "text/html",  "Desligar");
      }
      Serial.println("Atualizou: "+botao_1);
      
  }
}

//Página inicial
void handleRoot(){

  Serial.println("Pagina inicial:");
  
 
  String content = "<html>\n";
  content+="<head>";
  content+="<style type=\"text/css\">\n";
  
  content+="body {\n";
  content+="color: purple;\n";
  content+="background-color: #d8da3d }\n";
  content+="}\n";
  
  content+=".Botao{\n";
  content+="text-align: center;\n";
  content+="font-family: 'Trebuchet MS';\n";
  content+="<a href=\"#\">border</a>-radius: 5px;\n";
  content+="box-shadow: 0px 1px 0px 0px #d6d6d6;\n";
  content+="vertical-align: middle;\n";
  content+="}\n";
  
  content+=".BotaoVermelho:hover{\n";
  content+="color: #FFFFFF;\n";
  content+="border: 1px solid #a90329;";
  content+="background: linear-gradient(to bottom, #6d0019 -50%, #a90329 100%) repeat scroll 0% 0% transparent;\n";
  content+="}\n";

  content+=".BotaoMedio{\n";
  content+="width: auto;\n";
  content+="overflow: hidden;\n";
  content+="padding: 5px 30px 5px 30px;\n";
  content+="}";

  content+=".BotaoTextoMedio{\n";
  content+="font-size: 16px;\n";
  content+="}";
  
  content+="</style>";
  content+="<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js\"></script>\n";
  content+="<script language=\"JavaScript\" type=\"text/javascript\">\n";
  content +="window.setInterval(\"refreshDiv()\", 1000);\n";
  content +="function refreshDiv(){\n";
  content +="$.ajax({\n";//chama a função de ajax 
    content +="url:\"http://192.168.0.35/status_btn\",\n";
    content +="dataType: \"html\",\n";//define o tipo de retorno. se é html, json ou outro qualquer 
    content +="method: \"POST\",\n";//define o tipo de envio se é por GET ou POST
    content +="data: {'status_btn':0}\n";
    content +="}).done(function(retorno){\n"; //função de retorno. chama um alert com a mensagem do servidor
    content +="document.getElementById(\"btn-ligar\").value= retorno;\n";
    content +="});\n";
  content +="}\n";
  content+="function rl_1() {";
      content +="$.ajax({\n";//chama a função de ajax 
      content +="url:\"http://192.168.0.35/btn1\",\n";
      content +="dataType: \"html\",\n";//define o tipo de retorno. se é html, json ou outro qualquer 
      content +="method: \"POST\",\n";//define o tipo de envio se é por GET ou POST
      content +="data: {'botao1':0}\n";
      content +="}).done(function(retorno){\n"; //função de retorno. chama um alert com a mensagem do servidor
      content +="document.getElementById(\"btn-ligar\").value= retorno;\n";
      content +="});\n";
      content+="}";
  content+="</script>\n";
  content+="</head>\n";
  content+="<body> <title>ESP-JavaScript/Ajax/CSS</title>\n";
  content+="<meta http-equiv='Content-Type' content='text/html; charset=utf-8'><H1>ESP-JavaScript/Ajax/CSS</H1><br>\n";
  content+="<br>\n";
  content +="<div id=\"teste\">\n";
  content +="</div>\n";
  content+="<br>\n";
  content+="<br>\n";
  content+="<dd><div id=\"submit_buttons\">\n";
  //content+="<input type=\"button\" class=\"Botao BotaoVermelho BotaoMedio BotaoTextoMedio\" id=\"btn-ligar\"  value=\"Aguarde...\" />\n";
  content+="<input type=\"button\" onclick=\"rl_1()\" id=\"btn-ligar\" class=\"Botao BotaoVermelho BotaoMedio BotaoTextoMedio\"  value=\"Aguarde...\" />\n";
  //<input value="Clique Aqui" class="Botao BotaoPequeno BotaoTextoPequeno BotaoLaranja" type="button">
  
  content+="<p id=\"demo\">Ao clicar no botao, nada mais na pagina sera recarregado a nao ser ele mesmo.</p>";
  content+="</dd></div>\n";
  content+="<br>\n";
  content+="<br>\n";

  content += "</body></html>\n";
  server.send(200, "text/html", content);
}


bool testWifi(void) {
  int c = 0;
  Serial.println("Waiting for Wifi to connect");  
  while ( c < 20 ) {
    if (WiFi.status() == WL_CONNECTED) { return true; } 
    delay(500);
    Serial.print(WiFi.status());    
    c++;
  }
  //Serial.println("");
  //Serial.println("Connect timed out, opening AP");
  return false;
} 


void setup() {
  Serial.begin(9600);
  pinMode(btn_Rl1, INPUT);      // configura o pino do reset default como entrada
  pinMode(Rele1, OUTPUT);      // configura o pino do relé 1 como saida
  digitalWrite(Rele1, LOW);
  delay(10);
  
  WiFi.mode(WIFI_STA);//station
  WiFi.config(ip, gateway, subnet);//configura o ip fixo

  boolean AP=false;//se não conseguir conectar na rede wifi local, criará uma
  if ( esid.length() > 1 ) {
      WiFi.begin(esid.c_str(), epass.c_str());
      if (!testWifi()) {//se não conectou, inicializa como AP
        AP=true; 
      }
  }
  server.on("/", handleRoot);//página inicial
  server.on("/btn1", btn1);
  server.on("/status_btn", status_btn);
  
  const char * headerkeys[] = {"User-Agent","Cookie"} ;
  size_t headerkeyssize = sizeof(headerkeys)/sizeof(char*);
  //ask server to track these headers
  server.collectHeaders(headerkeys, headerkeyssize );
  
  server.begin();//inicia o web server

  if(AP){
    Serial.println("Conexao falhou, o sistema entrara em modo Access Point.");
    WiFi.mode(WIFI_AP);//Access Ponit
    IPAddress myIP = WiFi.softAPIP();
    Serial.println("AP IP address: ");
    Serial.println(myIP);
  }else{
    Serial.println("Web Server ativo em: http://");
    Serial.print(WiFi.localIP());
    Serial.print("/");
  }
}


int val;
void loop() {
  val = digitalRead(btn_Rl1);
  if(val==LOW){//se o botão foi pressionado...
    while(val==LOW){
      val = digitalRead(btn_Rl1);
    }
    if (botao_1 == "1"){
      botao_1 = "0";
    }else{
      botao_1 = "1";
    }
  }
  
  if(botao_1=="1"){//acionamento do relé
    digitalWrite(Rele1, HIGH); 
    //botao_1 = "1";
  }else{
    digitalWrite(Rele1, LOW); 
    //botao_1 = "0";
  }

  server.handleClient();
}

 

 

Esse código meu, embora pareça simples, tem muita coisa interessante nele, inclusive, eu te aconselho pegá-lo e criar seu sistema à partir dele, pois nele já contém as funções javascript/Ajax para atualizarem o status dos botões, estilizado pelo css com telas coloridas, envio de dados para o ESP pelo método POST(mais seguro) e não GET como no seu código, a estrutura toda já está usando a biblioteca ESP8266WebServer.h que permite ao ESP se tornar realmente um Web Server de verdade. Vale a pena se aventurar porque desse código aqui pra passar para o SPIFFS falta pouca coisa.

 

Tenta com esse código e qualquer coisa pode falar que vou te ajudando a entendê-lo.

 

Olha as telinhas geradas com ele:

 

 

 

 

 

espjs.png

  • Curtir 4
Link para o comentário
Compartilhar em outros sites

@lucianolcoa  

 

Meu código está enviando via POST, mas ele envia por GET também. 

 

content +="window.setInterval(\"refreshDiv()\", 1000);\n";
  content +="function refreshDiv(){\n";
  content +="$.ajax({\n";//chama a função de ajax 
    content +="url:\"http://192.168.0.35/status_btn\",\n";
    content +="dataType: \"html\",\n";//define o tipo de retorno. se é html, json ou outro qualquer 
    content +="method: \"POST\",\n";//define o tipo de envio se é por GET ou POST
    content +="data: {'status_btn':0}\n";
    content +="}).done(function(retorno){\n"; //função de retorno. chama um alert com a mensagem do servidor
    content +="document.getElementById(\"btn-ligar\").value= retorno;\n";
    content +="});\n";
  content +="}\n";

 

Neste trecho acima, é onde está a função que atualiza o botão, esta função é chamada a cada 1 segundo, e quando é chamada, envia um comando para o ESP com as configurações pré-definidas e na opção "method" você define se é GET ou POST. Depois desta função enviar o comando ("status_btn") para o ESP, ela fica aguardando uma resposta dele, no caso, o ESP vai retornar "Ligar" ou "Desligar" dependendo do estado atual do pino/led/relé através da seguinte função:

 

void status_btn(){//página monitoramento
  Serial.println("Atualizar");
  if (server.hasArg("status_btn")){
    if (botao_1 == "1"){
        server.send(200, "text/html",  "Desligar");
      }else{
        server.send(200, "text/html",  "Ligar");
      }
    //Serial.println(botao_1);
    //server.send(200, "text/html",  botao_1);
  }
}

 

Daí, a página que enviou esse comando via Ajax, pega esse retorno e escreve ele no texto do botão:

 

16 horas atrás, ViniciusKruz disse:

content +="document.getElementById(\"btn-ligar\").value= retorno;\n";

 

Note que o botão está identificado com a "id=btn_ligar":

 

16 horas atrás, ViniciusKruz disse:

content+="<input type=\"button\" onclick=\"rl_1()\" id=\"btn-ligar\" class=\"Botao BotaoVermelho BotaoMedio BotaoTextoMedio\" value=\"Aguarde...\" />\n";

 

Seguindo esta didática, você pode colocar esta função no seu código atual.

 

 

Vale lembrar duas coisinhas básicas sobre scripts(javascript), a primeira é que as funções NÃO ficam executando dentro do ESP(server) e sim no navegador da pessoa(cliente). A segunda coisa é que para a função poder ser executada, precisa de um arquivo próprio do javascript, note no meu código que tem a chamada a este arquivo:

16 horas atrás, ViniciusKruz disse:

content+="<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js\"></script>\n";

 

Aqui, temos um pequeno problema, perceba que você está "dizendo" ao navegador(cliente) onde ele irá encontrar as referências das suas funções, isso significa que a pessoa que estiver navegando nas páginas do ESP, se não tiver acesso à internet nesse momento, as funções não funcionarão. 

 

E o que fazer?  SPIFFS!!

Pessoal não tem pra onde correr, depois que ativei o SPIFFS, eu pego estes arquivos e hospedo eles dentro do ESP e ao invés de fornecer um link externo, forneço um link interno, veja como estou fazendo nos meus sistemas agora:

 

Citação

<script type="text/javascript" src="ajax_jquery.min.js"></script>
    <link href="style.css" rel="stylesheet" type="text/css">
    <script type="text/javascript" src="menu.js"></script>

 

Veja, os links não direcionam mais para arquivos externos: src="ajax_jquery.min.js", href="style.css" e src="menu.js".

O interessante é que esses arquivos não ocupam quase nada na memória SPIFFS. Só não pode abusar muito, porque senão, a página do ESP fica pesada ao ser carregada, porque o ESP terá que fornecer todos esses arquivos.

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Olhem só as minhas singelas telinhas:

 

 

esp1.png

esp2.png

adicionado 3 minutos depois

 

 

O mais legal é que não estão pesadas, estão dentro do aceitável para um simples ESP8266.

 

Estas telas contam com recursos como bootstrap(responsiva - que se ajusta a qualquer tela com qualquer resolução).

 

Na hora de abrir a página inicial, leva uns 5 segundos pra abrir por causa dos arquivos de estilização que tem que carregar, mas depois navega normalmente.

  • Curtir 4
Link para o comentário
Compartilhar em outros sites

@Papibakigrafo Valeu, obrigado!!

adicionado 6 minutos depois

Fiz uns testes aqui tanto no Mozilla Firefox quanto no Chrome, está demorando para abrir a primeira página não cinco segundos como eu havia dito, mas sim entre 10 e 20 segundos. E o resto abre em menos de um segundo. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Localizei este produto com o ESP8266- 01 de um fabricante no Brasil, achei muito interessante, estou postando apenas um que eu adquiri, mas eles possuem outros, é um mais bacana que o outro, pena que nosso suado dinheirinho esta difícil ultimamente, mas para quem tem interesse vale a pena verificar.

Há vários modelos, você precisa avaliar sua necessidade, possuem desde com fontes externas quanto com fonte AC embutida na placa, e algumas com sensores quando o modelo for com o ESP12F.

Eu adquiri o do link acima.

Possui entrada para um pulsador - tipo campainha/minuteria.

Um rele para acionamento de carga 250Vac~10A 

 

O interessante é que a placa possui um conector para você anexar o conversor USB-Serial direto à placa sem precisar usar jumpers, causando aqueles mal contatos que sabemos que tira nosso sono. Há e a documentação da placa achei muito boa também.

Possui o botão PGM e RST direto na placa, recomendo, vale a pena verificar.

 

Eles enviam um exemplo para você alterar de acordo com sua necessidade. Possuem também um produto final que já vem gravado e após a compra eles enviam um link para você baixar o App para Android. E detalhe interessante como é um produto desenvolvido no Brasil, eles dão suporte local, claro para pequenas dúvidas, e conversando com o pessoal de lá os caras conhecem muito bem do assunto.

Segue imagem da placa que adquiri, adquiri ela completa com fonte Hi-Link/ESP-01/Conversor-USB - como estou usando para eu desenvolver precisei de todos estes itens, mas o valor vale a pena.

esp8266-wifi-modulo-automaco-1-pulsador-fonte-100-a-240-vac-D_NQ_NP_707405-MLB25008853867_082016-O.jpg

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

@Adautoeng   Eu montei uma plaquinha muito parecida com esta aí da foto, olhando superficialmente até parece a mesma, eu montei e está funcionando normalmente, porém já não estou mais achando viável esse circuito, a curto prazo está 100%, a dúvida é a longo prazo porque esta fonte de 5v aí foi projetada para 5v/3W, fazendo uma conta simples: 3/5=0,6, ou seja, esta fonte é projetada apenas para 60mA, se for olhar a documentação do ESP, no caso verifiquei a documentação do ESP12 que é o que eu uso, e lá fala em um consumo de 80mA, só isso aí já é mais que a fonte pode fornecer, ou foi projetada para fornecer e olha que já vi pessoas falando que o ESP tem uns picos de consumo bem acima desses 80mA e ainda tem que somar o consumo do relé quando atracado, se somente o ESP já gera suspeita imagina ainda que tem o relé. Nos meus projetos eu uso uma fonte de 5v/3A e os reguladores de tensão de 3v3, estou usando dois de 1A cada, futuramente vou passar a usar penas um de 5A que encontrei. Eu adoraria que alguém viesse e me dissesse que minha conta está errada porque gostei muito dessa fontezinha de 5v.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

43 minutos atrás, ViniciusKruz disse:

Eu adoraria que alguém viesse e me dissesse que minha conta está errada porque gostei muito dessa fontezinha de 5v.

 

Bom,. se isso lhe ajuda.... você pode mudar a potência de transmissão do ESP, e assim baixa o pico de consumo. Existe no datasheet uma tabela com o consumo de corrente versus potência de transmissão.

 

Paulo

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@aphawk  Se for fazer a conta "ao pé da letra", acredito que esta fonte até dê conta do ESP sozinho, o problema é que nunca usamos somente ele rsrsrs, sempre vem uns relés... RTCs... sensores...bla,bla, bla...

 

Ele(ESP) sozinho consome naturalmente 80mA, mas isso é em 3v, a fonte fornece 3W(60mA) mas é em 5v, ou seja, se espremer esta conta aí pode até chegar a conclusão de que ela dê conta do ESP (sozinho).

 

43 minutos atrás, aphawk disse:

você pode mudar a potência de transmissão do ESP, e assim baixa o pico de consumo.

 

É uma opção, não acho que seja viável, maaasssss.... cada caso é um caso né.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

aphawk, boa tarde!

Sua conta esta errada amigo, 3W/5V = 600mA e não 60mA como você comentou, pode comprar sem medo que você não terá problemas.

Espero ter ajudado.

 

adicionado 3 minutos depois
4 horas atrás, ViniciusKruz disse:

@Adautoeng   Eu montei uma plaquinha muito parecida com esta aí da foto, olhando superficialmente até parece a mesma, eu montei e está funcionando normalmente, porém já não estou mais achando viável esse circuito, a curto prazo está 100%, a dúvida é a longo prazo porque esta fonte de 5v aí foi projetada para 5v/3W, fazendo uma conta simples: 3/5=0,6, ou seja, esta fonte é projetada apenas para 60mA, se for olhar a documentação do ESP, no caso verifiquei a documentação do ESP12 que é o que eu uso, e lá fala em um consumo de 80mA, só isso aí já é mais que a fonte pode fornecer, ou foi projetada para fornecer e olha que já vi pessoas falando que o ESP tem uns picos de consumo bem acima desses 80mA e ainda tem que somar o consumo do relé quando atracado, se somente o ESP já gera suspeita imagina ainda que tem o relé. Nos meus projetos eu uso uma fonte de 5v/3A e os reguladores de tensão de 3v3, estou usando dois de 1A cada, futuramente vou passar a usar penas um de 5A que encontrei. Eu adoraria que alguém viesse e me dissesse que minha conta está errada porque gostei muito dessa fontezinha de 5v.

Amigo, sua conta esta errada amigo, 3W/5V= 600mA, se sua dúvida for essa pode cair de cabeça, a plaquinha funciona que é uma beleza, realmente a placa possui um bom acabamento, e foi projetada para caber dentro de uma caixa de 4x2 polegadas, eu adquiri e estou muito satisfeito com ela, inclusive esta fonte da Hi-Link foi desenvolvida pensando realmente em automação residencial, devido ao tamanho reduzido.

adicionado 10 minutos depois
1 hora atrás, Adautoeng disse:

Dando uma ajuda na conta, a conta esta correta, mas conclusão de nosso amigo esta equivocada.

 

Amigo, sua conta esta certa, 3W/5V= 0,6A ou seja 0,6A = 600mA e não 60mA conforme você comenta, o que esta errado é sua conclusão. 60mA em notação cientifica será 0,06A esta corrente você realmente não irá conseguir rodar o ESP8266 . Se sua dúvida for essa pode cair de cabeça, a plaquinha funciona que é uma beleza, realmente a placa possui um bom acabamento, e foi projetada para caber dentro de uma caixa de 4x2 polegadas, eu adquiri e estou muito satisfeito com ela, inclusive esta fonte da Hi-Link foi desenvolvida pensando realmente em automação residencial, devido ao tamanho reduzido.

 

adicionado 13 minutos depois
2 horas atrás, ViniciusKruz disse:

@aphawk  Se for fazer a conta "ao pé da letra", acredito que esta fonte até dê conta do ESP sozinho, o problema é que nunca usamos somente ele rsrsrs, sempre vem uns relés... RTCs... sensores...bla,bla, bla...

 

Ele(ESP) sozinho consome naturalmente 80mA, mas isso é em 3v, a fonte fornece 3W(60mA) mas é em 5v, ou seja, se espremer esta conta aí pode até chegar a conclusão de que ela dê conta do ESP (sozinho).

 

 

É uma opção, não acho que seja viável, maaasssss.... cada caso é um caso né.

ViniciusKruz, tudo bem!

Uma ajuda na conclusão de sua resposta.

Sua conta esta correta, mas a conclusão esta equivocada, 3W/5=06A = 600mA e não 60mA como comentado.

Se for esse o problema você ainda possui ai 60mA - 600mA = 540mA para chavear reles/sensores, etc. para sua aplicação.

Espero ter ajudado.

 

 

adicionado 16 minutos depois
3 horas atrás, aphawk disse:

 

Bom,. se isso lhe ajuda.... você pode mudar a potência de transmissão do ESP, e assim baixa o pico de consumo. Existe no datasheet uma tabela com o consumo de corrente versus potência de transmissão.

 

Paulo

Se isso lhe confortar pode ficar tranquilo, sua conta esta certa o que esta errado é a conclusão.

0,6A = 600mA e não 60mA como concluído. Esta fonte é excelente para estas aplicações, 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Adautoeng

 

Tem razão, eu multipliquei o resultado (0.6) foi por 100 e não por 1000. Eu já havia desistido dessa fontezinha com muito pesar rsrsrs, vou até voltar a trabalhar no projeto da minha plaquinha. tem razão quanto ao tamanho reduzido, no meu projeto, a ideia era exatamente  colocar dentro da caixa do apagador na parede e sem essa bendita fonte é impossível.

 

 

16 minutos atrás, Adautoeng disse:

aphawk, boa tarde!

Sua conta esta errada amigo, 3W/5V = 600mA e não 60mA como você comentou, pode comprar sem medo que você não terá problemas.

Espero ter ajudado.

 

A conta errada foi minha rsrsrs

 

 

Abraço!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, ViniciusKruz disse:

@Adautoeng

 

Tem razão, eu multipliquei o resultado (0.6) foi por 100 e não por 1000. Eu já havia desistido dessa fontezinha com muito pesar rsrsrs, vou até voltar a trabalhar no projeto da minha plaquinha. tem razão quanto ao tamanho reduzido, no meu projeto, a ideia era exatamente  colocar dentro da caixa do apagador na parede e sem essa bendita fonte é impossível.

 

 

 

A conta errada foi minha rsrsrs

 

 

Abraço!!

 

Minhas desculpas ao "@aphawk", me confundi quem havia feito a conta, em todo caso esta ai é 600mA e não 60mA, pode ficar tranquilo então que tem corrente de sobra para você usar em suas aplicações, resolvi comentar pois pode induzir as pessoas ao erro.

 

A plaquinha é excelente. Caso alguém queira, segue o link novamente  ESP8266-01, eles possuem outras esta é a que adquiri.

 

Abraço e boa sorte a todos.

adicionado 1 minuto depois
4 horas atrás, ViniciusKruz disse:

@Adautoeng   Eu montei uma plaquinha muito parecida com esta aí da foto, olhando superficialmente até parece a mesma, eu montei e está funcionando normalmente, porém já não estou mais achando viável esse circuito, a curto prazo está 100%, a dúvida é a longo prazo porque esta fonte de 5v aí foi projetada para 5v/3W, fazendo uma conta simples: 3/5=0,6, ou seja, esta fonte é projetada apenas para 60mA, se for olhar a documentação do ESP, no caso verifiquei a documentação do ESP12 que é o que eu uso, e lá fala em um consumo de 80mA, só isso aí já é mais que a fonte pode fornecer, ou foi projetada para fornecer e olha que já vi pessoas falando que o ESP tem uns picos de consumo bem acima desses 80mA e ainda tem que somar o consumo do relé quando atracado, se somente o ESP já gera suspeita imagina ainda que tem o relé. Nos meus projetos eu uso uma fonte de 5v/3A e os reguladores de tensão de 3v3, estou usando dois de 1A cada, futuramente vou passar a usar penas um de 5A que encontrei. Eu adoraria que alguém viesse e me dissesse que minha conta está errada porque gostei muito dessa fontezinha de 5v.

 

ViniciusKruz, tudo bem! Citando aqui, para as pessoas não se confundirem.

 

Uma ajuda na conclusão de sua resposta.

Sua conta esta correta, mas a conclusão esta equivocada, 3W/5=06A = 600mA e não 60mA como comentado.

Se for esse o problema você ainda possui ai 60mA - 600mA = 540mA para chavear reles/sensores, etc. para sua aplicação.

Espero ter ajudado.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Adautoeng  

 

Opa tranquilo, meu amigo.

 

Eu vou dar uma sugestão para quem quiser se arriscar com fontes pequenas : use um bom eletrolítico em paralelo, eu uso um de 2200uF em uma fonte de 500 mA ( nominal.... ), e tem um relê de 5 Volts, um NodeMcu e um Led ligado nela e deu conta do recado.

 

Sem o capacitor, travava toda vez que o rele era acionado. Na matemática, o consumo nunca podia passar de 300 mA.... mas travava !

 

Já na fonte de 1000 mA não precisei adicionar nada, aguentou de cara.

 

Paulo

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!