精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

李娓侖 ? 來源:guotong1984 ? 作者:guotong1984 ? 2023-02-27 10:27 ? 次閱讀

這篇文章來源于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使用起來非常舒適!比如,您可能需要按照姿勢舒服、暢通無阻的方式安裝左鍵和右鍵單擊按鈕。

然而,組裝這些設備之前,讓我們來看一下必須建立的不同連接。

發射器

poYBAGPzJhSAdy2dAADIJbgeeJE938.jpg

圖1 發射器原理圖(請注意RF模塊的Vcc連至3.3V?。?/p>

pYYBAGPzJhaAfImTAARhAVU_X7g816.jpg

圖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引腳,但是不需要連至任何具體引腳。

poYBAGPzJheAF4zjAAEElhblnng776.jpg

圖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模塊上的實際位置。具體引腳位置請參見下方的引腳說明。

poYBAGPzFsCAcLgzAADF7CqlfvU395.jpg

圖4 nRF24L01+ RF模塊的引腳排列
模塊的引腳1用正方形表示。請注意,模塊與插頭引腳并不對稱。/ ?Addicore

連接RF模塊時,您可能需要在試驗電路板上使用排母。這樣,如有必要,您可以從試驗板上拆下模塊。

此外,在焊接4×2排針的連接時要特別小心——引腳之間的距離非常小
,任何不必要的短路都會損壞模塊!請確保排針接頭周圍留有足夠空間
,以便可以輕松進行焊接工作。

鼠標左鍵和右鍵的功能按鈕連至設置為輸入的Arduino數字引腳。我們通過布置每個按鈕,使得數字引腳在單擊按鈕時讀取邏輯高電平,否則為邏輯低電平。按鈕連接的放大圖如下所示:

pYYBAGPzJhuABC76AABwSEma38g727.jpg

圖5 本項目使用的按鈕布局
按下此按鈕時,GPIO腳接通Vcc。

從上圖可以看出,單擊按鈕時,GPIO引腳直接連至Vcc。沒有按下按鈕時,GPIO引腳和地之間的電阻將GPIO引腳“拉低”到地,因此稱為下拉電阻。這種做法是為了避免數字輸入引腳的懸空邏輯電平問題。當數字輸入不確定(或者連接邏輯高或者連接邏輯低)時,會出現這種情況,即使沒有連接也會由于系統噪聲導致不可預知的行為,比如高讀數或低讀數。我們需要一個高阻值電阻(在這種情況下,10k電阻即可),因為只要點擊按鈕,將GPIO引腳接地就會導致Vcc和地之間短路。按下按鈕電路形成閉環時,電阻會降低Vcc和地之間的電流,從而防止出現危險的短路情況。

poYBAGPzJh2AOmF5AAPwlcTB5p8892.jpg

圖6 ROHM傳感器開發板上方的面包板
傳感器開發板隨附的KX022加速度計模塊可完美安裝在I2C接頭頂部和面包板下方。

幸運的是,對于我們來說,ROHM傳感器開發板已經完成了所有的I2C 硬件連接,這大大簡化了I2C硬件設置,用戶只需將加速度模塊連至I2C的一個接頭即可!要了解有關I2C工作的更多信息,請訪問我們的 Arduino通信協議教程!!

接收器

poYBAGPzJh6AB3dyAADfjYCRTbs625.jpg

圖7 接收器原理圖(如上所示,RF模塊的Vcc連至3.3V!)

pYYBAGPzJiCAUBTqAASjmrhCeLo752.jpg

圖8 接收器模塊
GPIO引腳連接了兩個LED,以便進行調試

接收端的連接與發送端非常相似。RF模塊的不同SPI引腳連至Teensy微控制器上的匹配引腳(與Arduino相同的引腳)。您還可以添加LED,以便進行調試和信息顯示。

組裝AirMouse是構建過程中最乏味的地方,但是,您可以充分發揮您的創意!請嘗試把模塊做得更小、更符合人體工程學,并與我們分享您的想法和作品吧!

請確保在通風良好的區域進行焊接并使用高質量設備,并經常休息。您完成硬件構建之后,請參閱本文的第2部分 – 軟件部分!

poYBAGPzJiOABwwCAAeW240Ppes045.jpg

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7489

    瀏覽量

    151049
  • 傳感器
    +關注

    關注

    2548

    文章

    50678

    瀏覽量

    752005
  • 發射器
    +關注

    關注

    6

    文章

    843

    瀏覽量

    53399
收藏 人收藏

    評論

    相關推薦

    采用ROHM傳感器套件的DIY Arduino家庭安防系統 2部分- Cayenne設置

    在DIY智能家居安防系統1部分中,我們將各種組件(例如PIR傳感器、溫度傳感器和壓力傳感器)組
    的頭像 發表于 09-19 10:20 ?4194次閱讀

    使用觸摸傳感器的設備的輸入和控制,2部分:控制和開發包

    在本系列觸摸感知的1部分中,我們研究了各種類型的觸摸傳感器技術。在2部分中,我們將探討觸摸感
    發表于 06-21 09:28 ?5次下載
    使用觸摸<b class='flag-5'>傳感器</b>的設備的輸入和控制,<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>:控制<b class='flag-5'>器</b>和開發包

    1部分:MAX32660的特點原理介紹

    該系列視頻共包括2部分,這是1部分。本部分介紹MAX32660低功耗Arm? Cortex?-M4 FPU微控制
    的頭像 發表于 10-08 01:46 ?7259次閱讀

    DN236-1和2通道無延遲ΔΣ<sup>?</sup>24位ADC輕松實現多種傳感器的數字化,1部分

    DN236-1和2通道無延遲ΔΣ?24位ADC輕松實現多種傳感器的數字化,1部分
    發表于 04-19 20:11 ?1次下載
    DN236-<b class='flag-5'>1</b>和2通道無延遲ΔΣ<sup>?</sup>24位ADC輕松<b class='flag-5'>實現</b>多種<b class='flag-5'>傳感器</b>的數字化,<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>

    DN237-1通道和2通道無延遲ΔΣ<sup>?</sup>24位ADC輕松實現多種傳感器的數字化,2部分

    DN237-1通道和2通道無延遲ΔΣ?24位ADC輕松實現多種傳感器的數字化,2部分
    發表于 04-19 21:17 ?0次下載
    DN237-<b class='flag-5'>1</b>通道和2通道無延遲ΔΣ<sup>?</sup>24位ADC輕松<b class='flag-5'>實現</b>多種<b class='flag-5'>傳感器</b>的數字化,<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>

    用Hercules? LaunchPad? 開發套件控制GaN功率級—1部分

    用Hercules? LaunchPad? 開發套件控制GaN功率級—1部分
    發表于 11-03 08:04 ?0次下載
    用Hercules? LaunchPad? 開發<b class='flag-5'>套件</b>控制GaN功率級—<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>

    基于Arduino的太陽能電池板數字生態箱(1部分

    這篇文章來源于DevicePlus.com英語網站的翻譯稿。在今天的文章中,我們將提供一個使用Arduino構建電子套件的新方案,本文分為1部分
    的頭像 發表于 02-23 09:44 ?1084次閱讀
    基于Arduino的太陽能電池板數字生態箱(<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>)

    利用Arduino Create和ROHM傳感器評估套件制作智能花園系統

    今天,我們將利用ROHM傳感器評估套件打造一套智能花園系統。在此項目中,我們整合接近/環境光傳感器
    的頭像 發表于 02-23 17:58 ?1152次閱讀
    <b class='flag-5'>利用</b>Arduino Create和<b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b><b class='flag-5'>評估</b><b class='flag-5'>套件</b>制作智能花園系統

    ROHM Arduino傳感器套件打造DIY萬圣節僵尸面具

    今天,我們會利用ROHM傳感器評估套件制作一款超級簡單的萬圣節僵尸面具!我們將使用ROHM接近
    的頭像 發表于 02-23 17:45 ?897次閱讀
    用<b class='flag-5'>ROHM</b> Arduino<b class='flag-5'>傳感器</b><b class='flag-5'>套件</b>打造DIY萬圣節僵尸面具

    采用ROHM傳感器套件的DIY Arduino家庭安防系統 2部分- Cayenne設置

    在DIY智能家居安防系統1部分中,我們將各種組件(例如PIR傳感器、溫度傳感器和壓力傳感器)組
    的頭像 發表于 02-24 14:38 ?982次閱讀
    采用<b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b><b class='flag-5'>套件</b>的DIY Arduino家庭安防系統 <b class='flag-5'>第</b>2<b class='flag-5'>部分</b>- Cayenne設置

    采用ROHM傳感器套件的DIY Arduino家庭安防系統 1部分 機制

    在該項目中,我們將使用Arduino Mega和ROHM傳感器評估套件來制作一套DIY Arduino家庭安防系統。
    的頭像 發表于 02-24 15:08 ?993次閱讀
    采用<b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b><b class='flag-5'>套件</b>的DIY Arduino家庭安防系統 <b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b> 機制

    ROHM傳感器評估套件的3D外殼以及RohmMultiSensor庫更新

    不久前,我創建了RohmMultiSensor - Arduino庫,利用該庫可以輕松控制ROHM傳感器評估套件中的多個
    的頭像 發表于 02-24 09:51 ?859次閱讀
    <b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b><b class='flag-5'>評估</b><b class='flag-5'>套件</b>的3D外殼以及RohmMultiSensor庫更新

    利用ROHM傳感器評估套件實現UCLA AirMouse2部分

    利用ROHM傳感器評估套件實現UCLA
    的頭像 發表于 02-27 10:27 ?536次閱讀

    帶溫度傳感器的低功耗電子墨水顯示屏(1部分

    電子發燒友網站提供《帶溫度傳感器的低功耗電子墨水顯示屏(1部分).zip》資料免費下載
    發表于 07-03 10:20 ?0次下載
    帶溫度<b class='flag-5'>傳感器</b>的低功耗電子墨水顯示屏(<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>)

    電源設計方法-1部分

    電子發燒友網站提供《電源設計方法-1部分.pdf》資料免費下載
    發表于 09-06 11:40 ?0次下載
    電源設計方法-<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>