Olá.

Gostaria de uma ajuda com esse módulo, não estou conseguindo usá-lo. 

O problema é o seguinte, às vezes ele exibe corretamente as mensagens no navegador. O problema é que na maioria das vezes ele simplesmente não envia a mensagem que eu quero. Pelo Monitor Serial, percebo que ele recebe a petição do navegador, mas não encaminha a resposta. Será que poderia ser algo relacionado a velocidade??

Uso esse módulo juntamente com o arduino nano. Estou usando esse código para testes 

// Programa: Web Server com modulo ESP8266
// Alteracoes e adaptacoes: FILIPEFLOP

// Carrega as bibliotecas ESP8266 e SoftwareSerial
#include "ESP8266.h"
#include "SoftwareSerial.h"

// Cria uma serial nas portas 2 (RX) e 3 (TX)
SoftwareSerial esp8266(2 , 3);

// Define que o modulo ira utilizar a serial minhaSerial
ESP8266 wifi(esp8266);

#define DEBUG true

void setup()
{
Serial.begin(19200);
esp8266.begin(19200);

sendData("AT+RST\r\n", 2000, DEBUG); // rst
// Conecta a rede wireless
sendData("AT+CWJAP=\"SSID\",\"senha\"\r\n", 2000, DEBUG);
delay(3000);
sendData("AT+CWMODE=3\r\n", 1000, DEBUG);
// Mostra o endereco IP
sendData("AT+CIFSR\r\n", 1000, DEBUG);
// Configura para multiplas conexoes
sendData("AT+CIPMUX=1\r\n", 1000, DEBUG);
// Inicia o web server na porta 80
sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
}

void loop()
{
// Verifica se o ESP8266 esta enviando dados
if (esp8266.available())
{
if (esp8266.find("+IPD,"))
{
delay(300);
int connectionId = esp8266.read() - 48;

String webpage = "<head><meta http-equiv=""refresh"" content=""3"">";
webpage += "</head><h1><u>ESP8266 - Web Server</u></h1><h2>Porta";
webpage += "Digital 8: ";
//int a = digitalRead(8);
//webpage += a;
webpage += "</br>";
webpage += "Porta Digital 9: ";
//int b = digitalRead(9);
//webpage += b;
webpage += "Funcionou???: ";


String cipSend = "AT+CIPSEND=";
cipSend += connectionId;
cipSend += ",";
cipSend += webpage.length();
cipSend += "\r\n";

sendData(cipSend, 1000, DEBUG);
sendData(webpage, 1000, DEBUG);

String closeCommand = "AT+CIPCLOSE=";
closeCommand += connectionId; // append connection id
closeCommand += "\r\n";

sendData(closeCommand, 3000, DEBUG);
sendData("AT+RST\r\n", 2000, DEBUG); // rst
// Conecta a rede wireless
sendData("AT+CWJAP=\"SSID\",\"senha\"\r\n", 2000, DEBUG);
delay(3000);
sendData("AT+CWMODE=3\r\n", 1000, DEBUG);
// Mostra o endereco IP
sendData("AT+CIFSR\r\n", 1000, DEBUG);
// Configura para multiplas conexoes
sendData("AT+CIPMUX=1\r\n", 1000, DEBUG);
// Inicia o web server na porta 80
sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
}
}
}

String sendData(String command, const int timeout, boolean debug)
{
// Envio dos comandos AT para o modulo
String response = "";
esp8266.print(command);
long int time = millis();
while ( (time + timeout) > millis())
{
while (esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
response += c;
}
}
if (debug)
{
Serial.print(response);
}
return response;
}

Exibições: 3629

Responder esta

Respostas a este tópico

Estou com o mesmo problema e não sei como fazer

Ola Douglas e Leandro,

Aqui no grupo irão encontrar respostas para suas duvidas, e ajuda de colegas dispostos para isso.

http://labdegaragem.com/group/esp8266-na-garagem  Solicitem inscrição, e vejam os diversos tópicos.

Abs.

Qual modelo do seu modulo ESP8266 que esta usando ?

Normalmente a taxa de transmissão do ESP8266 é de 115200.

Testei um dos programas do site especificado e funcionou.

Tente mudando o baud rate do ESp8266 :

void setup()
{
Serial.begin(19200);     /   baud rate do monitor da IDE do Arduino 
esp8266.begin(115200);  / baud rate da serial do ESP8266

O ideal e especificar o mesmo Baud rate tanto para o ESP8266 quanto para o Arduino Serial :

para um melhor sincronismo.

void setup()
{
Serial.begin(115200);     /   baud rate do monitor da IDE do Arduino 
esp8266.begin(115200);  / baud rate da serial do ESP8266

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço