Ajuda no codigo Esp-01 Pulsar - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T14:20:25Zhttps://labdegaragem.com/forum/topics/ajuda-no-codigo-esp-01-pulsar?feed=yes&xn_auth=noolá.
Embora eu tenha e…tag:labdegaragem.com,2021-02-11:6223006:Comment:8552492021-02-11T18:10:04.300ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Embora eu tenha encontrado o motivo da <em><strong>Alexa</strong></em> não ter encontrado o dispositivo, já a mais de uma semana, somente agora o Eliseu conseguiu um tempo para testar e validar o funcionamento do código, por isso agora estou publicando a resolução.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Duas pequenas distrações causaram isso.…</span></p>
<p></p>
<p><span style="font-size: 12pt;">olá.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Embora eu tenha encontrado o motivo da <em><strong>Alexa</strong></em> não ter encontrado o dispositivo, já a mais de uma semana, somente agora o Eliseu conseguiu um tempo para testar e validar o funcionamento do código, por isso agora estou publicando a resolução.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Duas pequenas distrações causaram isso.</span></p>
<p><span style="font-size: 12pt;"> Uma delas foi que esqueci de abrir e fechar parênteses em parte da sentença lógica no <em>loop</em> "<strong><em>while</em></strong>" na função de <em><strong>conexão WiFi</strong></em>.</span></p>
<p><span style="font-size: 12pt;"> A outra, é que <span>no mesmo <em>loop</em> "<strong><em>while</em></strong>", </span>também esqueci de colocar uma chamada à função "<em><strong>delay</strong></em>" para impedir um "<em><strong>Soft-Reset</strong></em>" do <em><strong>ESP8266</strong></em>. No código original do Eliseu tinha isso, mas acabei esquecendo, então ocorria um <em><strong>Reset automático</strong></em> após cerca de 2 segundos, impedindo o <em><strong>WiFi</strong></em> de conectar. Como há temporização no <em>loop</em> "<em><strong>while</strong></em>", então o "<strong><em>delay</em></strong>" que acrescentei foi de apenas <em><strong>1 mili-segundo</strong></em>, e no ponto onde ficou ele não tem efeito na temporização. <em><span style="text-decoration: underline;">Esclarecendo</span></em>: a <strong><em>função</em></strong> "<em><strong>delay</strong></em>" faz um reset do WDT, impedindo que ocorra um "<em><strong>Soft-Reset</strong></em>".</span></p>
<p></p>
<p><span style="font-size: 12pt;"> A figura a seguir mostra as alterações na função de <em><strong>conexão WiFi</strong></em>, onde marquei em amarelo os ajustes:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/8543924057?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8543924057?profile=RESIZE_710x" width="667" height="617" class="align-center"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Outras pequenas alterações foram feitas, que o Eliseu solicitou.</span></p>
<p><span style="font-size: 12pt;"> O código reajustado, é esse aqui: <a href="https://storage.ning.com/topology/rest/1.0/file/get/8543925864?profile=original" target="_blank" rel="noopener">"<strong><em>Esp-01_Pulsar_Alexa_02a.zip</em></strong>"</a></span></p>
<p><span style="font-size: 12pt;"> Este arquivo "<strong><em>zip</em></strong>" <span>também</span> contém as Bibliotecas necessárias.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Assim, desconsiderar o código que publiquei anteriormente.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Boa! Por nada.
Foquei apenas…tag:labdegaragem.com,2021-02-02:6223006:Comment:8466162021-02-02T01:40:35.501ZJoao Vitorhttps://labdegaragem.com/profile/jvsilvictor
<p>Boa! Por nada.</p>
<p>Foquei apenas na lógica bruta. Tem alguns detalhes que deixei passar. Você pode dar uma melhorada significativa nessa rotina. Por exemplo, corrigir para certificar que sempre finalize com ela apagada.</p>
<p>Dá pra reduzir também as condicionais e quantidade de variáveis utilizadas. :D</p>
<p>Boa! Por nada.</p>
<p>Foquei apenas na lógica bruta. Tem alguns detalhes que deixei passar. Você pode dar uma melhorada significativa nessa rotina. Por exemplo, corrigir para certificar que sempre finalize com ela apagada.</p>
<p>Dá pra reduzir também as condicionais e quantidade de variáveis utilizadas. :D</p> obrigado Joao Vitor pela aten…tag:labdegaragem.com,2021-02-02:6223006:Comment:8465252021-02-02T00:46:55.871ZEliseu Donadonihttps://labdegaragem.com/profile/eliseudonadoni
<p>obrigado <a href="http://labdegaragem.com/forum/topic/listForContributor?user=0jfdpfrzyynlx" class="fn url">Joao Vitor</a> pela atençao, tirei o delay e coloquei millis de certo.</p>
<p>obrigado <a href="http://labdegaragem.com/forum/topic/listForContributor?user=0jfdpfrzyynlx" class="fn url">Joao Vitor</a> pela atençao, tirei o delay e coloquei millis de certo.</p> Boa noite Elcids quanto tempo…tag:labdegaragem.com,2021-02-02:6223006:Comment:8464392021-02-02T00:45:18.664ZEliseu Donadonihttps://labdegaragem.com/profile/eliseudonadoni
<p>Boa noite <span>Elcids quanto tempo hem, passei o codigo no esp8266-01 e coloca a Alexa para procurar Disposito e nao encontra, porque sera nao esta encontrando, com esse outro codigo encontra na primeira tentativa?</span></p>
<p><span>instalei as bibliotecas que vc mencionou.</span></p>
<p>Boa noite <span>Elcids quanto tempo hem, passei o codigo no esp8266-01 e coloca a Alexa para procurar Disposito e nao encontra, porque sera nao esta encontrando, com esse outro codigo encontra na primeira tentativa?</span></p>
<p><span>instalei as bibliotecas que vc mencionou.</span></p> obrigado pela atencao Alexan…tag:labdegaragem.com,2021-02-02:6223006:Comment:8465192021-02-02T00:39:58.410ZEliseu Donadonihttps://labdegaragem.com/profile/eliseudonadoni
<p>obrigado pela atencao <span> </span><a href="http://labdegaragem.com/forum/topic/listForContributor?user=244ddiak9t41l" class="fn url">Alexandre A. M. Nogueira</a> dessa forma deu certo, nao estava aceitando delay mesmo com millis ficou show valeu</p>
<p>obrigado pela atencao <span> </span><a href="http://labdegaragem.com/forum/topic/listForContributor?user=244ddiak9t41l" class="fn url">Alexandre A. M. Nogueira</a> dessa forma deu certo, nao estava aceitando delay mesmo com millis ficou show valeu</p> olá Eliseu.
Lá vamos n…tag:labdegaragem.com,2021-01-31:6223006:Comment:8453352021-01-31T20:22:02.786ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Eliseu.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Lá vamos novamente com suas "<em>home automations</em>".</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Reescrevi o código original que vc postou aqui, de forma a implementar o funcionamento pulsado para controle do <em><strong>Portão</strong></em> via <em><strong>Alexa</strong></em>.</span></p>
<p><span style="font-size: 12pt;"> Usei as mesmas Bibliotecas que vc estava…</span></p>
<p><span style="font-size: 12pt;">olá Eliseu.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Lá vamos novamente com suas "<em>home automations</em>".</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Reescrevi o código original que vc postou aqui, de forma a implementar o funcionamento pulsado para controle do <em><strong>Portão</strong></em> via <em><strong>Alexa</strong></em>.</span></p>
<p><span style="font-size: 12pt;"> Usei as mesmas Bibliotecas que vc estava usando. E reorganizei o código, para tentar manter a coisa a mais técnica possível (e acredite: após a compilação verá que ficou ligeiramente menor em Flash e RAM que o original).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> O código e as LIBs para download, estão no final do post.</span></p>
<p><span style="font-size: 12pt;"> Não se esqueça de alterar o <em><strong>nome</strong></em> da sua <em><strong>rede WiFi</strong></em> e a respectiva <em><strong>senha</strong></em> (está tudo bem fácil de mexer, caso vc deseje alterar outros parâmetros).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> E como não tenho paciência para scripts de boxes em páginas da web, estou colando aqui os prints para visualização do código completo. As quatro figuras a seguir mostram isso:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><strong><em>(clique nas figuras para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/8500469058?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8500469058?profile=RESIZE_710x" width="329" height="889" class="align-center"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/8500471875?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8500471875?profile=RESIZE_710x" width="333" height="532" class="align-center"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/8500474272?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8500474272?profile=RESIZE_710x" width="335" height="533" class="align-center"/></a></span></p>
<p></p>
<p style="text-align: center;"><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/8500475454?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/8500475454?profile=RESIZE_710x" width="342" height="419"/></a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> O código para download é este aqui: <a href="https://storage.ning.com/topology/rest/1.0/file/get/8500464679?profile=original" target="_blank" rel="noopener">"<em><strong>Esp-01_Pulsar_Alexa_01.zip</strong></em>"</a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Bibliotecas necessárias: <a href="https://storage.ning.com/topology/rest/1.0/file/get/8500464893?profile=original" target="_blank" rel="noopener">"<em><strong>FauxmoESP-3.2.0.zip</strong></em>"</a> e <a href="https://storage.ning.com/topology/rest/1.0/file/get/8500465467?profile=original" target="_blank" rel="noopener">"<em><strong>ESPAsyncTCP.zip</strong></em>"</a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Vc tem meu Skype, então qualquer dúvida, fique à vontade para me perguntar por lá.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Já tentou sem usar delay?? ti…tag:labdegaragem.com,2021-01-31:6223006:Comment:8451692021-01-31T17:46:43.578ZAlexandre A. M. Nogueirahttps://labdegaragem.com/profile/AlexandreAMNogueira
<p>Já tentou sem usar delay?? tipo assim.... </p>
<p>[code]<br></br>#include <Arduino.h><br></br>#ifdef ESP32<br></br>#include <WiFi.h><br></br>#define RELAY_PIN_1 0</p>
<p>#else<br></br>#include <ESP8266WiFi.h><br></br>#define RELAY_PIN_1 0</p>
<p>#endif<br></br>#include "fauxmoESP.h"</p>
<p>#define SERIAL_BAUDRATE 115200</p>
<p>#define WIFI_SSID "***********"<br></br>#define WIFI_PASS "***********"</p>
<p>#define LAMP_1 "LED 1"</p>
<p>#define pulso 1000 //tempo do pulso<br></br>unsigned long pulsotempo;…</p>
<p>Já tentou sem usar delay?? tipo assim.... </p>
<p>[code]<br/>#include <Arduino.h><br/>#ifdef ESP32<br/>#include <WiFi.h><br/>#define RELAY_PIN_1 0</p>
<p>#else<br/>#include <ESP8266WiFi.h><br/>#define RELAY_PIN_1 0</p>
<p>#endif<br/>#include "fauxmoESP.h"</p>
<p>#define SERIAL_BAUDRATE 115200</p>
<p>#define WIFI_SSID "***********"<br/>#define WIFI_PASS "***********"</p>
<p>#define LAMP_1 "LED 1"</p>
<p>#define pulso 1000 //tempo do pulso<br/>unsigned long pulsotempo; //Variável que guarda tempo que foi acionado<br/>byte statusrele=0 ; //Indicador status (on/off) do rele</p>
<p>fauxmoESP fauxmo;</p>
<p><br/>// Wi-Fi Conexão<br/>void wifiSetup() {</p>
<p>// Define o como STA<br/> WiFi.mode(WIFI_STA);</p>
<p>// Conecta<br/> Serial.printf("[WIFI] Conectado ao %s ", WIFI_SSID);<br/> WiFi.begin(WIFI_SSID, WIFI_PASS);</p>
<p>// Espera<br/> while (WiFi.status() != WL_CONNECTED) {<br/> Serial.print(".");<br/> delay(100);<br/> }<br/> Serial.println();</p>
<p>// Conectado<br/> Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());<br/>}</p>
<p>void setup() {<br/> // Inicia a Serial<br/> Serial.begin(SERIAL_BAUDRATE);<br/> Serial.println();</p>
<p>// Conexão Wi-Fi<br/> wifiSetup();</p>
<p>// LED<br/> pinMode(RELAY_PIN_1, OUTPUT);<br/> digitalWrite(RELAY_PIN_1, LOW);</p>
<p></p>
<p>// Por padrão, fauxmoESP cria seu próprio servidor web na porta definida<br/> // A porta TCP deve ser 80 para dispositivos gen3 (o padrão é 1901)<br/> // Isso deve ser feito antes da chamada enable()<br/> fauxmo.createServer(true); // não é necessário, este é o valor padrão<br/> fauxmo.setPort(80); // Isso é necessário para dispositivos gen3</p>
<p>// Você deve chamar enable(true) assim que tiver uma conexão WiFi<br/> // Você pode ativar ou desativar a biblioteca a qualquer momento<br/> // Desativá-lo impedirá que os dispositivos sejam descobertos e trocados<br/> fauxmo.enable(true);</p>
<p>// Você pode usar diferentes maneiras de chamar a Alexa para modificar o estado dos dispositivos:<br/> // "Alexa, ligar LED um"</p>
<p>// Adiciona os dispositivos<br/> fauxmo.addDevice(LAMP_1);</p>
<p>fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {<br/> // Retorno de chamada quando um comando da Alexa é recebido.<br/> // Você pode usar device_id ou device_name para escolher o elemento no qual realizar uma ação (relé, LED, ...)<br/> // O state é um booleano (ON / OFF) e value um número de 0 a 255 (se você disser "definir a luz da cozinha para 50%", receberá 128 aqui).</p>
<p>Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value);<br/> if ( (strcmp(device_name, LAMP_1) == 0) ) {<br/> Serial.println("RELAY 1 switched by Alexa");<br/> pulsotempo = millis();<br/> if (state) {<br/> digitalWrite(RELAY_PIN_1, HIGH);<br/> statusrele = 1;<br/> } else {<br/> digitalWrite(RELAY_PIN_1, LOW);<br/> statusrele = 0;<br/> }<br/> }<br/> <br/> });</p>
<p>}</p>
<p>void loop() {<br/> // fauxmoESP usa um servidor TCP assíncrono, mas um servidor UDP sincronizado<br/> // Portanto, temos que pesquisar manualmente os pacotes UDP<br/> fauxmo.handle();</p>
<p>static unsigned long last = millis();<br/> if (millis() - last > 5000) {<br/> last = millis();<br/> Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap());<br/> }<br/> <br/> if (statusrele && millis() - pulsotempo > pulso) {<br/> digitalWrite(RELAY_PIN_1, LOW);<br/> statusrele = 0;<br/> }</p>
<p>}<br/>[/code]</p> Estranho... na teoria, deveri…tag:labdegaragem.com,2021-01-31:6223006:Comment:8450842021-01-31T17:25:12.224ZJoao Vitorhttps://labdegaragem.com/profile/jvsilvictor
<p>Estranho... na teoria, deveria funcionar.<br></br>O uso de delays não costuma ser muito recomendado em algumas situações, apesar de que seu código é bem simples e só tem a função de controlar a lâmpada através do relé.</p>
<p><br></br>Mas, já tentou implementar uma abordagem diferente pra não travar o andamento com delays?</p>
<p></p>
<p>No caso, setando uma variável global cuja função da Alexa vai ser alterar essa variável e no loop, usando millis(), fazer o acionamento do relé sem travar a função…</p>
<p>Estranho... na teoria, deveria funcionar.<br/>O uso de delays não costuma ser muito recomendado em algumas situações, apesar de que seu código é bem simples e só tem a função de controlar a lâmpada através do relé.</p>
<p><br/>Mas, já tentou implementar uma abordagem diferente pra não travar o andamento com delays?</p>
<p></p>
<p>No caso, setando uma variável global cuja função da Alexa vai ser alterar essa variável e no loop, usando millis(), fazer o acionamento do relé sem travar a função do fauxmoESP com delays.</p>
<p></p>
<p><strong>Exemplo simplificado:</strong></p>
<p></p>
<p><em>//VARIÁVEIS GLOBAIS</em><br/><em>bool pisca_lamp = false;</em></p>
<p><em>int contagem = 0;</em></p>
<p><em>bool estado = true;</em></p>
<p><em>#define intervalo = 1000; //delay em milissegundos (1s = 1000ms)</em></p>
<p><em>#define num_piscadas 5;</em></p>
<p></p>
<p><em>void setup()</em></p>
<p><em>{</em></p>
<p><em> //PARTE OMITIDA</em></p>
<p><em> {...}</em></p>
<p></p>
<p><em> //PARTE DA AÇÃO AO RECEBER COMANDO DA ALEXA </em></p>
<p><em> fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value)</em></p>
<p><em> {</em><br/> <em> if ( (strcmp(device_name, LAMP_1) == 0) )</em></p>
<p><em> {</em><br/> <em> Serial.println("RELAY 1 switched by Alexa");</em><br/> <br/> <em> if (state) pisca_lamp = true; //Permitindo a execução de alternar o estado do relé/lâmpada</em></p>
<p><em> else pisca_lamp = false;</em><br/> <em> }</em><br/> <em> });</em></p>
<p></p>
<p><em> //PARTE OMITIDA</em></p>
<p><em> {...}</em></p>
<p><em>}</em></p>
<p></p>
<p><em>void loop()</em></p>
<p><em>{</em></p>
<p><em> //PARTE OMITIDA</em></p>
<p><em> {...}</em></p>
<p></p>
<p><em> //FAZ O ACIONAMENTO DO RELÉ</em></p>
<p><em> if(pisca_lamp) //VARIÁVEL ALTERADA PELA ALEXA</em><br/> <em> {</em><br/> <em> if(millis() - last > intervalo)</em><br/> <em> {</em><br/> <em> if(contagem < num_piscadas)</em><br/> <em> {</em><br/> <em> digitalWrite(RELAY_PIN_1, estado);</em><br/> <em> contagem++;</em><br/> <em> estado = !estado; //Inverte o valor para a próxima execução</em><br/> <em> }</em><br/> <em> else</em><br/> <em> {</em><br/> <em> estado = true; //VOLTA O VALOR PARA O PADRÃO</em><br/> <em> contagem = 0; //ZERA O CONTADOR DE PISCADAS</em><br/> <em> pisca_lamp = false; //"DESABILITA" A ALTERNÂNCIA DO ESTADO DO RELÉ/LAMPADA</em> <br/> <br/> <em> }</em><br/> <em> }</em><br/> <em> }</em></p>
<p><em>}</em><br/><br/><br/>É só um exemplo beeeeem grotesco pra pegar a ideia. Dá pra simplificar e otimizar bastante ainda o código, mas deixei dessa forma pra lógica ficar mais simples.<br/><br/>Dá uma lida e confere, pois fiz direto no corpo da mensagem então pode haver erros de digitação e de indentação.</p>
<p></p>
<p></p>
<p></p>
<p></p> boa tarde Gilmar ja vi este c…tag:labdegaragem.com,2021-01-31:6223006:Comment:8449942021-01-31T16:10:20.340ZEliseu Donadonihttps://labdegaragem.com/profile/eliseudonadoni
<p>boa tarde <a href="http://labdegaragem.com/forum/topic/listForContributor?user=0vj5c6txnrz02" class="fn url">Gilmar</a> ja vi este codigo mais tambem nao da certo </p>
<p>boa tarde <a href="http://labdegaragem.com/forum/topic/listForContributor?user=0vj5c6txnrz02" class="fn url">Gilmar</a> ja vi este codigo mais tambem nao da certo </p> boa tarde Eduardo Henrique Ma…tag:labdegaragem.com,2021-01-31:6223006:Comment:8451552021-01-31T15:58:44.926ZEliseu Donadonihttps://labdegaragem.com/profile/eliseudonadoni
<p>boa tarde <a href="http://labdegaragem.com/forum/topic/listForContributor?user=2dgnrxfnlhuqs" class="fn url">Eduardo Henrique Marcondes</a> ja tentei desta forma, nao funciona, sera que o segredo ta na biblioteca?</p>
<p>boa tarde <a href="http://labdegaragem.com/forum/topic/listForContributor?user=2dgnrxfnlhuqs" class="fn url">Eduardo Henrique Marcondes</a> ja tentei desta forma, nao funciona, sera que o segredo ta na biblioteca?</p>