目前的 NodeMCU 開發板有兩種版本,其 USB 轉 TTL 一款是 CP2102,如下圖
另一款是 CH340G,這一款號稱 V3 版,如下圖
NodeMCU 與 ESP8266 的主要差異
- NodeMCU 包含一個 USB to serial 晶片,可隨插即用
- NodeMCU firmware 可使用 Lua script 撰寫程式
NodeMCU 開發板使用 Lua 來程式設計,而 ESP8266 系列模塊的使用者,只要把 firmware 更新為 NodeMCU,也可以使用 Lua 來撰寫程式。
本文是使用 NodeMCU 基於 CP2102 開發板來作說明。
如果你是首次使用 NodeMCU,在您將 NodeMCU 插入電腦時,它會要求你安裝 CP2102 驅動程式,因為它使用 CP2102 晶片當作 USB 與 UART 的溝通橋樑。
下載 CP2102 驅動程式 http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
下載後解壓縮,並且依照您的作業系統分別執行
CP210xVCPInstaller_x86.exe (32位元)
或
CP210xVCPInstaller_x64.exe (64位元)
檢查 NodeMCU 是否已和電腦正確連接
開啟「控制台」>「裝置管理員」>「連接埠(COM 和 LPT)」。
檢視序列埠是否有被啟用(你我的埠可能會不同),如下圖
使用 Arduino IDE 撰寫程式
為了讓我們可以使用 Arduino IDE 來編寫程式,需要做一些設定,這個步驟只需做一次即可,以後啟動 Arduino IDE 都無需重覆設定。
Step1 開啟 Arduino IDE。
Step2 點擊「檔案」>「偏好設定」,將底下那一行字貼到「Additional Boards Manager URLs:」右側欄位內
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Step3 點擊「確定」鈕,並關閉 Arduino IDE。
Step4 再次開啟 Arduino IDE。
Step5 安裝 ESP8266 工具,點擊「工具」>「板子」>「Boards Manager...」。
(出現「Boards Manager」對話窗)
Step6 捲動右側拉桿到下方,點擊「esp8266 by ESP8266 Community」那一欄,再點擊「Install」鈕。
Step7 點擊「關閉」鈕。
開啟範例程式
在自己編寫程式之前,我們先來執行內建的範例程式。這個程式會讓 NodeMCU 板載的 LED 閃爍。
Step1 開啟 Arduino IDE。
Step2 點擊「工具」>「板子」,選擇「NodeMCU 1.0 (ESP-12E Module)」。
Step3 點擊「序列埠」,選擇正確的埠。
Step4 點擊「檔案」>「範例」>「ESP8266」>「Blink」。
Step5 點擊「上傳」。
此時你可以看到 Arduino IDE 下方的訊息欄有陸續出現許多紅點與上傳的百分比,等待顯示上傳完畢,你就可以看到 NodeMCU 板子上面的 LED 閃爍。
圖片中 NodeMCU 下方那一個是電機驅動板,它可以驅動 2 只馬達。
程式說明
1. 我們可以看到 NodeMCU 板子上面的 LED 在閃爍,可是為什麼我們在程式中的腳位是寫著 "LED_BUILTIN" 呢? 這是因為 "LED_BUILTIN" 是 ESP8266 的關鍵字,它其實是等於 "D0",也就是 D0 腳。
接著我們來看看底下這張 NodeMCU 的腳位圖
由圖中我們可以看到 D0 就是 GPIO16,所以如果我們把程式中的「LED_BUILTIN」改成「GPIO16」,你猜 LED 還會正常閃爍嗎?
答案是否定的。正確的寫法如下:
int ledPin = 16; // GPIO16
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, LOW);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(2000);
}
2. 不知您是否有發現 LED 閃爍的頻率有點怪怪的,程式中明明寫著 LOW 的時間是 1秒,HIGH 的時間是 2 秒,可為什麼 LED 卻是亮 1 秒、暗 2 秒?那是因為 NodeMCU 板子在電路設計上就是 LOW 時才可以點亮該腳位的 LED。
3. D9 腳位可以點亮 ESP8266 板載 LED,但它也是輸出 LOW 時被點亮,HIGH 就熄滅。
Lua 編輯器
除了使用 Arduino IDE 來編寫程式之外,我們也可以在 ESPlorer 編輯器上用 Lua 語言來寫程式。
點擊右側網址下載並安裝 ESPlorer http://esp8266.ru/esplorer-latest/?f=ESPlorer.zip
用滑鼠右鍵點擊「ESPlorer.bat」。此時會出現命令列畫面,隨後就出現 ESPlorer IDE 視窗。
選擇正確的 COM 埠,並設定 UART 通訊的 Baudrate 為 9600。
點擊「Open」鈕
下方清單框內會出現連線訊息,
我的第一支 Lua 程式
NodeMCU 的特色之一,就是能使用 Lua 來撰寫程式。在 ESPlorer 畫面左側的編輯區,輸入第一個 Hello World 程式碼如下:
print("hello world")
完成後,按下 Send to ESP 按紐,即可將程式碼傳送至 NodeMCU 上執行。
相關連結
NodeMCU 官網 http://nodemcu.com/index_cn.html
NodeMCU 參考文件 https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn
Instruceables http://www.instructables.com/id/Programming-ESP8266-ESP-12E-NodeMCU-Using-Arduino-/
ESPlorer 編輯器 http://esp8266.ru/esplorer/
Lua 編譯器的用法 http://yhhuang1966.blogspot.tw/2015/07/lua.html
採購資訊
NodeMCU Lua Wifi 開發板基於 CP2102 http://goods.ruten.com.tw/item/show?21716910606278
NodeMCU Lua Wifi 開發板基於 CP2102 電機驅動板 http://goods.ruten.com.tw/item/show?21716910640647
NodeMCU Lua Wifi 開發板基於 CH340G http://goods.ruten.com.tw/item/show?21721367978126
NodeMCU Lua Wifi 開發板基於 CH340G 底板 http://goods.ruten.com.tw/item/show?21718168558530
您好:
回覆刪除想要跟你請問一下, 我在連結nodemcu時都有連線成功,
在傳輸send to esp時都會顯示busy,
請問有可能是什麼問題出錯了嗎?
另外想請教一下nodemcu都有支援lua的功能嗎?
謝謝
抱歉!請問一下
回覆刪除用CP2102 1.8.5版本 使用 wifi 程式,編輯有
UploadSpeed_112500_FlashSize_4M3M_... 的錯誤。但是 工具>序列阜能找到網域,也可以選擇,但無法傳輸。回到 COM 就能傳輸。能請問如何處理嗎?
謝謝