資料介紹
描述
介紹
“我——大人,這——不可能找到那艘船。這不在我們的范圍內(nèi)?!?– 努特槍雷
我們最近搬進了新房子,一如既往,首先要解決的問題是在車庫中找到最佳的停車位。理想情況下,我們希望將汽車停在盡可能靠近車庫門的地方,從而在汽車前部和車庫后墻之間留出最大的自由空間。
我和一些朋友討論了各種解決方案,普遍認為舊的“繩子上的球”技術(shù)是解決這個問題的首選方法。對于那些沒有見過這種古老做法的人來說,它涉及用一根懸掛在車庫天花板上的繩子懸掛一個網(wǎng)球。一旦汽車被移動到最佳位置,繩子的長度就會永久調(diào)整,使網(wǎng)球剛好接觸到汽車的前擋風(fēng)玻璃。因此,無論何時您開車進入車庫,只要網(wǎng)球碰到擋風(fēng)玻璃,您就可以停下來。確實古風(fēng)……
那根本不行。我心想,“自我,我們需要用小工具來解決這個問題?!?我們不能讓網(wǎng)球掛在繩子上,破壞車庫的原始秩序。
我決定使用超聲波換能器,它基本上是一種基于聲音的測距儀。我最初考慮的是激光/光源,但研究讓我相信這對近距離的汽車來說可能會有一些麻煩。不過對我來說幸運的是,基于聲音的超聲波換能器可以解決問題。
為了節(jié)省時間,因為我需要快速組裝設(shè)備,所以我選擇了一個預(yù)制的超聲波換能器電路,而不是自己構(gòu)建一個。我可能會在某天為練習(xí)構(gòu)建自己的,但最近時間有點短。
第1部分
電路相當(dāng)簡單,它有一個+5V 引腳、一個接地引腳和一個信號引腳。您只需在信號引腳上生成一個脈沖,然后測量返回脈沖的脈沖寬度即可確定距離。這個設(shè)備顯然適用于 2cm 到 3m 的范圍,這很好地滿足了我的需要。
我決定將范圍顯示為一系列超亮 LED。我在電路中內(nèi)置了 6 個 LED,5 個紅色和 1 個綠色,排列為 Red Red Red Red Green Red。我本可以使用多色 LED 來做到這一點,但我更喜歡這種方法。
這就是 LED 響應(yīng)汽車范圍的方式,隨著汽車越來越近,更多的紅燈亮起。一旦汽車處于最佳范圍內(nèi),紅燈熄滅,綠燈亮起。如果汽車開得太遠(離墻太近),則綠燈熄滅,最后的紅燈亮起。
_ _ _ _ _ _ = Car greater than 3m from wall.
r _ _ _ _ _ = Car 3m from wall.
r r _ _ _ _ = Car 2m from wall.
r r r _ _ _ = Car 1.5m from wall.
r r r r _ _ = Car 1m from wall.
_ _ _ _ g _ = Car 45cm from wall.
_ _ _ _ _ r = Car 35cm from wall.
這是我構(gòu)建的電路。

我使用標(biāo)準的 Arduino Uno Rev 3 開發(fā)板,因為我不需要網(wǎng)絡(luò)功能。
第2部分
這是基本的控制代碼。我使代碼保持簡單,以僅解決此功能所需的邏輯。我構(gòu)建的實際設(shè)備使用 RF 接收器從我的車庫門控制器電路中獲取車庫門狀態(tài)消息。我這樣做是為了在車庫門關(guān)閉時關(guān)閉測距儀電路,然后在車庫門打開時打開電路。
/***************************************************************/
/* */
/* Garage Controller Range v2.0 */
/* */
/***************************************************************/
#include
#define SF(x) String(F(x))
#define CF(x) String(F(x)).c_str()
#define RANGE_MIN 35
#define RANGE_MAX 39
#define RANGE_1 49
#define RANGE_2 64
#define RANGE_3 84
#define RANGE_4 200
int iPinRed1 = 3;
int iPinRed2 = 4;
int iPinRed3 = 5;
int iPinRed4 = 6;
int iPinGreen1 = 7;
int iPinRed5 = 8;
int iPinRange = 9;
/***************************************************************/
/* Function: setup */
/***************************************************************/
void setup()
{
Serial.begin(9600);
Serial.println(SF("setup()"));
pinMode(iPinRed1, OUTPUT);
pinMode(iPinRed2, OUTPUT);
pinMode(iPinRed3, OUTPUT);
pinMode(iPinRed4, OUTPUT);
pinMode(iPinGreen1, OUTPUT);
pinMode(iPinRed5, OUTPUT);
pinMode(iPinRange, OUTPUT);
}
/***************************************************************/
/* Function: loop */
/***************************************************************/
void loop()
{
long lDuration = 0, lCM = 0;
// 2 Microsecond Clear + 5 Microsecond Pulse
pinMode(iPinRange, OUTPUT);
digitalWrite(iPinRange, LOW);
delayMicroseconds(2);
digitalWrite(iPinRange, HIGH);
delayMicroseconds(5);
digitalWrite(iPinRange, LOW);
// Get Return Pulse
pinMode(iPinRange, INPUT);
lDuration = pulseIn(iPinRange, HIGH);
lCM = ConvertMSToCM(lDuration);
Serial.println("Distance: " + String(lCM) + " cm");
// Too Close
if (lCM < RANGE_MIN)
{
digitalWrite(iPinRed1, LOW);
digitalWrite(iPinRed2, LOW);
digitalWrite(iPinRed3, LOW);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, HIGH);
}
// Perfect
else if (lCM >= RANGE_MIN & lCM < RANGE_MAX)
{
digitalWrite(iPinRed1, LOW);
digitalWrite(iPinRed2, LOW);
digitalWrite(iPinRed3, LOW);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, HIGH);
digitalWrite(iPinRed5, LOW);
}
// Range 1
else if (lCM >= RANGE_MAX & lCM < RANGE_1)
{
digitalWrite(iPinRed1, HIGH);
digitalWrite(iPinRed2, HIGH);
digitalWrite(iPinRed3, HIGH);
digitalWrite(iPinRed4, HIGH);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, LOW);
}
// Range 2
else if (lCM >= RANGE_1 & lCM < RANGE_2)
{
digitalWrite(iPinRed1, HIGH);
digitalWrite(iPinRed2, HIGH);
digitalWrite(iPinRed3, HIGH);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, LOW);
}
// Range 3
else if (lCM >= RANGE_2 & lCM < RANGE_3)
{
digitalWrite(iPinRed1, HIGH);
digitalWrite(iPinRed2, HIGH);
digitalWrite(iPinRed3, LOW);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, LOW);
}
// Range 4
else if (lCM >= RANGE_3 & lCM < RANGE_4)
{
digitalWrite(iPinRed1, HIGH);
digitalWrite(iPinRed2, LOW);
digitalWrite(iPinRed3, LOW);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, LOW);
}
// Range 5
else if (lCM >= RANGE_4)
{
digitalWrite(iPinRed1, LOW);
digitalWrite(iPinRed2, LOW);
digitalWrite(iPinRed3, LOW);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, LOW);
}
else
{
digitalWrite(iPinRed1, LOW);
digitalWrite(iPinRed2, LOW);
digitalWrite(iPinRed3, LOW);
digitalWrite(iPinRed4, LOW);
digitalWrite(iPinGreen1, LOW);
digitalWrite(iPinRed5, LOW);
}
delay(50);
}
/***************************************************************/
/* Function: ConvertMSToCM */
/***************************************************************/
long ConvertMSToCM(long lMicroSeconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled. - Arduino Site
return lMicroSeconds / 29 / 2;
}
上面的代碼有一個問題。雖然它有效,但我們假設(shè)汽車停在離墻 34.5 厘米的地方。測距儀可以在將汽車位置記錄為 34 厘米和 35 厘米之間擺動。這意味著您會看到 LED 在綠色(完美)和紅色(太接近)之間波動。有幾種方法可以解決這個問題,但其中之一是不使用單個閾值在狀態(tài)之間切換。在上面的示例中,RANGE_MIN (35cm) 用作“太靠近墻壁”狀態(tài)和“完美范圍”狀態(tài)之間的閾值。
第 3 部分
我們可以做的是創(chuàng)建兩個閾值。當(dāng)范圍減小時使用一次閾值,當(dāng)范圍增加時使用一個閾值。因此當(dāng)小車距離墻壁34cm時,狀態(tài)變?yōu)椤疤?,但直到距離超過36cm時才會變回“perfect”。這樣,如果范圍恰好在閾值上,它將保持在其中一種狀態(tài),直到范圍發(fā)生顯著變化足以將其移回下一個狀態(tài)。如果您需要示例,請告訴我,我可以為此添加一個代碼片段。
最后一個要解決的問題是組裝。對我來說,我需要將測距儀放在車牌/保險杠的高度。然而,我希望燈在墻上更高,這樣司機就可以看到它們。我決定將測距儀電路放在一個組件中,而將 Arduino/燈放在另一個組件中。然后我為每個組件添加了一個插座,并在它們之間連接了一根電纜來完成電路。事后看來,我應(yīng)該把 Arduino 組件的插座放在組件的底部,但是你能做什么……
我用您可以買到的 3M 掛鉤上的膠帶將它們都固定在墻上。您還可以看到從一側(cè)伸出的一條綠色小線——這是用于接收車庫門狀態(tài)的天線。我在這篇博文中介紹了用于 RF 通信的電路。

第 4 部分
根據(jù)用例,您可以使用此電路做更多的事情。可以添加多個測距儀,這樣您就可以用傳感器覆蓋兩個(或更多)汽車點。您可以在更高的位置添加第二個傳感器,這樣如果您將它用于多輛汽車,您可以通過檢測兩個傳感器之間的距離差異(為您提供汽車的形狀)來檢測哪輛汽車(以及首選范圍)。如果你真的很熱衷,你也可以用它把你的車停在正確的地方,但這需要建造第二個稍微復(fù)雜一點的電路……
?邁克
- Arduino指紋傳感器教程分享
- 車輛停車傳感器開源設(shè)計
- DIY停車雷達傳感器
- 使用Arduino制作停車傳感器
- 停車傳感器助手開源分享
- 帶有Arduino的停車傳感器
- 灰塵傳感器作為輸入到Arduino兼容板的輸入開源
- 基于stm32智能立體停車庫項目
- arduino loar_Arduino動手做(6)聲音傳感器模塊
- PH 傳感器說明書FOR Arduino 2.0免費下載 6次下載
- arduino聲音傳感器 模擬資料匯總 2次下載
- 可兼容Arduino的聲音傳感器模塊LM386 6次下載
- Arduino雨滴傳感器的使用示例代碼免費下載 43次下載
- 基于WinCE的立體停車庫管理系統(tǒng)的設(shè)計
- 汽車庫、修車庫、停車場設(shè)計防火規(guī)范 GB 50067-97
- 基于機智云的智能私家車庫控制系統(tǒng)設(shè)計與實現(xiàn) 533次閱讀
- 傳感器的定義和分類 1506次閱讀
- 基于紅外傳感器的停車場警衛(wèi)電路圖 2325次閱讀
- 工業(yè)級智能停車系統(tǒng)設(shè)計方案 924次閱讀
- 采用數(shù)字微波傳感器和Arduino控制板實現(xiàn)人體探測系統(tǒng) 2202次閱讀
- 采用數(shù)字微波傳感器、繼電器和Arduino控制板的自動光控系統(tǒng) 969次閱讀
- 如何使用Arduino和LDR傳感器實現(xiàn)LCD液晶屏亮度的自動調(diào)節(jié) 7185次閱讀
- 如何使用Arduino創(chuàng)建停車門禁控制系統(tǒng)? 5302次閱讀
- 采用PLC和Profibus現(xiàn)場總線實現(xiàn)立體停車庫控制系統(tǒng)的設(shè)計 7419次閱讀
- 聲控傳感器構(gòu)成的防盜監(jiān)聽電路 3322次閱讀
- dfrobot模擬灰度傳感器簡介 3320次閱讀
- 德州儀器推出針對入口系統(tǒng)的毫米波傳感器驅(qū)動解決方案 1022次閱讀
- 數(shù)字傳感器和模擬傳感器的區(qū)別 2.5w次閱讀
- 基于無線傳感器網(wǎng)絡(luò)在停車場監(jiān)控系統(tǒng)中的應(yīng)用 1548次閱讀
- 西門子Simatic S7-200 Smart PLC,讓智能車庫停車,不再難 4039次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論