這篇文章來源于DevicePlus.com英語網站的翻譯稿。
今天,我們介紹一款由洛加利福尼亞大學洛杉磯分校(UCLA)電氣和電子工程師協會(IEEE)學生分會一群聰明的工程師研發的3D AirMouse。AirMouse的功能與傳統電腦鼠標非常類似,但是能夠檢測三維運動。
Device Plus已經與100多所美國頂尖大學展開合作,希望通過資助一些缺乏資金或資源的項目來促進學生創新。目前,Device Plus正在提供硬件贊助計劃,并希望與活躍的學生工程組織合作,以構建我們的“連接”部分。
加州大學洛杉磯分校IEEE
加州大學洛杉磯分校IEEE(UCLA IEEE)是一個IEEE學生分會,致力于“為全校工程學生帶來親身實踐體驗”。該項目完全由學生們自己開展,高年級學生負責指導參與項目計劃的新成員。高級項目(Advanced Projects)是UCLA IEEE為期四年的項目之一,旨在讓具有中等硬件和軟件經驗的學生學習微控制器硬件、通信協議、原理圖和電路板設計等高級主題。
參與高級項目(Advanced Projects)的學生組成多個2-4人的團隊,在學年的三個季度中研發兩個項目。通過第一個項目——AirMouse,學生將學習不同的通信協議、硬件寄存器和寄存器使用等概念。有了這些知識,學生們將在接下來的兩個季度中繼續構建自己的四軸飛行器,同時還會學習其他概念,比如使用MOSFET作為開關以及PWM速度控制等。
作為UCLA IEEE高級項目(Advanced Projects)計劃的一部分,最初的AirMouse由Rahul Iyer、Aaron和Andrew Wilhelm研發。
AirMouse概述
我們都用過電腦鼠標,但是它們只能在桌面之類的平面上工作。在本教程中,我們將制作一個“AirMouse”——一個能夠在3D空間中運行的計算機鼠標!用戶通過傾斜鼠標就可以讓屏幕上的光標移動,從而可以進行大范圍自定義動作。我們首先展示構建AirMouse的基礎知識,然后介紹如何擴展其功能!
AirMouse主要由兩個部分組成:戴在手上的鼠標發射器和連接用戶計算機的接收器。發射器收集鼠標的方向和按鈕狀態信息;而接收器轉換這些信息,從而在計算機屏幕上執行相應操作。
為了易用性和簡潔性,我們最初利用Arduino Pro Mini和Teensy 3.2微控制器——市場上深受業余愛好者歡迎的兩種最小的微控制器——構建AirMouse。兩個微控制器通過一對nRF24L01 RF模塊進行無線通信,AirMouse使用MPU6050加速度計檢測運動。
然而,在本教程中,我們將向您展示一種更簡單的AirMouse構建方法:Arduino Uno結合ROHM傳感器開發板上的加速度計。由于該ROHM傳感器開發板結構緊湊,而且附帶的庫可以處理I2C 通信,因此大大簡化了設計。
硬件:
發射器:
1 x Arduino Uno微控制器
1 x ROHM傳感器評估套件
1 x ROHM加速度計 (KX022-1020)
1 x nRF24L01+ RF模塊
滑動開關
1 x 可焊接試驗電路板,足夠大,能焊接微控制器和所有電子器件
2 x 按鍵
1 x 1s LiPo電池
1 x 1k?電阻
1 x 3.3k?電阻
接收器:
1 x Teensy 3.2微控制器
1 x NRF24L01+ RF模塊
排母
1 x 可焊接試驗電路板,足夠大,能焊接微控制器和所有電子器件
1 x 紅、黃、綠LED燈
1 x 150?電阻
硬件組裝
這一步您可以發揮自己的創造力!只要按照下圖所示的接線圖進行接線即可,各個組件的實際位置并不重要。但是請確保AirMouse使用起來非常舒適!比如,您可能需要按照姿勢舒服、暢通無阻的方式安裝左鍵和右鍵單擊按鈕。
然而,組裝這些設備之前,讓我們來看一下必須建立的不同連接。
發射器
圖1 發射器原理圖(請注意RF模塊的Vcc連至3.3V!)
圖2 Arduino Uno的面包板“蓋板” 由于Uno的接頭與面包板的孔間距(0.1〞)并不完全吻合,因此按鈕數字輸入線需要使用跳線(藍色)。
兩個RF模塊通過SPI總線分別連至各自的微控制器。要了解有關不同通信協議和SPI的更多信息,請查看我們的此處鏈接轉移至DevicePlus.com英語網站Arduino通信協議教程!SPI在RF通信等應用中非常有用,因為其數據傳輸速度快,允許兩個器件以高數據速率、低延遲和高可靠性相互傳輸大量數據。正如我們在本教程中討論的那樣,SPI通信是同步的、雙向的,這兩個特性顯著提高了數據發送和接收速度。
RF模塊的 MOSI, MISO, and SCK 線路必須連接 Arduino上的特定引腳。這些引腳的介紹如下:
MOSI | D11 |
MISO | D12 |
SCK | D13 |
RF模塊的CE腳表示Chip Enable(芯片使能), 可以用來讓RF模塊進入待機/睡眠模式。RF模塊的CS腳是SPI從機選擇引腳。這兩個引腳必須連至Arduino上的兩個單獨GPIO引腳,但是不需要連至任何具體引腳。
圖3 Arduino Uno和RF模塊的接線圖
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模塊上的實際位置。具體引腳位置請參見下方的引腳說明。
圖4 nRF24L01+ RF模塊的引腳排列
模塊的引腳1用正方形表示。請注意,模塊與插頭引腳并不對稱。/ ?Addicore
連接RF模塊時,您可能需要在試驗電路板上使用排母。這樣,如有必要,您可以從試驗板上拆下模塊。
此外,在焊接4×2排針的連接時要特別小心——引腳之間的距離非常小
,任何不必要的短路都會損壞模塊!請確保排針接頭周圍留有足夠空間
,以便可以輕松進行焊接工作。
鼠標左鍵和右鍵的功能按鈕連至設置為輸入的Arduino數字引腳。我們通過布置每個按鈕,使得數字引腳在單擊按鈕時讀取邏輯高電平,否則為邏輯低電平。按鈕連接的放大圖如下所示:
圖5 本項目使用的按鈕布局
按下此按鈕時,GPIO腳接通Vcc。
從上圖可以看出,單擊按鈕時,GPIO引腳直接連至Vcc。沒有按下按鈕時,GPIO引腳和地之間的電阻將GPIO引腳“拉低”到地,因此稱為下拉電阻。這種做法是為了避免數字輸入引腳的懸空邏輯電平問題。當數字輸入不確定(或者連接邏輯高或者連接邏輯低)時,會出現這種情況,即使沒有連接也會由于系統噪聲導致不可預知的行為,比如高讀數或低讀數。我們需要一個高阻值電阻(在這種情況下,10k電阻即可),因為只要點擊按鈕,將GPIO引腳接地就會導致Vcc和地之間短路。按下按鈕電路形成閉環時,電阻會降低Vcc和地之間的電流,從而防止出現危險的短路情況。
圖6 ROHM傳感器開發板上方的面包板
傳感器開發板隨附的KX022加速度計模塊可完美安裝在I2C接頭頂部和面包板下方。
幸運的是,對于我們來說,ROHM傳感器開發板已經完成了所有的I2C 硬件連接,這大大簡化了I2C硬件設置,用戶只需將加速度模塊連至I2C的一個接頭即可!要了解有關I2C工作的更多信息,請訪問我們的 Arduino通信協議教程!!
接收器
圖7 接收器原理圖(如上所示,RF模塊的Vcc連至3.3V!)
圖8 接收器模塊
GPIO引腳連接了兩個LED,以便進行調試
接收端的連接與發送端非常相似。RF模塊的不同SPI引腳連至Teensy微控制器上的匹配引腳(與Arduino相同的引腳)。您還可以添加LED,以便進行調試和信息顯示。
組裝AirMouse是構建過程中最乏味的地方,但是,您可以充分發揮您的創意!請嘗試把模塊做得更小、更符合人體工程學,并與我們分享您的想法和作品吧!
請確保在通風良好的區域進行焊接并使用高質量設備,并經常休息。您完成硬件構建之后,請參閱本文的第2部分 – 軟件部分!
審核編輯:湯梓紅
-
微控制器
+關注
關注
48文章
7547瀏覽量
151331 -
傳感器
+關注
關注
2550文章
51046瀏覽量
753133 -
發射器
+關注
關注
6文章
848瀏覽量
53453
發布評論請先 登錄
相關推薦
評論