สารบัญ:
- ขั้นตอนที่ 1: ฮาร์ดแวร์ที่จำเป็น:
- ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์:
- ขั้นตอนที่ 3: โค้ดสำหรับการติดตามการเคลื่อนไหว:
- ขั้นตอนที่ 4: การใช้งาน:
วีดีโอ: การติดตามการเคลื่อนไหวโดยใช้ MPU-6000 และ Arduino Nano: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
MPU-6000 เป็นเซ็นเซอร์ติดตามการเคลื่อนไหวแบบ 6 แกนซึ่งมีมาตรความเร่งแบบ 3 แกนและไจโรสโคปแบบ 3 แกนฝังอยู่ในนั้น เซ็นเซอร์นี้สามารถติดตามตำแหน่งที่แน่นอนและตำแหน่งของวัตถุในระนาบ 3 มิติได้อย่างมีประสิทธิภาพ สามารถใช้ในระบบที่ต้องการการวิเคราะห์ตำแหน่งเพื่อความแม่นยำสูงสุด
ในบทช่วยสอนนี้ แสดงการเชื่อมต่อโมดูลเซ็นเซอร์ MPU-6000 กับ Arduino nano ในการอ่านค่าความเร่งและมุมการหมุน เราใช้ Arduino nano กับอะแดปเตอร์ I2c อะแดปเตอร์ I2C นี้ทำให้การเชื่อมต่อกับโมดูลเซ็นเซอร์ทำได้ง่ายและเชื่อถือได้มากขึ้น
ขั้นตอนที่ 1: ฮาร์ดแวร์ที่จำเป็น:
วัสดุที่เราต้องการเพื่อให้บรรลุเป้าหมายประกอบด้วยส่วนประกอบฮาร์ดแวร์ต่อไปนี้:
1. MPU-6000
2. Arduino นาโน
3. สายเคเบิล I2C
4. I2C Shield สำหรับ Arduino nano
ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์:
ส่วนการเชื่อมต่อฮาร์ดแวร์โดยทั่วไปจะอธิบายการเชื่อมต่อสายไฟที่จำเป็นระหว่างเซ็นเซอร์และ Arduino nano ตรวจสอบให้แน่ใจว่าการเชื่อมต่อถูกต้องเป็นสิ่งจำเป็นพื้นฐานในขณะที่ทำงานกับระบบใด ๆ สำหรับเอาต์พุตที่ต้องการ ดังนั้น การเชื่อมต่อที่จำเป็นมีดังนี้:
MPU-6000 จะทำงานบน I2C นี่คือตัวอย่างไดอะแกรมการเดินสาย ซึ่งสาธิตวิธีเชื่อมต่อแต่ละอินเทอร์เฟซของเซ็นเซอร์
นอกกรอบ บอร์ดได้รับการกำหนดค่าสำหรับอินเทอร์เฟซ I2C ดังนั้นเราขอแนะนำให้ใช้การเชื่อมต่อนี้หากคุณไม่เชื่อเรื่องพระเจ้า
สิ่งที่คุณต้องมีคือสี่สาย! ต้องใช้พิน Vcc, Gnd, SCL และ SDA เพียงสี่การเชื่อมต่อเท่านั้น และเชื่อมต่อด้วยสายเคเบิล I2C
การเชื่อมต่อเหล่านี้แสดงให้เห็นในภาพด้านบน
ขั้นตอนที่ 3: โค้ดสำหรับการติดตามการเคลื่อนไหว:
มาเริ่มกันที่รหัส Arduino กันก่อนเลย
ในขณะที่ใช้โมดูลเซ็นเซอร์กับ Arduino เราได้รวมไลบรารี Wire.h ไลบรารี "Wire" มีฟังก์ชันที่อำนวยความสะดวกในการสื่อสาร i2c ระหว่างเซนเซอร์และบอร์ด Arduino
รหัส Arduino ทั้งหมดได้รับด้านล่างเพื่อความสะดวกของผู้ใช้:
#รวม
// ที่อยู่ MPU-6000 I2C คือ 0x68 (104)
#define แอดเดอร์ 0x68
การตั้งค่าเป็นโมฆะ ()
{
// เริ่มต้นการสื่อสาร I2C เป็น Master
Wire.begin();
// เริ่มต้นการสื่อสารแบบอนุกรม กำหนดอัตรารับส่งข้อมูล = 9600
Serial.begin(9600);
// เริ่มการส่ง I2C
Wire.beginTransmission(Addr);
// เลือกการลงทะเบียนการกำหนดค่าไจโรสโคป
Wire.write(0x1B);
// ช่วงสเกลเต็ม = 2000 dps
Wire.write(0x18);
// หยุดการส่ง I2C
Wire.endTransmission();
// เริ่มการส่ง I2C
Wire.beginTransmission(Addr);
// เลือกการลงทะเบียนการกำหนดค่ามาตรความเร่ง
Wire.write(0x1C);
// ช่วงสเกลเต็ม = +/-16g
Wire.write(0x18);
// หยุดการส่ง I2C
Wire.endTransmission();
// เริ่มการส่ง I2C
Wire.beginTransmission(Addr);
// เลือกการลงทะเบียนการจัดการพลังงาน
Wire.write(0x6B);
// PLL พร้อมการอ้างอิง xGyro
Wire.write(0x01);
// หยุดการส่ง I2C
Wire.endTransmission();
ล่าช้า (300);
}
วงเป็นโมฆะ ()
{
ข้อมูล int ที่ไม่ได้ลงนาม[6];
// เริ่มการส่ง I2C
Wire.beginTransmission(Addr);
// เลือก data register
Wire.write(0x3B);
// หยุดการส่ง I2C
Wire.endTransmission();
// ขอข้อมูล 6 ไบต์
Wire.requestFrom(Addr, 6);
// อ่านข้อมูลขนาด 6 ไบต์
if(Wire.available() == 6)
{
data[0] = Wire.read();
ข้อมูล[1] = Wire.read();
ข้อมูล [2] = Wire.read();
ข้อมูล[3] = Wire.read();
ข้อมูล[4] = Wire.read();
ข้อมูล[5] = Wire.read();
}
// แปลงข้อมูล
int xAccl = ข้อมูล[0] * 256 + ข้อมูล[1];
int yAccl = ข้อมูล[2] * 256 + ข้อมูล[3];
int zAccl = ข้อมูล[4] * 256 + ข้อมูล[5];
// เริ่มการส่ง I2C
Wire.beginTransmission(Addr);
// เลือก data register
Wire.write(0x43);
// หยุดการส่ง I2C
Wire.endTransmission();
// ขอข้อมูล 6 ไบต์
Wire.requestFrom(Addr, 6);
// อ่านข้อมูลขนาด 6 ไบต์
if(Wire.available() == 6)
{
data[0] = Wire.read();
ข้อมูล[1] = Wire.read();
ข้อมูล [2] = Wire.read();
ข้อมูล[3] = Wire.read();
ข้อมูล[4] = Wire.read();
ข้อมูล[5] = Wire.read();
}
// แปลงข้อมูล
int xGyro = ข้อมูล[0] * 256 + ข้อมูล[1];
int yGyro = ข้อมูล[2] * 256 + ข้อมูล[3];
int zGyro = ข้อมูล[4] * 256 + ข้อมูล[5];
// ส่งออกข้อมูลไปยังมอนิเตอร์แบบอนุกรม
Serial.print("การเร่งความเร็วในแกน X: ");
Serial.println(xAccl);
Serial.print("การเร่งความเร็วในแกน Y: ");
Serial.println(yAccl);
Serial.print("การเร่งความเร็วในแกน Z: ");
Serial.println(zAccl);
Serial.print("แกน X ของการหมุน: ");
Serial.println(xGyro);
Serial.print("แกน Y ของการหมุน: ");
Serial.println(yGyro);
Serial.print("แกน Z ของการหมุน: ");
Serial.println (zGyro);
ล่าช้า (500);
}
ในไลบรารีของสายไฟ Wire.write() และ Wire.read() ใช้เพื่อเขียนคำสั่งและอ่านเอาต์พุตของเซ็นเซอร์
Serial.print() และ Serial.println() ใช้เพื่อแสดงเอาต์พุตของเซ็นเซอร์บนจอภาพอนุกรมของ Arduino IDE
เอาต์พุตของเซ็นเซอร์แสดงในภาพด้านบน
ขั้นตอนที่ 4: การใช้งาน:
MPU-6000 เป็นเซ็นเซอร์ติดตามการเคลื่อนไหว ซึ่งพบแอปพลิเคชันในอินเทอร์เฟซการเคลื่อนไหวของสมาร์ทโฟนและแท็บเล็ต ในสมาร์ทโฟนสามารถใช้เซ็นเซอร์เหล่านี้ในแอปพลิเคชันต่างๆ เช่น คำสั่งท่าทางสัมผัสสำหรับแอปพลิเคชันและการควบคุมโทรศัพท์ การเล่นเกมที่ได้รับการปรับปรุง เพิ่มความเป็นจริงยิ่งขึ้น การจับภาพและการดูภาพถ่ายพาโนรามา และระบบนำทางสำหรับคนเดินเท้าและในรถยนต์ เทคโนโลยี MotionTracking สามารถแปลงโทรศัพท์เคลื่อนที่และแท็บเล็ตให้เป็นอุปกรณ์อัจฉริยะ 3 มิติที่มีประสิทธิภาพ ซึ่งสามารถใช้ในแอปพลิเคชันต่างๆ ตั้งแต่การตรวจสุขภาพและฟิตเนส ไปจนถึงบริการตามตำแหน่ง
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
การบันทึกข้อมูลแบบเรียลไทม์ MPU-6050/A0 ด้วย Arduino และ Android: 7 ขั้นตอน (พร้อมรูปภาพ)
เรียลไทม์ MPU-6050/A0 การบันทึกข้อมูลด้วย Arduino และ Android: ฉันสนใจที่จะใช้ Arduino สำหรับการเรียนรู้ของเครื่อง ในขั้นแรก ฉันต้องการสร้างการแสดงข้อมูลแบบเรียลไทม์ (หรือใกล้เคียงกัน) และตัวบันทึกด้วยอุปกรณ์ Android ฉันต้องการเก็บข้อมูลมาตรความเร่งจาก MPU-6050 ดังนั้นฉันจึงออกแบบ