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