close

2017,3,28 星期二

   首先我們要將電腦連結至ESP8266,如此我們才可將韌體程式燒錄或撰寫我們的專案程式,但問題是兩個裝置的通訊介面不同,所以我們無法直接連結,電腦的通訊界面是USB接口,而ESP8266是利用RT/TX的序列對外通訊,因此我們要在這二個裝置接上一個轉換界面,這個轉換界面的工作即是在將USB資料轉成序列的通訊方式。這時我們有二種硬體的連接方式,一種是連結Arduino開發版到ESP8266,而另一種方式是另外外接一個USB to TTL的轉接板去完成這項工作。每一種方式都有自己的問題及要注意的事項,至於要選擇那一種方式因人而異。在搜尋網路文章時你會發現兩種接法在皆有人作,經過下面的解說後,你就會明白它們有各自的問題及優缺點。兩種方式如下:

PC(USB) <->Arduino <-> ESP8266 

PC(USB) <->USB to TTL轉接板<-> ESP8266

第一種連線方式

  1. 電腦USB連結Arduino再連接ESP8266

 PC (USB) <-> Arduino <-> ESP8266

ESP8266ArduinoUNO_WiringDiagram.png   
   資料來源: 便宜大碗的WiFi 晶片 ESP8266入手-與Arduino對接

  如此作法的接線方式及運作確實可以簡化線路的複雜化,這種模式有時是可以成功的,有時會有問題,為什麼?

(一)最大的問題在於供電的電流問題,正如我們之前文章提到的ESP8266模組的耗電量平常是100mA,最多是200mA。

工作模式

平均值

峰值

持續傳送下

~70mA

200mA

正常型態下

~12mA

200mA

待機

<200uA

 

資料來源:ESP8266 WiFi 模組用戶手册 V1.0

Arduino Uno的官方技術規格書中寫到3.3V的輸出電源只能提供50mA 的電流(DC Current for 3.3V Pin 50 mA),所以ESP8266的平常耗電量可能要100mA有作者文章做過測試利用種方式跑測試資料,開Client模式傳資料時,整個板(USB電壓電流檢測器)最多寫吃100mA,也沒出什麼問題,所以就沒另外供電。但是作者也提到在作程式的實作會影響耗電,特別是在燒錄程式時,板子就不穩定。因此我們要從Arduino供電提供ESP8266運作可能會沒問題,但要燒錄程式時最好能提供到200mA的電流,所以最好的方式還是要另接外部電源。否則在需要高電流的情況下,可能燒毀Arduino Uno開發版。

(二)比較建議的接法是另外外接外部電源供電,建議電路圖如下:

  Arduino ESP8266-12 Connection.png 

  資料來源: Arduino ESP
  在上面電路圖中,Sensor1~3及Led1~3可以不用接。另外在外部電源方面也可參考下面二種的作法。

AMS1117雙電源.jpgblink_wififritsing .png

 

 資料來源:於電源穩壓 IC       資料來源: Blink Manual Flash

    AMS1117 的規格可輸出 800mA,可滿足ESP8266模組電源的需求了。

(三)另一個會遇到的問題是,如果你是用Arduino Uno,只要這樣接以後,ESP8266就佔據了Arduino的RX、TX,所以在Arduino的使用上就看不到Serial.print 的結果了。

(四)另一個有一個可能的問題是Arduino 與ESP8266通訊線的問題。在上圖中我們將Arduino的TX(傳送資料)接脚直接連接到ESP8266的RX(接收資料)接脚,但Arduino 的TX接脚輸出壓為5V,但ESP8266的RX接脚為3.3V的輸入電壓,所以如用上圖的而Arduino TX0接ESP8266 RX可能會有燒毀ESP8266的可能性,因此建議使用二個電阻(1K及2K或10K及 20K)分壓,使5.5V的輸出電壓變成3.3V的電壓,電路圖如下。

Aruin_ESP8266.png

資料來源: ESP8266 Wifi With Arduino Uno and Nano

硬體及軟體需求如下

  1. 電腦USB
  2. Arduino UNO
  3. ESP8266 模組
  4. LM1117或LM317模組
  5. Arduino IDE 1.6.5版本以上

第二種連線方式

  1. ESP硬體連接方式(二) : 電腦USB連結USB To serial再連接ESP8266
    PC (USB) <-> USB to TTL <-> ESP8266

     

ESP-12 wire.jpg

資料來源: Getting Started with the ESP8266-12

電路的注意事項:

  • 在電路圖中的虛線是可選擇的,是為了電路操作上的穩定性。
  • GPIO0在正常操作模式下為High電位,而在燒錄模式下為Low電位,連接一個開關方便模式切換。
  • 在開發及測試階段,接一個Reset開關方便Reset使用。
  • 有些人主張從USB的傳送端(TX)接一個100 ohm 電阻及一個3.3V稽納二極體至ESP8266的接收端(RX),可以防止5V的電壓進入ESP8266模組,但小編個人認為可以省略這二個元作,不會造成潛在的缺點及會影响系統的穩定度及效能(可參考ESP8266電源與供電問題這篇文章)。
  • 在VCC及GND之間接4.7 uF或更大的電容器,可以增加電源的穩定性,但如你的電源來源的穏定性夠,也可以忽略此元作)。
  • 另接外部3.3V電源是必要的,不要使用USB to Serial 模組提供的3.3V電壓,因為該模組的輸出最大電流不能完全足夠供應ESP8266模組使用。
  • ESP8266 模式設定
      GPIO 0 GPIO 2 GPIO 15
    UART Download Mode (Programming) 0 1 0
    Flash Startup (Normal) 1 1 0
    SD-Card Boot 0 0 1

原本以為上圖的電路連接己經相當實用且類似ESP8266開發板的線路,但實測上發現這個線路在正常模式運作没什麼問題,但在燒錄模式時卻無法正常的燒錄軟體,最後發現原因在GPIO2,有些文章認為這個GPIO2的脚位可以不用管它,但我在實測上發現GPIO2的脚位必須是高電位才可正常燒錄,如果你有相同的問題,請把GPIO2脚位設為電位。

硬體及軟體需求

  1. 電腦USB
  2. USB to TTL (Serial) 模組(FT232 模組)及驅動程式
  3. ESP8266 模組
  4. PUTTY 終端機連結或Arduino IDE 1.6.5版本以上

 

以上二種ESP8266的硬體接線方式皆有人做,但要小心了解各自的問題及優缺點,有些網路文章可能只是展示技術的可行性及簡單化操作程序並没有把問題講清楚,如果你是要開發專案或設計產品則要多考慮一些細節。

#-------------

開發階段電圖

  1. 電腦USB連結Arduino再連接ESP8266

    PC(USB) <->Arduino <-> ESP8266

Ardu_ESP8266.png

 資料來源: ESP8266 Arduino adapter

(2) 電腦USB連結USB To serial再連接ESP8266

    PC(USB) <->USB to TTL轉接板<-> ESP8266

ESP-12 wire.jpg

資料來源: Getting Started with the ESP8266-12

執行階段電路圖
  下面是執行階段的電路圖,當我們利用開發版完成程式問發後,我們可以將晶片及程式移植到正式產品上,此時我們可以簡化電路使成本降低維持最簡單的電路即可。

ESP_improved_stability.png

 

資料來源: ESP8266 Arduino Core

更多資訊請參考ESP8266的外部電源與線路問題這篇文章。

回ESP8266文件主目錄

arrow
arrow
    創作者介紹
    創作者 stanley 的頭像
    stanley

    史坦利Stanley程式Maker的部落格

    stanley 發表在 痞客邦 留言(0) 人氣()