這篇文章來源于DevicePlus.com英語網站的翻譯稿。
在本教程中,將對低成本簡易駐車輔助傳感器的安裝和使用進行說明。當駕駛員停車入位時,本裝置使用兩只HC-SR04超聲波傳感器和四只壓電蜂鳴器多次提醒駕駛員本車后面及周圍汽車的接近情況,同時并發出嗶嗶聲警報。我們還將解決其他問題,如汽車駕駛室內的防水和電線鋪設等。
硬件
Arduino UNO (1x)
HC-SR04 超聲波傳感器 (2x)
Vcc 線 (長約 2m)
地線 (長約 2m)
觸發線 (長約 1m)
回聲線 (長約 1m)
壓電式蜂鳴器 (2x)
USB 車載適配器
Aduino 塑膠外殼/外盒
軟件
Arduino IDE
Github
工具
鉗子
第1步:設置系統
首先請準備好下文所述電子設備,以便在車內實際安裝汽車傳感器前能對系統進行測試。
圖1:需準備好的硬件 — Arduino、塑膠外殼、超聲波傳感器、壓電式蜂鳴器、電線和電源適配器
在本項目中,我們僅在車輛后部使用兩只傳感器:一只位于保險杠的左側,另一只位于保險杠的右側。大多數新車的輔助警報系統最多可配備六只傳感器,從而可實現更精確的定位。
HC-SR04 傳感器帶有以下四根引腳:
VCC (電源5V)
觸發器
信號回路
接地
上述模塊功能的更詳細說明,可參見上一教程:帶部件和傳感器的Arduino — 超聲波傳感器的用法
在下圖2中列出了將汽車傳感器和蜂鳴器連接到Arduino的圖表。
圖2:Arduino、超聲波傳感器和壓電蜂鳴器的接線圖
第2步:對Arduino編程
以下為編寫一個程序的基本指南。一般而言,任何微控制器固件都包括以下四個基本元素:
整體思路理念和數據庫的定義
設置功能
回路功能
其他功能
與軟件開發不同,對微控制器進行編程時,通常對代碼的大小進行適當限制。My Arduino Uno軟件配有一個內存為32 KB的Atmega328。該配置足以滿足本次應用的需要。
#define trigPin1 13
#define echoPin1 12
#define buzzerPin1 6
#define trigPin2 11
#define echoPin2 10
#define buzzerPin2 7
void setup() {
Serial.begin (9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(buzzerPin1, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(buzzerPin2, OUTPUT);
pinMode(2, OUTPUT); // We will use the pin 2 as ground. We need to make sure it
digitalWrite(2,LOW); // is in LOW position so it works as a ground.
}
通過函數pinMode()和digitalWrite()可對微控制器引腳進行簡易外圍配置。本次應用中使用pinMode()函數來設置指定引腳的電流流向。可用作電流或信號的輸入或輸出。設置流向后,引腳僅可按該流向工作。可使用digitalWrite()函數將指定的數字引腳設置為HIGH(高)或LOW(低)。本例中將引腳2設置為另一個新增接地,用來連接其中一個器件的GND引腳。
void loop() {
calculateDistance(echoPin1, trigPin1,buzzerPin1); //Get the distance for the left
calculateDistance(echoPin2, trigPin2,buzzerPin2); //Get the distance for the right
}
為簡單起見,特定義了一個函數(calculateDistance(信號回路、觸發器、蜂鳴器),該函數在其中一只傳感器中優先使用,同時也可在另一只傳感器中使用。
//**********************************************************************************
//***Function to measure time of return of an ultrasound echo.************
//***Set up for distances shorter than 2 m, which is enough for parking**
//***Beyond that HC-SR04 is not reliable ***********************************
//**********************************************************************************
void calculateDistance(int echo, int trigger, int buzzer){
long duration, distance;
digitalWrite(trigger, LOW); // Set the trigger pin of the HC-SR04 to LOW
delayMicroseconds(2); // Wait a little to stabilize the sensor
digitalWrite(trigger, HIGH); // Set the trigger HIGH and send a pulse
delayMicroseconds(10); // Wait for 10us until the wave comes back
digitalWrite(trigger, LOW); // Set the trigger pin of the HC-SR04 to LOW again
duration = pulseIn(echo, HIGH); // Arduino’s built in function pulseIn reads a pulse
// (either HIGH or LOW) on a pin. Returns the length of
// the pulse in microseconds or 0 if no complete pulse
// was received within the timeout.
distance = (duration/2) / 29.1; // The speed of sound is 340 m/s or 29 microseconds
// per centimeter.
// The ping travels out and back, so to find the distance
// if the object we take half of the distance travelled.
if (distance >= 200 || distance <= 0){
Serial.println("Out of range"); // Use some feedback in the serial port for
// debugging
}
else {
tone(buzzer,2000,25); // Arduino’s built in function tone generates a square
// wave of the specified frequency (2000Hz) for the
// indication time (25 ms)
delay(distance*10);// The delay gives feedback beeping faster the closer
// we get to an object
Serial.print(distance);// Use some feedback in the serial port for
// debugging
Serial.println(" cm");
}
}
應用時首先激活一根引腳(觸發器),經過一段時間后從另一個引腳(信號反饋)傳回的反饋信息才能到達該引腳。針對這一時段,可以進行一些假設并計算信號反饋回路的相應距離(例如聲速為340米/秒或29微秒/厘米)。可將該距離用作一個參數,用來確定蜂鳴器所發出的2000赫茲的嘟嘟聲的頻率(我通過反復試驗才構想出這一方法,您可隨意將其改為您喜歡的音調)。
同時使用了幾個內置函數,如tone (引腳, 頻率, 持續時間), digitalWrite (引腳), delayMicroseconds(持續時間), 和 pulseIn(引腳, 脈沖峰值)。
第3步:制定適當的裝配方案
找到汽車后部的防水區域。將傳感器安裝于該區域。在試驗車里有幾個可選位置:
尾燈罩
靠近汽車牌照燈
后保險杠上
若將汽車傳感器放置于尾燈罩或后保險杠內,則必須鉆孔以便超聲波發射和接收。但鉆孔也可能帶來不利影響,如進水(淋雨、濺水等),因此鉆孔必須十分考究。由于超聲波無法透過密封劑,因此用密封劑作為防水材料不可取。而且很難根據傳感器來確定孔的位置,從而難以避免衍射效應。
圖3:配置超聲波傳感器時帶來的衍射問題 /?bta304
欲了解衍射波的更多信息,請單擊此處。
基于上述原因,特將汽車傳感器置于車牌附近,該區域中后備箱門/把手下方的間隙足夠大,從而避免了鉆孔的麻煩。在該位置僅需稍微調整傳感器的方向,使之對準汽車的一角即可。
圖4:找到傳感器的合適位置
第4步:在車內配置硬件
找到Arduino和Piezo蜂鳴器所在位置。在該步驟中,需拆下車門并找到一個安全的空位,用來連接電子設備。
以下步驟十分有趣!通過車內面板就能看出您汽車的全新尺寸。車內空間很大,還可以加裝很多設備(也可用于將來裝修!)。還有許多內部電線為車輛安全元件供電。切勿觸摸任何重要的電線。
您必須非常小心車內零件。
通過車牌固定孔將汽車外部的超聲波傳感器連接到Arduino上。這些固定孔必須做得夠大,以確保所有八根電線都能順利穿過,并預留支撐螺釘的空間。
Piezo蜂鳴器采用簡單的雙面膠帶固定。
圖5:在牌照右側裝配HC-SR04
圖6:使用雙面膠帶固定其中一個Piezo蜂鳴器
圖7:模塊在行李箱門上所在的位置(車內視圖)
圖8:模塊的位置(后視圖)
<
如何使用Blynk創建自己的物聯網鬧鐘
采用ROHM傳感器套件的DIY Arduino家庭安防系統 第2部分- Cayenne設置
相關文章
在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車!(第3篇?最終篇)
在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車!(第2篇)
在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車!(第1篇)
通過Arduino使用ESP-WROOM-32(環境搭建和配置-LED閃爍篇)
通過Arduino使用ESP-WROOM-32(Bluetooth-BLE連接篇)
六種可以用于擴展物聯網應用的DIY項目
使用Arduino的五大DIY無人機項目
從電動滑板到無人機:5個DIY項目來提升您的電子技能
Arduino車庫開啟器和通用無線電接口
更多信息可以來這里獲取==>>電子技術應用-AET<<