将ESP8266与Arduino Mega连接时出现问题。它总是说;模块没有响应。”;
我在连接ESP8266和Arduino Mega时遇到问题。它总是说“模块没有响应。” 如果我有什么地方错了,请检查并纠正我 我正在使用下面的代码和接线图 我的代码:将ESP8266与Arduino Mega连接时出现问题。它总是说;模块没有响应。”;,arduino,embedded,wifi,robotics,esp8266,Arduino,Embedded,Wifi,Robotics,Esp8266,我在连接ESP8266和Arduino Mega时遇到问题。它总是说“模块没有响应。” 如果我有什么地方错了,请检查并纠正我 我正在使用下面的代码和接线图 我的代码: //#include <SoftwareSerial.h> //use mega Serial 2 for serial monitor; Serial 1 on pins 19 (RX) and 18 (TX);// Serial2 on pins 17 (RX) and 16 (TX), Serial3 o
//#include <SoftwareSerial.h>
//use mega Serial 2 for serial monitor; Serial 1 on pins 19 (RX) and 18 (TX);// Serial2 on pins 17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX).
#define SSID "SopraSteria"
#define PASS "1234567890"
#define DST_IP "220.181.111.85" //baidu.com
//SoftwareSerial dbgSerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
//serial 2 is to esp8266
Serial2.begin(9600);//9600 (mine), 57600, 115200
Serial2.setTimeout(2000);
//serial 0 is to usb
Serial.begin(115200);
while(!Serial);
while(!Serial2);
//dbgSerial.begin(9600); //can't be faster than 19200 for softserial
//dbgSerial.println("ESP8266 Demo");
Serial.println("ESP8266 Demo on Mega2560");
while(Serial2.available()>0)
Serial2.read();
delay(1000);
//test if the module is ready
Serial2.println("AT+RST");
//delay(1000);
//delay(1000);
Serial.println("Resetting module");
Serial2.flush();
//if(Serial2.find("ready"))
if(Serial2.find("Ready")||Serial2.find("ready"))
{
//dbgSerial.println("Module is ready");
Serial.println("Module is ready");
}
else
{
//dbgSerial.println("Module have no response.");
Serial.println("Module have no response.");
//while(1);
}
delay(1000);
//connect to the wifi
boolean connected=false;
for(int i=0;i<5;i++)
{
if(connectWiFi())
{
connected = true;
break;
}
}
if (!connected){
//while(1);
Serial.println("Not Connected.");
}
delay(1000);
//print the ip addr
Serial2.println("AT+CIFSR");
Serial.println("ip address:");
while (Serial2.available())
Serial.write(Serial2.read());
//set the single connection mode
Serial2.println("AT+CIPMUX=0");
}
void loop()
{
//connectWiFi();
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",80";
Serial2.println(cmd);
Serial.println(cmd);
Serial.println(cmd);
if(Serial2.find("Error")) return;
cmd = "GET / HTTP/1.0\r\n\r\n";
Serial2.print("AT+CIPSEND=");
Serial2.println(cmd.length());
if(Serial2.find(">"))
{
//dbgSerial.print(">");
Serial.print(">");
}else
{
Serial2.println("AT+CIPCLOSE");
//dbgSerial.println("connect timeout");
Serial.println("connect timeout");
delay(1000);
return;
}
Serial2.print(cmd);
delay(2000);
//Serial.find("+IPD");
while (Serial2.available())
{
char c = Serial2.read();
//dbgSerial.write(c);
Serial.write(c);
//if(c=='\r') dbgSerial.print('\n');
if(c=='\r') Serial.print('\n');
}
//dbgSerial.println("====");
Serial.println("====");
delay(1000);
}
boolean connectWiFi()
{
Serial2.println("AT+CWMODE=1");
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
//dbgSerial.println(cmd);
Serial2.println(cmd);
Serial.println(cmd);
delay(2000);
if(Serial2.find("OK"))
{
//dbgSerial.println("OK, Connected to WiFi.");
Serial.println("OK, Connected to WiFi.");
return true;
}else
{
//dbgSerial.println("Can not connect to the WiFi.");
Serial.println("Can not connect to the WiFi.");
return false;
}
}
/#包括
//使用mega Serial 2进行串行监控;引脚19(RX)和18(TX)上的串行1;//引脚17(RX)和16(TX)上的串行2,引脚15(RX)和14(TX)上的串行3。
#定义SSID“SopraSteria”
#定义过程“1234567890”
#定义DST_IP“220.181.111.85”//baidu.com
//软件系列dbgSerial(10,11);//接收,发送
无效设置()
{
//打开串行通信并等待端口打开:
//序列号2是esp8266
Serial2.begin(9600);//9600(我的),57600115200
Serial2.setTimeout(2000);
//串行0连接到usb
序列号开始(115200);
而(!串行);
而(!Serial2);
//dbgSerial.begin(9600);//对于softserial,速度不能超过19200
//dbgSerial.println(“ESP8266演示”);
Serial.println(“Mega2560上的ESP8266演示”);
while(Serial2.available()>0)
Serial2.read();
延迟(1000);
//测试模块是否准备就绪
序列2.打印项次(“AT+RST”);
//延迟(1000);
//延迟(1000);
Serial.println(“重置模块”);
Serial2.flush();
//if(Serial2.find(“ready”))
if(Serial2.find(“Ready”)| Serial2.find(“Ready”))
{
//dbgSerial.println(“模块就绪”);
Serial.println(“模块准备就绪”);
}
其他的
{
//println(“模块没有响应”);
Serial.println(“模块无响应”);
//而(1),;
}
延迟(1000);
//连接到wifi
布尔连接=假;
对于(int i=0;i从我可以看到的模式来看,该设备使用3V逻辑(我从张力分配器中猜出来)?在这种情况下,如果您与5V逻辑通信,那么您应该在Tx和Rx上使用5V/3V缓冲器。这是我的猜测和建议:
始终调试示波器的通信问题
没有这一点,你根本无法知道发生了什么
还进行一些其他调试。您假设该设备响应为“就绪”或“就绪”
,但请尝试打印出它在输出时实际提供的信息。否则,如果您的硬件不在手中,我们就无法调试您的硬件
另外,请注意,这是一个不适合此类问题的论坛。抱歉@Dawidi,这不完全正确。 是的,使用分压器是不合适的。但这不是问题。解决3.3 TX的问题是可行的(当然是9600波特-->我已经这样做了) 您的问题是Arduino板的电源。ESP需要大量电流。您的板将不支持此高电流。您必须使用外部电源为ESP供电。我可以推荐一个固定电压调节器,如LF33CV。您使用两个冷凝器,它将工作:-) 接线方式如下:。 如果你使用LF33CV,你的UE应该在4.3到40V之间。为了测试,我使用了USB端口的5V。这也可以工作 尝试以下方式启动ESP:
#define pin_reset 2 //Connect to RST pin of ESP8266
bool start()
{
pinMode(PinReset, OUTPUT);
delay(1);
pinMode(PinReset, INPUT);
delay(1000);
if (Serial.find("Ready"))
{
delay(1000);
return true;
}
else
{
return false;
}
}
谢谢Dawid的宝贵回复。翻译:condensors=capacitors我投票结束这个问题,因为这是一个硬件问题,而不是软件问题。第一个参数不属于一个答案,它是对另一个答案的评论!谢谢Fruchtzwerg提出的好建议。你能给我你的接线图吗w您已将其与Arduino Mega和ESP8266连接。如果您能提供源代码进行测试,我们将不胜感激。