這個轉接板包含5V轉3.3V降壓IC,以及CH340序列通訊轉換IC,方便透過USB供電給ESP8266 ESP-01模組。但若直接使用這個轉接板,在Arduino IDE中燒錄ESP8266程式,將出現如下的“espcomm_open failed”和“espcomm_upload_mem failed”錯誤:
這是因為ESP8266模組在燒錄韌體之前,GPIO 0腳必須接地,而這個轉接板的GPIO 0腳是空接的。這是Wemos D1 mini的USB序列模組和ESP8266晶片之間「燒錄模式」轉換電路,透過電晶體自動切換GPIO 0的電位,這部份的電路解說,請參閱《超圖解Python物聯網實作入門》9-6頁。
底下是另一款具備燒錄ESP8266韌體功能的USB通訊轉接板(搜尋關鍵字“ESP-01固件燒錄”):
這款轉接板新增一個「手動」將GPIO 0腳接地的按鍵,後面的排針也把ESP-01模組的所有接腳都引出來,方便連接其他電子模組或麵包板。
手動進入ESP8266韌體燒錄模式的開關電路
筆者購買的是沒有按鍵和排針的USB轉接板,需要自行焊接開關。底下是在此轉接板的背面增加「燒錄韌體」和「重置」兩個開關的電路:
為了便於電子實驗,我將ESP-01模組的GPIO 0, 2以及3.3V和接地,都焊接到一個5針排母;燒錄韌體、插入電腦USB通電之前,GPIO 0和接地必須用導線相連:
如此,就能在Arduino IDE中成功上傳程式了:
替ESP-01模組燒錄MicroPython韌體
同樣地,燒錄MicroPython韌體之前,GPIO 0腳也必須事先接地,下圖是使用Flash Download Tools燒錄MicroPython韌體的畫面。
燒錄韌體之前,請先按下ERASE(清除)鈕,清除快閃記憶體內容,再按下START(開始)燒錄。若畫面出現「等待同步」之類的訊息,請按下ESP-01轉接板的「重置」鍵,或者把模組的RST(重置)腳接一下「接地」腳再移開,達到重置的效果,就能開始燒錄韌體。
這是連接ESP-01和I2C介面的OLED模組,執行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()
1
2
3
4
5
6
7
frommachineimportPin,I2C
importssd1306
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()