SoftSerial 不工作 ESP8266

SoftSerial Not Working ESP8266

我正在尝试通过 Arduino Mega 与我的 ESP8266 模块通信,ESP 的 Rx 引脚连接到 Mega 的引脚 7,ESP 的 Tx 引脚连接到 Mega 的引脚 6。我尝试 运行 以下测试代码:

#include <SoftwareSerial.h>

SoftwareSerial esp8266(6, 7);

void setup() {
 // Open serial communications and wait for port to open:
 Serial.begin(115200);
 while (!Serial) {
   ; // wait for serial port to connect. Needed for native USB port only
 }

  Serial.println("Started");

 // set the data rate for the SoftwareSerial port
 esp8266.begin(9600);
 esp8266.write("AT\r\n");
}

void loop() {
 if (esp8266.available()) {
  Serial.write(esp8266.read());
 }
 if (Serial.available()) {
  esp8266.write(Serial.read());
 }
}

ESP8266模块没有响应。然后我尝试使用 Mega 的专用 Tx 和 Rx 引脚(分别为 1 和 0)。我可以使用串行监视器发送命令,它会回复。首先我在 115200 波特率下发送 AT+CIOBAUD=9600 以将我的 ESP 模块的波特率更改为 9600。然后在 9600 波特率下我发送 AT+UART_DEF=9600,8,1,0,0。正如预期的那样,它对两者都回复了 OK。我再次尝试 运行 这个程序,但我仍然没有收到 ESP 8266 模块的响应。为了安全起见,我还尝试简单地切换 Rx 和 Tx 引脚。还是不行。关于我可能做错了什么有什么想法吗?

正如您在评论中提到的,SoftwareSerial esp(6,7) 适用于 UNO 但不适用于 Mega。对于 google Arduino SoftwareSerial 参考页,尤其是限制部分,这应该足够大了。

简而言之,与 UNO 不同,Mega 没有在所有引脚上都具有引脚变化中断功能。所以你不能在引脚 6 上有 Rx 引脚。