关于Arduino使用软串口读取ESP8266模块数据不稳定的解决办法

关于Arduino使用软串口读取ESP8266模块数据不稳定的解决办法

这篇文章是本人在做ESP8266和Arduino进行串口通信时发现,在ESP8266给Arduino发送数据时,Arduino接收数据不稳定,这使困惑了很久,后来在读了一篇文章后找到了原因,在Arduino使用软串口接收数据时,如果波特率较高时会出现数据接收不稳定的情况,本人总结了以下两种办法,希望可以解决各位的疑惑。

接收不到有效数据时会出现很多乱码,如图:
在这里插入图片描述

方法一:更换Arduino板型号

本方法是最简单,最无脑的解决办法将Arduino UNO更换成ArduinoMega 2560
因为arduinoMega 2560有四个硬串口,本次使用TX1和RX1串口可以完美解决软串口不能稳定接收数据

ArduinoESP8266
TX1RX
RX1TX
3.3VVCC
3.3VCH_PD
GNDGND

下面将程序奉上

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
  }

while(Serial.read()>=0){}   //清空串口缓存
  Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port
  Serial1.begin(115200);
  Serial1.println("AT");
}

void loop() { // run over and over
  if (Serial1.available())         //判断串口1是否接收到数据(这里串口1指的是TX1和RX1)
    {
 	  Serial.write(Serial1.read());   //将串口1读到的数据发送给串口0(串口0指的是RX0)
            
    }
 
 
  if (Serial.available())      //判断串口0是否接收到数据
    {
    Serial1.write(Serial.read());  //将串口0读到的数据发送给串口1
  	}
  }

发送AT+CWJAP?后,可以完整接收到当前热点信息
在这里插入图片描述

方法二:将ESP8266的波特率降低

本方法即是通过USB-TTL,将ESP8266的波特率降低从而使软串口可以接收稳定信息
降低波特率方法我不在赘述 可以参考链接用Arduino和esp8266检测WIFI信号强度
只需在串口监视器中发送改为AT+CIOBAUD<9600>加空格后点击发送即可

Arduino程序如下

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

while(Serial.read()>=0){}   //清空串口缓存
Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port
Serial1.begin(9600);
Serial1.println("AT");
}

void loop() { // run over and over
if (Serial1.available())         //判断串口1是否接收到数据(这里串口1指的是TX1和RX1)
  {
    Serial.write(Serial1.read());   //将串口1读到的数据发送给串口0(串口0指的是RX0)
          
  }


if (Serial.available())      //判断串口0是否接收到数据
  {
  Serial1.write(Serial.read());  //将串口0读到的数据发送给串口1
	}
}

打开串口监视器,将波特率改为9600,将格式改为NL和CR
然后在串口监视器输入AT,看到串口界面返回OK即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值