Ir ao conteúdo

Posts recomendados

Postado
8 minutos atrás, ViniciusKruz disse:

content+="<input type='text' id='usuario' required name='USERNAME' placeholder='Nome do usuário' />\n";

 

Eu ia me esquecendo, tem um recurso interessante do HTML5 que é a opção "required" na linha acima, esta opção aí faz a checagem do campo, se ele não estiver preenchido, ao clicar no botão, aparece a mensagem da tela abaixo:

espcss2.png

  • Curtir 3
Postado

Encontrei uma coisinha muito legal, pesquisando sobre o SPIFFS, se trata de uma biblioteca que faz upload dos nossos arquivos e imagens em uma pasta no computador diretamente na memória flash do ESP, abaixo tem o link explicando como instalar na IDE do Arduíno:

http://www.esp8266.com/viewtopic.php?f=32&t=10081

 

Depois de feito o processo de instalação acima, passa-se a ter acesso também ao FSWebServer, que além de mostrar os gráficos dos estados dos pinos do ESP, ainda tem uma página que gerencia os arquivos hospedados na flash. Instalei pra testar, vejam as imagens:

 

Tela de status dos GPIOS e tela de edição/upload e criação de novos arquivos (qualquer semelhança com o ESP8266Basic não é mera coincidência rsrsrs)

esp1.jpg

esp2.jpg

  • Curtir 4
Postado

Pessoal,

 

Não sei a opinião de vocês.... mas quanto mais eu vejo vocês postarem alternativas cada vez mais sofisticadas, e usando um monte de códigos recentes, eu dou mais valor ao Esp8266Basic !

 

Todas essas soluções postadas me dão a impressão de que o autor experimentou tudo isso, e utilizou vários desses conceitos em sua implementação da linguagem Basic.

 

Paulo

  • Curtir 1
  • Membro VIP
Postado
19 horas atrás, aphawk disse:

Todas essas soluções postadas me dão a impressão de que o autor experimentou tudo isso, e utilizou vários desses conceitos em sua implementação da linguagem Basic.

 

Com certeza ele sabe para onde está direcionando a força de trabalho. Talvez ele precise de ajudantes que pensem semelhante a ele.

  • Curtir 1
Postado
9 horas atrás, aphawk disse:

Todas essas soluções postadas me dão a impressão de que o autor experimentou tudo isso, e utilizou vários desses conceitos em sua implementação da linguagem Basic.

 

De uma coisa podemos ter toda certeza: esse cara do ESPBasic é muito bom no que faz. Claro que eu não sirvo de base, mas estou me virando nos trinta pra entender esse código dessa página de edição de arquivos e posso garantir que é muito complexo, tem uma estrutura que abusa de recursos até então desconhecidos pra mim, fazer o que esse camarada do Basic está fazendo não tem outra palavra senão "FENOMENAL".

adicionado 5 minutos depois
9 horas atrás, aphawk disse:

eu dou mais valor ao Esp8266Basic !

 

Deem valor mesmo viu, inclusive se puderem, cooperem no projeto dele.

  • Curtir 1
Postado

Bom dia amigos, acabei de achar um padrão nos bugs do nodemcu programado na ide do arduino. Se eu ficar "!Punhetando" os comandos ele trava, o padrão que eu percebi e uns 5 acionamentos por minuto. O que me daria em faixa de um acionamento a cada 20segundos. Nessas condições, fiquei feliz com meu node na IDE do arduino, pois graças a isso posso usar com liberdade o app inventor.

  • Curtir 1
  • Membro VIP
Postado
11 horas atrás, ViniciusKruz disse:

fazer o que esse camarada do [ESP]Basic está fazendo não tem outra palavra senão "FENOMENAL".

adicionado 5 minutos depois

 

Eu subscrevo, principalmente porque julgo o alto nível de abstração algo bom para a humanidade.

 

11 horas atrás, lucianolcoa disse:

Se eu ficar "!Punhetando" os comandos [no nodemcu] ele trava

 

Quais comandos, qualquer um? Fazendo como, por exemplo?

  • Curtir 1
Postado

@alexandre.mbm @ViniciusKruz Por enquanto automatizei apenas 2 comandos, que e acender o quarto e o corredor, o resto da casa não dá pois a fiação não passa ali...

Aqui em casa  NODEMCU trava se ficar dando varios comandos, liga um,desliga outro, etc. Programando pelo site não tinha esse problema, mas pela IDE do arduino aparentemente tem.... Comprei uma shield também que alimenta o NODE por fonte, dispensando o uso do cabo usb, oferecendo mais segurança ao aparelho.

  • Membro VIP
Postado
26 minutos atrás, lucianolcoa disse:

Comprei uma shield também que alimenta o NODE por fonte, dispensando o uso do cabo usb

 

Por favor me mostre uma imagem desse aparato. Deve ter em algum anúncio. Tem nada a ver com sua questão, é só curiosidade minha mesmo.

Postado
Em 15/11/2016 às 00:14, aphawk disse:

Pessoal,

 

Não sei a opinião de vocês.... mas quanto mais eu vejo vocês postarem alternativas cada vez mais sofisticadas, e usando um monte de códigos recentes, eu dou mais valor ao Esp8266Basic !

 

Todas essas soluções postadas me dão a impressão de que o autor experimentou tudo isso, e utilizou vários desses conceitos em sua implementação da linguagem Basic.

 

Paulo

Concordo!!!

 

 

8 horas atrás, lucianolcoa disse:

@alexandre.mbm @ViniciusKruz Por enquanto automatizei apenas 2 comandos, que e acender o quarto e o corredor, o resto da casa não dá pois a fiação não passa ali...

Aqui em casa  NODEMCU trava se ficar dando varios comandos, liga um,desliga outro, etc. Programando pelo site não tinha esse problema, mas pela IDE do arduino aparentemente tem.... Comprei uma shield também que alimenta o NODE por fonte, dispensando o uso do cabo usb, oferecendo mais segurança ao aparelho.

Eu perguntei no forum esp8266 se podia usar um carregador de celular qualquer para poder alimentar o node, disseram que sim e desde então tenho usado. (um com o mesmo micro usb)

 

Ou no pino Vin GND pode inserir 5V que alimenta também.. e acho que suporta até 12v pois na protoboardmandei um 12v no pino Vin (sem querer) desliguei rapidamente mas ele não queimou nada..continuou funcionando normal..

  • Membro VIP
Postado
1 hora atrás, rodrigocirilo disse:

Eu perguntei no forum esp8266 se podia usar um carregador de celular qualquer para poder alimentar o node, disseram que sim e desde então tenho usado. (um com o mesmo micro usb)

 

Rapaz, eu desconfiaria. Ruídos, necessidade de regular, etc.

Postado

@rodrigocirilo ,

 

Eu não confio nisso não .....

 

Eu tentei usar o nodemcu com ALGUNS leds, e usei uma fonte de 9V  500 mA que tinha aqui, antiga, dessas de celular...

 

Quando acendiam três Leds, o troço dava um Reset ...

 

Troquei por uma de 1A e aí resolveu.

 

Já alimentei o Nodemcu até com 12V, se não ligar mais nada na placa ela funciona sem problemas, embora o regulador esquente bastante.

 

Paulo

  • Curtir 1
Postado

@lucianolcoa  Isso ta me parecendo mais coisa de hardware que software. Relé é danado pra travar microcontroladores, já verificou se ele não está sem o diodo de polarização? Se bem que você disse que com o Basic isso não acontece né. Pode ser alguma coisa na biblioteca que você está usando. Teria como você postar seu código pra eu testar aqui pra você? Eu não uso o nodemcu como já disse antes, mas posso montar um circuito equivalente ao seu e testar com seu código.

Postado

@alexandre.mbm  Eis o link do anuncio http://produto.mercadolivre.com.br/MLB-770537536-nodemcu-v3-base-cabo-usb-_JM

 

@ViniciusKruz

 

Claro posto sim, eis aqui:

-----------------

#include <ESP8266WiFi.h>
 
const char* ssid = "xxxxxx";
const char* password = "yyyyy";
 
int ledPin = 5; // GPIO13
int teste=4;


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);
 
  // 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)  {
    digitalWrite(ledPin, HIGH);
    vetor1="aceso";
 
  }
  if (request.indexOf("/quarto=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
  vetor1="apagado";
  }
  if (request.indexOf("/corredor=ON") != -1)  {
    digitalWrite(teste, HIGH);
 vetor2="aceso";
  }
  if (request.indexOf("/corredor=OFF") != -1)  {
    digitalWrite(teste, LOW);
   vetor2="apagado";
  }
  
   
 
// 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("");
 
}

 

  • Curtir 2
  • Membro VIP
Postado
2 horas atrás, ViniciusKruz disse:

@lucianolcoa  Isso ta me parecendo mais coisa de hardware que software. Relé é danado pra travar microcontroladores, ...

 

Não será algo parecido com o "bounce" de um botão?

 

Spoiler

Sei que o assunto não é botão, mas não quero perder a oportunidade de registrar link para essas duas grandes páginas:

Spoiler
2 horas atrás, lucianolcoa disse:

 

Não precisava do anúncio, apenas da imagem.

 

Postado

@alexandre.mbm  Pode ser! Geralmente eu uso uma pequena função javascript que impede isto, mas no caso dele essa proteção não existe. Vou testar pra ver.

adicionado 0 minutos depois

@lucianolcoa  Vou testar aqui e depois te falo.

adicionado 52 minutos depois

@lucianolcoa  Tenho duas notícias, uma ruim e outra boa rsrsrs, vou começar pela boa:

 

Aqui também travou e comentei esta linha abaixo e nos inúmeros testes que fiz, não travou mais:

//while(!client.available()){
//  delay(1);
//}

 

Agora a ruim: (ruim porque você vai ter que mudar de biblioteca, mas ao mesmo tempo é boa noticia porque a mudança é pra muuuito melhor!!)

 

Mesmo não travando mais, eu não gostei do funcionamento do sistema, embora esteja no mais simples padrão, percebi que sua página ficou responsiva, não sei se você fez isto de propósito, mas foi um recurso muito legal, ele faz com que a página se ajuste a qualquer tamanho de dispositivo, seja celular, pc, tablet... e isso ficou muito legal, o que não gostei foi o funcionamento mesmo, a resposta é muitíssimo lenta, acredito que seja a biblioteca que você está utilizando, eu nunca usei esta aí pra enviar os dados para o cliente, experimentei ela agora no seu código, mas não gostei nadica rsrs. 

 

Eu uso esta aqui:

#include <ESP8266WebServer.h>

 

Ela é muito rápida, mesmo usando recursos pesadíssimos como CSS e Javascript, as respostas são fenomenais, aliás só o primeiro acesso ao ESP que demora um pouquinho, mas isso ocorre com todos, acho que é coisa do próprio ESP. O problema é que a estrutura do sistema é outra, bem diferente desta que você usou, mas é bem mais estruturada, profissionalmente falando. Dá uma pesquisada por exemplos com esta biblioteca e testa pra você ver, você vai se surpreender. Inclusive, tem um exemplo que postei aqui que tem um sistema completo com login e senha, bem interessante, vê aí e depois me conta.

 

Pra ficar ainda melhor, tenta fazer seguindo o tutorial que postei aqui na segunda feira se não me engano, é um sistema onde todos os arquivos da página ficam armazenados na memória flash do ESP(SPIFFS), é muito massa, eu crio meus arquivos (html, css, .js) no meu computador e faço o upload pelo próprio ESP, como no ESPBasic, nem te conto a qualidade que ta ficando minhas páginas agora rsrsrs.

 

 

  • Curtir 4
Postado

@lucianolcoa  Enquanto eu dormia, um anjo do Senhor me iluminou e hoje eu consegui otimizar seu código, ficou tremendamente rápido, altera a parte da resposta e veja o resultado:

 

// Return the response
  String content;
  
  content="<html>\n";
  content+="<head>\n";
  content+="<meta http-equiv='Content-Type' content='text/html; charset=utf-8'><br>\n";
  content+="</head>\n";
  content+="<body>\n";
  content+="<center>\n";
  content+="Eletronica e utilidades:Automacao residencial\n";
  
  content+="<br><br>\n";
  content+="<a href=\"/quarto=ON\"\"><button>Ligar quarto  </button></a>\n";
  content+="<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />\n";
  content+="<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>\n";
  content+="<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />\n";    
  content+=String(vetor1);
  content+="<br><br>\n";
  content+=String(vetor2);
  content+="</body>\n";
  content+="</html>\n";
 
  client.println(content);

 

O que eu fiz foi apenas "juntar" tudo em um único pacote e enviar de uma só vez. Antes você enviava linha por linha, por isto demorava muito. Testa aí e me fala. De qualquer maneira, continuo insistindo pra que você conheça o sistema pelo SPFFIS. 

  • Curtir 3
Postado

@Papibakigrafo Foi o que eu percebi que o único motivo da lentidão em que estava era pelo fato de enviar a resposta em muitos pacotes, colocando tudo em um único pacote(string) melhorou 200%. Eu não disse nada porque o desempenho ficou mais que satisfatório, mas tem um delay de 1 segundo no final do envio da resposta que também pode ser removido e ainda pode melhorar mais. Só precisa testar pra ver se não vai atrapalhar a questão do debounce.

adicionado 1 minuto depois

Agora, comparando com o outro modo de uso, com a biblioteca webserver, não percebi diferença, acredito que as duas formas estejam iguais em termos de velocidade de resposta.

  • Curtir 1
Postado
3 minutos atrás, ViniciusKruz disse:

@lucianolcoa Ele tem dois botões, um é pra reset e o outro é para programação, se entendi bem, você está colocando um outro botão em uma das IOs dele? seria isso?

Nao eu queria tipo apertar um botao qualquer e apagar a luz, o INPUT desse bixo e esquisito, nao segue a mesma logica do arduino, nem do bascom

Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!