Arduino:将 Arduino 与 ESP8266 aka ESP-01 连接

Arduino: connect Arduino with ESP8266 aka ESP-01

我有一个 Arduino Mega 2560。

我想将它连接到 ESP8266 aka ESP 01 模块。

首先我打开并编译一个空草图。当我启动串行监视器时,我在串行监视器中编写 AT 命令(如连接 WIFI),然后单击发送按钮。在这种情况下一切正常。

测试命令正常后,我想写一个Arduino草图,在其中实现自动发送命令的功能,而无需将其写入串口监视器。

为此,我写了这段代码:

#define SSID "test"
#define PASS "1111"

void connectWiFi() {
Serial.write(“AT+CWJAP=\"SSID\",\"PASS\""); 
}

void setup() {

Serial.begin(9600);

connectWiFi();

}

void loop() {
}

当我尝试在串行监视器中执行代码时,它只打印了字符串,但命令不起作用。

为什么当我在串行监视器中编写此命令时有效,而当我尝试上面的代码时,该命令不起作用?

有没有办法从arduino sketch传递和执行命令?如果我的代码错了,那是什么问题?

提前感谢您的回复。

对不起我的英语。

Serial.write(...) 使 arduino 通过其串行端口(即 USB 或引脚 0 和 1)进行写入。让 Arduino 直接向 ESP 发送指令的更好方法是定义 "software serial" 引脚与 ESP 通信。

您需要包含 SoftwareSerial.h 并使用 SoftwareSerial esp8266(2,3); 例如使引脚 2 和 3 与 ESP 串行通信。

您的代码应如下所示:

#include <SoftwareSerial.h>

#define SSID "test"
#define PASS "1111"

SoftwareSerial esp8266(2,3);
void setup(){
  Serial.begin(9600);
  esp8266.begin(9600); //ensure this baudrate is similar to your ESP's
  delay(500); //give it some time

  esp8266.println(“AT+CWJAP=\"SSID\",\"PASS\""); //send to ESP this way
}

void loop(){
  if(esp8266.available()){
    while(esp8266.available()){
      Serial.write(esp8266.read()); //make serial monitor print what ESP sends
    }  
  }
}

您也可以参考this example了解更多详情