Ir ao conteúdo

Posts recomendados

Postado

@Papibakigrafo ,

 

Opa, muito legal !!!!!!

 

Eu acho que sempre temos de divulgar o nosso conhecimento, claro que neste caso é o de vocês e não o meu kkkk, mas isso ajuda muito a quem está aprendendo, ou pode ser até o motivo de incentivar alguém a seguir por este caminho na vida, que no fundo é trabalhar com eletrônica em vez de se perder por aí  !

 

Muita gente pode melhorar de vida a partir de nossos posts. Se isso acontecer e alguém um dia enviar um e-mail de agradecimento para vocês, por terem incentivado a formar um novo engenheiro ou um novo técnico, vocês vão perceber o quanto que nós podemos fazer a diferença !

 

Eu já recebi três e-mails de agradecimento, sendo dois de pessoas que eu ajudei alguns anos atrás e agora quando se formaram me enviaram um e-mail falando sobre como isso mudou a vida deles. E olha , pessoal, fico sempre com lágrimas nos olhos ao ler um e-mail desses... e isso sempre me incentiva a continuar aqui ajudando quando posso.

 

Por isso que eu sempre incentivo a todos que distribuam o conhecimento ! Podemos fazer algumas pessoas terem uma vida melhor !

 

Valeu, @Papibakigrafo !

 

 

 

 

adicionado 2 minutos depois

@lucianolcoa ,

 

Existem alguns projetos no Fórum do Bascom que utilizam isso com sucesso.

 

O legal é que as informações são enviadas para um celular, via ESP8266, com um programa feito na IDE do Arduíno rodando no ESP8266 e um Attiny85 rodando Bascom e conversando via Serial com o ESP8266. Achei muito interessante.

 

 

 

adicionado 5 minutos depois

@alexandre.mbm ,

 

Sim, acho que pode ser uma boa ideia. Talvez criar um tópico Tutorial para o ESP8266 seja um tópico mais adequado para quem quiser iniciar !

 

Paulo

  • Curtir 3
Postado

@aphawk  Na verdade é o que eu sempre busquei que é dividir o conhecimento, todas as coisas que eu fui aprendendo eu fui disponibilizando e ensinando na medida do possível, mas como eu já disse aqui outro dia, sou totalmente a favor de "organizar a casa" e sua ideia de criarmos tutoriais é fantástica, embora aqui esteja desorganizado, é perfeitamente possível que o que for saindo de útil daqui possa ser fixado de forma organizada em outro tópico, isso seria muito bom. Vou pensar em algumas coisas simples porém bem elaboradas para iniciantes.

  • Curtir 1
Postado

@ViniciusKruz ,

 

Legal, era isso mesmo que eu queria passar para vocês.

 

Vocês que estão trocando mensagens todo dia estão super-afinados com o bichinho, e ninguém melhor do que vocês para fazer tutoriais para o iniciante !

 

Aí já vamos tentar organizar melhor, dividir em alguns tópicos talvez, pensem sobre isto. 

 

Paulo

  • Curtir 3
Postado

Boa tarde pessoal, concordo com o que o Paulo falou...

 

E acho a Ideia do @alexandre.mbm muito boa sobre abrir subforuns..

 

Por exemplo ESP8266 - ESPbasic ou IDE do arduino..

 

O fórum ESP8266 é distribuído por linguagens..  eu mesmo só acesso a MMISCOOL basic interpreter . hehe  gostei demais desse modo de programar..

  • Curtir 2
Postado

Não sei se todos concordam, mas penso que a estrutura como são criados os fóruns é muito boa em especial esta aqui do clubedohardware, porém não possuem uma estrutura própria para tutoriais. Vou explicar melhor, para criar um tutorial aqui, eu teria que criar um post como se fosse uma dúvida ou um pedido de ajuda e acho que deveria ter algo diferente, imaginem só, se criarmos um tópico destacado com o nome por exemplo "tutoriais", daí alguém vai lá e posta um tutorial, logo em seguida vem um monte de perguntas daí na sequencia vai outra pessoa e posta outro tutorial e mais um montão de dúvidas a respeito surgem, depois de 100 tutoriais e um milhão de perguntas, vem um usuário e posta outra dúvida referente ao primeiro tutorial, isso seria uma confusão terrível. Penso que teria que ter uma forma de a gente criar um tutorial e colocar em um local com uma lista onde quem tiver qualquer dúvida que poste no fórum referente e não no tutorial, entendem?!!! Talvez isso já exista e eu não sei rsrsrs.

  • Curtir 1
  • Membro VIP
Postado

Eu acho que o que falta é o fórum suportar reestruturação feita por autores e pessoas designadas. Poder dividir ou duplicar mensagens e transferi-las para novos tópicos. Por exemplo, este tópico com 68 mensagens, poderia ser desmembrado, quem sabe, em 15 tópicos totalizando 160 mensagens (algumas duplicadas para viverem em mais de um tópico).

Postado

Pessoal me ajudem, tentei implementar um botao fisicio no void setup para que volte as configurações originais, porém não obtive sucesso... Alguem por favor me ajudaria aimplementar a logica de um botao fisico na reconfiguração das funções?usando o codigo do renato aloi como exemplo?

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

// Locais dos itens da configuração
#define VERSION_START  500
#define CONFIG_START   6

// ID de Configuração 
#define CONFIG_VERSION "1a"

// Estrutura de configuração da EEPROM
struct ConfigStruct
{
  char ssid[50];
  char senha[50];
  IPAddress ip;
  IPAddress gateway;
  
} wifiConfig;

ESP8266WebServer server(80);

void saveConfig() 
{
  for (unsigned int t = 0; t < sizeof(wifiConfig); t++) {
    EEPROM.write(CONFIG_START + t, *((char*)&wifiConfig + t));
  }
  // Salvando o ID da versão para puxar da EEPROM
  // da proxima vez que for carregar
  EEPROM.write(VERSION_START + 0, CONFIG_VERSION[0]);
  EEPROM.write(VERSION_START + 1, CONFIG_VERSION[1]);
  EEPROM.commit();
}

void loadConfig()
{
  if (EEPROM.read(VERSION_START + 0) == CONFIG_VERSION[0] &&
      EEPROM.read(VERSION_START + 1) == CONFIG_VERSION[1]) {
    // Carregando a estrutura main config
    for (unsigned int t = 0; t < sizeof(wifiConfig); t++)
      *((char*)&wifiConfig + t) = EEPROM.read(CONFIG_START + t);
  }
  else {
    // Configuração inicial
    String ssid = "SSIDInicial";
    String senha = "senhaInicial";
    ssid.toCharArray(wifiConfig.ssid, 50);
    senha.toCharArray(wifiConfig.senha, 50);
    wifiConfig.ip = IPAddress(192, 168, 0, 125);  
    wifiConfig.gateway = IPAddress(192, 168, 0, 1);
    saveConfig();
  }
}

void handleRoot() 
{
  // HTML da pagina principal
  String html = "<html><head><title>Exemplo 3</title>";
  html += "<style>body { background-color: #cccccc; ";
  html += "font-family: Arial, Helvetica, Sans-Serif; ";
  html += "Color: #000088; }</style>";
  html += "</head><body>";
  html += "<h1>Exemplo 3 - Configurando WiFi</h1>";
  html += "<p>Pagina Principal</p>";
  html += "<p><a href=/config>Configurar WiFi</a></p>";
  html += "</body></html>";
  // Enviando HTML para o servidor
  server.send(200, "text/html", html);
}

void configWifi() 
{
  String html = "<html><head><title>Configurar WiFi</title>";
  html += "<style>body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }</style>";
  html += "</head><body>";
  html += "<h1>Exemplo 3 - Configurar WiFi</h1>";
  html += "<form method=POST>";
  html += "<p>SSID: <input name=txtSSID type=text value=\"";
  html += wifiConfig.ssid;
  html += "\" /></p>";
  html += "<p>Senha: <input name=txtSenha type=text value=\"";
  html += wifiConfig.senha;
  html += "\" /></p>";
  html += "<p>IP: <input name=txtIP type=text value=\"";
  html += wifiConfig.ip[0];
  html += ".";
  html += wifiConfig.ip[1];
  html += ".";
  html += wifiConfig.ip[2];
  html += ".";
  html += wifiConfig.ip[3];
  html += "\" /></p>";
  html += "<p>Gateway: <input name=txtGateway type=text value=\"";
  html += wifiConfig.gateway[0];
  html += ".";
  html += wifiConfig.gateway[1];
  html += ".";
  html += wifiConfig.gateway[2];
  html += ".";
  html += wifiConfig.gateway[3];
  html += "\" /></p>";
  html += "<p><input name=button1 type=submit value=Enviar /></p></form>";
  html += "</body></html>";

  server.send(200, "text/html", html);
}

void configWifiSubmit() 
{
  String html = "<html><head><title>Configurar WiFi Submit</title>";
  html += "<style>body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }</style>";
  html += "</head><body>";
  html += "<h1>Exemplo 3 - Configurar WiFi</h1>";
  html += "<p>Dados gravados com sucesso!</p>";

  String ssid = server.arg("txtSSID");
  String senha = server.arg("txtSenha");
  String ip = server.arg("txtIP");
  String gateway = server.arg("txtGateway");
  ssid.toCharArray(wifiConfig.ssid, 50);
  senha.toCharArray(wifiConfig.senha, 50);
  wifiConfig.ip.fromString(ip);
  wifiConfig.gateway.fromString(gateway);
  
  html += "<p>SSID: <b>";
  html += wifiConfig.ssid; 
  html += "</b></p>";
  html += "<p>Senha: <b>";
  html += wifiConfig.senha; 
  html += "</b></p>";
  html += "<p>IP: <b>";
  html += ip;
  html += "</b></p>";
  html += "<p>Gateway: <b>";
  html += gateway;
  html += "</b></p>";
  html += "<form method=GET>";
  html += "<p><input name=button2 type=submit value=Voltar /></p></form>";
  html += "</body></html>";
  
  server.send(200, "text/html", html);

  saveConfig();
  ESP.restart();
}

void setup() 
{
  // Iniciando Serial
  Serial.begin(9600);

  // Iniciando EEPROM
  EEPROM.begin(512);

  // Carrega configuração da EEPROM
  // Se não existir, cria
  loadConfig();
  
  // Iniciando WiFi
  WiFi.begin(wifiConfig.ssid, wifiConfig.senha);
  IPAddress subnet(255, 255, 255, 0);  
  WiFi.config(wifiConfig.ip, wifiConfig.gateway, subnet); 
  
  // Aguardando conectar na rede
  Serial.println("");
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print('.');
  }
  
  // Apresenta dados da conexão
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(wifiConfig.ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  // Atribuindo urls para funções
  // Quando não especificado método, uma função trata todos
  server.on("/", handleRoot);

  // Chamada dos métodos de configuração
  server.on("/config", HTTP_GET, configWifi);
  server.on("/config", HTTP_POST, configWifiSubmit);
  
  // Iniciando servidor
  server.begin();
  
  // Apenas informando que servidor iniciou
  Serial.println("HTTP server started");
}

void loop() 
{
  // No loop só precisa dessa função
  server.handleClient();
}

 

Postado

@lucianolcoa  Primeiro, no início do seu código, lá onde estão os "define" você tem que declarar o botão e seu respectivo pino:

 

int btnRstDefault = 16;

No meu caso, está no pino 16, no seu caso você vai ter que ver onde está.

 

 

Depois no código na parte do setup(), nas primeiras linhas, você precisa configurar este botão, se ele vai ser saída ou entrada:

pinMode(btnRstDefault, INPUT);      // configura o pino do reset default como entrada

 

Agora declara uma variável para receber o estado do pino, 0=deligado 1=ligado

int val = digitalRead(btnRstDefault);

 

Agora basta checar o valor desta variável e se estiver pressionado, execute a função de restauração:

while(val==LOW){//se o botão foi pressionado...
    Serial.println("Botão pressionado, entrando em modo de restauração...");
}

 

Postado

@ViniciusKruz  Nossa que ANTAAAAAAAAAAAAAAAAA

Eu mereçia um chute no saco na moral!Alguem me bata por favor!

Eu tava colocando if(botao==LOW) quando era if(digitalRead(botao)==LOW), ***** Vinicius, ainda te incomodei com um erro iniciante, por favor do fundo do meu coração me perdoe!!!! -_-'

  • Curtir 1
Postado

Agora uma coisa estranha, não estou conseguindo usar o pino D8, ele ta dando erro? alguem ja passou por isso?

adicionado 9 minutos depois

Bem como o D8 como botao para mim dava erro então tive que tirar um rele para usar botao fisico em outro lugar!De 4 acionamntos foram regredidos a 3. Pessoal, outra duvida, um modulo rele suporta ligar um ventilador de teto numa boa?

Postado
53 minutos atrás, lucianolcoa disse:

Pessoal, outra duvida, um modulo rele suporta ligar um ventilador de teto numa boa?

 

Geralmente os reles são para 10A (Precisa checar isso) ou seja, em 110v ele vai suportar até 1100W e em 220v até 2200W. verifica a potência do seu ventilador pra ter certeza.

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...