สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ฉันสร้างตัวควบคุมเมาส์ที่ใช้ Bluetooth ซึ่งสามารถใช้ควบคุมตัวชี้เมาส์และดำเนินการเกี่ยวกับเมาส์พีซีได้ทันที โดยไม่ต้องสัมผัสพื้นผิวใดๆ วงจรอิเล็กทรอนิกส์ที่ฝังอยู่บนถุงมือ สามารถใช้เพื่อติดตามท่าทางของมือผ่านมาตรความเร่ง และสามารถแปลเป็นการเคลื่อนที่ของตัวชี้เมาส์ได้ อุปกรณ์นี้ยังเชื่อมต่อกับปุ่มที่จำลองการคลิกปุ่มซ้ายด้วย อุปกรณ์สามารถเชื่อมต่อแบบอนุกรมกับพีซี (ผ่าน USB) หรือแบบไร้สายผ่านการเชื่อมต่อ Bluetooth Bluetooth ให้การสื่อสารไร้สายที่มีประสิทธิภาพและเป็นสากลระหว่างอุปกรณ์โฮสต์และเมาส์ที่สวมใส่ได้นี้ เนื่องจากบลูทูธมีให้ใช้กันอย่างแพร่หลายและมาพร้อมกับแล็ปท็อปส่วนตัวเกือบทั้งหมด ดังนั้นกรณีการใช้งานของอุปกรณ์ที่สวมใส่ได้นั้นจึงกว้าง การใช้ Raspberry Pi ซึ่งเป็นแพลตฟอร์มการพัฒนาที่ใช้กันทั่วไปสำหรับโครงการต่างๆ การเชื่อมต่อกับเซ็นเซอร์ต่างๆ และการพัฒนาอุปกรณ์ดังกล่าวทำได้ง่ายและปรับขนาดได้ ถุงมือสามารถถูกแทนที่ด้วยอุปกรณ์สวมใส่อื่นๆ เพื่อให้ใช้งานได้กว้างขึ้น
เพื่อเป็นการป้องกันไว้ก่อนสำหรับ COVID-19 ขอแนะนำให้หลีกเลี่ยงการสัมผัสพื้นผิวที่สามารถใช้ร่วมกันระหว่างบุคคลต่างๆ และแล็ปท็อปหน้าจอสัมผัสหรือเมาส์อาจอยู่ในพื้นผิวทั่วไปเหล่านั้น การใช้อุปกรณ์สวมใส่ดังกล่าวช่วยรักษาสุขอนามัยและทำให้พื้นผิวที่ใช้กันทั่วไปปลอดเชื้อ:)
เสบียง
- Raspberry Pi 3 รุ่น B V1.2
- SparkFun Triple Axis Accelerometer Breakout - MMA8452Q
- สายจัมเปอร์ชายกับหญิง
- ถุงมือ
- เทปพันท่อ
- กรรไกร
- สายไมโคร USB
- สาย HDMI (สำหรับการดีบักผ่าน Raspberry Pi)
ขั้นตอนที่ 1: เชื่อมต่อมาตรความเร่งกับ Raspberry Pi
ฉันใช้มาตรความเร่งสามแกน MMA8542Q จาก Sparkfun ซึ่งใช้โปรโตคอลการสื่อสาร I2C เพื่อพูดคุยกับหมุด Raspberry Pi GPIO และส่งข้อมูลแกน เซ็นเซอร์นี้มีโหมดการทำงานที่หลากหลายพร้อมอัตราข้อมูลที่กำหนดค่าได้ โหมดสลีป ช่วงเร่งความเร็ว โหมดตัวกรอง ฯลฯ ฉันพบว่าโค้ดจาก Pibits มีประโยชน์มากในการกำหนดค่าเริ่มต้นของเซ็นเซอร์และทดสอบด้วยท่าทางมือ เป็นการดีกว่าที่จะวางเซ็นเซอร์ไว้บนพื้นผิวที่เรียบเป็นลำดับแรก และทำการเอียงแบบกำหนดได้ในขณะสังเกตค่าเซ็นเซอร์แบบดิบ สิ่งนี้มีประโยชน์อย่างยิ่งในการทำความเข้าใจว่าเซ็นเซอร์นี้ตอบสนองต่อท่าทางมือต่างๆ อย่างไร และเราจะตั้งค่าเกณฑ์สำหรับแอปพลิเคชันของเราได้อย่างไร เมื่อเชื่อมต่อมาตรวัดความเร่งสำเร็จแล้ว คุณจะเห็นข้อมูลแกนดิบที่แสดงบนหน้าจอเทอร์มินัลของ Pi
ขั้นตอนที่ 2: เชื่อมต่อปุ่มกดกับ Raspberry Pi
ในอุปกรณ์ที่สวมใส่ได้นี้ ฉันเชื่อมต่อปุ่มที่สามารถทำงานเป็นปุ่มเมาส์ซ้าย เพื่อให้สามารถคลิกไอคอนบนหน้าจอได้ จากนั้นปลายปุ่มทั้งสองจะเชื่อมต่อกับพิน GPIO 2 พินของ Pi พินตัวใดตัวหนึ่งให้เอาต์พุตสูงแบบลอจิคัลและพินอื่นอ่านค่านั้น เมื่อกดปุ่ม วงจรจะปิดและพินอินพุตสามารถอ่านค่าตรรกะสูงได้ ซึ่งสคริปต์ที่ฉันเขียนขึ้นจะประมวลผลเพื่อจำลองการคลิกเมาส์ซ้าย เนื่องจากไม่มีหัวแร้ง ฉันจึงใช้เทปพันสายไฟเพื่อต่อจัมเปอร์กับปุ่ม
ขั้นตอนที่ 3: การพัฒนาสคริปต์ Python เพื่อควบคุมตัวชี้เมาส์แบบอนุกรม
ฉันใช้ไลบรารี Pyautogui Python เพื่อควบคุมตัวชี้เมาส์ เหตุผลที่ใช้ไลบรารี่นี้คือใช้งานได้ทั้งบน Linux และแพลตฟอร์ม Windows เพื่อควบคุมตัวชี้เมาส์บน Raspberry Pi อันดับแรกฉันเชื่อมต่อ Pi กับจอแสดงผล จากนั้น ฉันใช้ API ต่อไปนี้ที่ห้องสมุดจัดเตรียมให้เพื่อควบคุมตัวชี้เมาส์ของฉัน:
- pyautogui.move(0, 200, 2) # เลื่อนเมาส์ลง 200 พิกเซลภายใน 2 วินาที
- pyautogui.click() # คลิกเมาส์
ในการกรองข้อมูลข้อผิดพลาดที่มาจากมาตรความเร่ง ฉันใช้ค่าเฉลี่ยและวิธีการกรองอื่นๆ ที่เข้าใจได้ง่ายผ่านโค้ดที่แนบมา API pyautogui.move(0, y) ถูกใช้ในลักษณะที่ตัวชี้เมาส์สามารถเลื่อนขึ้น-ลงหรือซ้าย-ขวาในแต่ละครั้ง เนื่องจากตัวตรวจวัดความเร่งรายงานแกนในทิศทาง X, Y และ Z แต่ API รับเพียง 2 อาร์กิวเมนต์ คือแกน X และ Y ดังนั้น วิธีนี้จึงเหมาะสมมากสำหรับมาตรความเร่งของฉันและทำแผนที่ท่าทางสัมผัสบนหน้าจอ
ขั้นตอนที่ 4: การพัฒนาสคริปต์ Python เพื่อควบคุมตัวชี้เมาส์ผ่าน Bluetooth
ส่วนนี้เป็นแอปพลิเคชั่นขั้นสูงซึ่งแล็ปท็อปทุกเครื่องที่มีความสามารถ Bluetooth สามารถสื่อสารกับ Raspberry Pi ในรูปแบบการสื่อสารระหว่างเซิร์ฟเวอร์กับไคลเอนต์และส่งข้อมูลพิกัดของเมาส์แบบไร้สาย ในการตั้งค่าแล็ปท็อป Windows 10 64 บิตเพื่อให้สามารถสื่อสารผ่าน Bluetooth ได้ เราต้องทำตามขั้นตอนด้านล่าง:
วินโดว์ 10:
- สร้างพอร์ต Bluetooth COM ขาเข้า
- จับคู่ Bluetooth ของ Pi กับ Bluetooth ของแล็ปท็อปโดยทำให้ Pi สามารถค้นพบได้
- ติดตั้ง Python บน Windows
- ติดตั้ง pip บน Windows Pip ใช้เพื่อติดตั้งไลบรารีบนเครื่อง Linux หรือ Windows
- ติดตั้ง pyautogui บน Windows โดยใช้: pip ติดตั้ง pyautogui
- เมื่อติดตั้ง pyautogui บนอุปกรณ์แล้ว ให้ติดตั้ง Pybluez บน Windows โดยใช้คำสั่งต่อไปนี้บนเทอร์มินัล Windows โดยใช้: pip install PyBluez-win10 PyBluez เปิดใช้งานการสื่อสาร Bluetooth บนพีซีทั้ง Windows และ Linux
-
ในการพัฒนาแอปพลิเคชันบนแล็ปท็อป Windows 10 เราจำเป็นต้องติดตั้ง Microsoft Visual Studio (ต้องใช้พื้นที่ 15-20 GB) และเครื่องมือสร้าง ดังนั้นร่วมกับ PyBluez เราต้องทำตามคำแนะนำด้านล่าง
- ดาวน์โหลดและเรียกใช้ "Visual Studio Installer":
- ติดตั้ง "Visual Studio Build Tools 2017" เลือก "Visual C++ build tools" และ "Universal Windows Platform build tools"
-
โคลน git
- cd pybluez
หลาม setup.py ติดตั้ง
- หากปฏิบัติตามคำแนะนำข้างต้นอย่างถูกต้อง การรัน Python บนเทอร์มินัล windows และการนำเข้า pyautogui และโมดูล Bluetooth ควรทำงานโดยไม่มีข้อผิดพลาด ตามภาพด้านบน
- ในไลบรารี pybluez ที่ติดตั้งบนเครื่อง Windows ให้ไปที่: pybluez-master\examples\simple\rfcomm-server.py และดำเนินการโดยใช้ python rfcomm-server.py หากเครื่องอ่านบัตรอยู่ในสถานะรอโดยไม่มีข้อผิดพลาด ให้ไปที่ส่วนด้านล่างเพื่อตั้งค่า Bluetooth บน Pi หากมีข้อผิดพลาดในการติดตั้ง pybluez โปรดดูปัญหา GitHub สำหรับการดีบัก
Raspbian บน Raspberry Pi:
- ติดตั้ง PyBluez บน Pi
- เรียกใช้ตัวอย่างเซิร์ฟเวอร์บน Windows จากนั้นบน Pi ไปที่ pybluez-master\examples\simple\rfcomm-client.py และดำเนินการ หากอุปกรณ์ทั้งสองเริ่มสื่อสารกัน ตอนนี้ Bluetooth จะได้รับการตั้งค่าบนอุปกรณ์ทั้งสอง เพื่อทำความเข้าใจเพิ่มเติมว่าการสื่อสารแบบซ็อกเก็ตทำงานอย่างไรกับ Python ให้อ้างอิงกับลิงค์นี้จาก MIT
จะมีการแยกวิเคราะห์ข้อมูลเพิ่มเติมที่จำเป็นในการส่งข้อมูลแกนจาก Pi ไปยังพีซี เนื่องจากข้อมูลจะถูกส่งเป็นไบต์ อ้างถึงรหัสที่แนบมาสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสื่อสารข้อมูลไคลเอ็นต์และเซิร์ฟเวอร์
ขั้นตอนที่ 5: การฝังมาตรความเร่งและปุ่มบนถุงมือ
เมื่อมาตรวัดความเร่งถูกเชื่อมต่ออย่างดี ระบบโครงกระดูกจะดูเหมือนภาพแรกในขั้นตอนนี้
เนื่องจากพื้นผิวของถุงมือไม่เรียบ ฉันจึงใช้บัตรเครดิตจำลองที่มากับกล่องจดหมายของฉันเป็นระยะๆ ตามภาพที่สองในขั้นตอนนี้ ฉันติดเทปพันสายไฟกับบัตรเครดิตจำลองที่พื้นผิวด้านบนของถุงมือ เหนือการ์ด ฉันแนบมาตรความเร่งของฉัน การตั้งค่านี้แข็งแกร่งพอที่จะทำให้ตัวตรวจวัดความเร่งของฉันเสถียรและสามารถติดตามท่าทางของฉันได้อย่างแม่นยำ