NOdeMCU入門
開啓ArduBlock ESP
Blink
來個最簡單的程式Blink吧,請注意,nodeMCU的腳位要看正面的腳位名稱。要加上D,背面的GPIO#,切勿搞混。
閃爍的LED是在天線(D0)附近的那顆。
Devkit 0.9與1.0腳位定義有不同,ESP-12E多了6支引腳。
NodeMcu Devkit 1.0 = ESP-12E + CP2102
NodeMcu Devkit 0.9 = ESP-12 + CH340G
記得存檔
需要定時存檔,以免檔機後,造成檔案的損毀
NodeMcu接腳圖
NodeMcu腳位表
motor shield介紹
基於ESP-12E開發的電機驅動擴展板。
特色:
- ESP12 DEV KIT開發板擴展模組
- 引出ESP12 DEV KIT所有功能引腳:SPI、UART、GPIO、AI以及3.3V電源接口
- 擴展兩路電機驅動,可直接驅動兩路電機
- 板載電源開關
L293D
- 電機電源範圍:4.5V~36V;
- 控制電源範圍:4.5V~9V;
- 電機電源、控制電源分離;在實驗中,可通過短路塊合併,將VIN和VM短接,同時給電機和控制板供電。
產品技術規格
電源輸入:
- 電機電源(VM):4.5V~36V,可單獨供電;
- 控制電源(VIN):4.5V~9V(10VMAX),可單獨供電;
- 模塊提供短路子(短路VM和VIN),可以方便地使用一路電源(必須4.5V~9V)同時完成電機的驅動與控制;
- 邏輯工作電流Iss:≦60mA(Vi=L),≦22mA(Vi=H);
- 驅動部分工作電流Io:≦1.2A;
- 最大耗散功率:4W(T=90℃)
- 控制信號輸入電平:高電平:2.3V≦VIH≦VIN;低電平:-0.3V≦VIL≦1.5V
- 工作溫度:-25℃~+125℃
驅動形式:雙路大功率H橋驅動
- ESP12E Dev Kit控制端口:D1,D3(A電機);D2,D4(B電機)
模塊重量:約20g
注意事項
- 插入ESP-12E模塊時,請注意天線方向與擴展板方向一致;
- 利用短接模組,可以同時給控制板和電機供電。
參考網頁:http://nodemcu-motor.doit.am/
讓輪子動起吧
motorA:(左輪)
- Dir_A:D3(旋轉方向)
- Pwm_A:D1(動力大小)D1的選項,比較後面。要下拉一下。
注意 :D1沒禁用了,所以後文中的D8就改回D1
motorB:(右輪)
- Dir_B:D4(旋轉方向)
- Pwm_B:D2(動力大小)
請問上面兩個程式碼的差別。
先走往前直線吧
再來轉個彎吧
一輪停止,一輪前進的轉法
- 停止輪為中心點的轉法
一輪前進,一輪後退的轉法
- 以車子為中心點的轉法
簡易的HTTP伺服器
設定AP
如右圖先把NodeMcu當作AP登入, 其SSID可以看車子上面的號碼.
上傳後
使用串列視窗查看,可以看到是否成為AP,同時可以看到它的IP
接下來,開始利用Page web Editor編排網頁內容
使用手機登入AP
這個AP的SSID,是剛才所設定SSID的名稱
所使用IP為192.168.4.1
接下來就可以使用這個按鈕來控制LED是否開啓
建立數位型變數(HIGH/LO,1/0)
那來試看看如何改寫成馬達控制
可以試著控制兩輪
利用一個Switch來控制馬達是動作
一鍵決定前進或停止
可以利用下面的流程圖來看,利用條件式的true/false來分別進行前進與停止的程式碼。
代誌沒您想得這麼容易
所以,我們可以開始一鍵控制小車前進或後退了嗎?
我們可以用二個IF/else來控制嗎?
當然是不行啊!
因為如果執行前進的程式碼時,在下一段的if/else的程式碼中, else有一個STOP的程式碼,會讓令小車停止,根本不會執行前進的部分。所以要用下一個程式結構來解決這個問題。
巢式IF/else
一層一層包下去的概念,利用else區塊,來進行"分流"的動作,而不會像上面程式結構所造成的錯誤影響。
副程式的概念
程式開始變大之後,為了閱讀容易起見,所以,我們要試著簡化程式碼。
注意:switch的名稱不可以和副程式相同.
Button和Switch的差別
如果換成了button的話,他們的動作差別在??
所以有二種不同的按鈕和開關動作。
建立整數/數位變數
如何控制速度
如右圖,可以利用滑軸來決定車子的動力大小。
但要很快地控制車子的停止,就要花點時間滑動滑軸。所以,我們能否利用上面的IF/else的方式,來進行控制車子的快慢呢?
變數(整數)的建立
所以,可以把滑桿的數值,設定一個叫pwmA的整數變數,我們接下來就可以利用這個整數變數進行控制。
利用IF/else的方式來改變pwmA的數值大小,即可快速進行車子的速度改變。
來上網吧
函式的建立
開啟串列視窗
確認是否有連上網,並分配到IP
WIFI遙控器
再來做個簡單的WIFI遙控器吧,可以把nodeMCU當作網頁伺服器,來遙控LED.
用瀏覽器來進行控制
上傳之後,開啓瀏覽器,依開啟串列視窗所示鍵入網址:
點擊按鈕,可以控制LED.
監控溫度
除了控制LED,也是監視溫度喔!
紅外線尋跡感測模組
有類比和數位的差別
類比:接到AD ,而不是A0
數位:
檢查車子零件是否正常
檢查超音波:
寫一個笨蛋程式確定超音波是否能正常工作。
如果超音波感測器無法正常工作,可以先檢查下超音波接線,一共有四個腳位:
Vcc,Trig,Echo,GND
Vcc-->接中間腳位
Trig-->7號腳位,靠控制板的位置.
Echo-->8號腳位,靠控制板的位置.
GND-->接外面腳位
檢查馬達
1.寫"笨蛋"程式 ,來測一下馬達會不會動
如果馬達還不動,可能就是馬達或馬達驅動板有問題了.
所以結合上述兩個笨蛋程式,確定超音波和馬達是否正常.
下面這個程式,就是我們每次一上課時,用來檢測車子的超音波和馬達是否能正常工作的程式。
接下來就是檢查電池是否有電,可以先用電表,選取適合的檔位,請選擇直流電壓檔20V
用探棒量取電池盒紅黑線所連接的端子台
正常來說電壓應該在7V上下,如果低6.4V,表示電池可能沒電了,需要進行更換電池。
那個別量測時,可以確認一下單一電池電壓需在3.2V以上.