MyWebsite Bootstrap

使用TTL RS232(PL2303HX)上傳程式碼至ESP8266 NodeMCU

17 Apr 2022 - Gengar

使用TTL RS232(PL2303HX)上傳程式碼至ESP8266 NodeMCU

Broken usb ESP8266 NodeMCU


一般來說要上傳程式碼至ESP8266 NodeMCU可以直接利用他的micro usb接口即可做到,但是當usb接口壞掉不能使用或是要直接寫入ESP8266的時候要怎麼辦呢? 這個時候就可以利用他的RX跟TX這兩個GPIO把程式碼給上傳進去。步驟很簡單:1. 把線路接好 2. 如同正常上傳Arduino程式碼

需要準備的東西有

  1. ESP8266 NodeMCU
  2. USB to TTL module (市面上有很多款,任意一款都適用。這邊我們是用PL2303HX,不過如果是WIN8以後的windos版本就需要額外安裝驅動,驅動的部分可以在微軟的論壇找到)


接著開始來上傳程式碼,步驟如下

  1. 把線路如下圖接起來,要特別注意RX跟TX是相互接的,接錯可能會燒掉板子

    TTL to USB for ESP8266

    TTL to USB module ESP8266
    5V Vin
    GND GND
    RX TX
    TX RX


  2. 利用Arduino上傳程式碼,這個步驟如果上傳失敗有兩個可能的原因

    1. PL2303HX或是其他TTL to USB module的驅動沒灌好,可以到windows的設定->裝置管理員(Device Manager)->連接阜(Ports)看接上USB後是否有被正常的偵測到

      TTL to USB for ESP8266 - windows

    2. 板子處於讀取狀態非寫入狀態,這個時候就需要按下FLASH+RST鈕後放開讓他進入寫入狀態,正確地按下並放開後應該會看到LED閃一下。如果板子上沒有那兩個按鈕的話就需要用FLASH+RST的GPIO讓他進入寫入狀態。

最後這邊提供一個測試用的程式碼(這在Arduino的ESP8266範例裡面可以找到原始的程式碼)


// Edited by Gengar

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // 設定板子上的LED_BUILTIN作為output
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // LED on (ESP這塊板子上的LED on要設定低電位)
  delay(1000);                      // 保持LED on一秒
  digitalWrite(LED_BUILTIN, HIGH);  // LED off
  delay(2000);                      // 保持LED off兩秒
}

Tags: #Arduino #DIY