2022年8月23日 星期二

NodeMCU GPIO 與 Arduino IDE

 

介紹

通用輸入/輸出 (GPIO) 是 IC(集成電路)上的引腳。它可以是輸入引腳或輸出引腳,其行為可以在運行時進行控制。

NodeMCU 開發套件提供對 ESP8266 的這些 GPIO 的訪問。唯一需要注意的是 NodeMCU Devkit 引腳的編號與 ESP8266 的內部 GPIO 符號不同,如下圖和表格所示。例如,NodeMCU Devkit 上的 D0 引腳映射到 ESP8266 的內部 GPIO 引腳 16。

NodeMCU GPIO

NodeMCU DevKit GPIO

下表給出了 NodeMCU Dev Kit IO 引腳和 ESP8266 內部 GPIO 引腳映射

NodeMCU 開發套件上的引腳名稱

ESP8266 內部 GPIO 引腳號

D0

GPIO16

D1

GPIO5

D2

GPIO4

D3

GPIO0

D4

GPIO2

D5

GPIO14

D6

GPIO12

D7

GPIO13

D8

GPIO15

D9/RX

GPIO3

D10/TX

GPIO1

D11/SD2

GPIO9

D12/SD3

GPIO10

 

藍色框 (1, 3, 9, 10) 中顯示的 GPIO 在 Dev Kit 上不常用於 GPIO 目的

ESP8266 是一種片上系統 (SoC) 設計,具有處理器芯片等組件。該處理器有大約 16 條 GPIO 線,其中一些在內部用於與 SoC 的其他組件(如閃存)接口。

由於 ESP8266 SoC 內部使用了多條線路,因此我們還有大約 11 個 GPIO 引腳用於 GPIO 用途。

11 個引腳中的 2 個通常為 RX 和 TX 保留,以便與從中下載已編譯目標代碼的主機 PC 通信。

因此,最後只剩下 9 個通用 I/O 引腳,即D0 到 D8。

如上圖 NodeMCU Dev Kit 所示。我們可以看到 RX、TX、SD2、SD3 引腳不常用作 GPIO,因為它們用於其他內部進程。但我們可以嘗試使用 SD3 (D12) 引腳,該引腳最喜歡響應 GPIO/PWM/類似中斷的功能。

請注意,D0/GPIO16 引腳只能用作 GPIO 讀/寫,不支持特殊功能。

例子

讓我們為 NodeMCU 開發套件的引腳 D4 上的 LED 閃爍寫一個 Arduino 草圖。

 用於 LED 閃爍的 Arduino 草圖

uint8_t LED_Pin = D4;       // declare LED pin on NodeMCU Dev Kit

void setup() {
pinMode(LED_Pin, OUTPUT);   // Initialize the LED pin as an output
}

void loop() {
digitalWrite(LED_Pin, LOW); // Turn the LED on
delay(1000);                // Wait for a second
digitalWrite(LED_Pin, HIGH);// Turn the LED off
delay(1000);                // Wait for a second
}

 

筆記

一些 GPIO 引腳在啟動時使用,因此將此引腳拉高或拉低會阻止 NODEMCU 啟動

  • GPIO0:它在~100ms 後振盪並穩定在高電平。如果拉低,則啟動失敗
  • GPIO1:低約 50 毫秒,然後高,如果拉低,則啟動失敗。
  • GPIO2:它會在約 100 毫秒後振盪並穩定為高電平,如果拉低則啟動失敗。
  • GPIO3:低約 50 毫秒,然後高。
  • GPIO9:啟動時引腳為高電平。
  • GPIO10:啟動時引腳為高電平。
  • GPIO15:低,如果拉高則啟動失敗
  • GPIO16:啟動期間為高電平,下降至 ~1Volt。 

 

在啟動時考慮引腳高/低,如果您連接任何外圍設備作為輸出,即繼電器、光耦合器、晶體管或任何此類驅動器可能會產生問題。

NODEMCU 內置 LED:GPIO2 即 D4 引腳,甚至有些板子在 GPIO16 上有 LED。 

有關 GPIO 行為的詳細參考,請單擊此處。

 

資料來源:https://www.electronicwings.com/nodemcu/nodemcu-gpio-with-arduino-ide

沒有留言: