2023年1月4日 星期三

MicroPython 學習筆記 : Wemos D1 mini pro 測試

昨晚為了找 ESP32 開發板翻箱倒櫃在零件箱中找到四塊 D1 mini pro, 其中兩塊是有附購 SMA 外接天線的, 另兩塊沒有 (使用板上內建的陶瓷天線), 另外還找到一個 0.91 吋與 0.96 吋的 SSD1306 OLED 顯示器各一個, 其中 0.91 吋的前端玻璃有裂痕, 不確定有沒有壞掉. 查詢之前的網購資料, 應該是 2020/3/31 向 Aliexpress 買的 : 


先用三秒膠把針腳黏在 D1 mini pro 板子上, 今天晚上焊接後進行測試. 

D1 mini pro 與 D1 mini 一樣都有 5V 輸出, 這在做實驗時很方便. 

首先接上 USB 後在 "控制台/裝置管理員/連接埠" 檢查此板所連接的 COM 埠 : 




可見此板 USB 晶片用的是 CP2102, 然後按照下面這篇中的指令用 esptool 燒錄韌體 : 


值得注意的是, 與 D1 mini 不同的是, D1mini pro 燒錄韌體前不須要把 D3 (GPIO0) 接地, 直接燒錄即可 (把 D1 接地反而會無法燒錄), 先查詢 Flash 資訊 : 

D:\ESP8266>esptool.py --port COM12 flash_id   
esptool.py v2.6
Serial port COM12
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 68:c6:3a:f8:cd:a3
Uploading stub...
Running stub...
Stub running...
Manufacturer: 20
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...

可見這塊是 4MB Flash. 

接著是抹除 Flash 記憶體內容 :

D:\ESP8266>esptool.py --chip esp8266 --port COM12 erase_flash    
esptool.py v2.6
Serial port COM12
Connecting....
Chip is ESP8266EX
Features: WiFi
MAC: 68:c6:3a:f8:cd:a3
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 9.6s
Hard resetting via RTS pin...

如果像 D1 mini 那樣把 D0 接地, 反而會出現如下 Failed to connect to ESP8266 的錯誤訊息 : 

D:\ESP8266>esptool.py --chip esp8266 --port COM12 erase_flash     
esptool.py v2.6
Serial port COM12
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header

然後就可以燒錄韌體了 : 

D:\ESP8266>esptool.py --port COM12 --baud 115200 write_flash --flash_size=detect -fm dio 0 esp8266-20220618-v1.19.1.bin   
esptool.py v2.6
Serial port COM12
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 68:c6:3a:f8:cd:a3
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 634844 bytes to 419808...
Wrote 634844 bytes (419808 compressed) at 0x00000000 in 37.1 seconds (effective 136.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

這樣就燒錄完成了. 

接著參考下面這篇, 測試剛焊好接腳的 0.91 吋與 0.96 吋 OLED 顯示器 : 


0.91 吋的程式如下 : 

import ssd1306
from machine import Pin, I2C
i2c=I2C(scl=Pin(5), sda=Pin(4))
oled=ssd1306.SSD1306_I2C(128, 32, i2c)
oled.fill(1)
oled.show()

結果不行, 0.91 吋的裂痕似乎傷到裡面電路, 完全黑屏, 廢了. 

0.96 吋的程式改用 SoftI2C 測試 : 

from machine import Pin, SoftI2C
import ssd1306
i2c=SoftI2C(scl=Pin(5), sda=Pin(4)) 
oled=ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(1)
oled.show()

結果 0.96 吋的 OK : 




原來以前不知不覺買了蠻多零組件, 現在要開始活化資產.

沒有留言 :