สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
MMA8452Q เป็นเครื่องวัดความเร่งแบบไมโครแมชชีนแบบสามแกน ใช้พลังงานต่ำ อัจฉริยะ ใช้พลังงานต่ำ มีความละเอียด 12 บิต ตัวเลือกที่ตั้งโปรแกรมได้ของผู้ใช้ที่ยืดหยุ่นนั้นมาพร้อมกับฟังก์ชั่นฝังตัวในมาตรความเร่ง ซึ่งสามารถกำหนดค่าเป็นพินอินเทอร์รัปต์สองตัวได้ ผู้ใช้สามารถเลือกสเกลแบบเต็มได้ ±2g/±4g/±8g พร้อมข้อมูลที่กรองผ่านตัวกรองความถี่สูง รวมถึงข้อมูลที่ไม่มีการกรองแบบเรียลไทม์ นี่คือการสาธิตด้วย raspberry pi โดยใช้รหัส python
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ..!
1. ราสเบอร์รี่ปี่
2. MMA8452Q
3. สายเคเบิล I²C
4. I²C Shield สำหรับ Raspberry Pi
5. สายเคเบิลอีเธอร์เน็ต
ขั้นตอนที่ 2: การเชื่อมต่อ:
ใช้เกราะป้องกัน I2C สำหรับ raspberry pi แล้วค่อยๆ ดันไปบนหมุด gpio ของ raspberry pi
จากนั้นเชื่อมต่อปลายสาย I2C ด้านหนึ่งกับเซ็นเซอร์ MMA8452Q และปลายอีกด้านหนึ่งเข้ากับแผงป้องกัน I2C
เชื่อมต่อสายอีเทอร์เน็ตกับ pi หรือคุณสามารถใช้โมดูล WiFi ได้
การเชื่อมต่อแสดงในภาพด้านบน
ขั้นตอนที่ 3: รหัส:
รหัสหลามสำหรับ MMA8452Q สามารถดาวน์โหลดได้จากที่เก็บ GitHub ของเรา - ControlEverythingCommunity
นี่คือลิงค์.
เราใช้ไลบรารี SMBus สำหรับโค้ด python ขั้นตอนในการติดตั้ง SMBus บน raspberry pi ได้อธิบายไว้ที่นี่:
pypi.python.org/pypi/smbus-cffi/0.5.1
คุณสามารถคัดลอกรหัสจากที่นี่ได้ดังนี้:
# จัดจำหน่ายด้วยใบอนุญาตอิสระ
# ใช้งานตามที่คุณต้องการ ไม่ว่าจะมีกำไรหรือฟรี หากเข้ากับใบอนุญาตของงานที่เกี่ยวข้อง
# MMA8452Q
# รหัสนี้ออกแบบมาเพื่อทำงานกับโมดูลขนาดเล็ก MMA8452Q_I2CS I2C
นำเข้า smbus
เวลานำเข้า
# รับรถบัส I2C
รถบัส = smbus. SMBus(1)
# MMA8452Q ที่อยู่ 0x1C(28)
# เลือกควบคุมการลงทะเบียน 0x2A(42)
# 0x00(00) โหมดสแตนด์บาย
bus.write_byte_data(0x1C, 0x2A, 0x00)
# MMA8452Q ที่อยู่ 0x1C(28)
# เลือกควบคุมการลงทะเบียน 0x2A(42)
# 0x01(01) โหมดแอคทีฟ
bus.write_byte_data(0x1C, 0x2A, 0x01)
# MMA8452Q ที่อยู่ 0x1C(28)
# เลือกการลงทะเบียนการกำหนดค่า 0x0E (14)
# 0x00(00) ตั้งค่าช่วงเป็น +/- 2g
bus.write_byte_data(0x1C, 0x0E, 0x00)
เวลานอน(0.5)
# MMA8452Q ที่อยู่ 0x1C(28)
# อ่านข้อมูลย้อนหลังตั้งแต่ 0x00(0), 7 ไบต์
# การลงทะเบียนสถานะ, X-Axis MSB, X-Axis LSB, Y-Axis MSB, Y-Axis LSB, Z-Axis MSB, Z-Axis LSB
ข้อมูล = bus.read_i2c_block_data(0x1C, 0x00, 7)
#แปลงข้อมูล
xAccl = (ข้อมูล[1] * 256 + ข้อมูล[2]) / 16
ถ้า xAccl > 2047:
xAccl -= 4096
yAccl = (ข้อมูล[3] * 256 + ข้อมูล[4]) / 16
ถ้า yAccl > 2047:
yAccl -= 4096 z
Accl = (ข้อมูล[5] * 256 + ข้อมูล[6]) / 16
ถ้า zAccl > 2047:
zAccl -= 4096
# ส่งออกข้อมูลไปยังหน้าจอ
พิมพ์ "ความเร่งในแกน X: %d" %xAccl
พิมพ์ "ความเร่งในแกน Y: %d" %yAccl
พิมพ์ "ความเร่งในแกน Z: %d" %zAccl
ขั้นตอนที่ 4: การใช้งาน:
MMA8452Q มีแอปพลิเคชันต่างๆ ซึ่งรวมถึงแอปพลิเคชัน E-Compass, การตรวจจับการวางแนวคงที่ซึ่งรวมถึงแนวตั้ง/แนวนอน, ขึ้น/ลง, ซ้าย/ขวา, การระบุตำแหน่งกลับ/ ด้านหน้า, โน้ตบุ๊ก, e-reader และ Laptop Tumble and Freefall Detection แบบเรียลไทม์ การตรวจจับการวางแนวรวมถึงความเป็นจริงเสมือนและข้อเสนอแนะตำแหน่งผู้ใช้ 3D ในการเล่นเกม การวิเคราะห์กิจกรรมแบบเรียลไทม์ เช่น การนับก้าวของ pedometer การตรวจจับการตกอย่างอิสระสำหรับ HDD การสำรองข้อมูล GPS ที่คำนวณไม่ทัน และอีกมากมาย