利用ROHM感測器評估套件實現UCLA AirMouse – 第2部分

點擊此處閱讀本文的第1部分 >

3d airmouse

 

利用ROHM感測器評估套件實現UCLA AirMouse – 第1部分中,我們完成了專案的硬體。對於發射機部分,我們將AirMouse按鈕以及Uno的GPIO引腳和RF模組之間的介面組裝在一塊麵包板上。由於ROHM感測器擴展板(SensorShield)在原型設計和DIY專案方面的應用非常方便,因此我們選擇將其與加速度計模組接合在一起使用。正如您將在本教材中看到的那樣,ROHM擴展板內建Arduino與其外設之間的 I2C 通信功能,因此,用戶通過一些簡單代碼就可以接收加速度計的資料,無需編寫任何底層 I2C 函數來發送和接收來自裝置位址的資料。對於接收器部分,我們為Teensy微控制器組裝了類似的分線板,以便與RF模組對接。

本教材介紹和描述的代碼將幫您將兩個模組連接在一起,以完成該項目。我們將向您展示兩個模組之間發送資料的基本代碼以及處理加速度計資料以在電腦顯示器上行動游標的基本代碼。同時,我們希望您能創造一些更酷的補充和改進!

 

AirMouse 快速概覽

我們都用過電腦滑鼠,但是它們只能在桌面之類的平面上工作。我們已經製作了一個“AirMouse”——一款能夠在3D空間中運行的電腦滑鼠。使用者通過傾斜滑鼠就可以讓螢幕上的游標行動,從而可以進行大範圍自訂動作。我們已經在第1部分中介紹了構建AirMouse的基礎知識。AirMouse主要由兩部分組成:戴在手上的滑鼠發射機和連接使用者電腦的接收器。發射機收集滑鼠的方向和按鈕狀態資訊;而接收器則負責轉換這些資訊,從而在電腦螢幕上執行相應操作。AirMouse由Arduino Uno和nRF24L01射頻模組結合ROHM感測器擴展板的加速度計構建而成。

 

第1部分的硬體:

發射機:

  • 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Ω 電阻

按照第1部分連接硬體之後,您就可以利用以下程式運行發送器和接收器。

 

發射機:

 

接收器:

 

 

將代碼上傳到Teensy與將代碼上傳到Arduino Uno略有不同。對於Uno,您只需按照通常的編譯和上傳步驟執行即可:

  1. 依次選擇 Tools > Board > Arduino/Genuino Uno
  2. 選擇埠 (Port)
  3. 點擊Arduino IDE中的 “Upload”(上傳)按鈕

 

而對於Teensy,請按照以下步驟上傳接收器代碼:

  1. 依次選擇 Tools > Board > Teensy 3.2 / 3.1
  2. 依次選擇 Tools > USB Type > Keyboard + Mouse + Joystick (我們將Teensy當作一個USB裝置使用)
  3. 點擊Arduino IDE中的 “Upload”(上傳)按鈕

 

基於本教材之目的,我們不會詳細涉及所使用的不同通信協議,也不會詳細介紹RF模組的通信軟體。要瞭解有關這些主題的更多資訊,請查看我們的通信協議nRF24L01+ 模組 教材。相反,我們將簡要介紹軟體中主控制電路的工作原理。

在AirMouse中,發射機負責收集資料,但大部分資料處理由接收器模組進行。系統的這種設計方式使得Arduino——比Teensy更弱的處理器——只需要收集資料即可,因此能夠在決策和計算上花費更少的資源,並能夠以更快的週期運行。通過這種實現方法,兩台裝置之間唯一發送的資料就是原始加速計資料和按鈕資料。Teensy接收這些原始資料並進行處理,從而在電腦螢幕上執行相應操作。

為了檢測AirMouse的方位,系統必須能夠解析原始加速計資料。要做到這一點,首先必須確定每個座標的“零值”。零值的定義如下:AirMouse保持平坦(平行於地面)時每個軸的加速度計輸出。確定零值後,軟體就能夠將加速度計資料轉換為方向和數量,通過分析每個軸的加速度(由於重力)並將其與零值進行比較以便在螢幕上行動游標。

現在,我們來看一下接收器模組與電腦之間的交互。Teensy被指定為USB人機介面裝置(這裡是指USB滑鼠)。解析方位資料後,軟體會計算游標行動的速度和方向。此外,該軟體還將點擊左鍵解析為左鍵按一下,將點擊右鍵解析為按右鍵,調用適當的方法在電腦螢幕上顯示左鍵按一下或按右鍵功能。以下才是最酷的部分:您完全可以只通過軟體就能夠修改或添加滑鼠的螢幕功能!目前,滑鼠只具有最基本的功能和特性,但是您只需對軟體進行簡單改動,就可以輕鬆添加諸如滾動、將游標移至螢幕上的某個點等功能!(請點擊此處,瞭解Teensy USB滑鼠的參考指南)以下是您可以實現的一些很酷的硬體和軟體想法:

  • 將不同模式的按鍵點擊用作不同的控制功能(比如,按兩下右鍵斷路視窗)
  • 添加滾動功能!(同時點擊兩個按鍵變為“滾動模式”)
  • 添加其他滑鼠按鍵以執行滾動操作或為不同功能獲取更多按鍵模式

我們希望您能夠喜歡這個AirMouse項目,並且非常期待您可以對設計和功能進行修改和改進!

作為UCLA IEEE進階專案(Advanced Projects)計畫的一部分,最初的AirMouse由Rahul Iyer、Aaron和Andrew Wilhelm研發。更多資訊請參閱 http://ieeebruins.org

Device Plus正在尋找與活躍的學生工程組織和實驗室展開合作。想瞭解我們硬體贊助計畫的更多資訊,請通過以下電子郵件聯繫我們:info@deviceplus.com。

 

點擊此處閱讀本文的第1部分 >