通过Arduino向ESP8266串口发送数据接收异常求助
问题解决方法
核心问题原因
- 输出逻辑错误:ESP8266代码中
Serial.read()返回值为接收字符的ASCII十进制整数,直接打印会输出数字而非字符本身。 - Arduino端引脚冲突:你为软串口分配的1、0引脚是Arduino硬件串口的默认占用引脚,同时启用硬件串口和该软串口会导致信号冲突,数据发送异常。
修正后代码
ESP8266代码
#include <SoftwareSerial.h> void setup() { Serial.begin(38400); } void loop() { while(Serial.available()) { Serial.println("yes"); // 将读取到的ASCII值转为字符再打印 Serial.println((char)Serial.read()); } delay(5); }
Arduino代码
#include <SoftwareSerial.h> // 更换软串口引脚为闲置的2、3脚,避免和硬件串口冲突 SoftwareSerial esp(2, 3); String str; void setup(){ Serial.begin(38400); esp.begin(38400); delay(2000); } void loop() { str = String("Hi there"); esp.println(str); esp.println("hi there"); delay(1000); }
接线调整说明
更换引脚后按如下规则接线:
- Arduino 2号引脚(软串口TX)接 ESP8266 RX引脚
- Arduino 3号引脚(软串口RX)接 ESP8266 TX引脚
- 两个板卡的GND引脚必须连接,保证电平参考一致
内容的提问来源于stack exchange,提问作者Skillmaker
相关产品推荐
相关产品推荐

