NodeMcu Lua V3 + CP2102

NodeMcu 是由esp8266加上usb模組組合而成,

USB除了CH340,另外就是CP2102,兩者功能是一樣的,

在MAC上兩款都需要安裝驅動。


CP2102驅動

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers


一樣使用arduino的編譯軟體,透過usb接頭就可以進行燒錄。


arduino 設定

開啟arduino選單-preference-設定-額外的開發板管理員網址

https://arduino.esp8266.com/stable/package_esp8266com_index.json



工具-開發板-開發板管理員

搜尋esp8266 之後選安裝


工具-開發板-NodeMCU 1.0(ESP-12E Module)


這時候設定一下連接的序列埠,看自己的板子接到哪個孔。


檔案-範例-Esp8266 wifi -wifiscan


按下上傳等待編譯完成,就可以從序列埠監控視窗看到附近的wifi基地台名稱。


不過這過程可能也會有問題,我遇到了下面兩個問題,就順便記錄一下。



問題1

未知的板子nodemcuv2(平台esp8266,套件esp8266)


這問題應該是之前已經有裝過esp8266 community舊版導致,建議先移除

重新裝一次,另外就是到路徑

使用者⁩ ▸ 名稱⁩ ▸ ⁨資源庫⁩ ▸ ⁨Arduino15⁩ ▸ ⁨packages⁩ ▸ ⁨esp8266⁩ ▸ ⁨hardware⁩

如果有兩個資料夾(版本號為名稱),請刪除舊版


也可以參考文件說明


問題2

fork/exec /Users/arduinoproject/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3: no such file or directory


這個問題是MAC上的路徑不同引起,最簡單的方法,就是更新到新版的

esp8266 community,或者是安裝新版的python


環境設定好就可以進入編譯


目前帶有wifi模組的連接方式,控制的流程為

  1. Access Point Mode 
  2. 手機或電腦連接透過Wifi連接,設置自家的網路連接帳號與密碼
  3. 轉為Station Mode,連接自家網路
  4. 透過頁面做控制
  5. 重置按鍵,清除資料,並初始化回步驟1

主要方式目前還是以上面的流程為主,除非不連接網路的方式,

就會單純在Access Point Mode做控制,像是wifi遙控車之類的。


因為網路上比較少見這類型的範例,所以寫了一個大概的流程

範例 下載


EEPROM 初始化,用來存放要設定的SSID名稱跟密碼。

輸出控制NodeMcu上面的兩個LED燈。

輸入按鍵使用NodeMcu上FLASH按鍵,短按重啟,長按作為重置EEPROM使用

readdata()將EEPROM的資料讀出。

如果內部有資料就轉為station mode,如果沒有就設置為AP mode



在設置成AP模式之前,先掃描一次附近的wifi ssid名稱。



主迴圈的部分

server.handleClient() 用來處理連接

readbutton() 重置用的按鍵,當長按時清除EEPROM內的資料




透過手機連接wifi名稱為ESP8266AP,密碼預設為12345678

,開啟網頁輸入預設的網址192.168.4.1,下面是網頁顯示的狀態,

會顯示附近可以掃描出的SSID,接著輸入要連接的SSID名稱

並且輸入密碼,按下SAVE。




網址會轉跳到action_page並且保存ssid跟password到

EEPROM中。


當點選Done之後 會轉跳到原本的頁面,

正常來說設置完成應該自動重新啟動才對,這邊採用的是按鈕重啟

,直接按一下NodeMcu上的Flash按鍵重啟。


重啟就會進入station mode,連接到設置的網路,

IP會顯示在arduino的序列阜視窗,開啟網頁輸入IP



頁面有兩個按鈕,按一下就可以讓NodeMcu上的LED燈亮起。




當要重新配置網路時,長按FLASH按鍵,就會重新再到AP mode。

整個wifi設置大致上的流程就是這樣,算是比內建範例再進階一點的

操作。



HTML跟JAVA script的部分,大致上是頁面規劃與傳值的處理,


所以就不多講解。








沒有留言:

張貼留言