Ir ao conteúdo
  • Cadastre-se

ESP8266 - A Pequena Maravilha para Comunicação WIFI


aphawk

Posts recomendados

5 horas atrás, chacalgbi disse:

 

Obrigado pela resposta, quando puder enviar quero esse exemplo sim, mande por favor!!

Vou olhar esse anexo.


Grato!

Coloquei aqui o programa exemplo, baseado no exemplo

RTC APIs Example (pág 176 2C-ESP8266-SDK__API Guide__EN_V1.5.3.pdf com algumas modificações) em anexo.

Teste_RTC_APIs_envio.zip

adicionado 4 minutos depois
Link para o comentário
Compartilhar em outros sites

Amigo ViniciusKruz, olha esse projetinho que tá rodando aqui no meu quarto

 

1° Plaquinha que eu desenvolvi

http://imgur.com/HsKLMcb

 

2° Widgets Android que fica em uma das minhas telas do celular

http://imgur.com/un4OgkR

 

3° Gráfico da Temperatura por semana

http://imgur.com/xS7Gzjd

 

4º Gráfico da temperatura da última hora (Cliquei sobre um dos pontos para detalhes)

http://imgur.com/T9jPvJM

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

Estou separando os componentes para testar um ESP-01 com o Basic. Estou com um Serial TTL x USB CP2104 com saídas RTS e DTR, com elas eu vou montar um circuito para reset e flash automáticos (num prontoboard pequeno) nem vou me preocupar com o transistor NPN, acho que posso usar uns genéricos sem problema, talvez o BC548, acho que tenho vários deles.

 

Não sei se vou colocar botão de reset e flash, se der tudo certo não devo precisar deles (talvez só instale o botão de reset). Mando abaixo a imagem obtida num site de um pernambucano que normalmente escreve alguns artigos interessantes sobre eletrônica no seu blog (http://www.automalabs.com.br/page/2/ e http://ryan.com.br/blogs/quicktalk/).  E qual é a velocidade máxima que é seguro gravar um Flash ? É seguro mudar a configuração da serial do ESP8266 para valores mais altos ou será que existe o risco de eu trancar definitivamente as portas com a chave dentro e nunca mais conseguir me comunicar pela serial com ele ?

 

esp8266_nodemcu_autoreset_automalabs.com

Link para o comentário
Compartilhar em outros sites

@chacalgbi ,

 

Opa, muito legal !!!!!!

É exatamente o tipo de coisa que esse brinquedo foi feito !!!!

 

@Intrudera6 ,

 

Eu já acho que você está querendo inventar coisa demais .... eu uso aquele programa de gravação na velocidade padrão, cerca de 230K, e já está ótimo ....  Se mudar a velocidade, mesmo que dê muita coisa errada, acho que é só regravar de novo. Sobre colocar os botões, acho legal.

 

Hoje fiz um programinha que está monitorando a conexão internet a cada 20 segundos; caso meu modem trave ( 3 tentativas seguidas sem sucesso ), o programa faz o reboot, espera 3 minutos para o modem retornar o link, e depois volta a monitorar ..... Deixei também dois botões para desligar e ligar manualmente se eu quiser.

 

Ainda está bem básico, a cada teste ele está mostrando na tela o resultado, mas é só para acompanhar isso um dia inteiro e ver se não tem surpresa.....

 

Uma curiosidade.... a primeira vez que uso a função Wget às vezes não consegue pegar os dados do site, mas daí em diante funciona sempre, então fiz uma primeira chamada dummy, só para eliminar esse errozinho que aparecia nas mensagens.

 

Depois farei o "acabamento' do programa.

 

Segue o programa :

 

memclear
cls
io(po,2,0)
p = 0
erro = 0
onoff = 0
Traw = wget("tycho.usno.navy.mil/timer.html")
p = instr(Traw,"Master Clock Time")
timer 20000, [testa]
button "LIGA", [liga] 
button "DESLIGA", [desliga]
wprint "<br>"
wait

[testa]
Traw = wget("tycho.usno.navy.mil/timer.html")
p = instr(Traw,"Master Clock Time")
if p = 0 then
  erro= erro + 1
else
  erro = 0
endif
if erro > 2 then
  timer 0
  io(po,2,1)
  delay 3000
  io(po,2,0)
  onoff = onoff + 1
  wprint "<br>"
  wprint "Reboot : "
  wprint onoff
  wprint "<br>"
  delay 180000
  timer 20000, [testa]
endif
if erro = 0 then
  wprint " Ok "
else
  if erro < 3 then
    wprint " Erro : "
    wprint erro
    wprint " "
  endif
endif
if erro > 2 then
  erro=0
endif
wait

[liga]
io(po,2,0)
status = "Ligado" 
wait

[desliga]
io(po,2,1)
status = "Desligado"
wait

end 

 

Paulo

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

@aphawk

Então, realmente não dá pra "exigir" muita coisa desses módulos, até pode fazer algumas coisas bem complexas, mas não é o propósito deles, veja o que o próprio pessoal desenvolvedor do firmware nodemcu disse:

 

From the NodeMCU FAQ:

If you are trying to implement a user-interface or HTTP webserver in your ESP8266 then you are really abusing its intended purpose. When it comes to scoping your ESP8266 applications, the adage Keep It Simple Stupid truly applies.

-- Terry Ellison, nodemcu-firmware maintainer

 

Mesmo assim, tem um projeto de um super Http Server rodando, não sei se funciona, pra mim é bem claro que comercialmente é inviável.

 

Minha ideia é trabalhar com uma interface bem básica e simples de forma que eu tenha acesso as configurações dele, nada sofisticado ou engenhoso. Eu tenho meus projetinhos com PIC e quero dar a eles um web server embarcado, só que estou esbarrando em algumas questões como a segurança, não dá pra deixar aberto e qualquer um poder acessar sem um login nem nada ou pelo menos uma criptografiazinha.

Link para o comentário
Compartilhar em outros sites

@ViniciusKruz ,

 

Exatamente. Embora tenha uma CPU mais poderosa que um Arduíno Uno, a parte de comunicação sem fio não tem hardware tão potente quanto a CPU dele. Ou seja, não dá para esperar performance com várias conexões simultâneas.

 

Para mim, tenho um monte de ideias para fazer com esse brinquedinho.... mas todas são apenas tipo coleta de dados - enviar para um site - obedecer comandos . Nada mais que isso.

 

Paulo

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

Pessoal, veja se alguém pode me ajudar, nesse projeto que fiz e coloquei as fotos acima, eu coloquei um led pra ligar somente se conseguir se conectar com o Wifi usando o seguinte comando:

 

if(WiFi.status() == WL_CONNECTED){digitalWrite(4, HIGH);} else {digitalWrite(4, LOW);}

 

Agora eu queria fazer algum comando para o ESP enviar os dados apenas se houver conexão com a internet, porque as vezes tá conectado com o Wifi mas não tem internet no Roteador.

 

Alguém sabe algum comando que teste se tem conexão com a internet??

 

Programo na IDE do Arduino.

P_20160823_230551.jpg

Link para o comentário
Compartilhar em outros sites

@chacalgbi ,

 

Olha, creio que tem como você acessar a API do ThingSpeak pelo Arduíno. Uma ideia é você armazenar um valor qualquer lá, e tentar fazer a leitura desse dado. Se conseguir, é porque  você tem conexão Internet !

 

Eu passei por esse mesmo problema, pois vira e mexe meu modem da Net trava e eu fico sem Internet.... por isso que fiz o código do post anterior. Mas achei mais fácil usar o comando Wget que tem no Esp8266basic.

 

Paulo

 

Link para o comentário
Compartilhar em outros sites

14 horas atrás, chacalgbi disse:

 

Amigo ViniciusKruz, olha esse projetinho que tá rodando aqui no meu quarto

 

 

Nossa, agora que eu ví!! Parabéns pelo projeto, muito legal.

adicionado 2 minutos depois

@alexandre.mbm

Você tem conhecimento para compilar e gerar os .bin no GitHub?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Em 24/08/2016 às 13:25, ViniciusKruz disse:

Você tem conhecimento para compilar e gerar os .bin no GitHub?

 

Parece suficientemente documentado. Há três formas sugeridas. Todas requerem 64bit. Você não tem esse hardware?

 

E o build na nuvem, não serve para você? Ele tem cara de ser uma mão na roda; já o processo manual, sem Docker, parece bem complexo!

 

Em 23/08/2016 às 23:16, chacalgbi disse:

Amigo ViniciusKruz, olha esse projetinho que tá rodando aqui no meu quarto

 

Encontrei isto:

WeMos-D1-mini-with-shields.jpg

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

1 hora atrás, alexandre.mbm disse:

Parece suficiente documentado. Há três formas sugeridas. Todas requerem 64bit. Você não tem esse hardware?

 

Tenho não!!

 

1 hora atrás, alexandre.mbm disse:

E o build na nuvem, não serve para você? Ele tem cara de ser uma mão na roda.. O processo manual parece bem complexo!

 

Ainda não tinha testado, vou testar agora, obrigado pela dica.

 

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

Depois de algumas horas consegui fazer funcionar o ESP8266 (ESP-1 versão de 1Mbyte de flash) com interpretador Basic. Mordeu um pouco até que eu conseguisse transferir para o Flash em 230kbps. Depois que eu configurei para conectar na minha rede eu tive que tentar alguns IPs na minha rede até encontrar o IP correto do ESP Basic, imagino que tinha uma forma mais fácil, mas eu demorei poucos minutos para isso. Não foi tão difícil assim.

 

A minha gambiarra está pronta para que eu possa plugar um LCD nele (tenho um conversor de nível instalado) e coloquei um BME280. Mas hoje já está um pouco tarde, farei alguns testes amanhã.

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

Em 26/08/2016 às 23:50, Intrudera6 disse:

Mordeu um pouco até que eu conseguisse transferir para o Flash em 230kbps

 

Porquê só 230kbps? aqui eu chego a usar 115200! Vai rapidinho, aí se ficar dando erro eu vou baixando, mas geralmente vai normal.

 

Estou testando a linguagem LUA com o firmware Nodemcu, dentro da minha rede consigo ligar o led azul do ESP8266 mas acessando pela web nem abre a página, mais alguém já teve esse problema? Minhas portas e redirecionamentos estão corretas porque estou acessando câmeras e outras coisas, acho que o ESP está demorando pra responder e o navegador cansa de esperar, só pode ser isto. Vou testar de outras formas inclusive com os comandos AT e o Basic pra ver qual funcionará melhor.

 

 

Link para o comentário
Compartilhar em outros sites

@aphawk

 

É Paulo... esse ESPBasic tá bom de briga mesmo viu!!! Mexi com a linguagem LUA a semana toda e não fiquei satisfeito não viu, o ESP fica muito lerdo, o problema que eu citei acima, sobre a página web abrir só na rede local usando a LUA, não aconteceu com o Basic, no Basic funcionou 100%, percebi que a velocidade de resposta com o Basic (3.0) é muito rápida mesmo pela internet, vou dar um tempo a mais usando o Basic, vou implementar um sistema completo e vou deixar ele rodando 24h pra ver como vai ser. Com a linguagem LUA, posso estar errado, mas deu pra perceber que comercialmente é complicada.

Link para o comentário
Compartilhar em outros sites

@ViniciusKruz ,

 

Hehehe repare que 230Kbps é o dobro dos seus 115200 bps kkk !

 

Olha, o branch 3.0 é bem legal, estou fazendo algumas coisas bem legais nele. Mas também não pense que não tem seus "chiliques..."

 

O programa que publiquei pouco acima acima roda algumas horas, e depois pára de rodar..... parece que ficar escrevendo um monte de vezes na tela sem nunca apagar a tela ou refazer  faz o buffer html estourar..., então decidi não ficar imprimindo a todo teste, e agora apenas atualizo a tela com as informações, usando uma instrução bem poderosa para isso : o wprint htmlvar . Junto com o returgui, faz a tela atualizar com o resultado das variáveis  e já limpa o buffer html , e parece que resolveu o problema. Pelo menos está rodando fazem mais de 8 horas.

 

Esqueci de copiar o programa para postar aqui, e como o ESP8266 ainda está rodando como teste, amanhã eu coloco o código.

 

Aos poucos estou me familiarizando com a linguagem, agora estou estudando como setar o tempo corretamente.

 

Insista em aprender os vários comandos poderosos, que você logo vai conseguir fazer tudo o que pretende também !

 

Paulo

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

3 minutos atrás, aphawk disse:

Hehehe repare que 230Kbps é o dobro dos seus 115200 bps kkk !

 

Kkkkkk, é mesmo!! com o ele disse que demorou, logo achei que fosse 230Bps, na verdade acho que nem tem este baudrate(230Bps) na porta serial, desatenção minha! Cá entre nós, eu nunca passei de 115200 já acho muito passível de erro agora imagina o cara usando o dobro!! nem tive tanta coragem assim até hoje.

 

8 minutos atrás, aphawk disse:

wprint htmlvar . Junto com o returgui, faz a tela atualizar com o resultado das variáveis  e já limpa o buffer html

 

Isso é interessante porque já vi pessoas relatando que se for mandar mais de 1kb (se não me engano) precisa ser fatiado pelo motivo que você disse: buffer estourado, aí o ESP reinicializa.

 

Posta seu código pra podermos analisar.

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

@ViniciusKruz ,

 

Quanto ao Baud Rate, se prepare : já consegui atualizar a quase 1 Mbps... pode ver que existe essa opção no programa que atualiza o Flash !!!!

Mas depois também achei que era forçar muito....

 

Bom, acho que o programa agora deu certo, rodou mais de 12 horas até agora sem erro. Repare que se clicar nos botões, eu atualizo imediatamente a tela; se houver uma mudança no modem, eu também atualizo a tela antes de esperar os delays. E no caso do delay de 5 minutos, antes eu desligo o timer para evitar re-entrância !

Após esse delay passar, eu ligo novamente o timer, e tudo volta ao normal.

Agora, só falta acertar a hora, pois existe uma hora de diferença .....

 

Segue o programinha :

' Programa para testar conexao Internet
' A cada 30 segundos tenta ler a data e hora de um site
' Se nao conseguir por 4 vezes consecutiva, desliga o modem,
' espera 5 segundos, e liga novamente o modem, e espera
' 5 minutos antes de testar novamente.

memclear
cls
testes = 0
treb = 0
erro = 0
terros = 0
ct = "          "
tipo = "ON"
io(po,2,0)
wprint |<HTML>|
wprint |<HEAD>|
'wprint |<meta http-equiv='refresh'content='10;URL=/input?'>|
wprint |<font color="blue">|
wprint |<h2>STATUS INTERNET</h2>|
wprint |</HEAD>|
wprint |<body bgcolor="white">|
wprint |<font color="black">|
wprint "<br>"

button "Desligar", [desligar]
button "Ligar", [ligar]
wprint "<br>"

wprint "Modem: "
wprint htmlvar(tipo)  ' status
wprint "<br>"

wprint "Horario: "
wprint htmlvar(ct)  ' data e hora
wprint "<br>"

wprint "Testes efetuados: "
wprint htmlvar(testes)  ' total de testes
wprint "<br>"

wprint "Falhas simples: "
wprint htmlvar(terros)  ' total de erros
wprint "<br>"

wprint "Total de Reboots: "
wprint htmlvar(treb)  ' total de reboots
wprint "<br>"

timer 30000, [update]

wait
end

[update]
testes = testes + 1
' Get ASCII time string
Traw = wget("tycho.usno.navy.mil/timer.html")

' Search for marker so we know where to trim
p = instr(Traw,"Universal Time")

' Get formatted string for "Eastern Time" formatted properly
time = mid(Traw,p + 19,24)

If p < 100 then
  ct = ct
  terros = terros + 1
  erro = erro + 1
else
  ct = time
  erro = 0
endif

if erro > 3 then
  timer 0
  gosub [reconecta]
  timer 30000 , [update]
  erro = 0
  treb = treb +1
endif
returngui
wait

[reconecta]
tipo = "OFF"
returngui
io(po,2,1)
delay 5000
tipo = "AGUARDANDO"
returngui
io(po,2,0)
delay 300000
tipo = "ON" 
return

[desligar]
tipo = "OFF"
io(po,2,1)
returngui
wait

[ligar]
tipo = "ON"
io(po,2,0)
returngui
wait

 

Paulo

 

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

@aphawk

Muito bom, obrigado por postar seu programinha, tem uns comandos interessantes como o wget e como você mesmo disse, o wprint. O meu sistema aqui está online desde cedo, até agora está tudo ok, desliguei e religuei ele algumas vezes e ele voltou online rapidinho, agora vou deixar ele ligado e testar amanhã pra ver se ainda vai estar ativo. Paulo, acho que os projetos precisam de uma função simples para restaurar no padrão de fábrica, tipo, se a gente perder a conexão com ele, aperta um botão e restaura ele, e outra coisa, precisa habilitar o watchdog timer dele(não sei se ele tem) porque se ele travar, reinicia sozinho, o que acha? Depois vou trabalhar nisso.

Link para o comentário
Compartilhar em outros sites

@ViniciusKruz ,

 

Bom, ainda não tem essa opção voltar ao padrão de fábrica. A única maneira por enquanto é refazer o flash.

 

Sobre o watchdog, existe uma discussão sobre se vale a pena implementar. Por enquanto estão implementando a possibilidade de se utilizar mais timers, o que já ajuda um pouco.

 

Paulo

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

@ViniciusKruz ,

 

Eu sofrí pacas quando tirei a plaquinha de minha casa, que tem um nome de rede, e trouxe para o escritório, onde o nome da rede é outro.

 

Como esperado, a plaquinha não conseguiu conectar, e então apareceu a rede ESP, que é a padrão.

 

Mas não conseguí conectar na placa de jeito nenhum.... embora consiga conectar na rede ESP, o fato de eu ter trocado o IP da plaquinha impediu que eu conseguisse entrar novamente nela, não importa qual o IP que eu tentasse.

 

Me parece que para não dar problema desse tipo tem de deixar a plaquinha no IP padrão dela ....

 

Paulo

  • Curtir 1
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!