带有arduino nano的ESP8266,串口监视器上没有反馈

时间:2016-12-02 09:22:41

标签: arduino esp8266 arduino-esp8266

我将我的esp8266连接到我的arduino nano

ESP Tx > Arudino Tx
ESP Rx > Arduino Rx
ESP 3.3v > Arduino 3v3
ESP Dh_cp > Arduino 3v3
ESP Gnd > Arduino Gnd

我在VIN上使用usb和12V提供arduino nano,使用所有

的公共接地

我已经尝试了所有波特率并发送了AT命令。 ESP8266的红灯常亮,蓝灯仅在启动时亮起,而且当连接ESP8266时,红灯常亮。

作为最后的手段,我尝试使用espressif站点的固件刷新ESP8266,我刷了nonos sdk(非启动版本)v2.0.0。

串行监视器在任何波特率上都没有显示任何内容

我在网上找到了很多代码,比如这里的代码: 但主要是我使用空白代码,因为我想将esp8266连接到arduino,并让它给出一些现在正在工作的反馈。比如这个链接:http://randomnerdtutorials.com/getting-started-with-esp8266-wifi-transceiver-review/

使用此代码

#include <SoftwareSerial.h>
SoftwareSerial ESPserial(2, 3); // RX | TX

void setup() 
{
    Serial.begin(115200);     // communication with the host computer
    //while (!Serial)   { ; }

    // Start the software serial for communication with the ESP8266
    ESPserial.begin(115200);  

    Serial.println("");
    Serial.println("Remember to to set Both NL & CR in the serial monitor.");
    Serial.println("Ready");
    Serial.println("");    
}

void loop() 
{
    // listen for communication from the ESP8266 and then write it to the serial monitor
    if ( ESPserial.available() )   {  Serial.write( ESPserial.read() );  } else { Serial. println("not ready");}

    // listen for user input and send it to the ESP8266
    if ( Serial.available() )       {  ESPserial.write( Serial.read() );  }
}

串口显示器不断打印&#34;未准备好&#34;所以我猜测ESP模块无法读取,但我不知道我们如何从这个诊断问题

闪烁时使用波特率115200

使用此电路也可以测试http://www.martyncurrey.com/wp-content/uploads/2015/01/Arduino-to-ESP8266.jpg

4 个答案:

答案 0 :(得分:0)

ESP Rx - &gt; Arudino Tx ESP Tx - &gt; Arduino Rx

改变它,我认为它会起作用

祝你好运。

答案 1 :(得分:0)

如果您只想使用AT命令,那么只需上传一张void setup(){} void loop(){}的空白草图 在里面。 另外,请保持原样。 我正在做同样的事情,它对我很好。 您也可以参考此链接 https://www.instructables.com/id/Getting-Started-With-the-ESP8266-ESP-01/

答案 2 :(得分:0)

您应始终交叉 接收(接收) TX (传输),如下所示:

  

ESP Rx &gt; Arudino Tx

     

ESP Tx &gt; Arduino Rx

     

ESP 3.3v&gt; Arduino 3v3

     

ESP Dh_cp&gt; Arduino 3v3

     

ESP Gnd&gt; Arduino Gnd

你也应该整理一个外部电源,因为ESP需要更多的放大器,而不是Arduino所能提供的,并且它可能无法正常工作(肯定不可靠)。

(不要忘记为arduino,电源和ESP制作一个公共GND)

答案 3 :(得分:0)

其他答案都提出了您 应该 要更改的内容,但是这些可能不是问题的根源。有一个致命错误。软件序列 不能 以115200的波特率工作。您必须使用空白草图将ESP8266连接到TX和RX引脚,并将ESP8266的波特率更改为软件序列号为9600之前就可以使用它。

此外,我认为代码将无法正确接收返回值。尝试以下操作:

#define RX_PIN 3
#define TX_PIN 2
#define ESP_BRATE 9600

SoftwareSerial esp8266(RX_PIN, TX_PIN);

bool at_command(String command, int timeout_ms, String* output) {
  esp8266.println(command);

  String ret;

  int start_time = millis();
  while (timeout_ms == -1 || millis() < start_time + timeout_ms) {
    String line = esp8266.readStringUntil('\n');
    if (line == "OK\r") {
      if (output) {
        *output = ret;
      }
      return true;
    }
    if (line == "ERROR\r") {
      if (output) {
        *output = ret;
      }
      return false;
    }

    ret += line;
    ret += '\n';
  }
  if (output) {
    *output = ret;
  }
  return false;
}

void setup()
{
  Serial.begin(9600);
  while (!Serial) {
    delay(10);
  }

  esp8266.begin(ESP_BRATE); // I changed this on the ESP to 9600
  while (!esp8266) {
    delay(10);
  }

  String out;
  bool ret;

  ret = at_command("AT", -1, &out);
  Serial.println(out);
  if (!ret) {
    Serial.println("AT is not returning OK");
    return;
  }

可以在here中找到基于ESP8266-01的气象站的完整示例代码,可能会帮助您了解如何操作。它包括许多有关使用ESP的文档,应该可以带您到达需要的地方!