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腳位表

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

注意事項

  1. 插入ESP-12E模塊時,請注意天線方向與擴展板方向一致;
  2. 利用短接模組,可以同時給控制板和電機供電。

參考網頁:http://nodemcu-motor.doit.am/

ESP_motor_Shield

讓輪子動起吧

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以上.