基本介紹
- 中文名:節點微處理器單元
- 外文名: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)
使用結果: