關於Arduino使用軟串口讀取ESP8266模塊數據不穩定的解決辦法

關於Arduino使用軟串口讀取ESP8266模塊數據不穩定的解決辦法

這篇文章是本人在做ESP8266和Arduino進行串口通信時發現,在ESP8266給Arduino發送數據時,Arduino接收數據不穩定,這使困惑了很久,後來在讀了一篇文章後找到了原因,在Arduino使用軟串口接收數據時,如果波特率較高時會出現數據接收不穩定的情況,本人總結了以下兩種辦法,希望可以解決各位的疑惑。

接收不到有效數據時會出現很多亂碼,如圖:
在這裏插入圖片描述

方法一:更換Arduino板型號

本方法是最簡單,最無腦的解決辦法將Arduino UNO更換成ArduinoMega 2560
因爲arduinoMega 2560有四個硬串口,本次使用TX1和RX1串口可以完美解決軟串口不能穩定接收數據

Arduino ESP8266
TX1 RX
RX1 TX
3.3V VCC
3.3V CH_PD
GND GND

下面將程序奉上

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即可

以上即是本人的愚見,如有不對的地方請多多指正
不懂的話可以加本人私聊我,QQ:1149484183

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章