olá por favor, estou com dificuldades no esp8266, to tomando um baile dele , ele parece que tem vida própria !!! rsrs, brincadeira a parte então depois de muito tempo sem comunicação entre o arduino e o esp, consegui fazer eles conversarem, mais ele esta perdendo a comunicação entre o site que envia o comado e o Esp, se eu reiniciar o arduino ele volta a funcionar, alguém outro exemplo de enviar dados para o esp pela web ou o que posso fazer para solucionar isso
já aproveitando tentei usar o esp direto para ligar um rele, mais com quando eu coloco a carga ele perde a comunicação também, qual a diferença entre a porta gpio do esp e do arduino?
obrigado e abraços a todos !!!
#include <SoftwareSerial.h>
#define DEBUG true
//Cria o objeto para usar a biblioteca Sotfware Serial
//RX do arduino é o pino 2
//TX do arduino é o pino 3
//O TX do esp8266 deve ser ligado no pino 2 do arduino
//O RX do esp8266 deve ser ligado no pino 3 do arduino
SoftwareSerial esp8266(2,3);
//declara os pinos do led rgb
int red =11;
int green =12;
int blue =13;
void setup()
{
//um pequeno delay no arduino
//para evitar que envie comandos antes do esp8266 dar o start
delay(500);
//Seta ambas seriais para a velocidade de 9600
Serial.begin(9600);
//(em alguns casos a velocidade do seu esp8266 pode estar diferente desta)
esp8266.begin(9600);
//declara os pinos como saida
pinMode(red,OUTPUT);
digitalWrite(red,LOW);
pinMode(green,OUTPUT);
digitalWrite(green,LOW);
pinMode(blue,OUTPUT);
digitalWrite(blue,LOW);
delay(2000);
//liga o led azul para informar o inicio dos comandos AT
digitalWrite(blue,blue);
//Envia o comandos AT
// reseta o modulo
sendData("AT+RST\r\n",2000,DEBUG);
// configure as access point e estação (ambos)
sendData("AT+CWMODE=3\r\n",1000,DEBUG);
//conecta ao roteador com a senha
//(esta configuração deve ser feita, pois o seu roteador tem nome diferente do meu e senha)
sendData("AT+CWJAP=\"roteador\",\"123456\"r\n",10000,DEBUG);
//Retorna o IP ao qual está conectado e o IP de Station
sendData("AT+CIFSR\r\n",1000,DEBUG);
//Habilita multiplas conexões
sendData("AT+CIPMUX=1\r\n",1000,DEBUG);
//Habilita ao servidor a porta 80
sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
//desliga o led azul ao finalizar os comandos
digitalWrite(blue,LOW);
//liga o led verde para indicar que podera enviar os comandos
//via brownser
digitalWrite(green,HIGH);
delay(2000);
//desliga led verde
digitalWrite(green,LOW);
}
void loop()
{
//verifica se o esp8266 esta enviando mensagem e esta disponivel
if(esp8266.available())
{
if(esp8266.find("+IPD,"))
{
// delay(5000);
//recupera apenas comando ASCII
int connectionId = esp8266.read()-48;
//avança o cursor até a palavra "pin="
esp8266.find("pin=");
//armazena o primeiro numero.. Ex: Se for pino 13 armazenara 1 e logo em seguida multiplica por 10 para o calculo do pino
int pinNumber = (esp8266.read()-48)*10;
//armazena o segundo numero e soma com o primeiro... Ex : Se o numero for 13 a soma sera 10 + 3 que resultara no pino ao qual foi enviado pela pagina Web
pinNumber += (esp8266.read()-48);
//armazena o terceiro dado que correponde ao status do led '1' para ligado e '0' para desligado
int statusLed =(esp8266.read()-48);
//Escreve o satus com o metodo digital Write
//Ex se recebeu 121
//o pino 12 sera ligado
//digitalWrite(12, 1);
digitalWrite(pinNumber, statusLed);
///////////////////////////////////
//Inicia a montagem da pagina web
//////////////////////////////
// finaliza o comando no esp8266
String closeCommand = "AT+CIPCLOSE=";
closeCommand+=connectionId;
closeCommand+="\r\n";
//Encerra a conexao
sendData(closeCommand,1000,DEBUG);
}
}
}
//Metodo que envia os comandos para o esp8266
String sendData(String command, const int timeout, boolean debug)
{
//variavel de resposta do esp8266
String response = "";
// send a leitura dos caracteres para o esp8266
esp8266.println(command);
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
//Concatena caracter por caractere recebido do modulo esp8266
char c = esp8266.read();
response+=c;
}
}
//debug de resposta do esp8266
if(debug)
{
//Imprime o que o esp8266 enviou para o arduino
Serial.println("Arduino : " + response);
}
return response;
}
Tags:
Liguei em uma alimentação separada de 5v e com todos os gnd ligados em comuns
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por