Ir ao conteúdo
  • Cadastre-se

ESP8266 - A Pequena Maravilha para Comunicação WIFI


aphawk

Posts recomendados

agora, rodrigocirilo disse:

@aphawk  Ah mas pra algo assim acho valido o serial....

 

@lucianolcoa  Eu também acho i2c  complicado demais. hehehe

você multiplexou setando ceros pinos em determinados momentos estilo linha coluna? 

Sim, no protheus eu consegui emular 8 sensores e num arduino comum eu li apenas 3, mas 3 era o numero exato que eu queria mesmo. Quando vai de 4 em diante fica difícil acompanhar, voce enxerga o valor de um em outro, deve ser algum bug do cerebro sei lá. Ate guardei o codigo no meu email. Usei um demux 4051 .

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

@rodrigocirilo Mals nao havia entendido hehe.

 

Mas acho que nao é nenhum segredo, é so declarar a rotina e na rotina voce seta os 3 pinos de acordo com a tabela verdade.É mais fácil se voce chamar atraves de botões, agora deixar no "automatico" com timers eu não faço nem ideia, é algo que buga o cerebro.

Link para o comentário
Compartilhar em outros sites

Pessoal só pra constar.. consegui fazer o ESP comunicar por serial com um PIC... consegui enviar e receber (caracteres) digo controlar o pic criando um protocolo simples... porém com numeros não funcionou.. numeros decimais.. (1, 2 , 3, ...etc)

 

enviei do esp para o pic agora vou testar a inverso..

 

Editando:

 

O inverso tá f%¨&... usei o comando serialbranch que em teoria gera uma interrupção ao receber algo na serial.. mas nada acontece!!

 

cls
var = ""
baudrate (1200)
button "send1", [send1] 
button "end", [end]
serialbranch [change] 'ao receber algo (no caso o caracter 'c' deveria desviar para [change] e printar a mensagem.
wait


[change]
print "received"
wait

[send1] ' ao clicar no botão send1 desvia para cá, que envia o caracter 'a' para o pic que devolve o caracter 'c'
serialprint (a)
io(po,2,0)
delay 100
io(po,2,1)
wait


[end]
end

 

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

@rodrigocirilo ,

 

Acabou de sair uma nova versão do ESP8266Basic, foi implementada a função jscall , que permite excutar códigos em Javascript embutidos em arquivos.

 

Logo o primeiro exemplo de uso é o uso do BEEP funcionando por uma interrupção !

 

http://www.esp8266.com/viewtopic.php?f=42&t=12291&start=20

 

Alguém aqui tava atrás exatamente disto kkkkk !

 

Paulo

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

MULTIPLEXAÇÃO/DEMULTIPLEXAÇÃO

 

Geralmente a gente faz multiplicação de portas para escrita, por exemplo ligar/desligar 10 relés. Tem um artigo "antigo" no site rogercom.com que faz o inverso: leitura de 32 canais: http://www.rogercom.com/pparalela/32entradas.htm

 

Projeto muito interessante.

 

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

@ViniciusKruz ,

 

Interessante ?  me mostre hoje um computador com interface paralela padrão Centronics  !

 

Isso pode ter sido interessante nos idos de 1985..... hoje é arquivo morto.

 

Vocês estão falando tanto de multiplex/demultiplex e eu ainda não entendí o motivo disso.....  Por acaso os 10 pinos de I/O dos ESP não são suficientes para vocês???  

 

Mesmo se for insuficiente, usem um PCF8574, via I2C, muito simples de usar, pode ser tanto entrada como saída, e ainda pode gerar interrupção se necessário ! E o melhor de tudo : É um CI barato e não se perde nenhum dos pinos de I/O do módulo ESP para ficar inventando Multiplex/Demultiplex ! 

 

Paulo

 

 

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

Em 01/11/2016 às 22:52, aphawk disse:

@rodrigocirilo ,

 

Acabou de sair uma nova versão do ESP8266Basic, foi implementada a função jscall , que permite excutar códigos em Javascript embutidos em arquivos.

 

Logo o primeiro exemplo de uso é o uso do BEEP funcionando por uma interrupção !

 

http://www.esp8266.com/viewtopic.php?f=42&t=12291&start=20

 

Alguém aqui tava atrás exatamente disto kkkkk !

 

Paulo

Eu mesmo kkkk..

 

Ele postou no topico que eu criei... usou um exemplo (o codigo beep.js) que outro colega havia sugerido por meio de botão.

 

Ai ele implementou a função calljs para chamar em uma interrupção por exemplo... 

 

testei aqui agora e funcionou...

 

 

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

@ViniciusKruz ,

 

Interessante ?  me mostre hoje um computador com interface paralela padrão Centronics  !

 

Isso pode ter sido interessante nos idos de 1985..... hoje é arquivo morto.

 

Vocês estão falando tanto de multiplex/demultiplex e eu ainda não entendí o motivo disso.....  Por acaso os 10 pinos de I/O dos ESP não são suficientes para vocês???  

 

Mesmo se for insuficiente, usem um PCF8574, via I2C, muito simples de usar, pode ser tanto entrada como saída, e ainda pode gerar interrupção se necessário ! E o melhor de tudo : É um CI barato e não se perde nenhum dos pinos de I/O do módulo ESP para ficar inventando Multiplex/Demultiplex ! 

 

Paulo

 

 

Dependendo da aplicação 10 io não são suficientes.. por exemplo.. para um controle de varias lamapdas e outras coisas em uma residencia... é pouco...

 

você teria um exmeplo de como comandar esse CI via i2c, tipo 10 como entrada e 10 como saida. Esse PCF8574 tem quantas io?

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

Alguem conseguiu entender pra que serve este programa em especifico?

https://www.esp8266basic.com/msg-url-advanced.html

adicionado 4 minutos depois

@rodrigocirilo Olha depende muito, e uma frase que certa vez vi num filme e gostei bastante é "Há mais de uma maneira de se descascar uma banana". Numa casa enorme, suponho que deva ser aquelas mansões, rs. voce pode implementar uns 4 ou 5 esp, cada um com seu site específico. Manjando de app inventor ou tasker voce pode criar um unico app que se conecta com todos os sites criados pelo espbasic numa so interface, ou metendo as caras e programando pelo arduino mesmo.

Agora se voce quiser fazer num unico esp, voce tem duas saídas, ou I2c ou multiplexação. Ainda que eu ache o I2c uma espécie de multiplexação inteligente, que,apesar de ser eficiente, não deixa de ser multiplexação.Mas, se voce "tem que fazer" podes optar por uma saída mais fácil.

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

1 hora atrás, rodrigocirilo disse:

você teria um exmeplo de como comandar esse CI via i2c, tipo 10 como entrada e 10 como saida. Esse PCF8574 tem quantas io?

 

Tem vários exemplos na Internet. O CI tem 8 I/OS, e a gente pode configurar como quisermos, por exemplo 6 entradas e 2 saídas. Basta enviar dois bytes para configurar , e a partir daí basta ler ou escrever no endereço dele e pronto !

 

Pode colocar até 8 CI's desses no bus I2C, cada um pode ter até 8 endereços diferentes. 

 

Para quem entende de C tá fácil :

 

http://hackaday.com/2008/12/27/parts-8bit-io-expander-pcf8574/

 

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-expansor-de-portas-pcf8574-com-mbed

 

É só usar os comandos de I2C do ESP8266Basic que isso tá bico demais.

 

Paulo

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

20 horas atrás, aphawk disse:

Interessante ?  me mostre hoje um computador com interface paralela padrão Centronics  !

 

Calma Paulo!! É lógico que é coisa antiga e não há necessidade de aplicar nos dias de hoje por termos uma infinidade de soluções mais práticas, por isso mesmo eu mencionei "ANTIGO". Quando postei, a intenção era mostrar uma forma "interessante" de como pode ser feito, mesmo sendo antigo, é só "mais uma forma de descascar a banana". Não é preciso ter uma porta paralela para usar esse hardware, isso aí pode ser facilmente adaptado para qualquer microcontrolador, embora isso aí seja uma coisa que eu não cogitaria usar até porquê ainda não precisei aumentar portas em nada.

adicionado 1 minuto depois

Aliás, já precisei aumentar portas, mas pra isto usei um CI HC595.

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

A minha rotina de calibração semi-automática do DS3231 na IDE Arduino está saindo do forno, estou testando ela para remover os bugs (ainda não sei se a calibração vai funcionar como o planejado, isto ainda não está bem testado), mas estou obtendo muita precisão com ela (de forma intermitente). Existem alguns problemas, por exemplo: porque às vezes tem um delay tão alto e em outras vezes consigo precisão excelente, melhor que 1 milissegundo, acho que pode ser a configuração da minha conexão (os parâmetros passados na conexão) com os servidores NTP, eu copiei uma receita de bolo mas tem muita coisa nos parâmetros que eu não sei como funcionam ou para o que servem. Para garantir que a calibração fique ótima eu só considero válida se a variação entre 4 leituras do Servidor NTP estiverem com um desvio menor que 3 milissegundos, e uso como critério um tempo mínimo entre as calibrações de uma semana, fazendo isso, um erro de 1 centésimo é aceitável (consigo uma precisão bem melhor que isso). E para melhorar ainda mais eu compenso todos os atrasos, usando a função micros() como referência, consigo algo como 1 microssegundo de desvio, no final todo o meu erro é só da Internet, todo o resto eu anulo usando o contador interno do ESP8266 como referência.

 

O programa está enorme e a interface WEB está tosca, muitas das informações do sincronismo estou retornando pela serial (o que não é desejável) e às vezes o erro é muito alto e eu tão tenho ideia do porque ??? Um programa que uso para fazer o acerto de hora do PC por Servidor NTP não tem este erro todo, e é muito mais estável. Eu certamente estou fazendo alguma coisa errada. Acho que a noite posto o programa (ZIPADO pois está agora perto de 2 mil linhas) para que vocês opinem e quem sabe sugiram algo para melhorar a minha tela WEB (nisto eu ainda sou muito fraco).

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

@Intrudera6

 

Parabéns pelo seu entusiasmo e dedicação.

 

Eu estive pensando, já que o ESP vai ter que ficar consultando o NTP para fazer as devidas correções no RTC, não seria mais viável ele simplesmente pegar essa hora no NTP e acertar o DS3231?

 

Imagino que isto que você está fazendo é uma coisa muito boa e inexistente e para quem precisa de uma precisão muito alta, será muito bom porque os RTCs que temos no mercado são muito ruins mesmo.

 

Estou usando o DS3231 há cerca de 30 dias, não tenho como conferir agora, mas imagino que se ele tiver atrasado muito, não passou dos 30 segundos, isso sem fazer nenhuma correção, se eu estivesse usando os RTCs tradicionais, também sem correção, já teriam alterado pelo menos uns 10 minutos.

 

33 minutos atrás, Intrudera6 disse:

às vezes o erro é muito alto e eu tão tenho ideia do porque ???

 

Será que não seria por causa do excessivo processamento a que o processador está sendo submetido? segundo você, o código já está muito grande.

Já percebi que os ESPs não tem precisão confiável ao comunicar na WEB, tem vezes que a comunicação é rápida, mas tem vezes que já demora e pra quem precisa de precisão, ele tem uma interrupção interna relacionada com o webserver que pára tudo até terminar a comunicação e isso pode ser um grande inconveniente.

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

@Intrudera6 Pelo menos na minha casa programar pela ide do arduino da um confiabilidade tão alta quanto calcular a hora num relogio solar...

Pode ser a conexao da minha casa, pois reconheço sem sombra de duvida que a operadora net é uma bela duma porcaria. Mas, por forças alheias sou obrigado a ficar com ela.

 

Mas esse problema eu não possuo programando num arduino simples. Vou esperar  sair uma versão programável do node32 na ide do arduino, comprarei e me aventurarei, pelas especificações que o Aphawk mostrou, o bagio so falta voar *.*

Não entendo como programar pelo ESPBASIC seja tão preciso, não vou dizer que ele não engasga, mas e raro, desde que fiz a automação na minha casa ele engasgou umas 3 vezes no maximo. E tem um tempo, mais de 2 meses. Ja fiquei 5 dias sem voltar pra casa e quando voltei cliquei nos botões e pa, foi... Se fosse na Ide do arduino com meia hora ja começaria a xiar, e lá ia eu desligar e ligar o esp pra voltar a conexão *.*

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

Bom pessoal.. consegui usar a serial para falar entre pic e ESPbasic....

 

Agora consigo expandir entradas e saidas através de um uC ...

 

obs: não usei divisor resistivo do TX do pic(5v) para o RX do ESP, com o divisor não estava funcionando pic >>> ESP... somente ESP >> pic pois este segundo era ligado direto.

 

O MMiscool disse "The input pins are 5v tollerant"  isso falando do ESP.. então liguei direto e ai funcionou...

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

agora, rodrigocirilo disse:

Bom pessoal.. consegui usar a serial para falar entre pic e ESPbasic....

 

Agora consigo expandir entradas e saidas através de um uC ...

 

obs: não usei divisor resistivo do TX do pic(5v) para o RX do ESP, com o divisor não estava funcionando pic >>> ESP... somente ESP >> pic pois este segundo era ligado direto.

 

O MMiscool disse "The input pins are 5v tollerant"  isso falando do ESP.. então liguei direto e ai funcionou...

Por segurança eu testaria um diodo zener nos inputs do esp. Sei que o pic tem um regulador interno, mas vai que nao fumfa 

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

Os testes que já fiz mostram que o timer dele é muito preciso (mas nem tanto como o DS3231), não para nunca e a resolução de micro segundo é ótima para compensar os atrasos e medir tempo de execução das rotinas. Eu uso a função micros() para fazer a compensação dos atrasos (do tempo de execução das rotinas) e consigo uma ótima repetividade nos valores. Da para conseguir um erro de menos de 1 microssegundo. E vocês vão ficar impressionados com a precisão do sincronismo, dá para acertar os relógios por ele e ir mais além, pelos desvios experimentalmente obtidos 1 centésimo é perfeitamente possível até com certa facilidade, mas com uma Internet de melhor qualidade milissegundo passa a ser alcançável (eu também tenho a NET e milissegundo é querer muito com ela, às vezes o link fica uma *****). Testem com as minhas rotinas para vocês verem (a única que eu ainda não testei direito é a que faz a calibração do DS3231, as outras já estão funcionando). Nas minhas rotinas eu só aceito a informação do servidor NTP se em 4 chamadas do servidor NTP estiver com um desvio máximo menor que 5 milissegundos mas acho que é perfeitamente possível conseguir 1 milissegundo.

 

Com bastante frequência consigo desvios bem menores que 1 milissegundo pelo servidor NTP numa série de 4 chamadas com tempo entre elas de 50 milissegundos. A coisa é bem rápida, mas às vezes não dá certo. Já tentei intervalos maiores e não melhora a precisão, então quanto mais rápido melhor.

 

Inseri o arquivo .ino e o arquivo pronto para gravar (.bin)

 

Teste.zip

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

20 horas atrás, lucianolcoa disse:

Se fosse na Ide do arduino com meia hora ja começaria a xiar, e lá ia eu desligar e ligar o esp pra voltar a conexão *.*

 

Tenho um ESP12F aqui ligado a +/- 30 dias, ele controla um relé, lê um DS3231, envia para a serial e checa 70 horários diferentes incluindo dia da semana/hora/minuto e ainda me dá acesso pelo web server, até agora não travou nenhuma vez. Não tenho do que reclamar. 

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

A minha rotina (para ESP8266 no Arduino IDE) de calibração automática para o DS3231 está evoluindo (ela está ficando muito mais precisa). Retirei vários bugs que estavam diminuindo a precisão e dificultando muito a calibração, agora estou conseguindo com certa facilidade precisão melhor que 1 milissegundo (e apertei o critério de aceitação da hora obtida por Servidor NTP, agora só aceito com variação menor do que 1 milissegundo com 4 leituras em sequência, feitas com 50 milissegundos de intervalo).

 

A minha tela WEB continua tosca, e eu só estou usando para disparar os comandos, o retorno está sendo todo dado pela serial do ESP8266, o que não é uma coisa muito profissional (interface gráfica ou tela para usuário nunca foi o meu forte).

 

Ainda não estou bem seguro do resultado da rotina de calibração automática, mas parece que falta pouco e está bastante promissor, mas preciso de alguns dias de intervalo para fazer uns testes mais avançados.

 

Vai em anexo o programa (com muitas rotinas) com o binário para quem quiser se divertir ou me ajudar para tirar bugs e melhorar a tela WEB.

 

Quando ela estiver pronta nunca mais eu (e quem mais acompanhe este tópico no fórum) precisarei de um frequencímetro extremamente preciso para calibrar um RTC DS3231 e mesmo assim conseguirei uma precisão melhor que +/-0,3 segundos por mês (+/-0,1PPM).

 

 

Encontrei mais uns bugs (parece que eles não vão acabar nunca), corrigi e anexei novamente (06/10 21:23)

 

 

 

 

 

 

Teste.zip

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

@Intrudera6  Seu sistema está muito bom, o código está bem legível, estrutura bem formulada. Esse seu código ainda vai me ajudar bastante com certeza, principalmente nas funções que você colocou pra calcular o dia da semana sozinho bem como o ano bissexto, no meu aqui eu tenho que setar o dia da semana manualmente, no meu outro RTC eu tinha esta função também, mas o tempo anda curto e não tive tempo de implementar ainda. 

 

Sobre suas telas, só tem uma forma de melhorar o visual: CSS. Pra isto temos duas opções, a primeira seria inserir as linhas do CSS diretamente no código, o que vai acrescentar muuiiito nele e a segunda opção que seria habilitar no ESP a biblioteca de arquivos, daí seria possível salvar o arquivo com o script CSS na memória do ESP, caso contrário dá pra armazenar o script em um site externo também e mandar o ESP buscar lá.

 

 

 

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

@ViniciusKruz

 

É, mas infelizmente o que interessa ainda não está funcionando, que é o calculo automático do registrador de deriva térmica, os valores calculados por ela não estão batendo com o que eu calculo por fora, e não estou conseguindo descobrir o porque (ainda), isto vai dar trabalho (este bug está com cara de que vai ser complicado identificar).

 

Quando estiver pronto deve ser realmente bem útil.

 

Fiz estas minhas rotinas de calendário porque eu queria a conversão dos meses e dos dias da semana em português (na biblioteca do Arduino IDE já tem algo parecido mas em inglês), e eu já tinha ela em outra linguagem, (em Pascal e Bascom), foi só portar para C.

 

Além de interface eu também sou horrível para dar nome de variável e procedure e isto às vezes me atrapalha um pouco.

 

Acho que até prefiro colocar o CSS no código, pois carregar da Internet carregaria muito o uso da memória RAM.

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

Identifiquei o BUG do cálculo da deriva térmica (e já atualizei o arquivo), problema com variável tipo usigned long dividindo tipo signed long, isto estava provocando um resultando totalmente sem sentido, o C é bastante traiçoeiro com os tipos de variáveis. Um debuger faz uma enorme falta, que saudades do Turbopascal / Delphi ! Tive que gatilhar a rotina toda para identificar onde estava calculando errado.

 

Agora só aguardando para ver se aparece outro BUG complicado deste tipo, mas no cálculo de deriva deve ter sido o último. O que eu tenho minhas duvidas é se 1 semana é suficiente para aplainar as diferenças de tempo nas capturas. Conseguir precisão de 1 milissegundo é meio utópico com esta nossa Internet. O fato de conseguir coerência em capturas sucessivas não garante esta precisão, mas com 1 ou 2 centésimos de erro já acho bem possível e o erro de 0,1ppm em 1 semana é de 6 centésimos, o que já permite que a rotina seja capaz de calibrar com precisão ótima (melhor que 0,1ppm). Ainda não sei como calcular o lag real do tempo de resposta do Servidor NTP, e isto realmente seria um bom parâmetro.

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