電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>如何使用腦電波駕駛遙控卡車

如何使用腦電波駕駛遙控卡車

2022-10-21 | zip | 2.08 MB | 次下載 | 免費

資料介紹

描述

你想用你的思想來控制事物嗎?這個教程描述了如何使用腦電波駕駛遙控卡車。耳機感應(yīng)到我的腦電波并將它們傳輸?shù)揭慌_小型計算機。當我提高注意力或眨眼時,計算機會轉(zhuǎn)換信號并將它們傳遞給卡車的遙控器,我已將其連接到計算機。當我集中注意力時,車輪會旋轉(zhuǎn)。0ne 強烈的眨眼左轉(zhuǎn)。強烈的雙眨眼會右轉(zhuǎn)。

耳機是NeuroSky MindWave Mobile 2,電腦Arduino Uno微控制器,藍牙模塊是HC-05。

實際應(yīng)用

一些開發(fā)人員已經(jīng)應(yīng)用這些想法來幫助癱瘓的人;例如,駕駛輪椅、家庭自動化或在屏幕上選擇字母和單詞以便在屏幕上或通過語音進行交流。他們的項目可以在 YouTube 上找到。

項目的主要步驟

這個項目有5個主要步驟:

  • 將 HC-05 連接到 Arduino,對其進行配置,并將其與 MindWave 配對。
  • 將舵機連接到遙控器。
  • 給 Arduino 接線。
  • Arduino 草圖(代碼)。
  • 上傳 Arduino 草圖并使用它。

控制機器人車輛的方法

在開始我的項目之前,我在 Internet 上搜索了 NeuroSky 項目,以了解開發(fā)人員選擇使用哪些腦電波信號。許多項目只使用了注意力和冥想級別,還有一些項目還使用了眨眼。在我的項目中,我決定使用注意力級別來控制向前和停止行駛,單閃左轉(zhuǎn)或雙閃右轉(zhuǎn)。

有一個項目采用了非常不同的方法:當用戶眨眼時,軟件開始循環(huán)向前、向后、向左、向右,每個循環(huán) 2 秒。如果用戶眨了兩下眼,那么車輛就會在那個瞬間朝自行車所在的任何方向行駛。這種方法提供了很大的靈活性,但可能會很慢。例如,如果用戶右轉(zhuǎn),他們將無法左轉(zhuǎn)大約 6 秒,

將 NeuroSky MindWave Mobile 2 連接到 Arduino 的方法

一些開發(fā)人員通過藍牙將他們的 NeuroSky MindWave Mobile 直接連接到 Arduino 板,這是我決定做的。這種方法比下一種方法更容易(如下所述),但檢測到眨眼需要更長的時間(略超過 1 秒)。這對我的項目來說沒問題。

其他開發(fā)人員通過計算機或智能手機對信號進行實時預(yù)處理,然后將數(shù)據(jù)發(fā)送到 Arduino。這允許進行更復(fù)雜的分析或處理,并且可以更快地檢測到眨眼(大約半秒)。NeuroSky 在這個網(wǎng)站上有關(guān)于這種方法的教程,適用于 PC Windows、Apple Mac OSX、AndroidIOS我決定不使用這種方法,因為它需要學習如何在計算機或智能手機上對軟件進行編程。

最大化注意力水平

最大化注意力水平的方法因人而異。以下是一些建議:

  • 專注于一個對象。
  • 仔細閱讀食品容器上的成分清單。
  • 記住食品容器上的一些營養(yǎng)成分。
  • 從 100 倒數(shù)到 6 或 7。
  • 在頭腦中進行算術(shù)運算。
  • 聽一首說唱歌曲并嘗試理解歌詞。
  • 用你不流利的語言閱讀一些東西。

眨眼

眨眼需要很強才能被檢測到。正常的眨眼被忽略。

頭部應(yīng)保持靜止,以避免錯誤的眨眼檢測。在這個項目中檢測眨眼的方法包括檢查從耳機接收到的信號的質(zhì)量。強烈的眨眼會使前額的皮膚移動,從而降低信號的質(zhì)量,這被解釋為眨眼。如果頭部移動,耳機的傳感器可能會輕微移動,從而降低信號質(zhì)量,這將被識別為眨眼。

這種檢測眨眼的方法不使用大腦的神經(jīng)信號。我的理解是 NeuroSky 的計算機/智能手機方法可以。

電子零件

  • NeuroSky MindWave Mobile 2 耳機和 1 節(jié) AAA 電池
  • 一臺電腦(我用的是 Apple iMac
  • Arduino Uno 或其他型號及其 USB 數(shù)據(jù)線
  • HC-05藍牙模塊
  • 兩個伺服電機(我使用 Solarbotics HXT900 Micro Servos)
  • 面包板和面包板電線
  • 綠色、黃色和紅色 LED
  • 3 x 330 歐姆電阻
  • 2 x 1K 歐姆電阻
  • 2 個 2K 歐姆電阻
  • 電源,約 5 伏,如支架中的 3 節(jié) AA 電池

伺服連接到遙控器的零件

  • 小塑料或紙板箱,或其他方式將伺服系統(tǒng)固定到位
  • 膠水或螺母和螺栓將盒子的各個部分連接在一起
  • 將其連接到遙控器的某種方式。(我用了 2 個螺絲。)
  • 用于連接伺服系統(tǒng)的小螺母和螺栓。(我使用了一些實心線和 2-56 號螺栓,并且不得不稍微擴大伺服中的螺栓孔。)

第 1 步:將 HC-05 連接到 Arduino,配置并配對

有關(guān)詳細信息,請查看我之前的一個項目中的步驟 1 和 2:

第 2 步:將伺服器連接到遙控器

有兩種方法可以將 Arduino 連接到卡車的遙控器:

遙控器可能被黑客攻擊如下:移除或繞過由控件推動的開關(guān),然后將 Arduino 連接到控制器的電路板并對 Arduino 進行編程以在適當?shù)碾娋€上施加電壓。我的遙控器中的開關(guān)非常小,以至于我認為嘗試將新電線焊接到電路板上的適當位置太棘手了。如果我犯了一個小錯誤,董事會可能會被毀掉。

我使用伺服系統(tǒng)來移動控件。將伺服系統(tǒng)連接到遙控器上被證明是一個“有趣”的挑戰(zhàn),但現(xiàn)在一切正常。

幸運的是,經(jīng)過一些切割和裝配后,有一個大小合適的小塑料盒可以將伺服系統(tǒng)連接到卡車的遙控器上。尺寸為 2-56 的螺母和螺栓將盒子的各個部分固定在一起。兩個螺絲將盒子固定在遙控器上。

?
?
?
pYYBAGNORpKAK68CAAfI2-pUPMk033.jpg
?
1 / 2
?

?

左/右控制的伺服臂末端有一個小凹口,給它一些擺動空間。伺服臂的中心不太可能與控制中心完全對齊。固定該臂末端的螺釘需要稍微松動。

pYYBAGNORpaAebMnAAP7XkNpus0539.jpg
?

?

為了連接左/右舵機,我使用了 2-56 尺寸的螺母和螺栓,并且不得不稍微擴大舵機上的螺栓孔。實心線將 Go/Stop 伺服固定到位。

?
?
?
pYYBAGNORpuATMKgAAd_V7dGhKM076.jpg
?
1 / 2
?

?

第 3 步:連接 Arduino

電路如圖所示,描述如下:

  • Arduino 的 +5V 連接到面包板上的 +
  • Arduino 的 GND 連接到 - 在面包板上
  • 330 歐姆電阻從引腳 2 到黃色 LED 的長線和另一根 LED 線到 - 在面包板上
  • 330 歐姆電阻從引腳 4 到綠色 LED 的長線和另一根 LED 線到 - 面包板上
  • 330 歐姆電阻從引腳 7 到紅色 LED 的長線和另一根 LED 線到 - 在面包板上
  • 引腳 9 連接到 Go/Stop 伺服的信號線。是那個黃色的。
  • 引腳 10 連接到左/右舵機的信號線。
  • - 伺服系統(tǒng)的橙色線連接到單獨的 4.5 伏電源的正極。
  • - 伺服系統(tǒng)的棕色電線連接到 - 面包板上。
  • - 單獨電源的負號轉(zhuǎn)到 - 在面包板上。
  • HC-05 TXD 連接到 Arduino 的 RX(引腳 0)
  • HC-05 + 轉(zhuǎn)到面包板上的 +
  • HC-05 GND 連接到 - 在面包板上
poYBAGNORqOAEwTRAA4seuP-2Ts630.jpg
?

?

第 4 步:Arduino 草圖(代碼)

該代碼具有以下主要功能:

  • 從 MindWave 耳機讀取數(shù)據(jù)。
  • 當注意力超過 70 時打開綠色 LED 并移動 Go/Stop 伺服臂以推動 Go/Stop 觸發(fā)器。
  • 當注意力小于 70 時關(guān)閉綠色 LED 并將 Go/Stop 伺服臂移回其中點。
  • 檢測到閃爍時打開黃色 LED,并將閃爍信號設(shè)置為 1。
  • 1.2 秒后檢查第二次閃爍。
  • 如果是單次閃爍,將左/右伺服臂向“左”移動 2 秒鐘,然后將其轉(zhuǎn)回,并關(guān)閉黃色 LED。
  • 如果是雙閃,打開紅色 LED,關(guān)閉黃色 LED,將左/右伺服臂“向右”移動 2 秒鐘,然后將其轉(zhuǎn)回,然后關(guān)閉紅色 LED。
  • 在每個主要步驟中,在計算機上的串行監(jiān)視器中顯示數(shù)據(jù)。

Arduino 草圖(代碼)可以從該項目中包含的.ino 文件中下載,或者可以將以下代碼復(fù)制并粘貼到新的 Arduino 草圖中。(在編寫這些指令時,instructables 系統(tǒng)有時會刪除位于代碼開頭的部分#include 語句。第一個應(yīng)該是#include 后跟左箭頭 < 后跟 Servo.h 后跟右箭頭 > 和第二個應(yīng)該是#include,后跟左箭頭<,然后是Mindwave.h,然后是右箭頭>)。

草圖使用一個特殊的庫,必須在運行草圖之前安裝。

這個項目可以不使用庫來完成,但是代碼會更復(fù)雜。從耳機讀取數(shù)據(jù)、提取注意力級別和檢查信號質(zhì)量的代碼在本網(wǎng)站包含的示例代碼中:

草圖應(yīng)該可以成功編譯,但可能會顯示 MindWave.cpp 庫的警告消息。這可能會被忽略。

//

// 草圖使用大腦的注意力水平進行 Go/Stop 和

// 轉(zhuǎn)彎時眨眼。

//

// 硬件:Arduino Uno、HC-05 藍牙、NeuroSky MindWave Mobile 2。

// 高度關(guān)注 = 綠色 LED 亮(開始);低 Att = 綠色 LED 熄滅(停止)。

//第一次閃爍&左轉(zhuǎn)=黃色LED;雙閃 = 紅色 LED(右)。

// 左右轉(zhuǎn)為 2 秒。

// 信息顯示在串行監(jiān)視器上。

//

#include

#include // 來自 GitHub 的 Mindwave 庫>orgicus

思維波思維波;

#define YLED 2 // 定義 LED 引腳

#define GLED 4

#定義 RLED 7

伺服myservoG;// 開始/停止伺服

伺服myservoLR;//左/右舵機

int gosignal = 0; // 走或停指標

int 閃爍信號 = 0; // 第一次閃爍后的信號計數(shù)器

int 閃爍 = 0; // 一組閃爍次數(shù)

長時間未簽名;// 經(jīng)過時間的變量

無符號長時間0;// 第一次閃爍時間的變量

無符號長時間1;// 從第一次閃爍到第二次閃爍的時間變量

無效設(shè)置(){

Serial.begin(MINDWAVE_BAUDRATE);

pinMode(13,輸出);// 將 LED 引腳初始化為輸出

pinMode(GLED,輸出);

pinMode(YLED,輸出);

pinMode(RLED,輸出);

myservoG.attach(9); // 將 Go/Stop 伺服連接到引腳 9

myservoG.write(90); // 將舵機移動到中點

myservoLR.attach(10); // 將左/右伺服器連接到引腳 10

myservoLR.write(90); // 將舵機移動到中點

延遲(15);// 給伺服時間移動到那里

}

無效 onMindwaveData() {

if (mindwave.quality() < 90) { // 如果質(zhì)量差,板載 LED 亮起

數(shù)字寫入(13,高);

} 別的 {

數(shù)字寫入(13,低);

}

// 檢查注意力等級

if ((mindwave.attention() > 70) && (gosignal == 0)) {

Serial.print("Go, ");

Serial.print("\注意:");

Serial.print(mindwave.attention());

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

序列號.println();

數(shù)字寫入(GLED,高);// 綠色 LED 亮

信號 = 1; // 表示去

myservoG.write(130); // 機器人前進的伺服

延遲(4000);// 在檢查前等待 4 秒

// 如果注意力下降

}

if ((mindwave.attention() < 70) && (gosignal == 1)) {

Serial.print("停止, ");

Serial.print("\注意:");

Serial.print(mindwave.attention());

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

序列號.println();

數(shù)字寫入(GLED,低);// 綠色 LED 熄滅

信號 = 0; // 表示停止前進

myservoG.write(90); // 機器人停止伺服

延遲(15);

}

// 第一次閃爍

if ((mindwave.quality() < 95) && (blinksignal == 0)) {

Serial.print("第一次閃爍");

Serial.print("\tquality:");

Serial.print(mindwave.quality());

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

Serial.print("\tgosignal:");

Serial.print(gosignal);

Serial.print("\tblinksignal:");

串行打?。ㄩW爍信號);

序列號.println();

time0 = 毫秒();

眨眼 = 1;

閃爍信號 = 1;// 第一次閃爍

數(shù)字寫入(YLED,高);// 黃色 LED 亮

}

// 閃爍后立即顯示質(zhì)量,并增加計數(shù)器

// 來自耳機的信號

if ((blinksignal > 0) && (blinksignal < 4)) {

Serial.print("\tquality:");

Serial.print(mindwave.quality());

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

Serial.print("\tgosignal:");

Serial.print(gosignal);

Serial.print("\tblinksignal:");

串行打?。ㄩW爍信號);

序列號.println();

如果(閃爍信號> 0){

閃爍信號 = 1 + 閃爍信號;// 增加信號計數(shù)器

}

time1 = millis() - time0;

}

// 雙閃?

if ((mindwave.quality()<95) && (time1 > 1200)){

Serial.print("\tquality:");

Serial.print(mindwave.quality());

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

Serial.print("\tgosignal:");

Serial.print(gosignal);

Serial.print("\tblinksignal:");

串行打?。ㄩW爍信號);

Serial.print("\ttime1:");

序列號.print(time1);

Serial.print("\tblinks now = 2");

序列號.println();

眨眼 = 2;

}

// 單閃左轉(zhuǎn)

if ((blinks == 1) && (blinksignal > 3)) {

Serial.print("左, ");

Serial.print("\t單閃");

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

Serial.print("\tgosignal:");

Serial.print(gosignal);

Serial.print("\tblinksignal:");

串行打印(閃爍信號);

序列號.println();

閃爍信號 = 0; // 為下一次閃爍重置

// 機器人左轉(zhuǎn)輪子 2 秒的代碼

myservoLR.write(55);

延遲(2000);

數(shù)字寫入(YLED,低);// 黃色 LED 熄滅

// 機器人將車輪從左轉(zhuǎn)直的代碼

myservoLR.write(90);

延遲(15);

}

// 雙閃右轉(zhuǎn)

if ((blinks == 2) && (blinksignal > 3)) {

Serial.print("對,");

Serial.print("\t雙閃");

時間=毫秒();

Serial.print("\ttime:");

序列號。打?。〞r間);

Serial.print("\tgosignal:");

Serial.print(gosignal);

Serial.print("\tblinksignal:");

串行打?。ㄩW爍信號);

序列號.println();

數(shù)字寫入(RLED,高);// 如果右轉(zhuǎn),紅色 LED 亮

數(shù)字寫入(YLED,低);// 黃色 LED 熄滅

閃爍信號 = 0; // 為下一次閃爍重置

// 機器人右轉(zhuǎn)輪子 2 秒的代碼

myservoLR.write(120);

延遲(2000);

數(shù)字寫入(RLED,低);// 紅色 LED 熄滅

// 機器人從右轉(zhuǎn)直的代碼

myservoLR.write(90);

延遲(15);

}

}

無效循環(huán)(){

mindwave.update(串行,onMindwaveData);

}

第 5 步:上傳 Arduino 草圖并使用它

  • 在計算機上啟動 Arduino 應(yīng)用程序。
  • 將伺服系統(tǒng)連接到單獨的電源。伺服臂移動了幾度,但當草圖運行時它們會移回中點。
  • 將 Arduino 的 USB 電纜連接到計算機。HC-05 應(yīng)該快速閃爍。
  • 斷開 HC-05 的 TXD 線與 Arduino 的 RX(引腳 0)的連接,上傳草圖,然后重新連接此 RX 線。
  • 打開串行監(jiān)視器。檢查波特率是否為 57600。
  • 打開遙控卡車的電源。
  • 開啟 MindWave。幾秒鐘后,HC-05 應(yīng)每 3-4 秒快速閃爍 2 次,表示設(shè)備已配對。
  • 將 MindWave 戴在頭上并連接耳夾。它現(xiàn)在應(yīng)該將數(shù)據(jù)發(fā)送到 Arduino。
  • 完成后,關(guān)閉串行監(jiān)視器。
  • 關(guān)閉 MindWave。
  • 斷開 USB 電纜與 Arduino 或計算機的連接。
  • 退出 Arduino 應(yīng)用程序。
  • 從單獨的電源上斷開伺服的電源線。
  • 關(guān)閉卡車電源。

將草圖上傳到 Arduino 后,它可以使用單獨的電源,而不是通過 USB 連接到計算機。唯一的區(qū)別是沒有串行監(jiān)視器來顯示數(shù)據(jù)。步驟如下:

  • 將伺服系統(tǒng)連接到單獨的電源。伺服臂移動了幾度,但當草圖運行時它們會移回中點。
  • 將 Arduino 連接到電源。
  • 打開遙控卡車的電源。
  • 開啟 MindWave。幾秒鐘后,HC-05 應(yīng)每 3-4 秒快速閃爍 2 次,表示設(shè)備已配對。
  • 將 MindWave 戴在頭上并連接耳夾。它現(xiàn)在應(yīng)該將數(shù)據(jù)發(fā)送到 Arduino。
  • 完成后,關(guān)閉 MindWave。
  • 斷開 Arduino 與電源的連接。
  • 從單獨的電源上斷開伺服的電源線。
  • 關(guān)閉卡車電源。

重要筆記

如果你的 HC-05 的固件是 2 或 3 版本,我的理解是在 AT+INQ 命令之前需要 AT+INIT 命令。我的HC-05的固件是4.0-20190815版本,AT+INIT命令不識別。要檢查 HC-05 的版本,請輸入以下命令:AT+VERSION

如果您按下 Arduino 的重置按鈕,這會將 HC-05 的設(shè)置恢復(fù)為出廠默認設(shè)置。必須重復(fù)所有配對步驟。

如果在上傳草圖之前 HC-05 的 TXD 未與 Arduino 的 RX 斷開連接,則會在計算機屏幕上 Arduino 應(yīng)用程序窗口的底部出現(xiàn)錯誤消息。以下錯誤消息重復(fù) 10 次:avrdude: stk500_recv(): 程序員沒有響應(yīng)avrdude: stk500_getsync() 嘗試 1 of 10: not in sync: resp=0x00

使用舵機時,需要單獨的電源,例如 3 節(jié) 1.5 伏電池。Arduino 的 GND 必須連接到外部電源的負極。如果沒有外部電源,USB 源的電源似乎不足,并且 HC-05 會在伺服激活時失去配對。它在幾秒鐘后配對,然后在下次伺服激活時取消配對。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費