Ir ao conteúdo
  • Cadastre-se

ESP8266 - A Pequena Maravilha para Comunicação WIFI


aphawk

Posts recomendados

Link para o comentário
Compartilhar em outros sites

@aphawk

 

Paulo, aí você ta se contradizendo, quando você fala do ESPBasic não se cansa de falar nas maravilhas que as funções de altíssimo nível dele tem, mas quando se trata de outras linguagens você joga o alto nível no lixo e ainda chama o programador de medíocre, peraí, ou é você é favorável ao alto nível ou não é, não tem como ter duas opiniões a respeito. Quando cheguei nesse tópico, eu estava programando em C e me comunicando com o ESP por comandos AT, lembra? então, eu tinha tanto controle sobre o código que inclusive eu estava tratando bit a bit cada dado recebido pela serial do PIC, mas você veio me dizer que eu estava "escovando bytes" e que eu deveria experimentar o Basic que em poucas linhas eu faria um caminhão de coisas... Eu agora estou programando com a linguagem do Arduíno, e te garanto que tenho total controle, tanto é que pode analisar o código que eu postei, mesmo eu sendo iniciante em Arduíno, eu tenho controle até das linhas do html, coisa que no ESPBasic não consegui, era só dar o valor e deixar o resto para o Basic fazer tudo. E agora José?!!! kkkkkkk 

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

@aphawk Paulo, enquanto não chega o meu NodeMCU vou analisando a programação do esp8266basic, bom vou postar um pequeno codigo aqui, retirado do esp8266basic.com  e vou comentar e por gentileza se você puder ver se estou no caminho certo e dar uma analisada.

 

cls  //Will clear the screen and GUI buffer ( então ele limpa a tela antes de qualquer coisa?) e o    
     // que seria o GUI buffer?		
let pinNo = 0  //aqui eu seto o pino do ESP que qquero usar ?
let pinStat = 0  // aqui é o estado inicial do pino 1 high, 0 low ??
print "Pin Number" // como ainda nao consigo testar, aqui ele iria imprimir o estado do pino? ou só o                    //texto antes da caixa de texto de mesmo nome Pin Number = PinNo
textbox pinNo  // aqui pelos exemplos que tem a "tela" ele cria uma caixa de texto para inserir o                    //numero do pino
print "Pin Stat" // idem o anterior 
textbox pinStat  // idem o anterior
button "Set Pin", [SetThePin]  //aqui é pra chamar a função que vai "trabalhar" o pino ?

button "Exit", [TestExit] // função para sair
wait 

[SetThePin] // função para setar o pino
io(po,pinNo,pinStat)  // aqui io (nao sei o que significa) po(seria uma alusão a pin out, configurando 				         //como saida); pinNo o numero do pino que setei no textbox pinNo certo? e                             //pinStat seria o estado que quero no pino? que setei no textbox também?
wait  // Sends all the accumulated gui commands to the browser.  não entendi esse comando?

[TestExit] //função para sair.. ok mas sai de onde, fecha o navegador?
end 

Desculpe se pareço ridículo pedindo ajuda para algo tão simples é que quero entender os detalhes.

 

Att.

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

@ViniciusKruz ,

 

Calma que são duas coisas bem diferentes !!!

 

O que discutí é sobre tratamento de erros !   Embora tenha comandos de altíssimo nível de poder, lembre que eu mesmo já disse que o retorno de erros é fraco, não tem um "retorno" da função indicando se deu certo ou não !!!!

 

São dois assuntos bem diferente, concorda ?

 

Eu uso o Basic sempre que possível, evito o assembler a todo custo !

 

E quando uso esse ESPBASIC8266, uso testando e procurando o porquê algumas vezes não deu certo kkkk !  Mas nunca afirmei que tenho o controle dele, e nem no Bascom eu tenho o controle de todo o processo !

 

E quem te disse que você tem o controle "total" no Arduíno ????????

 

Você faz alguma ideia das bibliotecas que foram incluídas na IDE do Arduíno para ele compilar para o ESP8266 ?  Sabe se o ESP8266 tem quantas interrupções ? Sabe se você consegue ter prioridades de interrupção ?   Sabe se ele tem watchdog por hardware ????  Sabe se ele tem interrupção por mudança de nível nos seus pinos de entrada ? Sabe qual a máxima frequência de PWM que ele pode gerar ? Quantos modos de PWM ele pode trabalhar, e qual a resolução de cada tipo dos PWMs ? Sabe qual a resolução nativa do conversor A/D ?  Sabe quantas referências internas precisas podemos selecionar nele ? 

 

Então, que raio de controle você tem ?????????  Você não tem controle nenhum, meu amigo !

 

Entendeu o que eu quero dizer ? kkkkkkkk

 

Eu também estou programando com linguagem de alto nível, e igual a vocês, não tenho nenhum controle sobre o hardware ! É a mesma situação sua com a IDE do Arduíno !

 

O que posso fazer é esperar que tudo funcione.... e se não funcionar, recorro ao Fórum, e vejo se alguém sabe o motivo !

 

Repare que muita gente desistiu de usar Lua no Nodemcu por causa de problemas desse tipo, coisas que funcionam quando querem, e muitas situações param de funcionar sem nenhum aviso....

 

Eu nunca afirmei que tenho mais controle usando Basic do que usando C !  Eu afirmo que tenho TOTAL CONTROLE usando Assembler, só isso !

 

Agora, eu consegui um baita controle das saídas Web usando CSS , o que me resolveu o problema também no ESP266Basic.

 

Mas não dá para comparar o poder de várias instruções do ESP8266Basic com o que você tem no Arduíno, pois você só tem as funções básicas. Tem de fazer um monte de código para poder fazer o que se faz em algumas instruções do ESP8266Basic. É isso que eu defendo, que um iniciante consegue fazer muita coisa com esse Basic, enquanto que para fazer a mesma coisa em um ambiente de Arduíno ele vai ter de ter um conhecimento bem grande ( só para instalar o suporte ao ESP8266 jé é algo meio avançado ) .

 

O que estamos fazendo aqui é dar opções a quem queira brincar com essa plaquinha, e já temos algumas opções de programação bem interessantes.

 

Ensinar a um iniciante é uma coisa, e programar profissionalmente e criar "produtos" comerciais é outra muito diferente !

 

Aqui, eu sempre digo isto : "Não importa a cor do gato, desde que ele coma os ratos ! " 

 

Mas não concordo com a propagação de métodos de programação, usando Try e catch, como se isso fosse algo maravilhoso ou revolucionário. É só mais um tratamento de erro feito para facilitar programadores que insistem em programar quando deveriam ter outra profissão ! 

 

No caso de programar para o Windows, é um SO que é uma colcha de retalhos desde a década de 90 .... uma colcha de retalhos, com tantos remendos que ninguém pode afirmar que sabe como ele funciona !

 

Num caso como esse, Try e Catch é obrigatório, por causa dos medíocres programadores que contrariam esse SO ao longo de décadas. Só Deus sabe o que pode dar errado em um programa rodando nesse SO....

 

Mas essa conceito aplicado em microcontroladores é totalmente desnecessário !

 

Paulo

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

4 minutos atrás, ViniciusKruz disse:

@lucianolcoa 

 

Já olhou nas configurações do windows se a porta serial está habilitada quando conecta o cabo USB?

 

Por curiosidade, qual ESP Está usando?

O nodeMCU, sim o windows acha a porta , ligada no meu na COM5.Quando eu compilo o código pela ide do arduino funciona que é uma beleza, o problema acho que é a maldita permissão. Pois no apache não consigo ler sensores também. Só que não sei resolver. Se fosse como o linux que bastava dar chmod 777 /pasta do arquivo

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

1 hora atrás, rodrigocirilo disse:

@aphawk Paulo, enquanto não chega o meu NodeMCU vou analisando a programação do esp8266basic, bom vou postar um pequeno codigo aqui, retirado do esp8266basic.com  e vou comentar e por gentileza se você puder ver se estou no caminho certo e dar uma analisada.

 


cls  //Will clear the screen and GUI buffer ( então ele limpa a tela antes de qualquer coisa?) e o    
     // que seria o GUI buffer?		
let pinNo = 0  //aqui eu seto o pino do ESP que qquero usar ?
let pinStat = 0  // aqui é o estado inicial do pino 1 high, 0 low ??
print "Pin Number" // como ainda nao consigo testar, aqui ele iria imprimir o estado do pino? ou só o                    //texto antes da caixa de texto de mesmo nome Pin Number = PinNo
textbox pinNo  // aqui pelos exemplos que tem a "tela" ele cria uma caixa de texto para inserir o                    //numero do pino
print "Pin Stat" // idem o anterior 
textbox pinStat  // idem o anterior
button "Set Pin", [SetThePin]  //aqui é pra chamar a função que vai "trabalhar" o pino ?

button "Exit", [TestExit] // função para sair
wait 

[SetThePin] // função para setar o pino
io(po,pinNo,pinStat)  // aqui io (nao sei o que significa) po(seria uma alusão a pin out, configurando 				         //como saida); pinNo o numero do pino que setei no textbox pinNo certo? e                             //pinStat seria o estado que quero no pino? que setei no textbox também?
wait  // Sends all the accumulated gui commands to the browser.  não entendi esse comando?

[TestExit] //função para sair.. ok mas sai de onde, fecha o navegador?
end 

Desculpe se pareço ridículo pedindo ajuda para algo tão simples é que quero entender os detalhes.

 

Att.

 

Nossa não se assuste com tanta formalidade !

 

a ideia desse Basic é trabalhar por eventos !

 

A instrução de controle de um pino é muito simples : I0(po,pinNo,pinStat)  - Por exemplo, IO(po, 3, 0)  faz com que o pino 3 vire uma saída ( po) , e apresente o valor lógico 0 nele.

 

GUI Buffer é onde as saídas destinadas a uma tela Web ficam armazenadas.  Mas para ela ser apresentada na saída para um browser, tem de existir um evento, entendeu ?

 

Por exemplo, o pressionar de um botão na tela é um evento !

 

o Print é só uma instrução que envia o texto para a saída.

 

O segredo todo de usar isso direito está no comando Wait !

 

Esse comando faz o conteúdo do buffer ser entregue à tela do browser, e coloca o programa em um estado de espera por algum evento.

 

Existe um comando Timer , onde definimos uma determinada função que vai acontecer de tempos em tempos. Então essa função pode processar, preparar a saída, e ao final ela termina também em um Wait, que vai apresentar a tela toda e esperar de novo por um evento, que pode ser um botão na tela que é clicado, uma interrupção de algum pino de entrada, ou um novo evento do Timer.

 

Quando chegar a sua plaquinha você vai entender como isso  funciona, acredite que é muito simples de aprender e de obter resultados práticos !

 

Paulo

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

10 minutos atrás, aphawk disse:

Então, que raio de controle você tem ?????????  Você não tem controle nenhum, meu amigo !

 

Desculpa, devo ter me expressado mal, não sou eu quem tenho controle, eu quis dizer é que a IDE/Linguagem oferece o controle, se eu tenho controle já são outros 500!! Daqui ha uns dois anos se Deus permitir... quem sabe eu entenda alguma coisa né.

 

12 minutos atrás, aphawk disse:

Mas não dá para comparar o poder de várias instruções do ESP8266Basic com o que você tem no Arduíno, pois você só tem as funções básicas. Tem de fazer um monte de código para poder fazer o que se faz em algumas instruções do ESP8266Basic.

 

É indiscutível o poder do ESP8266Basic, realmente é uma ferramenta excepcional e acredito que ainda venha a melhorar muito, o que me chateia nela é o fato de não poder ver as bibliotecas e funções por dentro e isso pra mim é perda de controle. O que adianta eu ter uma função maravilhosa, enviada pelos ETs (kkkk) se quando ela bugar ou precisar de uma moldagem eu não vou poder? E não concordo com essa história de que só temos funções básicas, eu fico impressionado a cada dia mais com o Arduíno e olha que sempre fui relutante com essa IDE.

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

@ViniciusKruz ,

 

Agora sim você entendeu o que eu quis dizer no comentário com o Alexandre !

 

Linguagem de alto nível nunca te dá o controle. é uma ilusão de que as coisas acontecem como queremos !

 

Quanto ao Esp8266Basic, é um trabalho em desenvolvimento ainda. Acredito que em alguns meses vai ficar bem mais maduro. Hoje tem muita coisa que falta para ser uma linguagem para uso comercial. Por isso que é grátis kakakakakakak !

 

O que tem de bom no Arduíno é que com os comandos básicos você acaba fazendo funções muito poderosas. Mas não é para um iniciante isso, concorda ?  Fazer funções como o WGET  ou o JSON do ESP8266Basic não é algo simples, pelo contrário tem de ter muito domínio de tudo o que pode vir de um site .... eu duvido muito que um iniciante consiga algo desse tipo. Mesmo assim, é fantástico aonde o Arduíno nos levou, saímos da idade das cavernas para os tempos modernos em menos de 10 anos ! É revolucionário, claro, pois trouxe os microcontroladores ao alcance de muita gente !

 

Mas temos de aceitar os ET's criadores de bibliotecas, tanto no  Arduino como no ESP8266Basic !

 

Você diz que olha as bibliotecas. E as escritas em Assembler, como você olha elas ?  Melhor ainda, de que adiante olhar essas que fazem as coisas mais "obscuras" com o hardware ? 

 

Não tem jeito, temos de aceitar que essas coisas funcionam, usarmos elas, e tentamos contornar os erros que encontraremos ...

 

Lembre-se de que eu sou um engenheiro, não um programador kkkkk !

 

Paulo

 

 

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

12 minutos atrás, aphawk disse:

Mas não é para um iniciante isso, concorda ?

 

A Linguagem em si mesma, realmente não são para iniciantes, porém, o que abre as portas do Arduíno aos iniciantes(incluindo eu), é o fato de ter muita coisa pronta, e penso que o ESPBasic está seguindo este mesmo caminho, eles perceberam que o caminho das pedras/popularidade é exatamente a facilidade por isto que estão dando tudo relativamente pronto. O Arduíno pode ser facilmente usado por um iniciante, desde que não esbarre em algum erro, se ao compilar, der erro ta enrolado, a não ser pelo tanto de fórum e tutoriais espalhados pra todo lado. Os comandos como Wget do ESP são realmente bons assim como outras funções, mas o que dizer por exemplo das bibliotecas do Arduíno como o ESP8266HTTPClient.h que assim como o Wget está pronta pra ser usada, é só adicionar ela no código e já tem um Cliente HTTP, é só usar as funções, não precisa ser usuário avançado, isso qualquer iniciante pode fazer. E a biblioteca ESP8266WebServer.h que é só chamar e está pronta pra ser usada. O ESP Basic vai dar um salto quando, além de entregar "pronto" (para iniciantes) abrirem o código (para usuários avançados como você Paulo), como faz o Arduíno.

26 minutos atrás, aphawk disse:

Você diz que olha as bibliotecas. E as escritas em Assembler, como você olha elas ?  Melhor ainda, de que adiante olhar essas que fazem as coisas mais "obscuras" com o hardware ? 

 

Eu entendo muito pouco de ASM, porém não me assusto com ela, é só precisar escovar bytes que recorro a ela, de preferência no mínimo possível. Nem sei se as bibliotecas do ASM são fechadas, são?

 

29 minutos atrás, aphawk disse:

Linguagem de alto nível nunca te dá o controle. é uma ilusão de que as coisas acontecem como queremos !

 

Uma coisa é certa: quanto mais baixo o nível, mais controle (ou sensação de), mas acho que o controle, a sensação de "poder" ela não vem com o fato de você realmente "poder fazer literalmente" e sim de você "saber que pode". É como ter uma ferrary que tem 600 cavalos, mas o motorista só usa 80, ele nem precisa dos outros, mas só de saber que tem já dá vantagem, mesmo sem nunca usar, entende o que quero dizer?

 

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

24 minutos atrás, lucianolcoa disse:

O flasher do site esp8266basic, alguem tem ideia de como executar ele no linux?

 

Esqueçam o que postei acabei de achar um tutorial, como não consegui no windows, vou ver se no linux vai

Você não precisa do flasher do ESP8264basic, você pode usar qualquer flasher para o ESP8266, e existem programas desse tipo para Linux. Eu nunca usei o flash do esp8266basic, eu gosto de usar o flasher que vem com o LuaLoader (ferramenta de desenvolvimento para o Modemcu em LUA), ele me atende muito bem, gravo qualquer binário no ESP8266 com ele sem problemas.

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

Pessoal, vamos postar os projetos que vocês tem feito... e por o esp8266 pra funcionar de verdade.. independente da linguagem hehe... 

 

Poderíamos  postar também ideias de IoT... 

 

Seja por hobby  ou pra ganhar uma grana hehe... vamos extrair o maximo do ESP8266.

 

Eu relutei pra encarar o ESP, mas agora quero ir a fundo, nem que esse "fundo" seja acionar um rele do ouro lado do mundo pela internet e obter um retorno no browser. hehe

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

@lucianolcoa

 

Isso é alguma incompatibilidade entre o windows 10 e o flasher, você tentou entrar nas propriedades do executável e marcar ele pra rodar em compatibilidade com o windows 7 por exemplo? Não sei se vai resolver, mas é uma opção que convêm ser testada.

 

adicionado 8 minutos depois

Editado:

 

Pessoal, seguinte, pelo menos pra mim, fazer o caminho inverso(voltar o ESP para o .bin original) foi muito doloroso, tive que sofrer pra caramba pra poder voltar ele ao estado original, tem que entender dos endereços de gravação na memória e isso é uma verdadeira confusão porque cada modelo usa endereços diferentes e a gente fica quase louco de tanto procurar material e sem contar que nem todos os flashers funcionam direito sem travar, fica o aviso para que se resolverem voltar, tem que ficar muito esperto porque não é nada fácil(pra mim não foi).

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

34 minutos atrás, ViniciusKruz disse:

@lucianolcoa

 

Isso é alguma incompatibilidade entre o windows 10 e o flasher, você tentou entrar nas propriedades do executável e marcar ele pra rodar em compatibilidade com o windows 7 por exemplo? Não sei se vai resolver, mas é uma opção que convêm ser testada.

 

adicionado 8 minutos depois

Editado:

 

Pessoal, seguinte, pelo menos pra mim, fazer o caminho inverso(voltar o ESP para o .bin original) foi muito doloroso, tive que sofrer pra caramba pra poder voltar ele ao estado original, tem que entender dos endereços de gravação na memória e isso é uma verdadeira confusão porque cada modelo usa endereços diferentes e a gente fica quase louco de tanto procurar material e sem contar que nem todos os flashers funcionam direito sem travar, fica o aviso para que se resolverem voltar, tem que ficar muito esperto porque não é nada fácil(pra mim não foi).

De fato eu odeio o Windows 10 com todas as minhas forças, piorou absolutamente TUDO!!!!!!! Nem os chips de conversão USB serial funcionam... O ***** do linux e que todo programa pra instalar é de um jeito, não existe um padrão universal que ne o windows. Alias, essa é a unica coisa boa que o windows possui, que de resto....

adicionado 3 minutos depois
47 minutos atrás, Intrudera6 disse:

Você não precisa do flasher do ESP8264basic, você pode usar qualquer flasher para o ESP8266, e existem programas desse tipo para Linux. Eu nunca usei o flash do esp8266basic, eu gosto de usar o flasher que vem com o LuaLoader (ferramenta de desenvolvimento para o Modemcu em LUA), ele me atende muito bem, gravo qualquer binário no ESP8266 com ele sem problemas.

Essa eu não entendi,como usar a programação do espbasic sem instalar o firmware deles disponivel no site??? Tentei ver os foruns mas não entendi muita coisa.

adicionado 6 minutos depois
39 minutos atrás, ViniciusKruz disse:

@lucianolcoa

 

Isso é alguma incompatibilidade entre o windows 10 e o flasher, você tentou entrar nas propriedades do executável e marcar ele pra rodar em compatibilidade com o windows 7 por exemplo? Não sei se vai resolver, mas é uma opção que convêm ser testada.

 

adicionado 8 minutos depois

Editado:

 

Pessoal, seguinte, pelo menos pra mim, fazer o caminho inverso(voltar o ESP para o .bin original) foi muito doloroso, tive que sofrer pra caramba pra poder voltar ele ao estado original, tem que entender dos endereços de gravação na memória e isso é uma verdadeira confusão porque cada modelo usa endereços diferentes e a gente fica quase louco de tanto procurar material e sem contar que nem todos os flashers funcionam direito sem travar, fica o aviso para que se resolverem voltar, tem que ficar muito esperto porque não é nada fácil(pra mim não foi).

E realmente doloroso fazer isso. E mais fácil instalar firmwares de blogs com pogramas suporte, foi o que eu fiz. Brinquei um pouco com o rasp na ide do arduino, quis voltar a programar em lua e baixei um firmware qualquer que o povo alegava ser bom.. usei o flasher pra "instalar" no windows e quando vi que lua pra mim nao ia voltei pra ide do arduino de novo. Mas esse espbasic me chamou a atençao, to querendo testa-lo *.*

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

o meu espbasic eu peguei no arquivo zipado com as várias versões do espbasic (para memória flash de 512, 1MB, 2MB e 4MB) e transferi o arquivo binário com o flasher que vem junto com o LuaLoader, foi muito simples.

 

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

 

Este aqui é o arquivo zipado completo para a versão Alpha 3.0 branch

https://github.com/esp8266/Basic/archive/NewWebSockets.zip

 

 

LuaLoader

https://github.com/GeoNomad/LuaLoader

 

Mais fácil que isto só pescando com bomba.

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

39 minutos atrás, Intrudera6 disse:

o meu espbasic eu peguei no arquivo zipado com as várias versões do espbasic (para memória flash de 512, 1MB, 2MB e 4MB) e transferi o arquivo binário com o flasher que vem junto com o LuaLoader, foi muito simples.

Sim , mas como voce programa nesse site aqui?

https://www.esp8266basic.com/editor-interface.html

tambem quero entrar na brincadeira

E onde voce achou o firmware do espbasic? tem como voce me passar o arquivozip?

Mano quando chegar em casa vou testar suas dicas e a do Vinicius, se conseguirem vocês serão meus idolos. Criarei 2 estatuas gigantes em vossas homenagens.. kkkkkkkkkkkk

Uma ultima duvida intrudera, e pra programar naquele site do espbasic? e so digitar o ip no navegador?

como no exemplo?

http://192.168.4.1/edit

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

@rodrigocirilo ,

 

Eu faço esse programa para você amanhã e posto ele para você ir se habituando.

Aliás, vou postar duas versões, uma delas será usando Iot através do ThingSpeak.

 

E talvez uma terceira versão, aproveitando uma dica que recebe do autor do ESP8266Basic que me chamou muito a atenção ....

 

Só não faço isso hoje porque vou num bar argentino hoje e a coisa vai pegar heheheh !

 

Paulo

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