Ir ao conteúdo

lucianolcoa

Membro Pleno
  • Posts

    481
  • Cadastrado em

  • Última visita

Tudo que lucianolcoa postou

  1. Ja fiz bastante isso, ficar transitando entre os "2" mundos. voce simplesmente faz o upload do codigo no arduino configurado para o nodemcu... Entenda que na ide do arduino, toda vez que o código é upado e gerado um flash pra ele. E não um interpretador como assim e feito com linguagem lua e aparentemente o espbasic.. Pode notar que as "luzinhas azuis" ficam piscando quando o codigo ta sendo gravado, sinal que um firmware ta sendo produzido, por isso que gravar o node na ide do arduino demora ERAS.... ps: Para gravar na ide do arduino mais rápido e com mais CONFIABILIDIDADE recomendo usar o linux, de preferência o UBUNTU... No ruin-dows tem hora que o flash simplesmente não grava por algum motivo absurdo, ja no linux o tempo de gravação em nada deve para o de um simples arduino uno... Viva o linux. ------------------- Alias vocês vão me perdoar mas o espbasic e bastante limitado... Não querendo jogar sal na fogueira mas o node simplesmente parece um arduino com um pino analogico apenas, diferente da linguagem basic que por ser interpretada tem um limite de sensores e códigos, e a pessoa tem que se virar nos 30 entendendo a datasheet que vem em inglês pra fazer fumfar....
  2. Pessoal andei dando uma pesquisada sobre o lance de enviar emails de alerta e fiz uns testes mais expansivos com o arduino. A grande verdade é que ele trava as vezes, o que torna a aplicação não 100% confiável... Num grupo de watts de programadores ao qual faço parte e eles me falaram de uma biblioteca no arduino. Ao qual pode ser implementada também no esp, que reseta o código após algum tempo caso ele entre numa espécie de bug... Mas é como eu falei, pode fumfar como pode não fumfar.... Uma outra solução seria usar servidores de smtp.. So que o reves é o limite diarios de emails para contas gratuitas... Brincando com python desenvolvi um programa, este sim 100% seguro, que envia um email de alerta, podendo ser linkado ao arduino ou node.... Como precisao de um computador posso linka-lo ao raspberry e rodar o script em python se comunicando com node/arduino via serial. Com uma parcela de acerto beirando aos 100%... Tentarei melhorar o script para implementar foto também, meio que para "justificar" o uso do rasp. Pois creio eu que mandar foto por email seria algo que fugisse da capacidade de um node comum... Mas do esp32 quem sabe.... Como aqui não é forum de python fico com receio de postar o código aqui e descumprir as regras...
  3. O bom de voce tentar resolver algo mais difícil. e que o que antes era difícil se torna fácil. Finalmente consegui apagar o maldito led por botao fisico e webserver... No final das contas era até bem simples... Estava colocando a logica do pushbutton dentro do web client...Quando eu deveria colocar fora.... Percebi isso mexendo com o arduino pra não perder o hábito e nossa O arduino c hega a ser gostoso as panes em relação ao ESP, bem mais dificultoso pra consertar... Mas enfim, como muitos me ajudaram aqui disponibilizo o código para o caso de alguem querer fazer o mesmo: #include <ESP8266WiFi.h> const char* ssid = "seu login"; const char* password = "sua senha"; int ledPin = D1; // GPIO13 int teste=D2; int button=D0; boolean status=LOW; String vetor1; String vetor2; WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); pinMode(teste,OUTPUT); digitalWrite(teste,LOW); pinMode(button,INPUT); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { if(digitalRead(button)==LOW){ delay(300); status=!status; } if(status==HIGH){ digitalWrite(ledPin,HIGH); vetor1="apagado"; } if(status==LOW){ digitalWrite(ledPin,LOW); vetor1="aceso"; } // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); //while(!client.available()){ //delay(1); // } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Match the request if (request.indexOf("/quarto=ON") != -1) { status=HIGH; } if (request.indexOf("/quarto=OFF") != -1) { status=LOW; } if (request.indexOf("/corredor=ON") != -1) { digitalWrite(teste, HIGH); vetor2="aceso"; } if (request.indexOf("/corredor=OFF") != -1) { digitalWrite(teste, LOW); vetor2="apagado"; } // Set ledPin according to the request //digitalWrite(ledPin, value); // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<center>"); client.print("Eletronica e utilidades:Automacao residencial "); client.println("<br><br>"); client.println("<a href=\"/quarto=ON\"\"><button>Ligar quarto </button></a>"); client.println("<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />"); client.println("<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>"); client.println("<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />"); client.println(vetor1); client.println("<br><br>"); client.println(vetor2); client.println("<br><br>"); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); } Agora, consegui mandar email pelo ethernet shield usando o smtp do bol mas pelo esp não... X_X o troço ruim que só a *****, mas continuarei tentando....
  4. @ViniciusKruz to apanhando que nem um loco aqui,testei as bibliotecas da adafruit em exemplos do youtube e da erro de compilação. voce ja conseguiu mandar email pelo esp na ide do arduino?Me ajuda nessa por favor brow
  5. @alexandre.mbm sim,foi pelo wine
  6. @ViniciusKruz Realmente tem coisas que so o windows pra resolver. Essa semana instalei o protheus no linux e ele não simula direito(pra colocar o terra no chip e uma sofrencia), sem falar nos clocks que ficam defasados e tal. E olha que desde que o mundo e mundo existe o protheus, mas nunca fizeram uma versão linux pra ele.
  7. @alexandre.mbm Ele evita o arduino desligar toda vez que uma comunicação serial e estabelecida. Na pratica faz o arduino responder mais depressa caso voce o comande por outro programa via serial...(processing,eclipse,xampp,entre outros)
  8. Foi relativamente fácil, fiz o node se comunicar com o arduino via serial... No começo foi froids que o node não respondia, ahe eu pensei em usar a biblioteca software serial e foi batata... O node manda a requisição por arduino via serial e o arduino responde. Ainda da pra melhorar o codigo no arduino,creio que isso diminuira o tempo de 10s.. Não coloquei aqueles parametros if(Serial.available()) e tal mais o capacitor no arduino entre o reset e o terra,acho que é por isso que está "lento", foi so pra testar mesmo. adicionado 4 minutos depois @ViniciusKruz EU tentei programar em LUA utilizando o Esplorer mas a programação nunca segurava,sempre resetava quando desligava do pc,então eu desliguei.
  9. SIm voce mostrou mesmo, mas não consegui fazer fumnfar =/ .mas lembro do aphawk falar que programar pelo site é um interpretador lahhh bem a tempo atras, por isso que desisti. Pois voce faz a requisição ao site e o site transforma isso em código .. Por isso que acho eu, que usar o app inventor com o site espbasic não da certo. adicionado 9 minutos depois Pessoal, sobre o meu problema do pushbutton, consegui resolver. COloquei um node pra controlar um arduino via serial e o arduino recebe também comandos de buttons. Dessa seja por botões fisicos ou virtuais ele faz as devidas atualizações das lampadas e ainda atualiza seu status. Fiz o noode se comunicar com o arduino via serial e mais que isso, fiz aparecer as informações seriais na tela do browser junto com os buttons de acionamento. Ficou mais lento o tempo entre clicar o botao e acionar(uns 10 segundos). Mas consegui o que queria... vocês poderiam me perguntar?Por que voce não juntou os códigos com javascript como o Vinicius sugeriu?SIm, eu poderia ter feito isso, so que na minha casa a net é uma porcaria, tem hora que funciona tem hora que não. Além da praticidade de ter um botao fisico que, muitas vezes quebra um galho enorme além do virtual. tornou o meu projeto uma pexinxa, e ainda me abriu portas para leituras de sensores, deixando o grosso pro arduino e o esp para catar e tratar os dados via porta serial. Uma combinação muito boa!.
  10. @ViniciusKruz Precisava do metodo get mesmo pois com ele consigo usar o app inventor.
  11. @ViniciusKruz Eu tentei aqui e não consegui, então novamente venho recorrer aos seus conhecimentos. Minha ideia e linkar os buttons do site com uma switch fisica, sempre atualizando no site seja acionando os botões fisicos ou virtuais, pois eu implementei a automaçao e pela praticidade senti necessidade de um botao fisico também. Ate consegui usar os buttons, como voce mencionou, mas quando eu adiciono o wifi por algum motivo buga... Vou postar o código que estou testando mais uma súplica... Me ajude por favor #include <ESP8266WiFi.h> const char* ssid = "xxxxxx"; const char* password = "yyyyy"; int ledPin = D1; // GPIO13 int teste=D2; int botao1=D0; int botao2=D4; int valor1=0; int valor2=0; String vetor1; String vetor2; WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); pinMode(teste,OUTPUT); digitalWrite(teste,LOW); pinMode(botao1,INPUT); pinMode(bota2,INPUT); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Match the request if (request.indexOf("/quarto=ON") != -1) { valor1=1; } if (request.indexOf("/quarto=OFF") != -1) { valor1=2; } if (request.indexOf("/corredor=ON") != -1) { valor2=1; } if (request.indexOf("/corredor=OFF") != -1) { valor2=2; } if(digitalRead(botao1)==LOW){ valor1=valor1+1; } if(digitalRead(botao2)==LOW){ valor2=valor2+1; } if(valor1>=3){ valor1=1; } if(valor2>=3){ valor2=1; } switch (valor1){ case 1:digitalWrite(ledPin, HIGH); vetor1="aceso"; break; case 2:digitalWrite(ledPin, HIGH); vetor1="apagado"; break; } switch(valor2){ case 1:digitalWrite(teste, HIGH); vetor2="aceso"; break; case 2:digitalWrite(teste, LOW); vetor2="apagado"; break; } // Set ledPin according to the request //digitalWrite(ledPin, value); // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<center>"); client.print("Eletronica e utilidades:Automacao residencial "); client.println("<br><br>"); client.println("<a href=\"/quarto=ON\"\"><button>Ligar quarto </button></a>"); client.println("<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />"); client.println("<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>"); client.println("<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />"); client.println(vetor1); client.println("<br><br>"); client.println(vetor2); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); }
  12. @ViniciusKruz Vinicius,perdoe a minha zanga. Mas voce me resolveu uma jogo de xadrez deveras complicado. Agora entendi que voce estava certo e.. eu tambem,rs... Realmente a programação funciona do jeito conforme voce mencionou e eu ja havia programado assim, ate mesmo chegeui a programar um arduino jogado que tinha para confirmar... Mas voce soltou a resposta chave desse problema. Não é todo pino que aceita INPUT. E se voce programar um pino que aceita input com um pino que não aceita, o código não funciona. Bem até agora sei de um pino que aecita INPUT, vou procurar os demais e conforme vou achando alerto o povo aqui. Novamente valeu^ Cumprindo minha promessa, achei 2 pinos "inputaveis" o D0 e o D4, e como precisava apenas de 2,parei por aqui. Novamente valeu, problema resolvido.Me corrigindo,achei apenas o D4, o D0 o vinicius que falou pra mim.
  13. @ViniciusKruz gpio 16 seria qual pino? o d0?
  14. @ViniciusKruz HUM, tentei acionar o d7 e o d8 pelos pinos, nao logrei o minimo exito... Esse código eu tirei de um site americano e por incrivel que pareça fumfou. Mas me diz amigo, sei que voce ja fez muito por mim e estou ate te explorando demais, mas por favor voce saberia em quais pinos o input funciona? pra eu poder testar?
  15. Ahe que mora o meu problema. NO arduino isso funciona, so que no NOde não, achei um código doido na internet que ate funciona, mas to tentando implementar ele com acionamentos pelo wifi... olha o codigo que eu achei e note a diferença do jeito "tradicional" const int buttonPin = D7; const int ledPin = D2; void setup() { pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(buttonPin) == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); pinMode(buttonPin, OUTPUT); digitalWrite(buttonPin, HIGH); pinMode(buttonPin, INPUT); } } Eu joguei a toalha, vou fazer uma gambiarra partilhando os acionamentos com o meu bom e velho de guerra arduino uno, numa versão standalone da placa. Vai funcionar do jeito que eu quero e ira resolver de uma vez por todas esse problema.
  16. Nao eu queria tipo apertar um botao qualquer e apagar a luz, o INPUT desse bixo e esquisito, nao segue a mesma logica do arduino, nem do bascom
  17. @ViniciusKruz valeu, me ajudou bastante. Uma ultima duvida, voce sabe como usar botao no nodemcu pela IDE do arduino? to tentando que nem um condenado implementar mas n funciona.
  18. @alexandre.mbm Eis o link do anuncio http://produto.mercadolivre.com.br/MLB-770537536-nodemcu-v3-base-cabo-usb-_JM @ViniciusKruz Claro posto sim, eis aqui: ----------------- #include <ESP8266WiFi.h> const char* ssid = "xxxxxx"; const char* password = "yyyyy"; int ledPin = 5; // GPIO13 int teste=4; String vetor1; String vetor2; WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); pinMode(teste,OUTPUT); digitalWrite(teste,LOW); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Match the request if (request.indexOf("/quarto=ON") != -1) { digitalWrite(ledPin, HIGH); vetor1="aceso"; } if (request.indexOf("/quarto=OFF") != -1) { digitalWrite(ledPin, LOW); vetor1="apagado"; } if (request.indexOf("/corredor=ON") != -1) { digitalWrite(teste, HIGH); vetor2="aceso"; } if (request.indexOf("/corredor=OFF") != -1) { digitalWrite(teste, LOW); vetor2="apagado"; } // Set ledPin according to the request //digitalWrite(ledPin, value); // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<center>"); client.print("Eletronica e utilidades:Automacao residencial "); client.println("<br><br>"); client.println("<a href=\"/quarto=ON\"\"><button>Ligar quarto </button></a>"); client.println("<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />"); client.println("<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>"); client.println("<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />"); client.println(vetor1); client.println("<br><br>"); client.println(vetor2); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); }
  19. @alexandre.mbm @ViniciusKruz Por enquanto automatizei apenas 2 comandos, que e acender o quarto e o corredor, o resto da casa não dá pois a fiação não passa ali... Aqui em casa NODEMCU trava se ficar dando varios comandos, liga um,desliga outro, etc. Programando pelo site não tinha esse problema, mas pela IDE do arduino aparentemente tem.... Comprei uma shield também que alimenta o NODE por fonte, dispensando o uso do cabo usb, oferecendo mais segurança ao aparelho.
  20. Bom dia amigos, acabei de achar um padrão nos bugs do nodemcu programado na ide do arduino. Se eu ficar "!Punhetando" os comandos ele trava, o padrão que eu percebi e uns 5 acionamentos por minuto. O que me daria em faixa de um acionamento a cada 20segundos. Nessas condições, fiquei feliz com meu node na IDE do arduino, pois graças a isso posso usar com liberdade o app inventor.
  21. @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?
  22. @aphawk Estranho que para mim o espbasic e muito mais eficiente que programar na ide do arduino, tem nem comparação. Não engasga, a conexao não cai uma vez sequer...
  23. 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.
  24. @rodrigocirilo Ja programo no espbasic, a IDE do arduino so me trouxe experiencias ruins, to ansioso para sair o esp32 na ide do arduino. Talvez numa programação estável eu finalmente possa fazer "miseria"
  25. Eu por enquanto vou voltar pra caverna dos 5 picos antigos e treinar para me tornar um cavaleiro de ouro *-* "Sou muito fraco na programação de linguagem pura e vou me arriscar em phyton, pois dizem que ele é perfeito para sistemas linux no geral, fora a acoplagem automática ao raspberry pi"

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!