看 NodeMCU官網 紹所描述的如下圖所示,使用方法 超簡單!!!
===寫在前面===
建議:
1沒有任何程式基礎的別玩這模組,最好有網頁編寫能力(前台 (HTML, JAVAScript)/後台 (Node.js) 都要)
2這模組還算新,各種支援/資源都很欠缺;現有的開發工具很難使用,操作上需要耐心
==========
模塊大小示意
左邊為 50元新台幣 右邊為 1元人民幣
硬體程式更新
在板子買來時,應該都預裝了較舊的系統,可以下載較新的來使用
https://github.com/nodemcu/nodemcu-firmware/releases/tag/0.9.6-dev_20150704
更新程式步驟可以參考 http://bbs.nodemcu.com/t/nodemcu/22 中的
準備工作
開始 的 一二步 (第三步用 telnet 進行測試的工作可以先不管)
這一段很重要,必須先學會;因為在後面的操作嘗試過程中,有可能發生因程式錯誤導致模組不斷自我重啟,這時簡單的處理方式就是重新下載硬體程式 (應該也有別的方法,但是沒找到)
軟體操作環境 (NodeMCU Studio 2015)
在 http://bbs.nodemcu.com/t/nodemcu-studio-ban-ben-geng-xin-wei-build20150111-update-to-version-build20150111/64 下載最新的軟體操作環境
操作環境介紹
共分五個區域
紅框-選單 (通常只用來 新增 lua檔案)
橙色框-對模組進行操作 (下載所選到程式Download 執行所選到程式Execute 模組中的檔案瀏覽Explorer)
綠色框-電腦中的程式列表(此列表為電腦中程式,與模組中的不見得相同)
藍色框-左邊選到的程式內容會在此區域顯示,可以在這邊做編輯修改,修改後的內容會直接存檔在電腦中
紫色框-訊息區;像終端機的環境,模塊所返回的訊息會顯示在這邊,也可以直接在這邊下操作命令(注意:這區的操作需要用鍵盤輸入,不可用貼上)
電腦一開始連接上模組時,訊息區會先跑一段亂碼出來,這沒有辦法避免,之後會顯示硬體程式的版本,若有燒錄了 init.lua 程式,則會自動執行
橙色框的 Explorer ,可打開如下對話框,
按右邊的 Load 可顯示 NodeMCU 中的檔案,於淡紫色框中
注意事項寫在前面:
板子使用 microUSB 5V供電,超過此電壓可能會
在ESP8266上面的 GPIO 於 NodeMCU 程式上被重新對應編號,使用時須注意要按照 NodeMCU 的編號來進行操作
板子所提供的接腳角功能如下圖(左下側方塊表示顏色所對應的 pin 腳功能)
其中 D0 連接板子上的 紅色LED (反向動作,寫 gpio.HIGH 為暗)
10bits ADC 一個
GPIO 十一個 (除D0外,D1 ~ D10 均可用於 PWM 輸出)
timer 七個 ( 0 ~ 6 )
程式編輯
使用的語言是 Lua,不過目前只支援其中一些方法(可能是為了精簡以便在空間很迷你的模塊上實現)
部分可使用的API介紹 http://bbs.nodemcu.com/t/nodemcu-api/28 (完整的可能須自行到 https://github.com/nodemcu/nodemcu-firmware 下載原始碼來看有加入那些功能)
舉例
system:
node.restart() 重啟模塊
h = node.heap() 返回系統剩餘的程式儲存空間(byte)
timer:
tmr.alarm(id, interval, repeat, function do())
example:
tmr.alarm(0, 5000, 1, function()
adv = adc.read(0) -- read 10bits ad value
end)
說明:使用timer0, 每5秒讀取一次ADC的值存放到adv中
gpio:
gpio.mode(pin, mode, pullup)
mode 值:gpio.OUTPUT or gpio.INPUT or gpio.INT(中斷模式)
pullup 值: gpio.PULLUP or gpio.FLOAT, 預設為 gpio.FLOAT
gpio.write(pin, mode)
mode 值: gpio.HIGH or gpio.LOW
status = gpio.read(pin)
pin值:0 ~ 11 (D0 ~ D11)
wifi:
wifi.setmode(mode) 設定WiFi的使用模式
可以使用 Station,AP 或 (?) 模式 (wifi.STATION, wifi.SOFTAP, wifi.STATIONAP)
wifi.sta.config("ssid","password") 設定連接時要用的 SSID, PASSWORD
wifi.sta.connect() 透過設定好的 SSID, PASSWORD 連接上AP
wifi.sta.disconnect() 斷開連接
ip, nm, gw = wifi.sta.getip() 取得 ip位址,遮罩,預設閘道
子模組 wifi.ap:
除 wifi.ap.config 用法要注意引述為 tuple 型別,其他可參考 sta 模塊
cfg={}
cfg.ssid="SSID"
cfg.pwd="password"
net:
常量 net.TCP, net.UDP
net.createServer(type, timeout) 創建網頁伺服器. timeout為(sec)
example:
sr = net.createServer(net.TCP)
sr:listen(80,function(conn)
conn:on("receive", function(conn, payload) print(payload) end)
conn:send("hello world")
end)
說明:建立網路伺服器, 監聽 prot: 80, 當收到 receive 請求時, 在 訊息區 印出 client 傳來的內容, 並在 client 端網頁上顯示 hello world
其他
HTML 超文件標示語言(英文:HyperText Markup Language,HTML)是為「網頁建立和其它可在網頁瀏覽器中看到的資訊」設計的一種標示語言。
JavaScript 一種直譯式程式語言,是一種動態型別、基於原型的語言,內建支援類別。它的直譯器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於用戶端的腳本語言。
Node.js 是一個開放原始碼、跨平台的、用於伺服器端和網路應用的執行環境。Node.js應用用JavaScript語言寫成。
HTTP協議參考:
http://www.kafan.cn/edu/48002124.html HTTP协议详解
用戶連接網頁時,會送出兩次網頁請求 (當作伺服器的 NodeMCU 於 receive 事件會觸發兩次)
網頁連接時客戶端會送出請求 要讀取用於網頁抬頭的圖案 favicon.ico , 目前不知道有什麼方法可以下載圖檔到 NodeMCU 中
一個網頁需要有 HTML HEAD BODY 標記
HTML 中的 input 方法所得的值,會在跟伺服器提出請求時加在資料尾端一起送出(中間隔一空行)
奮戰一周的網頁截圖
作者已經移除這則留言。
回覆刪除