作者: ken

WeMos D1 mini(ESP8266) 開發板介紹

No Comments
D1 mini 開發板,正面。其上有 ESP8266MOD 模組

在前面文章有簡短介紹到 WeMos D1 開發板,本文將介紹 WeMos D1 mini。
以筆者的認知最初會有一些國外的公司原創了一些開發板,若受大眾歡迎,隨後便會有很多第三方仿製的相容板因運而生,事實上應都是克隆得一模一樣只是不打上該原創公司的 logo,如下圖筆者手上的 D1 mini。
WeMos (Lolin)D1 mini 的原創板可參考此連結

ESP8266 單晶片本身是沒有 flash 的,所以原廠就有另外再提供 ESP8266 模組,其是由幾個部件組成的:ESP8266EX 單晶片,26M 晶振 crystal,4M 的 flash,1 顆 LED,以及天線所構成的 ESP8266 模組,名稱是 ESP8266MOD。而開發板就可直接採用這樣的模組。

使用開發板,我們首先關注的就是主晶片系統本身的規格,及其被引出的功能腳位。其次了解開發板所提供的電源,例如 3.3V,5V 等。再者了解其提供的週邊例如感知器,LED,七段顯示器,按鍵,或其他擴充部件或已驅動部件例如只要透過 I2C 就能顯示資料在 LCD 上或可直接驅動大電流馬達等。

因此本章就以 D1 mini 的功能腳位作為結束。(意思是指,使用一張開發板入門就是這麼樸實無華)
而我們下一章就會有強烈的實例援引這一點。

正面,打開了屏蔽蓋後的內容,有主晶片,晶振及 flash
背面,有 microUSB conn,USB2UR 晶片及其晶振,重置鍵,pinout,及 5-to-3.3V 降壓

D1 mini 規格

ESP8266MOD

主晶片工作電壓3.3V
數位 I/O 數量11
類比輸入 I/O 數量1
時脈80/160 MHz
Flash 容量4MBytes
ESP8266MOD 的規格

Functional/General-Purpose IOs

板上腳位標示對應軟體使用ESP8266 官方腳位定義對應軟體使用腳位說明
TXTXDUART TXD
RXRXDUART RXD
A0A0Analog input, max 3.2V
D0D0GPIO1616
D1D1GPIO55I2C SCL
D2D2GPIO44I2C SDA
D3D3GPIO0010k Pull-up
D4D4GPIO2210k Pull-up, BUILTIN_LED
D5D5GPIO1414SPI SCK
D6D6GPIO1212SPI MISO
D7D7GPIO1313SPI MOSI
D8D8GPIO151510k Pull-down, SPI CS
GGround
5V5V
3V3Vcc, 3.3V
RSTReset
功能腳位

其他

ConnectionmicroUSB
USB2TTLCH340G
All I/Osruns at 3.3V
參考批發價13 RMB
其他板規

D1-mini 腳位的在軟體中的使用/程式碼中的使用

請參考上面表格,在 ESP8266 官方的定義,即真正的定義,是例如“GPIO0”,“GPIO12”,“GPIO13”,等等此類標記來表示 GPIO 腳位,因而在程式碼中,便可使用 GPIO12 來代表 GPIO12 實體 pin,也可直接使用數字 12 來代表 GPIO12 實體 pin。然而,當我們在 Arduino IDE 中選擇某張開發板後,本例是 D1-mini,那麼便會有 D1-mini 所屬的含括檔被引入,額外地定義了開發板上印出的腳位名稱,例如腳位 D6 這個板上名稱,事實上是 GPIO12 所引出的,因此 D6 也就會在含括檔中被對應地定義出來。故,在程式碼中,我們可以使用 GPIO12,或 D6 或 12,都代表同一支腳位。
上述,只是為了說明方便。事實上含括檔中並沒有 GPIO12 這樣的定義,而只有 D6,或 12 來定義到 GPIO12。因此,程式碼中只能使用 D6,或 12。往後常會對某些既有的程式碼作 GPIO 對應的修改以適用到我們的板子上。故上述請特別留意。


Claude-code 補充 / 20260901

文中「功能腳位」表格已經如實列出 D3(GPIO0)、D4(GPIO2)標示「10k Pull-up」、D8(GPIO15)標示「10k Pull-down」,這其實是三支很關鍵、卻常被新手忽略原因的腳位——它們是 ESP8266 開機時的「strapping pin(開機模式選擇腳)」,補充說明一下為什麼、以及接線時該注意什麼。

為什麼 D3/D4/D8 要特別小心接線

ESP8266 開機瞬間會讀取 GPIO0、GPIO2、GPIO15 這三支腳的電位,決定要進入「正常開機(跑 flash 裡的韌體)」還是「燒錄模式」:GPIO0 開機時要是高電位、GPIO2 開機時也要是高電位、GPIO15 開機時要是低電位,三者同時滿足才會正常開機(這也是表格上分別標 pull-up/pull-up/pull-down 的原因——開發板內建的分壓電阻,就是為了讓這三支腳在沒外接任何東西時,開機能維持在正確電位)。

問題在於,往後接麵包板電路時,若在 D3/D4/D8 上外接了會把電位拉往錯誤方向的元件(例如接了一顆會把 GPIO0 拉低的按鍵,或接了會把 GPIO15 拉高的 LED/上拉電阻),板子就會在每次重置或斷電重開時卡在燒錄模式或直接開機失敗,症狀通常是「程式明明燒錄成功、但一斷電重開就沒反應」,很容易被誤以為是板子壞了或程式碼有問題,其實只是外接元件干擾了開機腳位的電位。之後文章系列若接到用麵包板實作的範例,接線前可以先對照這三支腳,優先把它們留給不影響開機電位的用途(或至少接線前後都實測一次斷電重開)。

D0(GPIO16)也是特例,但原因不同

表格上 D0 沒有標示任何 pull-up/down,這是因為 GPIO16 走的是獨立的 RTC 電源域,跟其他腳位不是同一組電路,因此不支援中斷(interrupt)、PWM、I2C 這些其他腳位常見的功能,能用的場合有限。但它有一個其他腳位都做不到的特殊用途:如果把 D0 用一條線外接到 RST 腳,搭配程式裡呼叫 ESP.deepSleep(),時間到了 D0 會自動拉低去觸發 RST,讓晶片從 deep sleep 中喚醒重開機——這是 ESP8266 省電應用(例如電池供電的感測器)常見的接法,之後系列若寫到低功耗/電池供電相關文章,會是實際用得到的知識點。

PHP Code Snippets Powered By : XYZScripts.com