跳到:
ESP32 教學 1/55 - SunFounder ESP32 IoT 學習套件軟件同 Arduino IDE 簡介 ESP32 教學 2/55 - 咩係 ESP32、相機擴展板、開箱 SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 3/55 - 電阻、LED、麵包板項目:Hello LED -ESP32 IoT 學習套件 ESP32 教學 4/55 - 數據類型 定義變量 Int、bool、char、序列監視器 - ESP32 IoT 套件 ESP32 教學 5/55 - LED 漸變,控制 LED 亮度 - ESP32 物聯網學習套件 ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 7/55 - 使用陣列配合 ESP32 Arduino 程式設計 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件 ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件 ESP32 教學 11/55 - 使用 LCD1602 LCD2004 同 ESP32 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 12/55 - WS2812 RGB 燈帶 4 項目,配合 SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符 ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 17/55 - 使用 ESP32 同電位器控制伺服馬達 - ESP32 IoT 學習套件 ESP32 教學 18/55 - 使用 ESP32 偵測傾斜 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 22/55 - 用 LED Arduino 感受光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 25/55 - 使用 NTC 同 LCD 測量溫度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 27/55 - 用超聲波感測器量度距離 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 28/55 - DHT11 溫度感測器配合 LCD | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 29/55 - 用 ESP32 讀取紅外線遙控器按鍵| SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 30/55 - 使用 Adafruit IO 服務透過 MQTT 喺網頁上控制伺服摩打 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 31/55 - 專案 LED 燈帶配合避障功能 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教程 32/55 - 汽车倒车距离警告(带LCD同蜂鸣器)| SunFounder嘅物联网学习套件 ESP32 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔 ESP32 教學 34/55 - 用 RGB LED 同旋鈕整顏色漸變 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 35/55 - 植物監測器,土壤、溫度同光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 36/55 - 猜數字遊戲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 37/55 - 使用藍牙應用程式配合 ESP32 BLE | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 38/55 - 用手機控制 RGB LED | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 39/55 - 用 ESP32 做藍牙音樂播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 40/55 - 讀寫 Micro SD 卡 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 41/55 - 使用 Micro SD 卡嘅 MP3 播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 42/55 - 用相機影相並儲存喺 Micro SD CAM-1 | SunFounder 嘅 ESP32 套件 ESP32 教程 43/55 - 物聯網互聯網天氣站 | SunFounder 嘅 ESP32 物聯網學習套件 ESP32 教學 44/55 - ESP32 相機網絡伺服器透過 WiFi 傳輸視頻串流 CAM-2 | SunFounder 嘅 ESP32 套件 ESP32 教學 45/55 - 自訂串流伺服器配合 LED 控制 CAM-3 l SunFounder 嘅 ESP32 學習套件 ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 48/55 - 遠程溫度監控同 LED 控制 MQTT | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 49/55 - 透過 Adafruit IoT 控制直流摩打 | SunFounder 嘅 ESP32 套件 ESP32 教學 50/55 - 喺世界任何地方控制 RGB LED | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32 教學 52/55 - WS2812 CheerLights MQTT 全球同步連 LCD | SunFounder ESP32 IoT 套件 ESP32 教學 53/55 - 建立 LCD 網絡時鐘 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 54/55 - 透過 Wi-Fi 設定 WS2812 LED 燈條顏色 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 55/55 - 點樣量度 12V、24V 或者 100V 直流電壓 | SunFounder 嘅 ESP32 IoT 學習套件
ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件
ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件
用 ESP32 控制直流馬達睇落好似好難,但只要有啱嘅零件同理解,其實係好易處理。喺呢個教學入面,我哋會整一個項目,用 L293D 馬達驅動器嚟控制直流馬達嘅速度同方向。到最後,你會有一個可以令馬達向前向後轉,同時調整速度嘅完整裝置。如果想睇視覺參考,記得睇吓條片(喺片入面 00:00)。
ESP32-15_L293D_motor_schematic
硬件講解
呢個項目嘅主要零件包括 ESP32 微控制器同 L293D 馬達驅動器。ESP32 係一個功能強大嘅微控制器,內置 Wi-Fi 同藍牙功能,好適合用喺 IoT 應用。佢可以透過 GPIO 引腳控制各種硬件零件,包括馬達。L293D 係一個雙 H 橋馬達驅動器,可以控制兩個直流馬達嘅方向同速度。每個 H 橋都可以透過反轉施加喺馬達端子嘅電壓極性,令馬達向任何一個方向轉。另外,L293D 每個通道可以處理高達 600 mA 嘅電流,好適合細型到中型嘅馬達。
L293D-Motor-Driver-IC
數據手冊細節
製造商
德州儀器
零件編號
L293D
邏輯/IO 電壓
2.5 – 7 V
供電電壓
4.5 – 36 V
輸出電流(每通道)
600 mA(典型值)
峰值電流(每通道)
1.2 A(最大值)
PWM 頻率指引
20 kHz(典型值)
輸入邏輯閾值
0.8 V(高),2.0 V(低)
電壓降 / RDS(on) / 飽和
1.5 V(最大值)
熱限制
150 °C(最大值)
封裝
16-DIP
備註 / 變體
四重半 H 驅動器
喺高電流應用時,確保有適當嘅散熱。
用電容去耦電源,防止電壓尖峰。
接線時要小心,防止極性接反。
用 PWM 做速度控制,避免過熱。
檢查馬達嘅額定電壓,防止損壞。
接線指示
ESP32-15_L293D_motor_wiring
要接駁 ESP32 同 L293D 馬達驅動器,首先連接電源。將 L293D 嘅第 16 腳連接到電源嘅正極端子,第 4 腳連接到地。跟住連接馬達:一個端子接到 L293D 嘅第 3 腳,另一個接到第 6 腳。至於控制訊號,將 ESP32 嘅 GPIO 第 13 腳連接到 L293D 嘅第 2 腳,GPIO 第 14 腳連接到第 7 腳。最後,確保將 ESP32 嘅接地連接到 L293D 嘅接地,以確保有共同參考點。如果條片提到其他接線方法(喺片入面 05:00),記得跟住顯示嘅特定改動。
程式碼範例同講解
控制馬達嘅程式碼包括定義馬達嘅引腳同設定佢哋嘅模式。以下係 setup 函數嘅節錄:
#define motor1A 13
#define motor2A 14
void setup() {
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
}
喺呢段程式碼入面,我哋將馬達控制引腳定義為常數,並喺 setup 函數入面將佢哋設定為輸出。呢個好重要,因為佢準備好啲引腳嚟控制馬達。loop 函數就係控制馬達行為嘅地方。以下係 loop 嘅一個關鍵部分:
void loop() {
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
delay(2000);
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, HIGH);
delay(2000);
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(3000);
}
呢段程式碼令馬達向一個方向轉 2 秒,然後反轉方向再轉 2 秒,最後停低 3 秒。呢個 loop 會無限重複,令你可以持續控制。如果想睇更詳細嘅見解同完整程式碼,請參考文章下面載入嘅完整程式。
示範 / 預期效果
成功接線同上載程式碼之後,你應該會見到馬達向一個方向轉 2 秒,然後轉方向再轉 2 秒,最後停低 3 秒。如果馬達冇好似預期咁反應,檢查吓常見問題,例如極性接反或者引腳連接錯誤(喺片入面 08:00)。呢個設定提供咗一個直接嘅方法,用 ESP32 同 L293D 控制直流馬達嘅速度同方向。
影片時間戳
00:00 開始
2:01 直流摩打介紹
6:14 L293D 摩打驅動器
9:17 項目文件
11:04 接線講解
14:41 用ESP32控制Arduino摩打
17:10 為ESP32板選擇Arduino端口
18:52 項目示範
22:08 用ESP32控制摩打速度
26:22 速度控制示範
28:01 速度和方向控制Arduino代碼
29:05 速度和方向示範
圖片
L293D-Motor-Driver-IC
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
代碼
814-ESP32 Tutorial 15/55- Arduino code for L293D motor control
語言: C++
檢視程式碼
#define motor1A 13
#define motor2A 14
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin as an output.
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
// Rotate
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
delay(2000);
// Rotate in the opposite direction
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, HIGH);
delay(2000);
// Stop
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(3000);
}