Ir ao conteúdo

Posts recomendados

Postado
9 horas atrás, rodrigocirilo disse:

 

@aphawk Lembro que falaram aqui sobre o clock do ESP ser de 80mhz.. podendo seta-lo para 160mhz.. O quanto isso faria diferença na velocidade de comunicação com o browser, qual seria a instabilidade e como fazer pelo espbasic?

 

 

Fazem mais de 6 meses que já está rodando a 160 Mhz...

 

Paulo

 

  • Curtir 1
Postado

@lucianolcoa A IDE do arduino não é a mesma que o espbasic certo? muda para o espbasic ai teremos mais gente pra irar duvidas hehehe

 

@aphawk Que bom... mas como setar? melhora na interface com o browser?

 

 

Pergunta geral, porque o espbasic limita o numero de objetos gerados na tela? (objetos são botões textbox, listbox etc..) pelo que vi limata a 17 objetos..

Postado

Encomendei um ESP32S (KIT) no Aliexpress por 22,77 USD, mas tem muito vendedor que não tem pronta entrega. A curiosidade é muita para eu esperar mais tempo. E não teve nenhum desconto no black friday para os ESP32.

 

Agora quando chegar, acho que vai demorar bastante, vou ver como é que vai ser para programá-lo.

  • Curtir 1
Postado

Pessoal finalmente eu achei um metodo de programar o esp32 na ide do arduino, de tanto pesquisar achei um tuto bem interessante. Aqui mastigo pra vocês:

 

Entrem nesse link e faça o download das coisas:

https://github.com/espressif/arduino-esp32

 

E depois no icone da sua IDE arduino,clique com o direito e va em abrir local do arquivo. lá abra a pasta hardware, crie uma past chamada espressif e dentro dessa pasta voce coloca a pasta que voce baixou ja descompactada. Eu fiz isso e pelo menos na minha IDE apareceu a opção de programar no ESP32. Só falta alguem testar pra dizer se fumfa.

  • Curtir 4
Postado
4 horas atrás, rodrigocirilo disse:

 

@aphawk Que bom... mas como setar? melhora na interface com o browser?

 

 

Não é acessível ao usuário. O autor já configurou para só rodar a 160 Mhz.

 

A lentidão que a gente percebe é por causa de ser um INTERPRETADOR , não um COMPILADOR, e também de usar trocentas bibliotecas prontas e milhares de linhas de código do Arduino.....

 

Tinha de converçer o Mark Albert do Bascom para ele fazer um compilador para o ESP8266 e afins.... 

 

Paulo

  • Curtir 1
  • Membro VIP
Postado

@lucianolcoa , ele estava se referindo ao programa em funcionamento. Se feito na Arduino IDE, seu programa será executado na linguagem de máquina do microcontrolador. Se feito no Espbasic, seu programa será interpretado. Somente o interpretador estará em linguagem de máquina, traduzindo em tempo de execução o que você programou. Isso é muito mais lento. Linguagens interpretadas vs. linguagens compiladas.

Postado

@alexandre.mbm Agora me veio a luz uma teoria, talvez o que esteja fazendo o meu node engasgar seja justamente a velocidade. Deve ta tão rápido que o provedor não deve ta "lendo" e ahe engasga. Se minha teoria estiver correta, teria alguma forma de atrasar a requisição pelo esp?

Postado

@lucianolcoa ,

 

Não é nesse sentido....

 

Por exemplo, quando você carrega um programa na IDE do Espbasic, demoram alguns segundos até ficar pronto para rodar .

 

Depois, quando você faz o RUN, demora para o interpretador deixar tudo pronto para executar.

 

Comandos que acessam sites externos e necessitam filtrar dados demoram vários segundos ....

 

Transferências wifi também são lentas...

 

Paulo

  • Membro VIP
Postado

@lucianolcoa , não entendo o que você está perguntando.

 

Quanto ao que falei, vou dar um exemplo analógico. Imagine um programa "Hello World". Ele deve imprimir essa famigerada frase. Ficticiamente, temos ele em algumas linguagens:

 

1) Linguagem de máquina

000001111000011001000000110000000000000000000011111000

2) Linguagem compilada

print "Hello world"

3) Linguagem interpretada

print "Hello world"

São três linguagens fictícias, para o que quero lhe explicar. Observe que a sintaxe das linguagens 2 e 3 são idênticas, para o comando em questão.

 

Acontece o seguinte.

 

Fora do seu ambiente de execução, ou seja, fora do microcontrolador, em seu desktop de desenvolvimento, um compilador transforma o código de 2 no código de 1. Essa peça de software fica pronta para ser gravada no microcontrolador e ser executado diretamente pelo hardware.

 

Enquanto que o interpretador funciona em seu ambiente de execução, dentro do microcontrolador, transformando o código de 3 no código de 1, e às vezes valendo-se de estágios de tradução intermediária.

 

Interpretação requer mais ciclos de processamento e mais memória. O código humano é traduzido em tempo de execução para o que o hardware de fato vai entender.

 

Na Internet, há quem afirme o seguinte:

 

Citação

Um código na linguagem Assembly não é compilado. Tem que ser interpretado pelo Assembler em código de máquina e linkado para ser executado.

 

Eu chamaria a coisa de "compilação".  Mas o importante é saber que trata-se de "traduções". Com certeza a linguagem Assembly está bem próxima da linguagem de máquina.

  • Curtir 1
Postado

Um interpretador perde muito tempo procurando informações, e só quando ele sabe de todo o contexto é que ele pode começar a traduzir cada um dos comandos.

 

E o programa interpretador ocupa muita memória disponível e muito tempo de processamento.

 

Por exemplo, um ESP-01 tem se não me engano 63K de memória RAM.  Mas o interpretador ESP8266Basic ocupa quase toda essa memória, deixando livre apenas cerca de 14 K para rodar o programa.

 

Alguns comandos, dependendo do contexto em que ele será usado, pode consumir mais de 2K de RAM só para poder ser executado, o que acaba limitando bastante o que podemos executar.

 

Já um programa compilado não perde nenhum tempo, ele é apenas a sequência de comandos já traduzidos na linguagem do microcontrolador que estiver executando, então passa  a ser dezenas ou até centenas de vezes mais rápido ! E sem desperdício de RAM ....

 

Paulo

  • Curtir 2
Postado

@alexandre.mbm gostei da sua explicação!

 

O meu "sisteminha de teste" no próprio Arduino (esperando meus ESP chegarem =/) usa 85% de variáveis globais! aUHauAHauhAUa

 

Já tentei de vários modos diminuir, mais não consegui! Uso CSS e JS hospedado, e percebi que isso usa muito as variáveis globais dele.

 

Tem algum jeito de diminuir isso?

Postado

O meu programa de calibração semiautomática está funcionando, mas ainda continua em testes. Testei ele ontem e obtive 0,100420 seg de desvio para mais entre o DS3231 e o Servidor NTP com 5 dias e 22 horas (428191 segundos) de intervalo (pouco mais de 0,23ppm adiantando), a rotina de cálculo de Registro de Deriva Térmica calculou como previsto, e agora o meu DS3231 está com o seu Registro de Deriva em +5 (passou de +4 para +5), vamos ver daqui a 7 dias como é que vai ficar e se melhora a precisão do DS3231.

 

Vou aperfeiçoar ela mais um pouco e ver se consigo dar o feedback pelo browser, e estou pensando em colocar o log de calibração do DS3231 na EEPROM (tem muito espaço), pode ser interessante para avalizar o escorregamento do TCXO do DS3231 com o tempo (esta minha mania de precisão ...).

  • Curtir 2
  • Membro VIP
Postado

@Papibakigrafo , eu não tenho experiência para lhe responder. Posso mencionar que existe uma diferença, talvez desprezível no seu caso, entre usar declarações "define" e declarações "const". Segundo penso que lembro, o "define" distribui pelo código objeto os valores constantes, em tempo de compilação. Isso acabaria custando mais memória não volátil. Usar "const" seria uma preferência por ocupar RAM, para a execução. Na verdade, ainda não entendi os benefícios defendidos por quem estava propondo a segunda estratégia.

 

Como você está fazendo essa "simulação" de ESP em Arduino? Não sabia que era possível.

  • Curtir 1
Postado

@alexandre.mbm Não estou fazendo a simulação, estou usando o arduino mesmo, pois meus ESP (nodeMCU) não chegaram da China. Só mencionei que meu código do arduino está em 85%, e com 87% ele não funciona direito AauhAUAhaUa

É só um código pra acionar 2 relês via internet, mas com CSS e JS (bootstrap) Se permitirem, posso postar o código aqui, pois não é o propósito do tópico!

 

Sobre o define e const, vou dar uma olhada nisso! =)

Postado
1 hora atrás, alexandre.mbm disse:

@Papibakigrafo , eu não tenho experiência para lhe responder. Posso mencionar que existe uma diferença, talvez desprezível no seu caso, entre usar declarações "define" e declarações "const". Segundo penso que lembro, o "define" distribui pelo código objeto os valores constantes, em tempo de compilação. Isso acabaria custando mais memória não volátil. Usar "const" seria uma preferência por ocupar RAM, para a execução. Na verdade, ainda não entendi os benefícios defendidos por quem estava propondo a segunda estratégia.

 

Como você está fazendo essa "simulação" de ESP em Arduino? Não sabia que era possível.

 

Eu testaria, compilaria das duas formas e veria o resultado da Compilação, a IDE do Arduino já te diz logo na compilação o tamanho do arquivo e quanta memória RAM ele usa. Fiquei curioso, talvez eu mesmo faça este teste.

  • Curtir 1
Postado
3 horas atrás, Papibakigrafo disse:

Se permitirem, posso postar o código aqui, pois não é o propósito do tópico!

 

Amigo, tudo o que é relativo ao ESP, é pertinente ao tópico. Pode ficar à vontade para postar suas experiências caso elas sejam de utilidade nos ESPs, não sou moderador, mas creio que não há problema algum, como você já deve ter observado, aqui nós discutimos eletrônica, internet (html, css, js e afins), linguagens de programação, e até mesmo sobre importação e compras no exterior, se formos levar em conta, estas coisas não poderiam ser discutidas aqui, mas esse é o universo dos ESPs, como não falar dessas coisas?

 

3 horas atrás, Papibakigrafo disse:

Sobre o define e const, vou dar uma olhada nisso! =)

Eu já tentei de toda forma reduzir uso de memória nos PICs, e cheguei a conclusão que se você não afetar a RAM, você afetará a ROM, não tem jeito, a solução é maximizar o código o máximo possível e remover tudo o que realmente não for necessário. Geralmente eu não me preocupo com o uso de memória até chegar no limite, depois que não tem mais espaço começo a enxugar tudo.

adicionado 7 minutos depois

@Papibakigrafo  Não vi no seu código, menções do js nem do css, como você fez?

  • Curtir 3
Postado

@ViniciusKruz entendi, que bom! Perguntei pois tem alguns grupos no facebook que até te banem se postar algo "offtopic" ou não específico!

 

O JS está hospedado no meu site. Está no primeiro código, dos relês. Tem CSS e JS do bootstrap e o meu que está hospedado. Eu consegui deixar ele com 76% de uso de memória.

 

Como disse, no segundo código, é para ligar/desligar o ar condicionado. Só que o RAW é gigante, e ocupa muito da memória.

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

estas coisas não poderiam ser discutidas aqui, mas esse é o universo dos ESPs

 

Eu seria a favor de termos vários tópicos, mas os moderadores já declararam ser inviável ficar derivando.

 

1 hora atrás, Papibakigrafo disse:

é para ligar/desligar o ar condicionado. Só que o RAW é gigante, e ocupa muito da memória.

 

Que RAW, uma mensagem de infravermelho?

  • Curtir 2
Postado

Fiz uma telinha de login usando CSS...

é só uma experiência, usei o css embutido, o ideal seria colocar ele hospedado em uma página externa, mas andei pensando, se o usuário, no momento do acesso à página não tiver acesso à internet o estilo não será carregado. Futuramente será necessário carregar esse css na memória SPIFFS do ESP. De qualquer maneira já serve pra ir aprendendo né.

 

O código da página de login:

//login page, also called for disconnect
void handleLogin(){
  String msg;
  if (server.hasHeader("Cookie")){   
    Serial.print("Found cookie: ");
    String cookie = server.header("Cookie");
    Serial.println(cookie);
  }
  if (server.hasArg("DISCONNECT")){
    Serial.println("Disconnection");
    String header = "HTTP/1.1 301 OK\r\nSet-Cookie: ESPSESSIONID=0\r\nLocation: /login\r\nCache-Control: no-cache\r\n\r\n";
    server.sendContent(header);
    return;
  }
  if (server.hasArg("USERNAME") && server.hasArg("PASSWORD")){
    String _user = server.arg("USERNAME");
    String _pwd = server.arg("PASSWORD");
    
    if (_user.equals(user)  &&  _pwd.equals(pwd)){
      String header = "HTTP/1.1 301 OK\r\nSet-Cookie: ESPSESSIONID=1\r\nLocation: /\r\nCache-Control: no-cache\r\n\r\n";
      server.sendContent(header);
      Serial.println("Logado com sucesso");
      return;
    }
  msg = "Login incorreto.";
  Serial.println("Log in Failed");
  }

  String content = "<html>\n";
  content+="<head>\n";
  content+="<meta http-equiv='Content-Type' content='text/html; charset=utf-8'><br>\n";
  
  content+="<style type=\"text/css\">\n";
  
  content+="#login{\n";
  content+="width: 250px;\n";
  content+="height: 250px;\n";
  content+="padding: 8px;\n";
  content+="background-color: #FFCC33;\n";
  //content+="background-image:url(https://1drv.ms/i/s!Av3m0jwp9uhSgWlkL5VnWD4BIrUI);\n";
  content+="font: 11px Verdana, sans-serif;\n";
  content+="color: #993366;\n";
  content+="text-shadow: 0 1px 0 #666;\n";
  content+="box-shadow: inset 0 1px 1px #fff, 0 2px 3px #666;\n";
  //content+="border: 2px solid #0000FF;\n";
  content+="border-radius: 8px;\n";
  //content+="padding-left:10px;\n";
  content+="position:absolute;\n";
  content+="left:50%;\n";
  content+="top:50%;\n";
  content+="margin-left:-125px;\n";
  content+="margin-top:-125px;\n";
  content+="}\n";
  
  content+="input[type=text], input[type=password] {\n";
  content+="width: 100%;\n";
  content+="padding: 12px 20px;\n";
  content+="margin: 8px 0;\n";
  content+="display: inline-block;\n";
  content+="border: 1px solid #ccc;\n";
  content+="border-radius: 4px;\n";
  content+="box-sizing: border-box;\n";
  content+="}\n";
  
  content+="input[type=submit] {\n";
  content+="width: 100%;\n";
  content+="background-color: #4CAF50;\n";
  content+="color: white;\n";
  content+="padding: 14px 20px;\n";
  content+="margin: 8px 0;\n";
  content+="border: none;\n";
  content+="border-radius: 4px;\n";
  content+="cursor: pointer;\n";
  content+="}\n";
  content+="input[type=submit]:hover {\n";
  content+="background-color: #45a049;\n";
  content+="}\n";
  
  content+="</style>\n";

  //content+="<link rel='stylesheet' href='http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'>";
  //content+="<script type='text/javascript' src='http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js'></script>";
  
  
  content+="</head>\n";
  content+="<body> <title>ESP-CSS</title>\n";
  content+="<div id='login' align='center' >\n"; //id='login' 
  content+="<form method='post' name='login' action='/login'><H2 align='center'>ACESSO AO SISTEMA</H2>\n";
  content+="<label for='usuario'>Usuário</label>\n";
  content+="<input type='text' id='usuario' required name='USERNAME' placeholder='Nome do usuário' />\n";
  content+="<label for='senhalogin'>Senha</label>\n";
  content+="<input type='password' id='senhalogin' name='PASSWORD' placeholder='Senha' />\n";
  content+="<input type='submit' value='Entrar'> </form><br>"+ msg +"</div><br>\n";
 
  //content += "<a href='/inline'>Monitor</a>
  content += "</body></html>\n";
  server.send(200, "text/html", content);
}

 

espcss.png

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