使用ESP8266 ESP-01模組的USB轉接板燒錄Arduino程式或MicroPython韌體

之前購買UNO+WiFi R3 ATmega328P+ESP8266控制板時,順帶買了一個ESP-01序列埠轉USB通訊轉接板

USB轉接板

這個轉接板包含5V轉3.3V降壓IC,以及CH340序列通訊轉換IC,方便透過USB供電給ESP8266 ESP-01模組。但若直接使用這個轉接板,在Arduino IDE中燒錄ESP8266程式,將出現如下的“espcomm_open failed”和“espcomm_upload_mem failed”錯誤:

“espcomm_open failed”和“espcomm_upload_mem failed”錯誤

這是因為ESP8266模組在燒錄韌體之前,GPIO 0腳必須接地,而這個轉接板的GPIO 0腳是空接的。這是Wemos D1 mini的USB序列模組和ESP8266晶片之間「燒錄模式」轉換電路,透過電晶體自動切換GPIO 0的電位,這部份的電路解說,請參閱《超圖解Python物聯網實作入門》9-6頁。

店晶體電路:自動切換GPIO 0的電位。

底下是另一款具備燒錄ESP8266韌體功能的USB通訊轉接板(搜尋關鍵字“ESP-01固件燒錄”):

具備燒錄ESP8266韌體功能的USB通訊轉接板

這款轉接板新增一個「手動」將GPIO 0腳接地的按鍵,後面的排針也把ESP-01模組的所有接腳都引出來,方便連接其他電子模組或麵包板。

具備燒錄ESP8266韌體功能的USB通訊轉接板

手動進入ESP8266韌體燒錄模式的開關電路

筆者購買的是沒有按鍵和排針的USB轉接板,需要自行焊接開關。底下是在此轉接板的背面增加「燒錄韌體」和「重置」兩個開關的電路:

「燒錄韌體」和「重置」開關電路

為了便於電子實驗,我將ESP-01模組的GPIO 0, 2以及3.3V和接地,都焊接到一個5針排母;燒錄韌體、插入電腦USB通電之前,GPIO 0和接地必須用導線相連:

IO 0和接地必須用導線相連

如此,就能在Arduino IDE中成功上傳程式了:

在Arduino IDE中成功上傳程式

替ESP-01模組燒錄MicroPython韌體

同樣地,燒錄MicroPython韌體之前,GPIO 0腳也必須事先接地,下圖是使用Flash Download Tools燒錄MicroPython韌體的畫面。

Flash Download Tools

燒錄韌體之前,請先按下ERASE(清除)鈕,清除快閃記憶體內容,再按下START(開始)燒錄。若畫面出現「等待同步」之類的訊息,請按下ESP-01轉接板的「重置」鍵,或者把模組的RST(重置)腳接一下「接地」腳再移開,達到重置的效果,就能開始燒錄韌體。

這是連接ESP-01和I2C介面的OLED模組,執行MicroPython程式的結果:

ESP-01執行MicroPython程式

這是測試OLED顯示器的MicroPython程式,SDA腳設定在0,SCL腳設定在2。

from machine import Pin, I2C
import ssd1306
i2c = I2C(sda=Pin(0), scl=Pin(2), freq=100000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.text('No Hack,', 0, 0)
oled.text('No Life!', 50, 30)
oled.show()
Posts created 470

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top