一入坑便停不下來。。。
還挺有意思的哈,233,,,,
資料雜,本身一個一個去找確實浪費了很多時間,並且大多還都是英文的,須要硬着頭皮看。
此次實踐入門,更是對英語的重要確信無疑。Github必需要玩的6了,多好的東西啊,就那麼放到你的眼前就由於你的不懂英文把人家拒之門外,可悲可憐可嘆~
另外還對API文檔也感悟頗深,多麼詳細的資料。多麼好的教程,惋惜本身之前就是不會用。哎~ >html
不扯淡了,分享本身探索歷程但願你能夠少走彎路。node
NodeMCU自帶LUA的解釋器,因此能夠用LUA語言給其編寫控制程序,LUA是一個輕量級的腳本語言,用C語言編寫,編譯後解釋器大小僅僅100多K。LUA旨在針對內存有很大限制的嵌入式系統。NodeMCU還提供交互命令行環境,比Arduino的編程調試環境友好python
NodeMCU還能夠支持Arduino的IDE對其編程,簡介參見這篇
Blog:https://lifeinplaintextblog.wordpress.com/nodemcu-arduino-ide-2/
首先你要知道它是一個腳本語言,若是你有學過腳本語言好比JS、python的話,直接看API文檔就差很少了。git
忽然有那麼點感悟,腳本語言彷佛大同小異,雖然我仍是個渣渣。腳本語言真的好寫好用,好玩,哈哈哈哈哈~~~github
固然了呢,若是你不曾學過任何腳本語言的話這個固然也能夠做爲你的第一門腳本語言來學習,入門我的感受也是至關快的,不會了再記得查API文檔就好了。web
(在NodeMCU的學習更新中還會再開一個專題來記錄下Lua)編程
NodeMCU的兩種開發方式一種是AT命令,
另外一種就是基於Lua的開發了。(目前本身是這麼理解的)json
因此呢,入門NodeMCU第一步固然是入門Lua了。小程序
像 Arduino 同樣操做硬件 IO 提供硬件的高級接口,能夠將應用開發者從繁複的硬件配置、寄存器操做中解放出來。websocket
用交互式 Lua 腳本,像 Arduino 同樣編寫硬件代碼!
用 Nodejs 相似語法寫網絡應用 事件驅動型 API 極大的方便了用戶進行網絡應用開發,使用相似 Nodejs 的方式編寫網絡代碼,並運行於 5mm*5mm 大小的 MCU 之上,加快物聯網開發進度。
超低成本的 WIFI 模塊 用於快速原型的開發板,集成了售價低於 10 人民幣 WIFI 芯片 ESP8266,提供性價比最高的物聯網應用開發平臺。
基於樂鑫 ESP8266 的 NodeMCU 開發板,具備 GPIO、PWM、I2C、1-Wire、ADC 等功能,結合 NodeMCU 固件爲開發提供最快速的途徑。
這個開發板的名字叫 NodeMCU DevKit 別問我爲啥,樂鑫爸爸起的好名字。
NodeMCU —> 節點微控制單元
ESP8266也只是一款芯片而已,ESP 12E是用ESP8266作的WiFi模塊
刷固件
怎麼樣?固件!!
牛逼不?哈哈哈,,,
其實呢?否則,當你習慣它的叫法就行了。不就是個底層嘛,有啥了不得嘞!:)tao
什麼叫固件?
就是ESP8266芯片內部預先寫入的程序,能夠簡單記憶爲:固定在芯片裏的軟件叫固件。
固件是基礎程序,本事再大的芯片也須要固件的支持才能運行高級程序。 固件是硬件的命根子。刷固件的軟件這裏取:
https://github.com/nodemcu/nodemcu-flasher
-注意下載的系統位數要對應
而後呢,開始咱們的表演:
選擇現有的固件:
固件去哪搞嘞?
你能夠本身寫SDK,固然對於咱們新手通常上不了那種高度。
巧了,人家有個自定義模塊固件!!
https://nodemcu-build.com/
選擇master
自定義模塊提供了各類各樣的模塊,包括
傳感器,LED驅動,通訊協議等等,選擇本身感興趣的模塊。 默認已經選擇了一些模塊。
提交後,過一會就會收到郵件。 郵件裏面有兩個bin文件的下載地址,一個是float,一個是integer。
float的比較大,下載那個任君選擇,區別是帶不帶float。
我選擇了
adc,bit,,coap,crypto,enduser_setup,file,
rtcfifo,rtcmem,rtctime,sjson,sntp,tmr,uar,
twebsocket,wifi,ws2812
雜項(不選也沒啥事)
對了關於上面的郵箱(不支持QQ,能夠申請微軟的OutLook)
注意輸入兩次,而且第二次不能複製,完了以後稍等片刻,就能夠收到編譯好的bin文件直接用就行。
若是採用SDK開發的話,直接能夠用eclipse編譯的Bin文件就行
打開刷固件的軟件,「Config」下選擇你要的bin 文件
而後「Operation」中點擊Flash就能夠開始刷了
更新:
不知道啥時候這個固件上面加了新選項功能:
關於那個第二個的 ‘Debug On’卻是對於調試挺好用的!
第三個如今沒試過,歡迎在下面佔坑評論!
下載:https://esp8266.ru/esplorer/
通常自動選擇COM口,若是沒有選擇再手動來一下就OK。
編寫第一個小程序「HelloWorld」
tmr.alarm(0, 1000, tmr.ALARM_AUTO, function() print("Hello NodeMCU!\n") end )
tmr.alarm(1,2,3,4)
4個參數的含義分別爲定時器×、定時間ms、模式、回調函數
模式有三個可供選擇:
tmr.ALARM_AUTO –>自動重置
tmr.ALARM_SINGLE–>單次觸發
tmr.ALARM_SEMI –>手動重置
今天遇到幾個問題記錄一下:
也許你也會遇到:
①固件燒完以後,怎麼下程序都下不進去的問題解決
其實也不是程序的問題,更不是固件的問題。而是波特率的選擇問題,查閱的網上的說法,沒有一個標準的,實踐也沒有發現固定的,也許超出本身的知識體系吧。通常而言,所謂的通常從雲編譯下載的固件,波特率選擇115200
而我在實驗楊大神的這個實驗的時候發現,115200不行,必須改成9600才行。
傳送門:http://www.cnblogs.com/yangfengwu/p/6243619.html
更新:
隨着理解的加深,這裏對固件稍寫不進去的狀況進行我的認知層面的簡單分析。
首先呢,要知道程序的下載是經過串口的,固然你若是以前的程序是有關操做串口的話,若是模塊一上電,就開始執行咱們以前的程序,咱們新寫的程序也得經過串口燒錄,那麼結果可想而知了!怎麼辦呢?
莫急。。。。。。
解決方案:
1. 屢次重複燒寫固件
無奈中的無奈之舉,效果真而也並非很是好,這種辦法能不能治好看你運氣了!
2.刷寫LUA固件和AT交叉進行
3. 進行地址改寫(這個方法我以爲應該是最實用的!!!)
怎麼個改寫地址法呢?看圖,一切都明白了!
就是想法把原來的lua操做串口的程序給破壞掉,而咱們的程序又是在FLASH中,那麼屢次改變燒錄地址,不就頗有可能給刷掉嗎?!!!
像這種狀況怎麼避免呢?
簡單,你想啊,爲了留有時間下載程序,哦不,應該講清除你以前的程序,你徹底能夠用定時器進行定時,等多久後再執行你如今的程序啊。
在這期間,能夠瘋狂地進行
file.remove("init.lua");
②部分固件的更新致使語句有所變化
後來也是楊大神幫忙解決的,很是感謝。
具體的修改楊大神也在它的博客寫了。
傳送門:http://www.cnblogs.com/yangfengwu/p/6407727.html
記錄一下兩次的代碼
old: wifi.setmode(wifi.STATIONAP) wifi.sta.config("ACLAY","wange903") wifi.sta.connect() new: wifi.setmode(wifi.STATION) APConfig={} APConfig.ssid="ACLAY" APConfig.pwd="wange903" wifi.sta.config(APConfig)