主要內容 晶元介紹 開發環境 編程舉例 晶元介紹 什麼是NodeMCU? NodeMCU,是一個開源的物聯網平臺。 它使用Lua腳本語言編程。該平臺基於eLua 開源項目,底層使用ESP8266 sdk 0.9.5版本。該平臺使用了很多開源項目, 例如 lua-cjson, spiffs. Node ...
主要內容
晶元介紹
開發環境
編程舉例
晶元介紹
什麼是NodeMCU?
NodeMCU,是一個開源的物聯網平臺。 它使用Lua腳本語言編程。該平臺基於eLua 開源項目,底層使用ESP8266 sdk 0.9.5版本。該平臺使用了很多開源項目, 例如 lua-cjson, spiffs. NodeMCU包含了可以運行在 esp8266 Wi-Fi SoC晶元之上的固件,以及基於ESP-12模組的硬體。
我組項目主要使用上海樂鑫ESP8266的CH340版本的NodeMCU(ESP-12F)。詳細參數如下:
核心模組:ESP8266
MCU:Xtensa L106
RAM:50K
Flash:512K
D1~D10:10 GPIO, 每個都能配置為 PWM, I2C, 1-wire
串口配置:CH340驅動。(使用VMware時在主機中安裝驅動之後,將設備連接到VMware中,虛擬機——可移動設備))
認識NodeMCU的數字引腳:
註意感測器(外接元件)的允許工作電壓,必須和引腳匹配。
其中有幾個引腳需要特別處理:
(GPI02)D4引腳:啟動時不能為低電平。(當和其他串口連接起來後,可能導致啟動時低電平,所以必須再次調試,列出問題列表綜合解決)。
(GPI105)D8引腳:運行時一直保持低電平狀態。不可用該引腳來讀取開關狀態或I2C通訊。
(GPI00)D3引腳:運行時一直保持高電平狀態。否則,ESP8266進入程式上傳工作模式無法正常工作。最好的操作便是無需操作,因為NodeMCU內置電路可以確保該引腳在工作時連接高電平而在上傳程式時連接低電平。
註意引腳電壓電流限制:
NodeMCU引腳的輸入輸出電壓限制是3.3V。
向引腳施加3.6V以上的電壓就有可能對晶元電路造成損壞。
這些引腳的最大輸出電流的12mA。
同時也不能接入太弱的電壓,否則會造成感測器讀取失敗。
上拉電阻/下拉電阻參數:
-
GPIO 0-15引腳都配有內置上拉電阻。
-
GPIO16引腳配有內置下拉電阻。
GPIO(general porpose intput output):通用引腳輸入輸出埠,通過GPIO引腳與外部設備連接起來,實現外部通信、控制和數據採集。上圖的紫色標記即為NodeMCU的GPIO引腳(16個)。
首先討論下拉電阻,也就是GPIO16:
分析下拉電阻的電路圖,由一個信號輸入端、兩個固定電阻、一個按鍵式開關、一個5V電源組成。GND表示接地。
在按鈕(S2)沒有按下的時候,輸入端只和地線聯通。此時輸入端電壓在零點位。
在按鈕按下的時候,5V的電平傳遞到等壓點位置上去,分流到輸入埠(R1<<R2),形成電流,具備高電平狀態。
在此過程中考慮不穩定性:由於各種現實情況的微擾(靜電、感應),所以實際上零電位傳遞的電壓可能更高。
然後討論上拉電阻,也就是GPIO 0-15,上拉電阻電路由一個輸入埠、兩個固定電阻、一個按鍵式開關、一個5V電源組成,但由於電路連接方式不同,它和上拉電阻還是有很大的區別。
未按下按鈕時,5V電壓直接傳遞到輸入端;
若按鈕按下,那麼由於分流,輸入埠將變為零電位。
所以可以說下拉電阻和上拉電阻的作用剛好相反,它們都是控制輸入埠的電位的電路。
模擬輸入 A0
回看原來引腳圖最左上角的橙色標記引腳,它是一個僅有模擬信號輸入的埠,且這種模擬信號只能是電壓,允許電壓0-1V(並不能去換算成其他物理量下單位,例如電流),對應輸出0-1024。
通訊-串列通訊
獲取外部設備信息必須有通訊方式,通訊方式一般分為兩種,即串列通訊和並行通訊。
此處先討論NodeMCU提供的串列通訊方式。NodeMCU向我們提供了兩組串列通訊的埠(出口)。看圖,GPIO8(U1RXD)對應GPIO2(U1TXD),RX(U0RXD)對應TX(U0TXD)。
串列通訊必須交叉接線,舉個慄子,R需要接到T上,T則需要接到R上,不能R接R,T接T。
串列通訊埠直接和設備聯通收發數據,所以,這兩組埠在下載的時候是不允許被占用的,否則會導致下載程式失敗。當然,也可以USB下載完程式之後,RX、TX串口進行通訊。
註意,GPIO8引腳用於開發板的Flash寄存器的控制,所以它只能發送數據,相當於RX功能作廢,擁有的是TX功能。換句話說,它是單向傳輸的。所以說GPIO2和GPIO8的傳輸功能不全,RX和TX那組才是完整的。
那麼假設我做項目的時候,串列埠不夠怎麼辦?如上所述,下載程式的時候我不能占用RX/TX埠吧,但我又不想等它下完了又一次把外設線重新接上這兩個埠,實際開發中細節調試很多,接來接去很麻煩。而且,真正涉及到工廠設備的時候這種情況將變得更加複雜。但我又不能連另一組,因為是擺設......
所以,NodeMCU為我們提供了軟串口的解決方案。支持軟串口的硬體中,我們選擇任意兩個埠就可以實現串口通訊。這一部分內容將在之後的課程講解。