Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ESP8266与Arduino Mega连接时出现问题。它总是说;模块没有响应。”;_Arduino_Embedded_Wifi_Robotics_Esp8266 - Fatal编程技术网

将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

我在连接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 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连接。如果您能提供源代码进行测试,我们将不胜感激。