障礙物檢測是盲人最關(guān)心的問題之一。這里展示的是使用 Arduino Uno 和超聲波傳感器的智能盲桿。該項目的主要目標(biāo)是幫助盲人輕松行走,并在他們的行走路徑被其他物體或人阻礙時提醒他們。作為警告信號,電路中連接了一個語音模塊,它根據(jù)物體的方向發(fā)出語音警告,例如,如果物體在左側(cè),那么它會說“小心物體在左側(cè)”。
這款智能搖桿將在左側(cè)、右側(cè)和中心連接三個超聲波傳感器,以感知與任何障礙物的距離,一個 JQ6500 語音聲音模塊用于發(fā)出警告信號,以及一個 9V 電池為設(shè)置供電。
智能盲桿所需組件
Arduino納米
3×超聲波傳感器
JQ6500 語音發(fā)聲模塊
8Ω揚聲器
1 KΩ 電阻器
JQ6500 語音發(fā)聲模塊
JQ6500 語音模塊非常適合在揚聲器上播放消息,如火警、火車和公共汽車警報系統(tǒng)、營業(yè)廳提示、設(shè)備故障警報等。它可以將 MP3、硬編碼 MP3 或 WMV 格式文件解碼為可聽語音格式。它配備 24 位數(shù)模轉(zhuǎn)換器,動態(tài)范圍為 90dB,支持 8 / 11.025 / 12/16 / 22.05 / 24/32 / 44.1 / 48 kHz 采樣率。MP3 文件可以通過按鈕或通過串行通信協(xié)議進(jìn)行控制。
將 MP3 文件上傳到板載內(nèi)存:
可以使用 Windows 計算機將 MP3 文件上傳到 JQ6500 的板載內(nèi)存中(Mac 或 Linux 用戶需要使用 JQ6500-28p 和 SD 卡)。下面給出了相同的步驟:
通過 Mini USB 連接器將開發(fā)板連接到您的計算機。
一個新的“CD-ROM”驅(qū)動器將出現(xiàn)在您的計算機上,雙擊它并打開名為“ MusicDownload.exe ”的應(yīng)用程序。
部分JQ6500-16P設(shè)備沒有安裝MusicDownload.exe,如果找不到MusicDownload.exe程序;您可以下載包含它的 zip 文件。
該應(yīng)用程序是中文的,因此要上傳文件,請打開 .exe 文件,然后單擊左側(cè)的第二個選項卡。
然后單擊右上角的文件選擇器選項卡。
文件選擇器將打開,選擇您要上傳的所有 mp3 文件單擊文件選擇器上的打開按鈕
單擊返回第一個選項卡,然后單擊按鈕上傳文件
智能盲桿電路圖
智能盲桿的完整電路圖如下所示。非常簡單,我們只需要連接三個超聲波傳感器和一個JQ6500語音模塊。
整個電路板由 9V 電池供電。電路的大腦是 Arduino Nano。三個超聲波傳感器用于檢測搖桿左、右、前的障礙物。這三個傳感器的四個引腳中的兩個,即 VCC 和 GND,連接到 Arduino 的 5V 和 GND。其余兩個引腳——TRIG 和 ECHO 連接到 Arduino,如下所示。
JQ5600 MP3模塊是一個3.3V的邏輯模塊,所以不能直接連接到Arduino的IO管腳,但是用Arduino的5V電源線供電就可以了。MP3 模塊的 RX 和 TX 引腳連接到 Arduino Nano 的數(shù)字引腳 9 和 8。在 Arduino 數(shù)字引腳 9 和 MP3 模塊 RX 之間放置一個 1kΩ 電阻,以降低 Arduino 的 5V 電壓。
用于智能盲桿的 Arduino 程序
一旦我們準(zhǔn)備好硬件,我們就可以將 Arduino 連接到我們的計算機并開始編程。該項目的完整代碼在本頁底部給出;您可以將其直接上傳到您的 Arduino 板。但是,如果您想知道代碼是如何工作的,請進(jìn)一步閱讀。
該代碼使用JQ6500_Serial.h和SoftwareSerial.h庫。SoftwareSerial 庫與 Arduino IDE 一起預(yù)安裝,而JQ6500 串行庫可以從給定的鏈接安裝。
像往常一樣,通過包含所有必需的庫并定義此項目中使用的所有引腳來啟動代碼。
#include #include #include JQ6500_Serial mp3(8,9); int left_trigPin = 6; int left_echoPin = 7; int right_trigPin = 2; int right_echoPin = 3; int center_trigPin = 4; int center_echoPin = 5;
然后在setup()函數(shù)中,初始化輸入輸出引腳。在我們的程序中,所有三個傳感器的觸發(fā)引腳都是輸出設(shè)備,回聲引腳是輸入設(shè)備。我們還初始化了串口監(jiān)視器和 JQ6500 語音模塊。
pinMode(left_trigPin,輸出); pinMode(left_echoPin,INPUT); pinMode(right_trigPin,輸出); pinMode(right_echoPin,輸入); pinMode(center_trigPin,輸出); pinMode(center_echoPin,輸入); 序列號.開始(115200); mp3.開始(9600); mp3.reset();
在主循環(huán)中,我們正在讀取所有三個傳感器的數(shù)據(jù),即左、右和中心。我們首先讀取超聲波傳感器的傳感器數(shù)據(jù)以了解距離,然后使用觸發(fā)和接收到 ECHO 之間的時間計算距離。距離計算公式如下:
數(shù)字寫入(left_trigPin,HIGH); 延遲微秒(10); 數(shù)字寫入(left_trigPin,低); 持續(xù)時間=脈沖輸入(left_echoPin,HIGH); 距離 = (持續(xù)時間/2) / 29.1;
如果測量距離超過 50 厘米,則不會發(fā)出警告。但是,如果小于 50cm,就會觸發(fā)語音模塊播放語音警告。
如果(距離 < 50){ Serial.print("左距離"); Serial.print(距離); mp3.playFileByIndexNumber(2); }
所有三個傳感器都使用相同的邏輯。通過更改我們用來比較的值,該程序可以很容易地適應(yīng)您的應(yīng)用程序。如果觸發(fā)了錯誤警報,您可以使用串行監(jiān)視器進(jìn)行調(diào)試。
測試智能 Arduino 盲桿
最后,是時候測試我們的盲桿 Arduino 項目了。確保按照電路圖完成連接并成功上傳程序?,F(xiàn)在,使用 9V 電池為設(shè)置供電,您應(yīng)該開始看到結(jié)果。將盲人手杖移近物體,您會注意到根據(jù)物體方向的語音警告。例如,如果對象在左側(cè),那么它會說“小心左側(cè)對象”。
#include
#include
#include
JQ6500_Serial mp3(8,9);
int left_trigPin = 7;
int left_echoPin = 6;
int right_trigPin = 2;
int right_echoPin = 3;
int center_trigPin = 4;
int center_echoPin = 5;
無效設(shè)置(){
pinMode(left_trigPin,OUTPUT);
pinMode(left_echoPin,INPUT);
pinMode(right_trigPin,輸出);
pinMode(right_echoPin,輸入);
pinMode(center_trigPin,輸出);
pinMode(center_echoPin,輸入);
序列號.開始(115200);
mp3.開始(9600);
mp3.reset();
mp3.setVolume(50);
mp3.setLoopMode(MP3_LOOP_NONE);
}
無效循環(huán)(){
左();
正確的();
中央();
}
void left(){
delay(500);// 讀取將在 ....miliseconds 之后進(jìn)行
Serial.println("\n");
int 持續(xù)時間,距離;
數(shù)字寫入(left_trigPin,HIGH);
延遲微秒(10);
數(shù)字寫入(left_trigPin,低);
持續(xù)時間=脈沖輸入(left_echoPin,HIGH);
距離 = (持續(xù)時間/2) / 29.1;
//距離=持續(xù)時間*0.034/2;
if (distance < 30) { // 更改長距離或短距離的數(shù)字。
Serial.print("左距離");
Serial.print(距離);
mp3.playFileByIndexNumber(2);
}
}
void right(){
delay(500);// 讀取將在 ....miliseconds 之后進(jìn)行
Serial.println("\n");
int 持續(xù)時間,距離;
數(shù)字寫入(right_trigPin,HIGH);
延遲微秒(10);
數(shù)字寫入(right_trigPin,低);
持續(xù)時間=脈沖輸入(right_echoPin,HIGH);
距離 = (持續(xù)時間/2) / 29.1;
if (distance <30) { // 更改長距離或短距離的數(shù)字。
Serial.print("正確的距離");
Serial.print(距離);
mp3.playFileByIndexNumber(3);
}
}
void center(){
delay(500);// 讀取將在 ....毫秒后進(jìn)行
序列號.println("\n");
int 持續(xù)時間,距離;
數(shù)字寫入(center_trigPin,HIGH);
延遲微秒(10);
數(shù)字寫入(center_trigPin,低);
持續(xù)時間=脈沖輸入(center_echoPin,HIGH);
距離 = (持續(xù)時間/2) / 29.1;
if (distance <30) { // 更改長距離或短距離的數(shù)字。
Serial.print("中心距");
Serial.print(距離);
mp3.playFileByIndexNumber(1);
}
}
-
超聲波傳感器
+關(guān)注
關(guān)注
18文章
586瀏覽量
35976 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187569 -
障礙物檢測
+關(guān)注
關(guān)注
0文章
3瀏覽量
2610
發(fā)布評論請先 登錄
相關(guān)推薦
評論