網頁最後修改時間:2022/03/17
兩輪小車的驅動與控制網路上應該有不少的資料可以參考 ? 既然如此,又寫一次有什麼不同之處 ?
WiFi 控制在網路上應該也有很多不少的資料可以參考 ? 既然如此,有什麼不同之處 ?
解釋如下:
-
ESP8266 + 直流馬達驅動板 + 兩輪小車 = WiFi控制小車
ESP8266 做為主控制器,負責 WiFi 通訊以及馬達的驅動 -
可以同時控制小車的行進速度與轉向
不是停下來原地旋轉轉向,而是一邊前進/後退,一邊轉向,像是開車一樣。 -
適用任何可以實現 TCP / UDP 協議的裝置進行小車的遠端控制
不局限於手機,只有設備有 WiFi 且可以使用 TCP / UDP 協議,就可以與小車進行通訊並且控制小車。
網頁說明使用 Andorid 手機 APP 自製 GUI 介面控制小車的所有動作。
這網頁是 ESP8266 WiFi 控制小車的電路佈線與馬達轉向測試的說明,初步確認佈線的電路與馬達轉向沒問題之後,再進入真正的 ESP8266 控制小車的程式碼撰寫。
*********************************************************************************
更多機器人(多足、智能小車)相關商品,請至分類賣場。
*********************************************************************************
進入這網頁之前,小車應該已經組裝好 ! 剩下的電路接線部分會在這個網頁中做說明。
【ESP-07 最小系統板焊接】
焊接之前請先看完這一節的說明之後再動手去做 !
ESP-07 最小系統板電路圖 |
在 WiFi 小車的套件中,ESP-07 除了配有一塊焊接底板、排針之外,還有一顆降壓晶片 (貼片) 一顆陶瓷電容與一顆電解電容。
在小車的電路當中,最後測試成功的電路中沒有焊接上降壓晶片,原因是這顆晶片不足以提供在 WiFi 控制小車電路所使用的電流量 (即便這顆晶片是直接給 ESP-07 晶片用),也就是不適用 ! 但是在一般的應用情況下,可以焊上降壓晶片,使用大於 3V3 的電壓給做最小系統板用,只要 ESP-07 可以正常動作即可 !
降壓晶片焊接示範 |
排針有兩種:單頭與雙頭長排針,建議焊接雙頭長排針。焊接時,可以想一下要焊底部還是上部,因為最小系統板插到麵包板時剛好在最旁邊,佈線都是在系統板的下面,所以上面是看不到線的。程式除錯、燒錄或是測試的時候會需要在系統板的上方接線,最好自己先測試看看哪中方是比較方便再和接。焊接的時候,請使用麵包板先將排針插好再放上最小系統底板焊接。
最小系統底板的排針焊接好之後,再焊接 ESP8266, ESP-07板。焊接時可以先在最邊緣的接腳先點上錫,利用這個點焊上 ESP-07 板再對位,對位沒問題之後再焊上對角接腳固定 ESP-07 板和接其他接腳。
陶瓷電容與電解電容則是建議選項,可以避免突然的壓降重置 ESP-07,可以增加系統的穩定性 ! 使用的方法:
-
陶瓷電容 (不分極性)
盡其可能的將其焊接在 ESP-07 的最下面兩隻接腳 ( <3.3V> 和 <GND> ),不是焊接底板喔 ! -
電解電容 (有分極性)
這個比較大顆,焊接可能有點困難 ! 因此只要將其插在麵包板上面最小系統板的 <VCC> 與 <GND> 兩隻接腳處即可。
陶瓷電容焊接處 |
焊接好的 ESP-07 最小系統板 |
我的焊接方式是焊在上部。但是這段時間的燒錄與測試上發現,其實焊接在底部會比較好,上面排針比較長,燒錄時與杜邦線可以接觸的比較好,下方雖然排針比較短,但是還是可以與麵包板固定而且也不會晃動,提供底板排針在焊接時的參考!
最後提醒一點:排針焊接好之後,必須盡其可能的將接點的焊錫量減少,避免在插上杜邦針時擋住。
【TB6612FNG 直流馬達驅動板焊接】
直流馬達驅動板的詳細說明,請參考 "TB6612FNG-智能小車, 自平衡小車(雙直流,單步進)馬達驅動板 - 微控制器、Arduino、樹莓派、...可用" 賣場網頁中的說明。
直流驅動板的焊接就不需要再多說了,就是排針的焊接。將排針插到麵包板上去,再將模組放上去焊接即可。
【降壓模組排針焊接】
降壓模組的詳細說明,請參考 "超級迷你(航模)降壓可調電源模組-DC 4.75 - 23V降壓DC 1.0 - 17V(Max 3A,連續1.8A)" 賣場網頁中的說明。
模組的四個接點要焊上排針(單邊或是雙邊等長排針都可以),不過模組的空位與麵包板會有一些偏位,但是因為這個模組要插到麵包板上,所以還是要先將排針插到麵包板上再將模組擺上焊接;即使有一點偏位也不會影響太多!
航模降壓模組焊接示意圖 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 輸出電壓調整:
焊接好排針的降壓模組還不能用 ! 先接上之後要使用在 WiFi 控制小車的輸入裝置(鋰電池、鹼性電池 ... 等),使用模組上面的小旋鈕調整輸出電壓在 DC 3.4 ~ 3.5 之間,對 ! 就是這樣 !
【馬達電源開關焊接與夾杜邦公針】
套件中有兩條多芯線,專門用來接外接電池正極與 TB6612FNG 直流馬達驅動模組 <VM> 接腳的。這兩條線必須先焊接到開關上面,並且用套件中的熱縮套管 (長度不要超過 1.5公分) 套再焊接處,並用熱風槍(或用打火機) 稍微烤一下讓它緊縮 (不可以一直維持在該處,要左右移動,不然會燒到其他地方)。
兩條線的另一頭,因為都是接到麵包板上,要做成杜邦公針的形式。
套件中附有多根杜邦公針與杜邦膠座。一般夾杜邦針需要專用工具 ! 但因為製作的數量不多,若手邊沒有這個專用工具,找個尖嘴鉗也可以!
杜邦針不管是公或是母 (應該是夾 pin 都是一樣的),針後面都分為兩段。最後面一段,必須夾到電線;中間那一段必須夾到電線芯,如下圖所示。加好之後就可以將杜邦公針插入膠座。
杜邦針夾線示意圖 |
完成之後的開關如下圖所示。
"一" 表示兩根杜邦針導通;"O" 表示斷開。
【小車馬達線夾杜邦公針】
如上一節最後夾杜邦針的描述,完成四根馬達的杜邦針夾持。
【電路佈線】
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 電路圖:
小車整體的電路圖如下面所示。下圖中的 ESP-07 最小系統板有兩層虛線,兩層之間的文字相同於電路板上的文字,而最外層虛線之外就是代表使用在這電路上的連線代號。
ESP8266, ESP-07 WiFi 控制小車電路圖 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 麵包板佈線:
套件中有三種不同顏色的單芯線,可用在電路板佈線!
整個電路沒有太多的外部元件,都是模組居多,接線很簡潔!一對一對接就可以了。
下面是麵包板上所有的佈線,佈線都是位置模組的下方居多,所以在擺放模組之前要先把現佈好。
麵包板上面畫了幾個黑線:3 ~ 10 是 ESP-07 最小系統板的擺放位置;12 ~ 19 是 TB6612FNG 直流馬達驅動板擺放的位置;25 ~ 29 是降壓模組擺放的位置。
其中,藍色代表 3.3V;紅線是外部輸入電源 (乾電池或鋰電池)。
麵包板佈線 |
電解電容分別插在 10 的位置,要注意正負極性。
電解電容放置的位置 |
最後將三個模組插到上面說的位置上去,就完成整個線路的佈線。綠線是輔助固定用的,避免線太長浮起來。
完成後的麵包板佈線與模組安裝 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 馬達線與開關線的安裝:
安裝方式看下圖的說明。馬達線兩兩成對,轉向可以先不用管,下面測試時轉向若不對再互相對換就可以改變轉向。
馬達線與開關線安裝 |
【線路測試】
所有的線路都準備好了之後,現在就要開始進行測試 !
測試的目的:
- 佈線是否正常 ?
- 確定馬達轉向與動作是否正常 ?
請照著下面步驟照順序完成。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 燒錄接線:
燒錄接線很簡單!
先準備一條兩頭都是母頭的杜邦線,作為跳線用。在未供電的情況之下,將這條線分別插在 ESP-07 的 <GPIO0> 接腳,另一頭接到麵包板上的 GND (需要排針)。
再準備一條 USB 轉 TTL 線 (先確定可以被電腦驅動),照著下面描述連接
- USB2TTL, <TX> -------------- <RXD>, EXP-07 最小系統板
- USB2TTL, <RX> -------------- <TXD>, EXP-07 最小系統板
- USB2TTL, <GND> -------------- 麵包板上的 GND 都可以
接線大概就像下圖這樣
外接電源燒錄接線 |
燒錄之前,先插上 USB 轉 TTL 線,隨後再插上外接電源就會看到 ESP-07 亮紅燈,藍燈閃一下滅掉,就可以準備開始燒錄程式了!
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 程式碼:
要燒錄程式碼之前,請先確認 Arduino IDE 已經預先安裝好支援 ESP8266 的相關套件 (ESP8266 入門學習套件支援 Arduino IDE 開發環境之安裝、使用說明與範例) 然後將下面程式載入到 Arduino IDE 中
#include <Streaming.h> // pins #define PWMA 12 #define PWMB 14 //---------------- #define LED 2 // ESP07 板載 LED, active low //---------------- #define AIN1 4 #define AIN2 5 #define BIN1 13 #define BIN2 15 // Motor 1, left side #define MOTOR_1_FORWARD digitalWrite(AIN1, HIGH); \ digitalWrite(AIN2, LOW) #define MOTOR_1_BACKWARD digitalWrite(AIN1, LOW); \ digitalWrite(AIN2, HIGH) #define MOTOR_1_STOP digitalWrite(AIN1, HIGH); \ digitalWrite(AIN2, HIGH) // Motor 2, right side #define MOTOR_2_FORWARD digitalWrite(BIN1, HIGH); \ digitalWrite(BIN2, LOW) #define MOTOR_2_BACKWARD digitalWrite(BIN1, LOW); \ digitalWrite(BIN2, HIGH) #define MOTOR_2_STOP digitalWrite(BIN1, HIGH); \ digitalWrite(BIN2, HIGH) void Motor_init() { // pins 初始化 pinMode( AIN1, OUTPUT ); pinMode( AIN2, OUTPUT ); pinMode( BIN1, OUTPUT ); pinMode( BIN2, OUTPUT ); pinMode( PWMA, OUTPUT ); pinMode( PWMB, OUTPUT ); pinMode( LED, OUTPUT ); digitalWrite( LED, HIGH ); MOTOR_1_STOP; MOTOR_2_STOP; } void setup() { delay(1000); Serial.begin( 115200); Motor_init(); Serial << "Start Motor Testing"; delay(1000); Serial << "\n3\n"; delay(1000); Serial << "2\n"; delay(1000); Serial << "1\n"; delay(1000); Serial << "Go\n\n"; } const int runTime = 1500; const int stopTime = 1000; void loop() { Serial << "Motor 1: Forward" << endl; MOTOR_1_FORWARD; digitalWrite( LED, LOW); digitalWrite( PWMA, HIGH ); delay(runTime); digitalWrite( PWMA, LOW ); digitalWrite( LED, HIGH ); MOTOR_1_STOP; delay(stopTime); Serial << "Motor 1: Backward" << endl; MOTOR_1_BACKWARD; digitalWrite( LED, LOW ); digitalWrite( PWMA, HIGH ); delay(runTime); digitalWrite( PWMA, LOW ); digitalWrite( LED, HIGH ); MOTOR_1_STOP; delay(stopTime); Serial << "Motor 2: Forward" << endl; MOTOR_2_FORWARD; digitalWrite( LED, LOW ); digitalWrite( PWMB, HIGH ); delay(runTime); digitalWrite( PWMB, LOW ); digitalWrite( LED, HIGH ); MOTOR_2_STOP; delay(stopTime); Serial << "Motor 2: Backward" << endl; MOTOR_2_BACKWARD; digitalWrite( LED, LOW ); digitalWrite( PWMB, HIGH ); delay(runTime); digitalWrite( PWMB, LOW ); digitalWrite( LED, HIGH ); MOTOR_2_STOP; delay(stopTime); Serial << "Motor: Moving Forward" << endl; MOTOR_1_FORWARD; MOTOR_2_FORWARD; digitalWrite( LED, LOW ); digitalWrite( PWMA, HIGH ); digitalWrite( PWMB, HIGH ); delay(runTime); digitalWrite( PWMA, LOW ); digitalWrite( PWMB, LOW ); digitalWrite( LED, HIGH ); MOTOR_1_STOP; MOTOR_2_STOP; delay(stopTime); Serial << "Motor: Moving Backward" << endl; MOTOR_1_BACKWARD; MOTOR_2_BACKWARD; digitalWrite( LED, LOW ); digitalWrite( PWMA, HIGH ); digitalWrite( PWMB, HIGH ); delay(runTime); digitalWrite( PWMA, LOW ); digitalWrite( PWMB, LOW ); digitalWrite( LED, HIGH ); MOTOR_1_STOP; MOTOR_2_STOP; delay(stopTime); }
在上傳韌體之前,有一個地方必須在 Arduino 修改一下 ! 因為 ESP-07 所使用的 FLASH ROM 大小是 1MBytes,所以 Tools/Flash Size: 要改成 1M (512K SPIFFS) 其他的跟上面提供的連結網頁中的設定一樣。
按下編譯上傳按鈕。完成上傳之後,拔掉外接電源電線和 <GPIO0> 的接線。打開 Serial Monitor,然後再次插上外接電源線,就會看到下面的輸出訊息。
壓克力圓弧形向前:左手邊是 Motor 1,右手邊是 Motor 2。馬達旋轉會先單顆進行網前轉動再往後轉動;最後是兩顆馬達同時向前轉與向後轉。這些動作對應於小車是前進還是後退,所有的動作都必須與 Serial Monitor 輸出一致,如果動作有所不同就是馬達線接反了,自己再更換一下 !
【結論】
到現在為止,程式碼跟一般撰寫 Arduino 板子一樣沒什麼不同,只不過板子換成 ESP8266, ESP07,但是結果是一樣的 ! 如果有疑問的話,可以使用相同的程式碼換成其他 Arduino 板子試試,輸出和動作也是一樣的!
接下來的一篇,將加入 WiFi 功能,分別使用 TCP 與 UDP 通訊協議,通過外部具有無線裝置的設備,控制小車的行進動作。
.
.
<<部落格相關文章>>
- {04}兩輪智能小車-ESP32 PS3/PS4 遊戲手把控制遙控車
- {03}兩輪智能小車-控制端軟體介紹與測試
- {02}兩輪智能小車-BLE(Bluetooth LE,低功耗藍牙)模組的設定
- {01}兩輪智能小車-V1.0 DIY 套件組裝建議說明
- {00}兩輪智能小車-V1.0 DIY 套件 Arduino UNO / ESP32 BLE 遙控車、PID 循跡車展示影片
- { EP8266 WiFi 控制小車 } [ 1/3 ] - 智能避障循跡小車底盤構件組裝建議說明
- { EP8266 WiFi 控制小車 } [ 2/3 ] - 電路佈線與馬達轉向測試
- { EP8266 WiFi 控制小車 } [ 3/3 ] - 小車路試
- eZ430 運動手錶控制樹莓派小車 ( 開迴路控制 )
.
.
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !