trei essa página que tem exatamente o que eu quero
http://www.forward.com.au/pfod/ESP8266/GPIOpins/ESP8266_01_pin_magic.html
Lá embaixo no tópico: Another Trick – Driving a Relay and Reading a Push Button using GPIO0 / GPIO2
Lá encontrei essa imagem e o código pra fazer funcionar, porém o código está no formato do arduino e não consegui carregar ele para o esp01, já que creio eu ele não converte para o lua usado no nodemcu, alguém pode me dar um help em como traduzir esse código para lua, ou algum app que envia pro nodemcu assim...
boolean relayOn = false; // true when relay energizedboolean relayJustTurnedON = false; // true when relay just turned on by push buttonboolean wifiTurnRelayON = false; // set true if WiFi connection commands relay ONboolean wifiTurnRelayOFF = false; // set true if WiFi connection commands relay OFFboolean GPIO2wasLOW = false; // set true if last debouced read of GPIO2 as an input was LOW, false if GPIO2 is an output
boolean configMode = false; // not in config mode normallyvoid setup() { pinMode(0, OUTPUT); digitalWrite(0, LOW); // make GPIO0 output low // check GPIO2 input to see if push button pressed connecting it to GPIO0 configMode = (digitalRead(2) == LOW); if (configMode) { // start AP and get ready to serve config web page // leave relay on to indicate in config mode //...... } else { // normal usage // make GPIO0 HIGH to turn off the relay digitalWrite(0, HIGH); // set up GPIO0 / GPIO2 to detect user push button // relay ALWAYS starts in OFF state // NOTE: push button is ALWAYS open here // because if it was pushed then we would be // in config mode and not here pinMode(0, INPUT); pinMode(2, OUTPUT); digitalWrite(2, LOW); //..... } // rest of setup()}
void loop() { // put your main code here, to run repeatedly:
if (!relayOn) { // case i) // check if GPIO0 is being pulled LOW by push button being pressed and GPIO2 Output LOW if (digitalRead(0) == LOW) { // hold relay ON with GPIO0 pinMode(2, INPUT); pinMode(0, OUTPUT); digitalWrite(0, LOW); // make GPIO0 output low // make GPIO2 an input relayJustTurnedON = true; relayOn = true; GPIO2wasLOW = true; } } else { // relay is ON, held by GPIO0 output LOW // case ii) if (relayJustTurnedON) { // look for GPIO2 going high on push button release from turn ON if (digitalRead(2) == HIGH) { relayJustTurnedON = false; GPIO2wasLOW = false; } // else keep looking for push button release } else { // check GPIO2 for LOW then HIGH if (GPIO2wasLOW) { // check for release if (digitalRead(2) == HIGH) { // turn relay off pinMode(0, INPUT); // turns relay off pinMode(2, OUTPUT); // set GPIO2 as Output LOW digitalWrite(2, LOW); relayOn = false; } } else { // not was low check if push button has been pressed if (digitalRead(2) == LOW) { GPIO2wasLOW = true; // hold relay ON with GPIO0 until release of push button } // else loop and keep looking for LOW input } } }
if (wifiTurnRelayON) { pinMode(2, INPUT); pinMode(0, OUTPUT); digitalWrite(0, LOW); wifiTurnRelayON = false; // finished this relayJustTurnedON = false; } if (wifiTurnRelayOFF) { pinMode(0, INPUT); pinMode(2, OUTPUT); digitalWrite(2, LOW); wifiTurnRelayOFF = false; // finished this }
// ... // code for WiFi connection to control relay // should set either wifiTurnRelayOFF or wifiTurnRelayON to true // ...
}
…
Adicionado por Adilio Santos ao 19:02 em 21 março 2016
a eficiente.
Coloco toda noite, mesmo que ainda tenha carga.
Quando ao efeito memoria, ele era uma problema no tempo das baterias de NiCa. e NiMH. As atuais, de Li-Ion não tem isso. Elas apenas desgastam. Depois de 1 ano de uso já não duram mais o mesmo. Normalmente quando estragam estufam. Antes de estufar perdem coisa como metade da capacidade.
Pra mim tem durado mais de 3 anos as baterias. O cel da minha filha era da minha esposa antes. Por incrivel que pareça tem quase 5 anos com a mesma bateria (iphone 5s). Só não dura mais como antes, mas também não tem os mesmos apps de antes, agora está lotado... Sempre com capa, sempre longe do calor, sempre carregado todas as noites.
Só podemos saber se estraga pelo método cientifico: pegar 2 irmãos gêmeos (2 aparelhos do mesmo lote) e um tratar de uma maneira e o outro de outra. Depois fazer um teste de descarga, verificar quanto dura a bateria em determinada condição. Até que seja feito o teste é tudo especulação.
Na minha opinião.
Ref:
http://www.batteryreview.org/rechargeable-batteries.html
…
Adicionado por Eduardo ao 23:41 em 21 dezembro 2018
último valor do LEDlong previousMillis = 0; // último momento que o LED foi atualizadolong interval = 1000; // tempo de transição entre estados (milisegundos) ajuste conforme desejar o tempo das piscadas
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac addressbyte ip[] = { 192, 168, 0, 188 }; // ip in lanbyte gateway[] = { 192, 168, 0, 1 }; // internet access via routerbyte subnet[] = { 255, 255, 255, 0 }; //subnet maskEthernetServer server(80); //server port
String readString;
//////////////////////
void setup(){
pinMode(6, OUTPUT); //pin selected to control //start Ethernet Ethernet.begin(mac, ip, gateway, subnet); server.begin(); //the pin for the servo co //enable serial data print Serial.begin(9600); Serial.println("server LED test 1.0"); // so I can keep track of what is loaded}
void loop(){ // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read();
//read char by char HTTP request if (readString.length() < 100) {
//store characters to string readString += c; //Serial.print(c); }
//if HTTP request has ended if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println();
client.println("<HTML>"); client.println("<HEAD>"); client.println("<meta name='apple-mobile-web-app-capable' content='yes' />"); client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />"); client.println("<link rel='stylesheet' type='text/css' href='http://homeautocss.net84.net/a.css' />"); client.println("<TITLE>Automation</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<H1>Automation</H1>"); client.println("<hr />"); client.println("<br />");
client.println("<a href=\"/?lighton\"\">Botao Liga e Desligaa</a>");
client.println("</BODY>"); client.println("</HTML>");
delay(1); //stopping client client.stop();
///////////////////// control arduino pin if(readString.indexOf("?lighton") >0)//checks for on { if (millis() - previousMillis > interval) { previousMillis = millis(); // lembre-se do último tempo que piscamos o LED // se o LED está apagado, acenda-o e vice-versa. if (value == LOW) value = HIGH; else value = LOW; digitalWrite(6, value); Serial.println("Led Flashing"); } if(readString.indexOf("?lightoff") >0)//checks for off { digitalWrite(6, LOW); // set pin 4 low Serial.println("Led Off"); } } //clearing string for next read readString=""; } } } }}
// resumindo 2 botao
// primeiro liga luz
// segundo ao acionar pisca 1 segundo e volta off…
Adicionado por moises silva ao 10:47 em 29 setembro 2014
izmente, o 32.768kHz cristal típico diapasão não fornece muita precisão em uma ampla faixa de temperatura. Devido à sua natureza parabólico excesso de temperatura ( Figura 1 ), esta exactidão é tipicamente ± 20 ppm,
à temperatura ambiente (+ 25 ° C). Este é o equivalente a ganhar ou a perder 1,7 segundos de tempo de cada dia,
ou 10,34 minutos por ano. Como mostra a Figura 1, a precisão diminui a temperaturas mais altas e baixas extremas. A precisão típica a estas temperaturas é muito pior do que 150ppm, que é o equivalente a perder quase 13,0 segundos de tempo de cada dia, ou mais de 1,3 horas por ano. Figura 1. Temperatura vs. precisão de um 32.768kHz cristal típico diapasão. o desvio de frequência (Af) de um cristal típico a uma frequência específica (F) e a temperatura (T) é: Af / f = K (t - T o ) 2 + F o onde f é a frequência do cristal nominal, k é a curvatura constante, T é a temperatura, T o é a temperatura do volume, e f o é o desvio de frequência, à temperatura ambiente. Uma análise da equação revela apenas três variáveis que controlam a resposta de frequência de cada um dos cristais acima da temperatura. Estas são a constante de curvatura, temperatura rotatividade, e desvio de frequência, à temperatura ambiente. A curvatura constante tem o maior efeito sobre a natureza parabólica do desvio de frequência sobre a temperatura, mas esta constante tem um pequeno desvio. Temperaturas volume de negócios diferentes deslocar a curva de desvio para a esquerda ou desvios de frequência certas, e diferentes à temperatura ambiente mudar a curva para cima ou para baixo.
Traduzido de : https://www.maximintegrated.com/en/app-notes/index.mvp/id/3566
Rui…
Adicionado por mineirin RV ao 16:55 em 4 outubro 2016
zer um celular comunicar comandos assim com outro vc precisa de uma programação em cada um deles.
Vc já escolheu uma linguagem ?
2 celulares podem se comunicar de várias formas.
Ex:
- Por Sockets. Socket é o jeito mais bruto e simples de comunicação. Vc manda um bloco de dados de um IP/Porta para outro IP/Porta. Vide: http://www.inf.pucrs.br/~gustavo/disciplinas/ppd/material/aula-sockets Embora simples para o processo é complexo para quem programa pq vc precisa determinar a função de cada byte.
- Por mensagem, que pode ser SMS, Telegram, etc. Funciona mas é lento e limitado. SMS usa a estrutura da empresa telefonica e o Telegram usa internet. Por Telegram é super simples de implementar com Arduino, raspberry, etc. Com o celular não sei.
- Por um protocolo específico de uma linguagem ou usando bibliotecas. Por ex o App inventor da MIT, que não conheço bem, certamente tem um conjunto de funções para comunicação. Vide http://appinventor.mit.edu/explore/
Enfim, celulares não são o caminho mais usado pelo pessoal aqui para automação, por isso não sei se tera suas respostas aqui, os projetos em geral usam arduino, raspberry, etc.
Mas sabendo com qual linguagem/app vc vai desenvolver pode ser que alguem consiga ajudar.
Se a ideia é que ajudemos a escolher o caminho, fale mais sobre suas necessidades. O que te levou a optar por celular dos dois lados. Do lado do usuário é normal, mas do lado do dispositivo raramente vemos.
…
um SHIELD ethernet.
Pois bem, como muita gente não tem Shield Ethernet, surgio-me uma ideia em que consiste usar DOIS (2) ANDROID.
Um onde vai ter os botoes pra controlar o ON e OFF e as LAbels onde vai ler os valores de Sensores.
O outro telemovel Android vai ser de servidor junto com o arduino e o modulo Bluetooth.
Então segue um exemplo:
Carregamos em um botão LIGAR LED, então o nosso telemovel Android, vai enviar uma SMS invisivel para o SEGUNDO telemovel android, que este vai ler a mensagem vai intrepretar e vai enviar um comando via bluetooth para o MODULO Bluetooth que por sua vez comunica com o arduino e executa a ligação do LED.
Segundo exemplo.
AO iniciarmos a aplicao, ou ao carregar num botão, irá aparecer uma Label com o valor de um sensor (exemplo temperatura) ou seja, ao carregar no botão, o nosso telemovel android mais uma vez envia uma SMS invisivel ao nosso segundo telemovel , este recebe a SMS intrepreta o pedido, o arduino por si comunica novamente com o segundo telemovel que escreve numa LAbel a temperatura , e envia um SMS para o nosso primeiro telemovel onde escreve na Label a temperatura do sensor..
Isto são apenas umas ideias minhas, alguem quer participar? os programas serão feitos em APP INVENTOR.
Pois é mais facil, quem quiser depois programa em eclipse.
Fico a aguardar as vossas sugestoes, e criticas.
…
duíno , o código tive que usar dois e usar detalhes de um no outro não se acha muita coisa a respeito do enc e utilizei a biblioteca do enc28j60 disponibilizada pelo blog do Renato Aloi uns dos caras que estudou muito sobre ENC28J60.
Passei o código para o arduino e funcionou beleza não satisfeito editei novamente o código retirei o html gerado para o navegador e criei um aplicativo android no App Inventor para acionar os leds e fui além criei mais 2 funcionalidades que podem ser usadas futuramente as de cenas e equipamentos.
Utilizei ícones de um site especializado com licença gratuita porém para um projeto mais profissional seria mais viável criar ícones exclusivos.
Sobre a programação no appinventor utilizei blocos (SET) dos ícones seguido de blocos simples (TRUE E FALSE) para esconder e mostrar os ícones apagados e aceso, não sei se foi a forma certa.
Vídeo demonstração :
Gostaria de saber se alguém já programou no app inventor porque tem um erro no nesse aplicativo que não consegui resolver ainda, ao entrar na tela de lampadas e acender qualquer uma ou todas e voltar para tela inicial as lampadas continuam acesas normal como deveria ser, e ao voltar para tela de lampadas elas continuam acesa como deveria ser porém os ícones ficam no seu estado inicial apagadas, como resolver esse problema e deixar os ícones acesos mesmo se sair e voltar essa é uma das minhas dúvidas..
Bom galera é isso espero que gostem ainda tenho muito a aprender mais já é um começo esse pequeno projeto estou aberto a sugestões de melhorias obrigado..…
abrir a controladora e a mesma tem o seguinte chip Wi-Fi [Modelo: HF-LPB100-1]O aplicativo te da 2 opções para controlar a fita, 1 remotamente (via redes móveis ou outras redes) e outra localmente (via próprio Wi-Fi), na hora de configurar a rede local, você conecta a controladora e o celular na mesma rede (acredito que talvez ai seja possível entender o que passa pela controladora)O aplicativo que é usado para controlar ela, é o "Magic Home" (link play store)O chip que tem atrás da controladora é o DS1302ZBom, eu gostaria de controlar isso via Wi-Fi, de preferência mandar um comando para o modem e o modem retransmitir esse comando para a fita (não sei se isso é possivel), nem que no pior dos casos eu reprogramasse o chip da minha controladora (sei que é possível, mas não sei como fazer)
Preciso da ajuda de vocês, preciso de alguém que tenha o conhecimento na área... Essa controladora é para ser usada junto a minha automação, da qual eu uso o app Blynk para controlar ela.…
acteres e testei acendendo alguns led's, e funcionou normalmente. Porem preciso utilizar o atmega fora da placa juntamente conectado com o modulo HC-06.
Preciso utilizar o HC-06 com o atmega fora da placa.Utilizei o Atmega em uma protoboard e testei o efeito blink, e também funcionou normalmente, porem quando eu colocava os 2 capacitores em paralelo com o cristal o circuito não funcionava, então não utilizei eles. Enfim fui testar o HC-06 porem, ele parece não enviar os dados para o Atmega, e só consigo faze-lo funcionar quando utilizo ele na placa do arduino, alguém teria alguma ideia do que pode está acontecendo?
Fico grato desde já, obrigado!
Segue esquema do circuito na protoboard.
Obs(Estou utilizando um cristal de 10MHz)
Resistor de 10K, no reset.
…