我试图通过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引脚以确保安全。仍然无法正常工作。关于我可能做错的任何想法?
答案 0 :(得分:0)
正如您在评论中提到的那样,SoftwareSerial esp(6,7)
适用于UNO
但不适用于Mega
。这应该提示大到足以谷歌Arduino SoftwareSerial参考页面,特别是限制部分。
简而言之,与UNO
不同,Mega
在所有引脚上都没有引脚更改中断功能。所以你不能在引脚6上安装Rx引脚。