題:
通過SoftwareSerial端口從Arduino Uno向ESP8266發送AT命令
Paul
2015-12-10 10:26:14 UTC
view on stackexchange narkive permalink

目標

從Arduino UNO通過軟件串行端口將AT命令發送到ESP8266並接收結果。

當前狀態

我要么發送AT命令並且什麼都沒回來(接線方案1 ),要么我發送AT命令並且得到垃圾了(接線方案2

使用Arduino作為傳遞(如參考資料部分列出的教程中所述),我可以發送AT命令。我發現我可以在115200波特下與ESP8266通訊。

這是運行 AT + GMR 的結果:

  AT版本:0.40.0.0(2015年8月8日14:45:58) SDK版本:1.3.0Ai-Thinker Technology Co.,Ltd。內部版本:1.3.0.2 2015年9月11日11:48:04  

接線圖1

!!我的綠線連接到Arduino Uno的引腳3,黃線連接到引腳2;不是1和0,如圖所示!

enter image description here

接線圖2

與上面相同的接線,但是RX和TX顛倒了。綠線連接到引腳2,黃線連接到引腳3。

CODE

這是在Arduino Uno上運行的

  #include <SoftwareSerial.h>SoftwareSerial esp8266(2,3); void setup(){//打開串行通信並等待端口打開:Serial.begin(115200); while(!Serial){; //等待串口連接。僅本地USB端口需要} Serial.println(“ Started”); //設置SoftwareSerial端口esp8266.begin(115200);的數據速率esp8266.write(“ AT \ r \ n”);} void loop(){if(esp8266.available()){Serial.write(esp8266.read()); }如果(Serial.available()){esp8266.write(Serial.read()); }}  

運行草圖的結果

接線方案1

 已開始 

接線方案2

 已開始����。 

我已按照以下我已使用的資源部分中教程中列出的說明對ESP8266進行了測試。 ESP8266在通過串行提示符發送指令時工作正常。

我已使用的資源 http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1。 0.4.pdf

問題

有人知道我試圖做的事是否可行嗎?如果是的話,我在做什麼錯了?

嘗試使用PDF中的摘要,以將arduino用作串行的旁路(使用圖像中的連接)。嘗試將波特率設置為115200並使用串行監視器進行測試。您還需要發送\ r \ n作為行尾。如果esp沒有響應,請嘗試9600波特率。如果輸出良好,則使用工作波特率轉到軟件串行。您還可以嘗試將esp固件更新為最新版本。
您可以發佈軟件序列號嗎?
@Personagem,謝謝。我已經完成了故障排除(即,通過使用Arduino作為旁路來檢查是否可以發送AT命令)。我發現我可以在115200與esp通信。我將按照您的建議嘗試更新固件。
我相信@Magic-Mouse SoftwareSerial是一個由Arduino提供的庫。感謝您在問題上的幫助,但我認為在此發布庫不會有所幫助。
我知道軟件序列庫是什麼,我想在使用軟件序列號的地方設置代碼。
好的,我再讀一遍,變量命名使我認為這是ESP8266庫,而不是軟件序列,不理會我的評論。
您共享的鏈接太棒了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
為什麼為什麼要通過軟件串行映射端口2和3,而不使用內置的Rx和Tx引腳?
六 答案:
Grant
2015-12-29 12:36:47 UTC
view on stackexchange narkive permalink

有人知道我想做的事是否可能嗎?

絕對有可能:)

如果可以,那是什麼我做錯了嗎?

SoftwareSerial無法使用115200的波特率(儘管“允許”此設置)。一些報告建議最高可以達到57600,儘管以我的經驗來看9600最適合可靠性。如何更改ESP8266的波特率取決於固件版本。我在 AT + IPR = 9600 上獲得了成功。您只需要運行一次此命令(這是一個持久設置)。根據您的描述,我建議這是最可能導致您描述的“垃圾”輸出的罪魁禍首。

其他一些注意事項:

  • ESP8266在3v3而不是5v上運行,因此您不應該將其直接連接到數字引腳-您需要通過邏輯電平轉換器運行。運行5v會使您的ESP8266油炸。它可能不會影響 AT 之類的簡單命令,但是當您嘗試連接網絡等時,可能會導致設備意外重置。
  • 正如其他人所指出的,您需要發送\ r \ n-確保將“串行”窗口設置為同時發送這兩個消息(這是“串行”窗口中的下拉菜單)
請注意,AT + IPR有時可能會使ESP8266變磚。有關更多詳細信息,請訪問:http://arduino.stackexchange.com/questions/24156/how-to-change-baudrate-of-esp8266-12e-permanently/
Ikbel
2015-12-11 20:43:52 UTC
view on stackexchange narkive permalink

您可以嘗試以下方法:

首先將眨眼草圖上傳到Arduino,然後將其連接到ESP8266,如下所示:TX-TX和RX-RX。

現在打開串行監視器並發送AT命令,看看它是否響應。如果是這樣,那麼您可以使用Arduino通過將其連接回TX-RX和RX-TX來對其進行控制。

PS:請不要忘記將串行監視器中的行尾設置為換行符或回車符

使用以下代碼連接到ESP8266:

  #include <SoftwareSerial.h>const字節rxPin = 2; //將其連接到ESP8266const字節的Tx引腳txPin = 3; //將其連接到ESP8266的Rx引腳///我們將使用軟件串行接口連接到ESP8266SoftwareSerial ESP8266(rxPin,txPin); void setup(){Serial.begin(115200); ESP8266.begin(115200); //將其更改為ESP8266 delay(1000)使用的波特率; //讓模塊自初始化} void loop(){Serial.println(“正在發送AT命令...”); ESP8266.println(“ AT”);延遲(30);而(ESP8266.available()){字符串inData = ESP8266.readStringUntil('\ n'); Serial.println(“ ESP8266收到響應:” + inData); }}  

由於硬件串行接口在連接到計算機時會很忙,因此您必須使用另一個串行接口與ESP8266進行通信。在這種情況下,“軟件序列號”非常方便。

儘管此鏈接可以回答問題,但最好在此處包括答案的基本部分,並提供鏈接以供參考。如果鏈接頁面發生更改,僅鏈接的答案可能會無效。 -[評論](/ review / low-quality-posts / 11745)
是的,我想你是對的。我編輯了答案。
@KiraSan為什麼需要delay(30)?
-1
Magic-Mouse
2015-12-11 20:10:49 UTC
view on stackexchange narkive permalink

有人知道我要做什麼嗎?有可能,我已經用2個arduinos完成了,其中一個正在模擬ESP8266(等待eBay訂單)。

如果是的話,我在做什麼錯了?

在大多數情況下,您正在做的事情是錯誤的,但是我認為您整理得最多。 p>

一個想法是實現這個小傢伙:邏輯電平轉換器,它將在以後為您省去許多麻煩。

在“接線圖1”上,您正在使用arduino的硬件串行端口直接與設備通訊,就好像它是通過TTL電纜或FTDI電纜連接的一樣。

這意味著原理上講,arduino設備在理論上也可以從ESP8266讀取硬件,如果您有另一根arduino或TTL電纜,請嘗試將其連接到“主” arduino的2號和3號門,您應該得到類似的結果對於您的示例結果2.由於您可以通過arduino代理。如果不是,那將是開始調試的地方。

此外,我只能建議您投資TTL 3,3v或邏輯電平轉換器。當我拿到電纜時,一切就緒。

Janar Jürisson
2015-12-28 12:01:33 UTC
view on stackexchange narkive permalink

我也有很多問題。就我而言,從SoftwareSerial切換到 AltSoftSerial幾乎可以解決問題。似乎在Uno上,標準軟件串行庫不適用於我。切換後,我開始第一次獲得結果。 (我還使用了3.3V的電平轉換和外部電源)。因此,即使AltSoftSerial也不是完美的解決方案。我使用的ESP-07的數據速率為115200 bps。

您可以添加到您的描述中嗎?知道如何在Uno和ESP之間建立連接是很有幫助的。謝謝!
anatrobo
2016-08-24 19:04:17 UTC
view on stackexchange narkive permalink

我們發現ESP的許多問題-Arduino Uno串行軟件集成與波特率不兼容有關。我們創建了這個簡短的教程(包括Github庫),歡迎您測試並查看它是否解決了這些問題。 http://www.instructables.com/id/Simple-ESP8266-Arduino-Uno-Software-Serial-Integra/

AAA
2018-02-02 10:09:37 UTC
view on stackexchange narkive permalink

以下是使用ESP8266 Module的一些技巧。

  1. 請不要使用軟件串行,因為它不可靠,尤其是在波特率較高的情況下。

  2. 始終將ESP模塊連接到計算機並在與Arduino交互之前測試所有AT命令,以確保您的工作方向正確

  3. 製作電源適配器板,以使ESP模塊與Arduino 5v電源兼容

  4. ol>

    也請查看此鏈接以了解更多信息詳細信息



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...