這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
在本教程中,將對低成本簡易駐車輔助傳感器的安裝和使用進(jìn)行說明。當(dāng)駕駛員停車入位時,本裝置使用兩只HC-SR04超聲波傳感器和四只壓電蜂鳴器多次提醒駕駛員本車后面及周圍汽車的接近情況,同時并發(fā)出嗶嗶聲警報。我們還將解決其他問題,如汽車駕駛室內(nèi)的防水和電線鋪設(shè)等。
硬件
Arduino UNO (1x)
HC-SR04 超聲波傳感器 (2x)
Vcc 線 (長約 2m)
地線 (長約 2m)
觸發(fā)線 (長約 1m)
回聲線 (長約 1m)
壓電式蜂鳴器 (2x)
USB 車載適配器
Aduino 塑膠外殼/外盒
軟件
Arduino IDE
Github
工具
鉗子
第1步:設(shè)置系統(tǒng)
首先請準(zhǔn)備好下文所述電子設(shè)備,以便在車內(nèi)實際安裝汽車傳感器前能對系統(tǒng)進(jìn)行測試。
圖1:需準(zhǔn)備好的硬件 — Arduino、塑膠外殼、超聲波傳感器、壓電式蜂鳴器、電線和電源適配器
在本項目中,我們僅在車輛后部使用兩只傳感器:一只位于保險杠的左側(cè),另一只位于保險杠的右側(cè)。大多數(shù)新車的輔助警報系統(tǒng)最多可配備六只傳感器,從而可實現(xiàn)更精確的定位。
HC-SR04 傳感器帶有以下四根引腳:
VCC (電源5V)
觸發(fā)器
信號回路
接地
上述模塊功能的更詳細(xì)說明,可參見上一教程:帶部件和傳感器的Arduino — 超聲波傳感器的用法
在下圖2中列出了將汽車傳感器和蜂鳴器連接到Arduino的圖表。
圖2:Arduino、超聲波傳感器和壓電蜂鳴器的接線圖
第2步:對Arduino編程
以下為編寫一個程序的基本指南。一般而言,任何微控制器固件都包括以下四個基本元素:
整體思路理念和數(shù)據(jù)庫的定義
設(shè)置功能
回路功能
其他功能
與軟件開發(fā)不同,對微控制器進(jìn)行編程時,通常對代碼的大小進(jìn)行適當(dāng)限制。My Arduino Uno軟件配有一個內(nèi)存為32 KB的Atmega328。該配置足以滿足本次應(yīng)用的需要。
#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. }
通過函數(shù)pinMode()和digitalWrite()可對微控制器引腳進(jìn)行簡易外圍配置。本次應(yīng)用中使用pinMode()函數(shù)來設(shè)置指定引腳的電流流向。可用作電流或信號的輸入或輸出。設(shè)置流向后,引腳僅可按該流向工作。可使用digitalWrite()函數(shù)將指定的數(shù)字引腳設(shè)置為HIGH(高)或LOW(低)。本例中將引腳2設(shè)置為另一個新增接地,用來連接其中一個器件的GND引腳。
void loop() { calculateDistance(echoPin1, trigPin1,buzzerPin1); //Get the distance for the left calculateDistance(echoPin2, trigPin2,buzzerPin2); //Get the distance for the right }
為簡單起見,特定義了一個函數(shù)(calculateDistance(信號回路、觸發(fā)器、蜂鳴器),該函數(shù)在其中一只傳感器中優(yōu)先使用,同時也可在另一只傳感器中使用。
//********************************************************************************** //***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"); } }
應(yīng)用時首先激活一根引腳(觸發(fā)器),經(jīng)過一段時間后從另一個引腳(信號反饋)傳回的反饋信息才能到達(dá)該引腳。針對這一時段,可以進(jìn)行一些假設(shè)并計算信號反饋回路的相應(yīng)距離(例如聲速為340米/秒或29微秒/厘米)。可將該距離用作一個參數(shù),用來確定蜂鳴器所發(fā)出的2000赫茲的嘟嘟聲的頻率(我通過反復(fù)試驗才構(gòu)想出這一方法,您可隨意將其改為您喜歡的音調(diào))。
同時使用了幾個內(nèi)置函數(shù),如tone (引腳, 頻率, 持續(xù)時間), digitalWrite (引腳), delayMicroseconds(持續(xù)時間), 和 pulseIn(引腳, 脈沖峰值).
第3步:制定適當(dāng)?shù)难b配方案
找到汽車后部的防水區(qū)域。將傳感器安裝于該區(qū)域。在試驗車?yán)镉袔讉€可選位置:
尾燈罩
靠近汽車牌照燈
后保險杠上
若將汽車傳感器放置于尾燈罩或后保險杠內(nèi),則必須鉆孔以便超聲波發(fā)射和接收。但鉆孔也可能帶來不利影響,如進(jìn)水(淋雨、濺水等),因此鉆孔必須十分考究。由于超聲波無法透過密封劑,因此用密封劑作為防水材料不可取。而且很難根據(jù)傳感器來確定孔的位置,從而難以避免衍射效應(yīng)。
圖3:配置超聲波傳感器時帶來的衍射問題 /?bta304
欲了解衍射波的更多信息,請單擊此處。
基于上述原因,特將汽車傳感器置于車牌附近,該區(qū)域中后備箱門/把手下方的間隙足夠大,從而避免了鉆孔的麻煩。在該位置僅需稍微調(diào)整傳感器的方向,使之對準(zhǔn)汽車的一角即可。
圖4:找到傳感器的合適位置
第4步:在車內(nèi)配置硬件
找到Arduino和Piezo蜂鳴器所在位置。在該步驟中,需拆下車門并找到一個安全的空位,用來連接電子設(shè)備。
以下步驟十分有趣!通過車內(nèi)面板就能看出您汽車的全新尺寸。車內(nèi)空間很大,還可以加裝很多設(shè)備(也可用于將來裝修!)。還有許多內(nèi)部電線為車輛安全元件供電。切勿觸摸任何重要的電線。
您必須非常小心車內(nèi)零件。
通過車牌固定孔將汽車外部的超聲波傳感器連接到Arduino上。這些固定孔必須做得夠大,以確保所有八根電線都能順利穿過,并預(yù)留支撐螺釘?shù)目臻g。
Piezo蜂鳴器采用簡單的雙面膠帶固定。
圖5:在牌照右側(cè)裝配HC-SR04
圖6:使用雙面膠帶固定其中一個Piezo蜂鳴器
圖7:模塊在行李箱門上所在的位置(車內(nèi)視圖)
圖8:模塊的位置(后視圖)
<
如何使用Blynk創(chuàng)建自己的物聯(lián)網(wǎng)鬧鐘
采用ROHM傳感器套件的DIY Arduino家庭安防系統(tǒng) 第2部分- Cayenne設(shè)置
相關(guān)文章
在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車!(第3篇?最終篇)
在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車!(第2篇)
在最后一刻停下來!用Arduino和距離傳感器制作小雞賽車!(第1篇)
通過Arduino使用ESP-WROOM-32(環(huán)境搭建和配置-LED閃爍篇)
通過Arduino使用ESP-WROOM-32(Bluetooth-BLE連接篇)
六種可以用于擴(kuò)展物聯(lián)網(wǎng)應(yīng)用的DIY項目
使用Arduino的五大DIY無人機(jī)項目
從電動滑板到無人機(jī):5個DIY項目來提升您的電子技能
Arduino車庫開啟器和通用無線電接口
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2551文章
51177瀏覽量
754275 -
Arduino
+關(guān)注
關(guān)注
188文章
6471瀏覽量
187243 -
汽車
+關(guān)注
關(guān)注
13文章
3531瀏覽量
37385
發(fā)布評論請先 登錄
相關(guān)推薦
評論