Ir ao conteúdo
  • Cadastre-se

ESP8266 - A Pequena Maravilha para Comunicação WIFI


aphawk

Posts recomendados

25 minutos atrás, _xyko_ disse:

2016-10-03_105040.jpg

 

AP MAC e STA MAC têm que ser preenchidos?

Ainda não obtive êxito...

 

 

É essa que eu uso, não precisa se preocupar com os MAC, ele vai informar para você. Você precisa saber a porta COM (mas acho que isto você já sabe), o nome do arquivo .bin (Config) e o tamanho do flash (não sei para que ???), no Advanced você define o Baudrate em 230400, Flash size no tamanho do seu Flash (varia de 4MBytes até 512KBytes), não precisa mexer em mais nada.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@aphawk  O ruim é que este flasher não mostra o tipo de erro em tempo real.... e nem depois quando dou STOP (depois de dezenas de minutos).

adicionado 2 minutos depois

@Intrudera6

É isso mesmo que faço. Inclusive os leds Rx e Tx do Arduino mega que estou usando como interface piscam enquanto se faz, ou tenta, fazer o upload.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, rodrigocirilo disse:

@aphawk Paulo seu codigo ficou excelente, muito fácil de entender... só restaram algumas pequenas duvidas.

 

Para chamar a ENVIAON e ENVIAOFF você usa o (gosub) e para chamar [RESTO] você usa goto, porque?

 

Para eu entender como os  codigos rodam no esp8266basic, seria algo parecido com o que acontece nos microcontroladores, aquilo que  programou é um loop infinito, fica rodando o programa todo?

 

Sobre sacar o ESP12E do NodeMCU sei que pode ser difícil, mas com uma estação soprador seria possivel e eu poderia usar o nodemcu só para gravar os ESP´s? colocar tipo de um soquete no nodemcu e usa-lo só para gravar o flash inicial? no caso de eu usar o ESP em uma outra placa.

 

Att.

 

Repare que a única diferença entre enviar as duas mensagens é apenas o cabeçalho delas... todo o resto é o mesmo procedimento.

 

Quando eu chamo uma sub-rotina com o GOSUB, ela tem de terminar e retornar via RETURN .

 

A ENVIAON faz o cabeçalho e pula para prosseguir para o RESTO  através de um GOTO

A ENVIAOFF faz o cabeçalho e já roda na sequencia o RESTO. Porisso que não precisei de um GOTO.

 

A instrução GOTO é apenas uma maneira de transferir a execução para um outro trecho de programa. Não precisa voltar para ela depois.

Já a GOSUB manda executar uma sub-rotina, e quando essa sub-rotina termina, retorna a execução para a próxima instrução após o GOSUB.

 

O truque no ESP8266BASIC é que tudo sempre chega em um comando WAIT, reparou?

 

No caso desse programa, quando o comer estoura o tempo programado, ele  vai rodar o programa. E quando o programa termina de fazer o que tinha de fazer, ele termina em um WAIT.

 

Quando tem um comando WAIT, o ESP8266 só responde a algum botão na tela WEB, a uma interrupção, ou ao tempo programado no comando TIMER.

 

Não existe nenhum loop infinito aí no programa.... 

 

Esse tipo de funcionamento do ESP8266 é bem interessante, ele é movido a eventos !

 

Sobe usar o Nodemcu para gravar os seus ESPs .... o ideal seria você retirar o ESP nativo do Nodemcu, e soldar um cabo flat para usar uma outra placa para isso.

 

voce já ouviu falar em terminais tipo POGO ( Pogo Pin Conector ) ?

 

voce pode desenhar uma plaquinha onde usa esses terminais POGO, e fica tipo uma cama de pregos .... você faz uma base de montagem, encaixa o seu ESP nele, de maneira que ele fique bem preso mecanicamente, e abaixa essa cama de pregos de Pogo kkkkk esses terminais possuem uma mola de pressão interna !

 

Assim você fará o contato, sem precisar de solda, e consegue programar eles tranquilamente !

 

Existem dezenas de tipos desse conectores POGO, de vários comprimentos, vários larguras, e vários tipos de pontas . 

 

Dá uma pesquisada por aí ....

 

Paulo

 

 

adicionado 5 minutos depois
2 horas atrás, lucianolcoa disse:

Aphawk,novamente queria agradecer, agora a leitura analogica do esp esta a mil maravilhas, seu range vai de 0 a 700, muito mais do que eu precisava, ainda não chega a do arduino(1023) mas ja ta sossegado, da e sobra.

Pergunta. Para outros tipos de sensores, higrometro, sensor de carbono,etc. vale a lei de botar o resistor de 50 k ou da pra ir no "seco" mesmo?

 

tenho outra pergunta também, eu andei cicscando lá no esp basic, consegui acionar botões liga e desliga e até mesmo fazer um grafico de um sensor, mas nnão consegui unir os 2, vai um ou outro, geralmente o que eu coloco 1° na tela de edit. teria uma forma de unificar os 2?

 

Bem, isso não é uma lei kkkk  o correto é você saber qual a variação de tensão que o seu sensor pode entregar. No seu caso, nada mais era do que um divisor resistivo, onde um dos resistores é um LDR, então ficava fácil mudar o valor do resistor para ter uma maior variação de tensão.

 

Para fazer isso nos outros sensores analógicos, antes tem de ver qual é o circuito interno deles !

 

Sobre o ESP8266Basic, eu ainda não brinquei com gráficos.... mas tenho certeza de que você consegue colocar o botão e o gráfico na mesma tela, mas vai ter de usar comandos HTML e CSS de posicionamento .....

 

Talvez mudar de tela , tipo usando duas telas diferentes no seu programa, seja uma solução mais fácil.

 

Paulo

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, _xyko_ disse:

 

@Intrudera6

É isso mesmo que faço. Inclusive os leds Rx e Tx do Arduino mega que estou usando como interface piscam enquanto se faz, ou tenta, fazer o upload.

 

O processo normal estes leds piscam, no meu caso quem pisca é o led azul da placa no ESP8266 (a minha serial não tem isso). E na transferência tem uma barra horizontal que vai crescendo sinalizando a evolução da transferência. Se esta barra não se move tem alguma coisa errada, mas não sei o que pode ser.

Link para o comentário
Compartilhar em outros sites

12 minutos atrás, _xyko_ disse:

Sim, inclusive achando que poderia ser isso, coloquei uma chave SPST pra ficar direto ao GND na gravação e sempre faço um reset antes de iniciar o envio.

Agora estou lendo isto:

https://alselectro.wordpress.com/2015/07/28/esp8266-wifi-firmware-upgrading/

voce lembrou de colocar o pino 0 no gnd? na hora de gavar tem que aterrar o pino 0 senão também não vai nem a pau.

adicionado 1 minuto depois
48 minutos atrás, _xyko_ disse:

@lucianolcoa

Apesar do note ser 64b estou usando a versão 32b. A 64b trava.

 

Então o problema acho que esta ahe, voce ta tentando usar a versão errada do flasher... tenta instalar em outro pc.

 

Pessoal alguem ja conseguiu usar o espbasic com o app inventor? estou em duvidas se o app inventor consegue acionar as strings do esp basic. Isto éh, se ele manda o comando pra acionar via strings ._.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
5 minutos atrás, lucianolcoa disse:

voce lembrou de colocar o pino 0 no gnd? na hora de gavar tem que aterrar o pino 0 senão também não vai nem a pau.

adicionado 1 minuto depois

Então o problema acho que esta ahe, voce ta tentando usar a versão errada do flasher... tenta instalar em outro pc.

Pino 0 seria o GPIO0. correto! É este mesmo que estou  aterrando direto na hora da gravação.

Quanto ao PC, no momento só estou com 1 notebook. Vai ter que ser aqui mesmo.

Link para o comentário
Compartilhar em outros sites

7 minutos atrás, _xyko_ disse:

Pino 0 seria o GPIO0. correto! É este mesmo que estou  aterrando direto na hora da gravação.

Quanto ao PC, no momento só estou com 1 notebook. Vai ter que ser aqui mesmo.

Hehe mals mexi tanto com o arduino que acostumei com a linguagem dele, vai ser difícil viver sem ele x_x

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@lucianolcoa Desconfiado do ATmega16U8 (interface USB/Serial do arduino mega) passei a usar o FT232R do Arduino Duemilanove Conferi tensões e conexões e tá tudo na mesma.

Melhor eu ir almoçar e esfriar a cabeça que já tá saindo uma fumacinha...hehehe.

Qualquer ideia, deixa aqui.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, aphawk disse:

 

Repare que a única diferença entre enviar as duas mensagens é apenas o cabeçalho delas... todo o resto é o mesmo procedimento.

 

Quando eu chamo uma sub-rotina com o GOSUB, ela tem de terminar e retornar via RETURN .

 

A ENVIAON faz o cabeçalho e pula para prosseguir para o RESTO  através de um GOTO

A ENVIAOFF faz o cabeçalho e já roda na sequencia o RESTO. Porisso que não precisei de um GOTO.

Se eu entendi então o gosub chama uma função mas depois retorna de onde parou (no caso após o momento que foi usado o gosub)?

 Nesse seu programa, ao chamar o função ENVIAON ele formata o cabeçalho e desvia para RESTO certo? pois o comando GOTO "chamou" o RESTO..  Mas e quando é chamado o ENVIAOFF, ele formata tambem o cabeçalho, mas nao tem um comando para chamar a função RESTO? como ele é chamada, ou por nao ter o comando wait após ela, ela segue curso do programa?

 

E porque o comando return no final de RESTO (seria para não entrar na função SAIDA?) pois seria o mesmo principio que expliquei acima, do "curso" do programa.

 

A instrução GOTO é apenas uma maneira de transferir a execução para um outro trecho de programa. Não precisa voltar para ela depois.

Já a GOSUB manda executar uma sub-rotina, e quando essa sub-rotina termina, retorna a execução para a próxima instrução após o GOSUB.

Entendi esse comando.

 

O truque no ESP8266BASIC é que tudo sempre chega em um comando WAIT, reparou?

 

No caso desse programa, quando o timer estoura o tempo programado, ele  vai rodar o programa. E quando o programa termina de fazer o que tinha de fazer, ele termina em um WAIT. (pra ficar esperando algum botão do browser, estouro do timer, ou alguma interrupção

 

Quando tem um comando WAIT, o ESP8266 só responde a algum botão na tela WEB, a uma interrupção, ou ao tempo programado no comando TIMER.

 

Não existe nenhum loop infinito aí no programa.... saquei

 

Esse tipo de funcionamento do ESP8266 é bem interessante, ele é movido a eventos !

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, _xyko_ disse:

Pino 0 seria o GPIO0. correto! É este mesmo que estou  aterrando direto na hora da gravação.

Quanto ao PC, no momento só estou com 1 notebook. Vai ter que ser aqui mesmo.

 

Agora eu não sei mais o que pode estar acontecendo (???????????), só talvez o @aphawk possa te ajudar nesse caso, isto se ele souber o que pode ser.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, rodrigocirilo disse:

Se eu entendi então o gosub chama uma função mas depois retorna de onde parou (no caso após o momento que foi usado o gosub)?

 Nesse seu programa, ao chamar o função ENVIAON ele formata o cabeçalho e desvia para RESTO certo? pois o comando GOTO "chamou" o RESTO..  Mas e quando é chamado o ENVIAOFF, ele formata tambem o cabeçalho, mas nao tem um comando para chamar a função RESTO? como ele é chamada, ou por nao ter o comando wait após ela, ela segue curso do programa?

 

E porque o comando return no final de RESTO (seria para não entrar na função SAIDA?) pois seria o mesmo principio que expliquei acima, do "curso" do programa.

 

 

Cuidado com a interpretação !

 

O comando GOTO não "chama" nada, ele apenas desvia a execução para outro lugar ! E esse outro "lugar"  não tem de voltar para a próxima instrução após o GOTO ! 

 

O comando GOSUB sim, ele "chama" um trecho de programa que ao terminar retorna a execução para a próxima instrução após o GOSUB, entendeu ?

 

Repare que [RESTO]  é apenas um label. Ele serve apenas com uma referência de endereço para que alguma instrução GOTO [RESTO] consiga transferir a execução do programa para ele.

 

Se voce reparar, a SUBROTINA [ENVIAOFF] formata o cabeçalho, e a próxima instrução a ser executada é justamente a que vem logo após o label [RESTO] , pois não houve nenhuma instrução GOTO que impedisse isso !

 

Repare nisto :  não importa se eu chame GOSUB [ENVIAON]  ou GOSUB [ENVIAOFF] .... ambas tem de executar o trecho de programa que segue após o label [RESTO] !

 

Portanto, ao final dessa execução, que é o envio do email, existe o comando RETURN, que faz a execução voltar para a próxima instrução após a chamada do GOSUB. E é logo aí nesse trecho que vai terminar com um WAIT , que fica esperando um novo estouro do TIMER, ou alguém clicar no botão de FIM de programa.

 

Qualquer linguagem BASIC funciona igual nesse aspecto de GOTO e GOSUB .

 

 

 

adicionado 12 minutos depois

@_xyko_ ,

 

Calma que não é nenhum bicho de sete cabeças ....

 

Eu também tive problemas com esse programa, então mudei para um outro muito mais confiável....

 

FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar.

 

http://bbs.espressif.com/viewtopic.php?f=57&t=433

 

Baixe o segundo link, que é para windows.

 

 

Veja aqui como configurar :

 

http://www.allaboutcircuits.com/projects/update-the-firmware-in-your-esp8266-wi-fi-module/

 

A unica coisa que eu faço de diferente é que eu mudo o SPI mode para DIO emves de QIO . É um pouco mais lento, mas depois disso nunca mais tive algum erro de gravação ....

 

Como curiosidade, eu também sempre tive problemas em gravar os firmwares.... mesmo no Nodemcu  eu gravo o firmware do ESP8266Basic com esse programa, e sempre dá certinho.

 

Quando eu uso o programa do autor do ESP8266Basic , quase nunca dá certo a gravação, parece que alguns trechos ficam errados...

 

Paulo

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, aphawk disse:

 

Cuidado com a interpretação !

 

O comando GOTO não "chama" nada, ele apenas desvia a execução para outro lugar ! E esse outro "lugar"  não tem de voltar para a próxima instrução após o GOTO ! 

 

O comando GOSUB sim, ele "chama" um trecho de programa que ao terminar retorna a execução para a próxima instrução após o GOSUB, entendeu ?

 

Repare que [RESTO]  é apenas um label. Ele serve apenas com uma referência de endereço para que alguma instrução GOTO [RESTO] consiga transferir a execução do programa para ele.

 

Se voce reparar, a SUBROTINA [ENVIAOFF] formata o cabeçalho, e a próxima instrução a ser executada é justamente a que vem logo após o label [RESTO] , pois não houve nenhuma instrução GOTO que impedisse isso !

 

Repare nisto :  não importa se eu chame GOSUB [ENVIAON]  ou GOSUB [ENVIAOFF] .... ambas tem de executar o trecho de programa que segue após o label [RESTO] !

 

Portanto, ao final dessa execução, que é o envio do email, existe o comando RETURN, que faz a execução voltar para a próxima instrução após a chamada do GOSUB. E é logo aí nesse trecho que vai terminar com um WAIT , que fica esperando um novo estouro do TIMER, ou alguém clicar no botão de FIM de programa.

 

Qualquer linguagem BASIC funciona igual nesse aspecto de GOTO e GOSUB .

 

Paulo

 

Ok, vamos lá, eu havia entendido o sentido de GOTO, mas me expressei mal em dizer que "chamaria algo", sendo que na verdade ele desvia para o ponto que você indicar (está parte está ok)  Eu ja usei esse comando no compilador CCS hehe..

 

Então quando usar o GOSUB e ai sim chamar uma sub-rotina, ao final dessa sub-rotina devo colocar o return para voltar do ponto logo após o GOSUB?

 

Então [RESTO] é uma label que servirá de endereço certo? é porque [ENVIAON] e [ENVIAOFF]  são sub-rotina e não label, sendo que estão entre coxetes igual RESTO?

 

Paulo, para eu procurar video aulas sobre esse ESP8266basic, devo procurar por basic somente, ja me servirá? pois preciso ver alguns exemplos de como começar na linguagem, para entender como funciona os comandos basicos pelo menos.

Link para o comentário
Compartilhar em outros sites

42 minutos atrás, Intrudera6 disse:

 

Agora eu não sei mais o que pode estar acontecendo (???????????), só talvez o @aphawk possa te ajudar nesse caso, isto se ele souber o que pode ser.

O pc dele é versao 64 bits e ele ta usando como 32, tenho quase CERTEZA que a falha está ahe. Ou ele usa 32 ou 64.

Link para o comentário
Compartilhar em outros sites

@rodrigocirilo ,

 

Poxa, tem muita coisa no próprio site, veja aqui :

 

Exemplos de uso  ( recomendo ver todos ! )

 

https://www.esp8266basic.com/examples.html

 

Exemplos de programas :

 

http://www.esp8266.com/viewforum.php?f=40

 

 

Um tutorial para os novatos :

 

http://www.esp8266.com/viewtopic.php?f=40&t=6732

 

O Fórum tem muita coisa ...

 

 

adicionado 7 minutos depois
16 minutos atrás, rodrigocirilo disse:

Então quando usar o GOSUB e ai sim chamar uma sub-rotina, ao final dessa sub-rotina devo colocar o return para voltar do ponto logo após o GOSUB?

 

Então [RESTO] é uma label que servirá de endereço certo? é porque [ENVIAON] e [ENVIAOFF]  são sub-rotina e não label, sendo que estão entre coxetes igual RESTO?

 

Sim, isso mesmo, o Return devolve ao ponto logo após o GOSUB.

 

Tudo o que estiver entre [] é um label apenas.

 

Se você usar um GOSUB para ele, então esse trecho de programa tem obrigatoriamente de ser terminado por um RETURN, e será uma sub-rotina !

 

Se voce usar um GOTO para ele, então ele é um trecho normal de programa para onde você transferiu a execução.

 

Repare que o comando TIMER também precisa que você indique um label para onde ele transfere a execução do programa quando o tempo estoura. 

 

O mesmo com o comando BUTTON, onde você informa o label para onde tem de transferir a execução do programa quando alguém clica no botão na tela Web.

 

Paulo

 

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

5 minutos atrás, aphawk disse:

@rodrigocirilo ,

 

Poxa, tem muita coisa no próprio site, veja aqui :

 

Exemplos de uso  ( recomendo ver todos ! )

 

https://www.esp8266basic.com/examples.html

 

Exemplos de programas :

 

http://www.esp8266.com/viewforum.php?f=40

 

 

Um tutorial para os novatos :

 

http://www.esp8266.com/viewtopic.php?f=40&t=6732

 

O Fórum tem muita coisa ...

 

Paulo

Eu ja dei uma olhada nos exemplos dentre outras coias do site e e forum.. Mas o que realmente preciso é de um tutorial de programação em basic para entender a essência da linguagem e depois pode aplicar no esp8266basic.

 

Pesquisei no youtube e achei uma pequena video aula de programação basic a pessoa usa o Qbasic do DOS que acho, ele explica o funcionamento do CLS, print, printS (imprimir uma string) etc...  nao sei se aplica ao esp8266basic mas achei parecido o comando cls e print hehe.. 

adicionado 1 minuto depois

Meu nodemcu chega hoje, amanha coloco em pratica esses exemplos todos hehe

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

  • Membro VIP
17 minutos atrás, lucianolcoa disse:

O pc dele é versao 64 bits e ele ta usando como 32, tenho quase CERTEZA que a falha está ahe. Ou ele usa 32 ou 64.

Isso não é problema, senão nem rodaria o ESPlorer. Tudo (penso) que roda no x86 roda no 64bits, só n~so pode o inverso.

@aphawk

Parece que com o FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar

foi em alguns segundos. Agora vou tentar gravar algum "hello" pra ver se funciona. Informo resultado.

 

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

@rodrigocirilo ,

 

kkkkkk na verdade a estrutura geral do Basic é a mesma. Bascom, Runbasic, Qbasic, GWBasic, MikroBasic, Great Cow Basic .....  tudo segue os mesmo princípios do velho Basic.

 

Só que o ESP8266Basic tem comandos muito específicos para usar na Web e também com alguns hardwares.  Ah, e inova muito com esse conceito da instrução WAIT.

 

Semelhantemente, o Bascom  tem muito comando específico para usar o recursos dos microcontroladores AVR.

 

Mas é o velho Basic por trás de todos eles ...

 

Paulo

 

 

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

@rodrigocirilo ,

 

Na verdade estou guardando apenas os meus  programas dentro dele. Ainda não precisei guardar e recarregar nenhum valor em meus programas. Mas existem as funções para isso :

 

READ():

The read command allows you to retrieve information persistently stored in the flash memory of the ESP8266 module. This will return a string.

Bla = read({item name})

 

READ.VAL():

The read command allows you to retrieve information persistently stored in the flash memory of the ESP8266 module. Will return a numeric value.

Bla = read.val({item name})

WRITE():

 

The write command allows you to persistently store a data element in flash memory.

write({item name},{data to write})

 

Paulo

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

5 minutos atrás, aphawk disse:

@rodrigocirilo ,

 

Na verdade estou guardando apenas os meus  programas dentro dele. Ainda não precisei guardar e recarregar nenhum valor em meus programas. Mas existem as funções para isso :

 

READ():

The read command allows you to retrieve information persistently stored in the flash memory of the ESP8266 module. This will return a string.

Bla = read({item name})

 

READ.VAL():

The read command allows you to retrieve information persistently stored in the flash memory of the ESP8266 module. Will return a numeric value.

Bla = read.val({item name})

WRITE():

 

The write command allows you to persistently store a data element in flash memory.

write({item name},{data to write})

 

Paulo

Que maravilha, então para guardar devo dar um nome para o item e depois o valor? no caso da programação que uso em C, devo indicar o endereço da memória e logo em seguida o valor (ou variavel). Mas até quantos endereços posso criar (item name)? (qual o limite do hardware) pois em alguns pic que uso posso ir até o endereço 255 somente e com valor de até 255 tambem ( microcontroladores de 8bits) pelo que vi o do ESP12E é de 32 bits então até onde podemos ir nesse quesito?

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!