2022-03-20

使用 Arduino IDE 編寫 ESP8266 NodeMCU 程式

最近整理電子零件,發現一塊朋友送贈的 ESP8266 NodeMCU
雖然 ESP8266 NodeMCU 並不是很新的開發板,但既然尋回一些工具,在下當然不會浪費

ESP8266 NodeMCU

外觀
見下文
ESP8266 NodeMCU 正面

見下文
使用 ESP8266MOD WiFi晶片

見下文
ESP8266 NodeMCU 使用 CP2102晶片 將 USB 訊號轉換成 UART ,類似 FT232RL

見下文
FLASH按鈕 是 ESP8266 NodeMCU 的 GP0引腳
按下時,為低電壓;沒有按下時,為高電壓

見下文
RST按鈕,是 ESP8266 NodeMCU 的 RST引腳

見下文
ESP8266 NodeMCU 背面,印著各引腳的用途

引腳
編號 引腳 方向 功能
1 3V3 提供 3.3V
2 GND 接地
3 GP1 輸入/輸出 第1數碼引腳
4 GP3 輸入/輸出 第3數碼引腳
5 GP15~ 輸入/輸出 第15數碼引腳,10位元PWM訊號
6 GP13 輸入/輸出 第13數碼引腳
7 GP12~ 輸入/輸出 第12數碼引腳,10位元PWM訊號
8 GP14~ 輸入/輸出 第14數碼引腳,10位元PWM訊號
9 GND 接地
10 3V3 提供 3.3V
11 GP2 輸入/輸出 第2數碼引腳,對應 WiFi LED,低電壓時亮著
12 GP0 輸入/輸出 第0數碼引腳,對應 FLASH按鈕,按下時為低電壓訊號
13 GP4~ 輸入/輸出 第4數碼引腳,10位元PWM訊號
14 GP5 輸入/輸出 第5數碼引腳
15 GP16 輸入/輸出 第16數碼引腳,對應 開發板LED,低電壓時亮著
16 A0 輸入 第0類比引腳,10位元類比訊號
17 NC 空引腳
18 NC 空引腳
19 GP10 輸入/輸出 第10數碼引腳
20 GP9 輸入/輸出 第9數碼引腳
21 MOSI 輸入/輸出 韌體 SPI 的 MOSI引腳
22 SS 輸入/輸出 韌體 SPI 的 SS引腳
23 MISO 輸入/輸出 韌體 SPI 的 MISO引腳
24 SCK 輸入/輸出 韌體 SPI 的 SCK引腳
25 GND 接地
26 3V3 提供 3.3V
27 EN 高電壓為使用最高供率運作;低電壓或不接駁為使用最低供率運作
28 RST 低電壓時重置裝置
29 GND 接地
30 VIN 接受 3V 至 9V

載入開發模組

見下文
在 Additional Boards Manager URLs 加入 https://arduino.esp8266.com/stable/package_esp8266com_index.json

見下文
見下文
在 Boards Manager 尋找 ESP8266 並安裝

見下文
Tools > Board 選擇 ESP8266 Boared > NodeMCU 1.0 (ESP-12E Module)

見下文
Upload Speed 選擇 57600

見下文
Port 選擇 ESP8266 NodeMCU 的連接埠

見下文
ESP8266 NodeMCU 有 2 個電路板 LED,分別是 GP2 及 GP16
可以修改 LED_BUILTIN 使 GP2 或 GP16

見下文
在 ESP8266MOD WiFi 模組旁的 LED 是 GP2

見下文
在 CP2102 模組旁的 LED 是 GP16

見下文
編寫程式測試
const byte LED_WIFI = 2;
const byte LED_BOARD = 16;

void setup() {
	pinMode(LED_WIFI, OUTPUT);
	pinMode(LED_BOARD, OUTPUT);
	digitalWrite(LED_WIFI, HIGH);
	digitalWrite(LED_BOARD, LOW);
}

void loop() {
	delay(500);
}

見下文
由於 ESP8166 NodeMCU 的 2個 LED 都是在低電壓時才亮著
所以 GP2 的 LED 設定為 HIGH 沒有亮著,而 GP16 的 LED 設定為 LOW 卻亮著

見下文
使用 FLASH按鈕 的效果
const byte FLASH = 0;
const byte LED_WIFI = 2;
const byte LED_BOARD = 16;

void setup() {
	pinMode(FLASH, INPUT);
	pinMode(LED_WIFI, OUTPUT);
	pinMode(LED_BOARD, OUTPUT);
	digitalWrite(LED_WIFI, HIGH);
	digitalWrite(LED_BOARD, LOW);
}

void loop() {
	bool flashed = digitalRead(FLASH);
	digitalWrite(LED_WIFI, flashed);
	digitalWrite(LED_BOARD, !flashed);
	delay(1);
}

補充資料

ESP8266 NodeMCU 的正面及背面雖然都印著引腳的名稱,但部分引腳的名稱並不相同
例如正面印著 D8 背面則印著 GP15 ,當使用 Arduino IDE 調用這支引腳時,使用
pinMode(D8, OUTPUT);


pinMode(15, OUTPUT);

結果都是相同

總結

將 ESP8266 NodeMCU 的開發模組載入到 Arduino IDE 後,編寫的內容及基本操作與 Arduino 完全相同
ESP8266 NodeMCU 具備 WiFi 功能,價錢亦不算昂貴,大約40港元,某些購物平台只是大約10港元
提供一個讓使用互動操作 FLASH按鈕(GP16) ,要進行互動操作時,不需要額外連接按鈕
雖然只有13支數碼引腳可以使用,但對於學習用途及製作簡單專案都足夠

但 ESP8266 NodeMCU 只有 3.3V 電源輸出,沒有提供 5V 電源輸出
如果接駁的裝置需要 5V 電源才能起動,便需要外接供電器,或使用升壓裝置

參考資料

沒有留言 :

張貼留言