基本介紹
- 中文名:節點微處理器單元
- 外文名:NodeMCU
- 開發者:ESP8266開源社區
- 作業系統:XTOS
簡介,軟體屬性,編譯固件,下載,常見測試程式,
簡介
NodeMCU,是一個開源的物聯網平台。 它使用Lua腳本語言編程。該平台基於eLua開源項目,底層使用ESP8266 sdk 0.9.5版本。該平台使用了很多開源項目, 例如 lua-cjson, spiffs. NodeMCU包含了可以運行在esp8266Wi-FiSoC晶片之上的固件,以及基於ESP-12模組的硬體。
軟體屬性
該平台基於eLua開源項目,底層使用ESP8266 sdk 0.9.5版本。該平台使用了很多開源項目, 例如 lua-cjson, spiffs. NodeMCU包含了可以運行在esp8266Wi-FiSoC晶片之上的固件,以及基於ESP-12模組的硬體。
編譯固件
本地編譯:
由於nodemcu是基於esp8266開發的固件,所以,在編譯之前需要構建esp8266開發環境,我們可以從源碼構建編譯環境或者使用已經編譯好的二進制檔案,二進制檔案可以從github下載,然後將對於的二進制資料夾加入linux環境變數PATH。
雲編譯:
雲編譯可以線上裁剪固件所包含的一些模組,並做一些其他設定。
下載
下載lua腳本到MCU
- 使用nodemcu Studio
使用雲服務下載代碼
雲服務主要使用mcunode雲服務連線,並線上開發,不同於本地下載,雲服務下載主要依賴於用戶的瀏覽器,不需要用戶連線usb線就可以遠程下載,並且沒有本地距離的限制。
首先使用本地串口下載兩個lua檔案,然後我們就可以扔掉連線pc的線了。然後訪問mcunode輸入自己定義的id就可以連線了。
然後就可以使用本地一樣的檔案下載和控制服務了。
常見測試程式
NodeMCU實現遠程控制LED燈
NodeMCU實現遠程控制LED燈代碼如下:
wifi.setmode(wifi.STATION) wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD") print(wifi.sta.getip()) led1 = 3 led2 = 4 gpio.mode(led1, gpio.OUTPUT) gpio.mode(led2, gpio.OUTPUT) srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(client,request) local buf = ""; local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP"); if(method == nil)then _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP"); end local _GET = {} if (vars ~= nil)then for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do _GET[k] = v end end buf = buf.."<h1> ESP8266 Web Server</h1>"; buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a> <a href=\"?pin=OFF1\"><button>OFF</button></a></p>"; buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a> <a href=\"?pin=OFF2\"><button>OFF</button></a></p>"; local _on,_off = "","" if(_GET.pin == "ON1")then gpio.write(led1, gpio.HIGH); elseif(_GET.pin == "OFF1")then gpio.write(led1, gpio.LOW); elseif(_GET.pin == "ON2")then gpio.write(led2, gpio.HIGH); elseif(_GET.pin == "OFF2")then gpio.write(led2, gpio.LOW); end client:send(buf); client:close(); collectgarbage(); end) end)
使用結果: