You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:48:02