避障小車

L298N 驅動 Arduino 小車

超音波距離感測器 HC-SR04

本專題結合 Arduino 小車和超音波距離感測器 (HC-SR04),做一台能夠避開障礙物的車子。

有關組裝一台 L298N 驅動的 Arduino 車子,請參閱本網站專題: Arduino 自走車組裝與測試

先看看成果影片:

材料和接線圖

Arduino 自走車或智能車套裝組件 x1

L298N 馬達驅動模組 x1

Arduino UNO x1

距離感測器超音波 (HC-SR04) x1

小麵包板 x1

9V 電池 x1

9V 電池帽扣 x1

杜邦線 一公一母 數條

電線數條

直流馬達 連接 L298N OUT1, OUT2, OUT3, OUT4 。如直流馬達電線太長,可纏繞電線在車體上面,以免電線外露在車體外,車子行動時卡到東西。

L298N IN1, IN2, IN3, IN4 分別連接 Arduino pin 11, 10, 6, 5 。

L298N 5V 連到麵包板,再由麵包板接回 Arduino 5V 。如此,Arduino 在沒有電腦 USB 連接的情況下,其電源由L298N 來提供。

L298N GND 連接 Arduino GND 。如此,L298N 和 Arduino 兩個電路板,就能在同一個 GND 基準下,計算電位。

電池扣紅線 9V 連接 L298N +12V

電池扣黑線連接 L298N GND

距離感測器超音波 (HC-SR04) 插在小麵包板上:

VCC 接 Arduino 5V

GND 接 Arduino GND

Trig 接 Arduino pin 12

Echo 接 Arduino pin 13

接線完成後,如下圖 :

上傳程式

複製下列程式於 Arduino IDE中,點擊 ”工具”,確認開發板是 Arduino/Genuino Uno, 序列埠 Port COM已接上,再點擊 ”上傳”。

當車子前進的時候,如果左右輪旋轉方向不對,有以下兩種方法可以調整,任選1種 :

1. 調整程式中的指令:5,6對調,或者10,11對調。

const int IN1 = 10;

const int IN2 = 11;

const int IN3 = 6;

const int IN4 = 5;

2. L298N 模組上的插線 : IN1,IN2 對調,或者IN3,IN4對調。

如此,車子就能按照指令,前進的時候前進,後退的時候後退,左轉的時候左轉,右轉的時候右轉。

本程式的設計是,當車子和障礙物之間的距離小於 25 cm 時,車子停止 0.1秒,後退 0.5秒,並右轉 1.0秒。

當距離大於所設定的最短距離 25cm 時,車子保持前進。

創客點子

如左圖所示,車子左前端和右前端,再加一個超音波距離感測器,一共三個距離感測器。修改程式,車子左端感測器偵測到障礙物時,車子應右轉。反之,車子右端有障礙物時,車子應左轉。如此,車子在前進時,偵測前端障礙物就沒有死角。