今天,我們介紹一款由洛加利福尼亞大學洛杉磯分校(UCLA)電氣和電子工程師協會(IEEE)學生分會一群聰明的工程師研發的3D AirMouse。AirMouse的功能與傳統電腦滑鼠非常類似,但是能夠檢測三維運動。
Device Plus已經與100多所美國頂尖大學展開合作,希望通過資助一些缺乏資金或資源的專案來促進學生創新。目前,Device Plus正在提供硬體贊助計畫,並希望與活躍的學生工程組織合作,以構建我們的“連接”部分。請通過以下電子郵件聯繫我們,獲取有關這個機會的更多資訊: info@deviceplus.com!
加州大學洛杉磯分校IEEE(UCLA IEEE)是一個IEEE學生分會,致力於“為全校工程學生帶來親身實踐體驗”。該專案完全由學生們自己運作,高年級學生負責指導參與專案計畫的新成員。進階專案(Advanced Projects)是UCLA IEEE為期四年的專案之一,旨在讓具有中等硬體和軟體經驗的學生學習微控制器硬體、通信協定、原理圖和電路板設計等高級主題。
參與進階專案(Advanced Projects)的學生組成多個2-4人的團隊,在學年的三個季度中研發兩個專案。通過第一個專案——AirMouse,學生將學習不同的通信協定、硬體暫存器和暫存器使用等概念。有了這些知識,學生們將在接下來的兩個季度中繼續構建自己的四軸飛行器,同時還會學習其他概念,比如使用MOSFET作為開關以及PWM速度控制等。
更多資訊請參閱 http://ieeebruins.org
作為UCLA IEEE進階專案(Advanced Projects)計畫的一部分,最初的AirMouse由Rahul Iyer、Aaron和Andrew Wilhelm研發。
我們都用過電腦滑鼠,但是它們只能在桌面之類的平面上工作。在本教程中,我們將製作一個“AirMouse”——一個能夠在3D空間中運行的電腦滑鼠!使用者通過傾斜滑鼠就可以讓螢幕上的游標行動,從而可以進行大範圍自訂動作。我們首先展示構建AirMouse的基礎知識,然後介紹如何擴展其功能!
AirMouse主要由兩個部分組成:戴在手上的滑鼠發射機和連接使用者電腦的接收器。發射機收集滑鼠的方向和按鈕狀態資訊;而接收器轉換這些資訊,從而在電腦螢幕上執行相應操作。
為了易用性和簡潔性,我們最初利用Arduino Pro Mini和Teensy 3.2微控制器——市場上深受業餘愛好者歡迎的兩種最小的微控制器——構建AirMouse。兩個微控制器通過一對nRF24L01 RF模組進行無線通訊,AirMouse使用MPU6050加速度計檢測運動。
然而,在本教程中,我們將向您展示一種更簡單的AirMouse構建方法:Arduino Uno結合ROHM感測器研發板上的加速度計。由於該ROHM感測器研發板結構緊湊,而且附帶的庫可以處理 I2C 通信,因此大大簡化了設計。
發射機:
接收器:
這一步您可以發揮自己的創造力!只要按照下圖所示的接線圖進行接線即可,各個元件的實際位置並不重要。但是請確保AirMouse使用起來非常舒適!比如,您可能需要按照姿勢舒服、暢通無阻的方式安裝左鍵和按右鍵按鈕。
然而,組裝這些裝置之前,讓我們來看一下必須建立的不同連接。
發射機
兩個RF模組通過SPI匯流排分別連至各自的微控制器。要瞭解有關不同通信協定和SPI的更多資訊,請查看我們的 Arduino 通信協議教材! SPI在RF通信等應用中非常有用,因為其資料傳輸速度快,允許兩個器件以高資料速率、低延遲和高可靠性相互傳輸大量資料。正如我們在本教程中討論的那樣,SPI通信是同步的、雙向的,這兩個特性顯著提高了資料發送和接收速度。
RF模組的 MOSI、MISO和SCK 線路必須連接Arduino上的特定引腳。這些引腳的介紹如下:
MOSI | D11 |
MISO | D12 |
SCK | D13 |
RF模組的 CE 腳表示 Chip Enable(晶片賦能), 可以用來讓RF模組進入待機/睡眠模式。RF模組的 CS 腳是SPI從機選擇引腳。這兩個引腳必須連至Arduino上的兩個單獨GPIO引腳,但是不需要連至任何具體引腳。
Arduino Uno工作電壓為5V,而nRF24L01+工作電壓為3.3V。兩者工作電壓存在差異,但是我們可以利用Arduino的輸出引腳為RF模組供電,並且不會損壞RF模組。nRF24L01+模組的電源(Vcc)引腳應連至Uno上的Arduino穩壓3.3V輸出。切勿將Vcc引腳連至5V,否則可能會損壞模組!在這個專案中,使用Arduino上的穩壓輸出為RF模組供電是可行的,因為(1)RF模組的電流消耗非常低;(2)在軟體中,我們將配置無線電的功率放大器,讓其處於較低功率模式。
無線模組中間的nRF24L01+晶片的Nordic Semiconductor 資料表表明,該模組的射極和接收電流分別為11.3mA和13.5mA。而Arduino的核心Atmel晶片能夠在每個數位引腳上提供高達40mA的電流,因此在最低射極和接收功率設定下(對於這個專案來說已經足夠),Arduino能夠成功地為RF模組供電。在Arduino代碼中,我們會通過命令 setPALevel(RF24_PA_LOW) 指定 LOW(低)功耗模式,告訴RF模組其功耗不能超過它的次低功率等級(設定選項包括MIN、LOW、HIGH和MAX)。
現在我們來看一下這些引腳在RF模組上的實際位置。具體引腳位置請參見下方的引腳說明。
連接RF模組時,您可能需要在試驗電路板上使用排母。這樣,如有必要,您可以從試驗板上拆下模組。
此外,在焊接4×2排針的連接時要特別小心——引腳之間的距離非常小,任何不必要的短路都會損壞模組!請確保排針連接器周圍留有足夠空間,以便可以輕鬆進行焊接工作。
滑鼠左鍵和右鍵的功能按鈕連至設定為輸入的Arduino數位引腳。我們通過佈置每個按鈕,使得數位引腳在按一下按鈕時讀取邏輯高電平,否則為邏輯低電平。按鈕連接的放大圖如下所示:
從上圖可以看出,按一下按鈕時,GPIO引腳直接連至Vcc。沒有按下按鈕時,GPIO引腳和地之間的電阻將GPIO引腳“拉低”到地,因此稱為下拉電阻。這種做法是為了避免數位輸入引腳的懸空邏輯電平問題。當數位輸入不確定(或者連接邏輯高或者連接邏輯低)時,會出現這種情況,即使沒有連接也會由於系統雜訊導致不可預知的行為,比如高讀數或低讀數。我們需要一個高阻值電阻(在這種情況下,10k電阻即可),因為只要點擊按鈕,將GPIO引腳接地就會導致Vcc和地之間短路。按下按鈕電路形成閉環時,電阻會降低Vcc和地之間的電流,從而防止出現危險的短路情況。
幸運的是,對於我們來說,ROHM感測器研發板已經完成了所有的 I2C 硬體連接,這大大簡化了 I2C 硬體設定,使用者只需將加速度模組連至 I2C 的一個連接器即可!要瞭解有關 I2C 工作的更多資訊,請訪問我們的 Arduino 通信協議教材!
接收端的連接與發送端非常相似。RF模組的不同SPI引腳連至Teensy微控制器上的匹配引腳(與Arduino相同的引腳)。您還可以添加LED,以便進行調試和資訊顯示。
組裝AirMouse是構建過程中最乏味的地方,但是,您可以充分發揮您的創意!請嘗試把模組做得更小、更符合人體工程學,並與我們分享您的想法和作品吧!
請確保在通風良好的區域進行焊接並使用高品質裝置,並經常休息。您完成硬體構建之後,請參閱本文的第2部分 – 軟體部分!
Device Plus正在尋找與活躍的學生工程組織和實驗室展開合作。想瞭解我們硬體贊助計畫的更多資訊,請通過以下電子郵件聯繫我們: info@deviceplus.com