電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>帶有磁性鼠標(biāo)墊的基于ESP32的BLE鼠標(biāo)

帶有磁性鼠標(biāo)墊的基于ESP32的BLE鼠標(biāo)

2022-11-04 | zip | 0.16 MB | 次下載 | 免費(fèi)

資料介紹

描述

教程是關(guān)于構(gòu)建基于 esp32 的 BLE 鼠標(biāo),與使用傳統(tǒng)方法使用光學(xué)傳感器構(gòu)建鼠標(biāo)不同,此鼠標(biāo)基于嵌入在定制 3D 打印鼠標(biāo)墊中的磁鐵工作。

請(qǐng)務(wù)必閱讀到本文末尾,以了解這款鼠標(biāo)是如何從頭開(kāi)始構(gòu)建的,并了解如何僅使用單個(gè)磁極和一堆霍爾效應(yīng)傳感器來(lái)導(dǎo)航磁性表面!

補(bǔ)給品

這是可以幫助您輕松完成此項(xiàng)目的產(chǎn)品列表

(會(huì)員鏈接)

3d 打印機(jī):

打印機(jī)升級(jí):

橙色燈絲

Esp32:

霍爾效應(yīng)傳感器:

磁鐵:

性能板:

18650 電池座:

18650 單元:

按鈕:

貼片電容電阻套件:

按鈕:

cp2102:

Tp4056:

第 1 步:光學(xué)鼠標(biāo)如何工作?

首先,我們來(lái)談?wù)剛鹘y(tǒng)鼠標(biāo)的工作原理

如果您看一下底部,您可能已經(jīng)注意到鼠標(biāo)發(fā)出華麗的紅光。這是鼠標(biāo)內(nèi)部的光學(xué)傳感器使用的光來(lái)確定運(yùn)動(dòng)。但它是如何工作的?

最初,當(dāng)我想到它時(shí),我認(rèn)為它類似于線路跟隨器機(jī)器人中使用的 IR 傳感器,或者可能更復(fù)雜一些,例如 IC 中的 LED 和陣列以及光傳感器,最后可能是一些奇特的算法檢測(cè)運(yùn)動(dòng)。

但是當(dāng)我第一次聽(tīng)到這項(xiàng)工作時(shí),我被所使用的技術(shù)所震撼。所以,如果你還沒(méi)有聽(tīng)說(shuō)過(guò),讓我破壞它。

更多信息

第 2 步:在光學(xué)鼠標(biāo)內(nèi)部

?
?
?
?
pYYBAGNkXHSAOzdRAAIEC2icTqM301.png
?
1 / 3
?

如果你打開(kāi)鼠標(biāo),你會(huì)看到一個(gè)底部有一個(gè)小凹口的 IC,這是相機(jī)的外殼,當(dāng)你將它與實(shí)際的相機(jī)進(jìn)行比較時(shí),這種捕捉方式太少了細(xì)節(jié)。因?yàn)檫@不是為了拍攝人和貓的照片,所以它是用來(lái)拍攝鼠標(biāo)使用表面上的圖案和微小凹槽的照片。一旦拍照,它就會(huì)應(yīng)用一種稱為光流的算法,該算法通過(guò)比較它在連續(xù)運(yùn)動(dòng)中拍攝的圖像幀來(lái)確定鼠標(biāo)的方向。

這真的讓我很吃驚,因?yàn)楣饬魉惴ㄒ獧z測(cè)相機(jī)移動(dòng)的方向,兩個(gè)連續(xù)的幀必須非常接近。如果它們離得很遠(yuǎn),那么算法就不能很好地工作。由于這個(gè)原因,鼠標(biāo)光學(xué)傳感器必須每秒捕獲近 2000 到 6000 幀。這比智能手機(jī)相機(jī)快得多。所以,從現(xiàn)在開(kāi)始,當(dāng)你是一只鼠標(biāo)的時(shí)候,你可以認(rèn)為自己是一個(gè)高速攝像機(jī)操作員。

第 3 步:更換光學(xué)傳感器 - 故障

?
?
?
?
pYYBAGNkXHiAdXEPAANWiNrUEUc942.png
?
1 / 2
?

所以,從項(xiàng)目開(kāi)始。我最初的想法是永遠(yuǎn)不要使用磁鐵。

本來(lái)只想做一個(gè)BLE藍(lán)牙鼠標(biāo),但是在設(shè)計(jì)鼠標(biāo)的時(shí)候,很快就遇到了找不到光學(xué)傳感器的問(wèn)題。它并不便宜,而且 Arduino 社區(qū)最熟悉的那個(gè)現(xiàn)在已經(jīng)過(guò)時(shí)了。

所以我的天才大腦認(rèn)為我可以使用 ESP32 CAM 構(gòu)建光學(xué)傳感器。即使我至少可以獲得一些不錯(cuò)的幀速率,我也會(huì)非常高興,因此我可以更換 ESP32 CAM 的鏡頭并制作一款速度非常慢/響應(yīng)速度較慢的鼠標(biāo)。但是在玩了一段時(shí)間的 ESP32 CAM 之后,我認(rèn)為從 ESP32 CAM 開(kāi)始是一個(gè)非常糟糕的主意。

放棄 ESP32 CAM 的主要原因:

  • ESP32 CAM 在捕捉高幀率照片時(shí)不可靠,我可以推的最大值是 24,分辨率非常低。
  • 第二個(gè)原因是光流算法不能很好地工作并且多次使 esp32 崩潰。
  • 最后,大多數(shù) esp32 cam 的鏡頭都用強(qiáng)力膠固定在傳感器上。

第4步:磁鐵!?。?/font>

?
?
?
?
poYBAGNkXHuAHklRAADIkt3I0jQ322.png
?
1 / 2
?

由于我沒(méi)有光學(xué)傳感器的選擇,這讓我陷入絕望的境地,無(wú)法找到檢測(cè)鼠標(biāo)運(yùn)動(dòng)的方法,因?yàn)?a target='_blank' class='arckwlink_none'>電子設(shè)備的重置和編碼非常簡(jiǎn)單。這只是添加一些按鈕和集成 BLE。

我絕對(duì)可以使用任何一種舊方法來(lái)構(gòu)建鼠標(biāo)。但無(wú)論如何,該項(xiàng)目不會(huì)像我一開(kāi)始想要的那樣高度可用。所以我決定制作一個(gè)鼠標(biāo),它使用一些獨(dú)特的方式來(lái)檢測(cè)運(yùn)動(dòng)。

就個(gè)人而言,我最喜歡用磁鐵做實(shí)驗(yàn),而且非常令人滿意。此外,我在以前的項(xiàng)目中使用過(guò)帶有電子設(shè)備的磁鐵。

第 5 步:使磁鐵有用

?
?
?
?
pYYBAGNkXICADRftAAJNs7PiYAo186.png
?
1 / 4
?

為了使這個(gè)磁鐵有用,我必須將磁場(chǎng)轉(zhuǎn)換為電信號(hào),為此我們需要使用霍爾效應(yīng)傳感器。確切地說(shuō),我將使用 49E 線性霍爾效應(yīng)傳感器。

該傳感器會(huì)將磁場(chǎng)強(qiáng)度轉(zhuǎn)換為模擬電壓,稍后我們可以使用微控制器讀取該電壓。

經(jīng)過(guò)幾次實(shí)驗(yàn)并使用磁鐵和霍爾效應(yīng)傳感器后,我發(fā)現(xiàn) 2 個(gè)磁鐵之間的距離合適,當(dāng)我穿過(guò)它們時(shí),霍爾效應(yīng)傳感器的值會(huì)不斷變化。這非常重要,因?yàn)槿绻麤](méi)有這種值的變化,檢測(cè)運(yùn)動(dòng)是完全不可能的。

在我的例子中,距離是 3 毫米,對(duì)您來(lái)說(shuō)可能會(huì)有所不同,因?yàn)榛魻栃?yīng)傳感器的值取決于磁鐵的直徑、厚度和材料。

第 6 步:構(gòu)建磁性鼠標(biāo)墊

?
?
?
?
poYBAGNkXIKAHAEhAAE5VYp1edg678.png
?
1 / 5
?

我在 Fusion 360 中設(shè)計(jì)了一個(gè)可以嵌入 49 個(gè)磁鐵的墊子,這給了我們 7 行和 7 列,每個(gè)磁鐵之間的距離是 3mm。49只是一個(gè)任意數(shù)字,可以增加磁鐵的數(shù)量來(lái)增加鼠標(biāo)墊的尺寸。

下一步是 3d 打印。并將磁鐵放置到位。只需確保將磁鐵放置在所有北極或南極都面向 u 的位置,這將確保我們有一個(gè)單極表面,這將使我們更容易檢測(cè)運(yùn)動(dòng)。

注意:對(duì)我來(lái)說(shuō),將磁鐵放置在正確的位置是一項(xiàng)艱巨的任務(wù),因?yàn)閺?qiáng)磁場(chǎng)會(huì)使磁鐵相互坍塌。所以為了讓它不那么乏味,我不得不用一些膠帶把它們暫時(shí)固定在適當(dāng)?shù)奈恢谩?/font>

?

第 7 步:編碼器類比

?
?
?
?
pYYBAGNkXIWAJZ9rAAFhLKE9XIU809.png
?
1 / 4
?

通過(guò)這種當(dāng)前設(shè)置,我們可以看到在磁單極子表面上導(dǎo)航的邏輯

這個(gè)想法受到旋轉(zhuǎn)編碼器機(jī)制的極大啟發(fā)。如果您以前使用過(guò)旋轉(zhuǎn)編碼器機(jī)構(gòu),您就會(huì)知道它們是根據(jù)相位差原理工作的。來(lái)自編碼器的任一信號(hào)將滯后或超前,通過(guò)使用此相位差,我們可以確定我們是順時(shí)針還是逆時(shí)針?lè)较蜣D(zhuǎn)動(dòng)編碼器。我在描述中放置了一個(gè)鏈接,您可以在其中了解有關(guān)旋轉(zhuǎn)編碼器的更多信息。

現(xiàn)在,類似地,我們將使用 4 個(gè)具有不同相位的單個(gè),其中兩個(gè)用于檢測(cè)左、右,另外兩個(gè)用于檢測(cè)上、下。

注意:編碼器如何工作

第 8 步:找出霍爾效應(yīng)傳感器的運(yùn)動(dòng)和方向

?
?
?
?
pYYBAGNkXIiAG6JoAAC-eqw5q30578.png
?
1 / 4
?

起初,很難注意到或有點(diǎn)難以想象我們?nèi)绾问褂么盆F實(shí)現(xiàn)編碼器類比。但是看看它們是如何工作的還是很有趣的。

首先,繪制出焊盤上所有磁鐵的磁場(chǎng)。當(dāng)我們將傳感器掃過(guò)網(wǎng)格時(shí),這應(yīng)該會(huì)給我們一個(gè)近似正弦波,其中正弦波的頂峰是霍爾效應(yīng)傳感器讀取的最大磁場(chǎng),底部波谷是霍爾讀取的最小磁場(chǎng)效應(yīng)傳感器。

現(xiàn)在有了這個(gè)霍爾效應(yīng)傳感器值,我們可以通過(guò)比較過(guò)去和現(xiàn)在的讀數(shù)來(lái)找到霍爾效應(yīng)傳感器的運(yùn)動(dòng)和方向。

第 9 步:使用單個(gè)傳感器的問(wèn)題

?
?
?
?
pYYBAGNkXI2AYMCYAAbN_NXxIBY658.png
?
1 / 3
?

我剛才說(shuō)我們可以通過(guò)一個(gè)傳感器找到霍爾效應(yīng)傳感器的方向和運(yùn)動(dòng)。因此,很容易假設(shè)我們只需使用 2 個(gè)傳感器就可以找到所有四個(gè)方向,以及為什么兄弟使用編碼器機(jī)制。

但這就是事情變得棘手的地方。

如果我將兩個(gè)傳感器固定在同一平面上并開(kāi)始移動(dòng)平面,您可以看到霍爾效應(yīng)傳感器的值都發(fā)生了變化,無(wú)論是從左到右還是從上到下。這使得確定鼠標(biāo)確切移動(dòng)的方向變得非常復(fù)雜。

為了解決這個(gè)問(wèn)題,我將添加另一組霍爾效應(yīng)傳感器。我們將使用其中兩個(gè)來(lái)檢測(cè)左右運(yùn)動(dòng),其余兩個(gè)用于檢測(cè)上下運(yùn)動(dòng)。

第 10 步:添加更多對(duì)霍爾效應(yīng)傳感器

?
?
?
?
poYBAGNkXJCAB8eCAACde1kWoRs797.png
?
1 / 6
?

這組額外的傳感器將在讀數(shù)中產(chǎn)生偏移,如果您看到左右傳感器一起讀數(shù),當(dāng)我左右移動(dòng)鼠標(biāo)時(shí),它們中的任何一個(gè)都會(huì)領(lǐng)先或落后。確切地說(shuō),這也適用于 up 和 down 。我們也可以使用單個(gè)傳感器來(lái)做到這一點(diǎn)。

有趣的是,相移僅發(fā)生在一組傳感器上,當(dāng)平面沿單個(gè)方向(上/下或左/右)移動(dòng)時(shí),讀數(shù)具有相移,而對(duì)于剩余的一組傳感器, [理想情況下]不會(huì)發(fā)生相移。

因此,通過(guò)以這種方式布置傳感器,我們可以檢測(cè)到用于在屏幕上向各個(gè)方向移動(dòng)鼠標(biāo)的所有 4 個(gè)方向。

如果您覺(jué)得難以理解,我建議您下載 CAD 模型并自己嘗試。

第 11 步:BLE 鼠標(biāo)的電子設(shè)備

?
?
?
?
poYBAGNkXJKASXVlAAFpxvYix88950.png
?
1 / 3
?

不管怎樣,既然鼠標(biāo)的運(yùn)動(dòng)已經(jīng)弄清楚了,剩下的電路就很容易了!

只需為 esp32 添加一些按鈕、電池和充電電路。您可以查看電路圖以更好地理解(這些電路大部分用于我之前的項(xiàng)目中)。

?

第 12 步:使用 PCBway 制造 PCB

?
?
?
?
poYBAGNkXJWAHMH5AAKWdVTwjQY434.png
?
1 / 4
?

一旦電路和PCB布局準(zhǔn)備就緒。我發(fā)送了用于制造的 Gerber 文件,PCBway慷慨地贊助了這個(gè)項(xiàng)目。

因此,如果您的項(xiàng)目需要定制 PCB,他們提供 10 個(gè)定制 PCB,價(jià)格低至 5 美元,并且您可以為您的 PCB 選擇各種定制,例如阻焊層、絲層和表面光潔度的顏色。在您的第一個(gè)訂單中,您將獲得 5 美元的優(yōu)惠券!因此,基本上,您只需在第一個(gè)訂單期間支付運(yùn)費(fèi)。因此,請(qǐng)查看描述中的鏈接以訪問(wèn)他們的網(wǎng)站。

一周后,我收到了我的多氯聯(lián)苯。除了 PCB,我還收到了一個(gè)閃亮的鋁模板,便于焊接。

第 13 步:組裝和焊接

?
?
?
?
poYBAGNkXJqARgyDAASH5ZyG4Uk644.png
?
1 / 6
?

現(xiàn)在,是采購(gòu)組件的時(shí)候了,由于某種原因,這個(gè)項(xiàng)目在獲取組件方面遇到了很多問(wèn)題,有一些在運(yùn)輸過(guò)程中丟失了,還有一些在定制中停留了太久。無(wú)論如何,我想盡快完成這個(gè)項(xiàng)目,所以我將不使用那些剩余的組件。

注意:出于同樣的原因,我沒(méi)有包含該項(xiàng)目的 Gerber 文件。但無(wú)論如何,我用更容易/更容易獲得的組件更新了電路圖。所以,我很快也會(huì)嘗試重建 PCB。

第 14 步:對(duì) ESP32 BLE 鼠標(biāo)進(jìn)行編程

?
?
?
?
pYYBAGNkXJ-AaHRiAAQrxwaLJXM862.png
?
1 / 3
?

對(duì)于代碼,第一步是清理信號(hào)。

在這里,您可以使用不同類型的濾波器數(shù)字信號(hào)處理方法來(lái)清除噪聲。但為了保持簡(jiǎn)單和快速,我將通過(guò)平均信號(hào)來(lái)平滑信號(hào)。然后我使用了旋轉(zhuǎn)編碼器示例代碼并對(duì)其進(jìn)行了一些修改,以使用所有四個(gè)傳感器來(lái)檢測(cè)運(yùn)動(dòng)。老實(shí)說(shuō),這是我一段時(shí)間以來(lái)寫(xiě)的最糟糕的代碼之一,因?yàn)樵谕狭诉@個(gè)項(xiàng)目太久之后我失去了耐心。

無(wú)論如何,在為按鈕添加一些 esp32 BLE 庫(kù)和附加代碼之后,我們就完成了!

只需上傳代碼就可以了。

?

第 15 步:測(cè)試 BLE 鼠標(biāo)

?
?
?
?
pYYBAGNkXKGALeOPAADgLvh3fpg017.png
?
1 / 5
?

好吧,我絕對(duì)認(rèn)為運(yùn)動(dòng)檢測(cè)會(huì)更好。但至少它有效!和其他功能,如左鍵單擊、右鍵單擊滾動(dòng)單擊效果很好。[我會(huì)盡快更新視頻]

第 16 步:最后的想法

?
?
pYYBAGNkXKiAAyulAAee4JDghhw655.jpg
?

這個(gè)項(xiàng)目無(wú)論如何都不完美。我會(huì)說(shuō)它也只有 50% 的工作/準(zhǔn)確度,我不確定是否可以像實(shí)際鼠標(biāo)一樣進(jìn)行平滑移動(dòng),但我可以做幾件事。首先我可以回過(guò)頭來(lái)復(fù)習(xí)一下我對(duì)濾波器和數(shù)字信號(hào)處理的了解,讓來(lái)自傳感器的信號(hào)更好,使鼠標(biāo)移動(dòng)更流暢。或者其次,我可以嘗試其他類型的傳感器,我目前正在尋找替代品,如 IR 傳感器、激光等。

在評(píng)論部分讓我知道您對(duì)此的看法。

我希望至少這篇文章能給你一些新的想法和不同的方法來(lái)構(gòu)建鼠標(biāo)。請(qǐng)務(wù)必閱讀更多即將發(fā)布的教程,并確保查看我的Youtube 頻道以獲取更多類似內(nèi)容。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)