สารบัญ:

การเชื่อมต่อเซ็นเซอร์ไจโรสโคป 3 แกน BMG160 กับอนุภาค: 5 ขั้นตอน
การเชื่อมต่อเซ็นเซอร์ไจโรสโคป 3 แกน BMG160 กับอนุภาค: 5 ขั้นตอน

วีดีโอ: การเชื่อมต่อเซ็นเซอร์ไจโรสโคป 3 แกน BMG160 กับอนุภาค: 5 ขั้นตอน

วีดีโอ: การเชื่อมต่อเซ็นเซอร์ไจโรสโคป 3 แกน BMG160 กับอนุภาค: 5 ขั้นตอน
วีดีโอ: Arduino Nano BMG160 Triaxial Gyroscope Sensor Tutorial 2024, พฤศจิกายน
Anonim
Image
Image

ในโลกปัจจุบัน มากกว่าครึ่งของเยาวชนและเด็กชื่นชอบการเล่นเกม และทุกคนที่ชื่นชอบการเล่นเกม ซึ่งหลงใหลในด้านเทคนิคของเกมทราบถึงความสำคัญของการตรวจจับการเคลื่อนไหวในโดเมนนี้ เรายังรู้สึกทึ่งกับสิ่งเดียวกันนี้ และเพียงแค่นำมันมาวางบนกระดาน เราคิดว่าการทำงานกับเซ็นเซอร์ไจโรสโคปซึ่งสามารถวัดอัตราเชิงมุมของวัตถุใดๆ ก็ได้ ดังนั้น เซ็นเซอร์ที่เราใช้จัดการกับงานนี้คือ BMG160 BMG160 เป็นเซ็นเซอร์ไจโรสโคปแบบดิจิตอล 16 บิต สามแกน ซึ่งสามารถวัดอัตราเชิงมุมในสามขนาดห้องตั้งฉาก

ในบทช่วยสอนนี้ เราจะสาธิตการทำงานของ BMG160 ด้วยอนุภาคโฟตอน

ฮาร์ดแวร์ที่คุณต้องการเพื่อการนี้มีดังนี้:

1. BMG160

2. อนุภาคโฟตอน

3. สายเคเบิล I2C

4. I2C Shield สำหรับอนุภาคโฟตอน

ขั้นตอนที่ 1: ภาพรวม BMG160:

สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!

ก่อนอื่น เราต้องการทำความคุ้นเคยกับคุณสมบัติพื้นฐานของโมดูลเซ็นเซอร์ นั่นคือ BMG160 และโปรโตคอลการสื่อสารที่ใช้งาน

BMG160 นั้นเป็นเซ็นเซอร์ไจโรสโคปแบบดิจิตอล 16 บิต สามแกน ซึ่งสามารถวัดอัตราเชิงมุมได้ มันสามารถคำนวณอัตราเชิงมุมในสามมิติห้องตั้งฉาก แกน x, y- และ z และให้สัญญาณเอาท์พุตที่สอดคล้องกัน สามารถสื่อสารกับบอร์ด Raspberry Pi โดยใช้โปรโตคอลการสื่อสาร I2C โมดูลเฉพาะนี้ได้รับการออกแบบมาเพื่อตอบสนองความต้องการสำหรับการใช้งานของผู้บริโภคและเพื่อวัตถุประสงค์ทางอุตสาหกรรม

โปรโตคอลการสื่อสารที่เซ็นเซอร์ทำงานคือ I2C I2C ย่อมาจากวงจรรวม เป็นโปรโตคอลการสื่อสารที่การสื่อสารเกิดขึ้นผ่านสาย SDA (ข้อมูลอนุกรม) และ SCL (นาฬิกาอนุกรม) อนุญาตให้เชื่อมต่ออุปกรณ์หลายเครื่องพร้อมกัน เป็นหนึ่งในโปรโตคอลการสื่อสารที่ง่ายและมีประสิทธิภาพมากที่สุด

ขั้นตอนที่ 2: สิ่งที่คุณต้องการ..!

สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!
สิ่งที่คุณต้องการ..!!

วัสดุที่เราต้องการเพื่อให้บรรลุเป้าหมายประกอบด้วยส่วนประกอบฮาร์ดแวร์ต่อไปนี้:

1. BMG160

2. อนุภาคโฟตอน

3. สายเคเบิล I2C

4. I2C Shield สำหรับอนุภาคโฟตอน

ขั้นตอนที่ 3: การเชื่อมต่อฮาร์ดแวร์:

การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์

ส่วนการเชื่อมต่อฮาร์ดแวร์โดยทั่วไปจะอธิบายการเชื่อมต่อสายไฟที่จำเป็นระหว่างเซ็นเซอร์และอนุภาค ตรวจสอบให้แน่ใจว่าการเชื่อมต่อถูกต้องเป็นสิ่งจำเป็นพื้นฐานในขณะที่ทำงานกับระบบใด ๆ สำหรับเอาต์พุตที่ต้องการ ดังนั้น การเชื่อมต่อที่จำเป็นมีดังนี้:

BMG160 จะทำงานบน I2C นี่คือตัวอย่างไดอะแกรมการเดินสาย ซึ่งสาธิตวิธีเชื่อมต่อแต่ละอินเทอร์เฟซของเซ็นเซอร์

นอกกรอบ บอร์ดได้รับการกำหนดค่าสำหรับอินเทอร์เฟซ I2C ดังนั้นเราขอแนะนำให้ใช้การเชื่อมต่อนี้หากคุณไม่เชื่อเรื่องพระเจ้า

สิ่งที่คุณต้องมีคือสี่สาย! ต้องใช้พิน Vcc, Gnd, SCL และ SDA เพียงสี่การเชื่อมต่อเท่านั้น และเชื่อมต่อด้วยสายเคเบิล I2C

การเชื่อมต่อเหล่านี้แสดงให้เห็นในภาพด้านบน

ขั้นตอนที่ 4: รหัสอนุภาคการวัด Gyroscope 3 แกน:

รหัสอนุภาคการวัดไจโรสโคป 3 แกน
รหัสอนุภาคการวัดไจโรสโคป 3 แกน
รหัสอนุภาคการวัดไจโรสโคป 3 แกน
รหัสอนุภาคการวัดไจโรสโคป 3 แกน

เริ่มต้นด้วยรหัสอนุภาคตอนนี้

ในขณะที่ใช้โมดูลเซ็นเซอร์กับ Arduino เราได้รวมไลบรารี application.h และ spark_wiring_i2c.h "application.h" และไลบรารี spark_wiring_i2c.h มีฟังก์ชันที่อำนวยความสะดวกในการสื่อสาร i2c ระหว่างเซ็นเซอร์และอนุภาค

รหัสอนุภาคทั้งหมดได้รับด้านล่างเพื่อความสะดวกของผู้ใช้:

#รวม

#รวม

// ที่อยู่ BMG160 I2C คือ 0x68 (104)

#define แอดเดอร์ 0x68

int xGyro = 0, yGyro = 0, zGyro = 0;

การตั้งค่าเป็นโมฆะ ()

{

// ตั้งค่าตัวแปร

Particle.variable("i2cdevice", "BMG160");

ตัวแปรอนุภาค ("xGyro", xGyro);

Particle.variable("yGyro", yGyro);

Particle.variable("zGyro", zGyro);

// เริ่มต้นการสื่อสาร I2C เป็น MASTER

Wire.begin();

// เริ่มต้นการสื่อสารแบบอนุกรม

Serial.begin(9600);

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr);

// เลือก Range register

Wire.write(0x0F);

// กำหนดค่าเต็มสเกล 2000 dps

Wire.write(0x80);

// หยุดการส่ง I2C

Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr);

// เลือก Bandwidth register

Wire.write(0x10);

// ตั้งค่าแบนด์วิดท์ = 200 Hz

Wire.write(0x04);

// หยุดการส่ง I2C

Wire.endTransmission();

ล่าช้า (300);

}

วงเป็นโมฆะ ()

{

ข้อมูล int ที่ไม่ได้ลงนาม[6];

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr);

// เลือก data register

Wire.write(0x02);

// หยุดการส่ง I2C

Wire.endTransmission();

// ขอข้อมูล 6 ไบต์

Wire.requestFrom(Addr, 6);

// อ่านข้อมูลขนาด 6 ไบต์

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

if(Wire.available() == 6)

{

data[0] = Wire.read();

ข้อมูล[1] = Wire.read();

ข้อมูล [2] = Wire.read();

ข้อมูล[3] = Wire.read();

ข้อมูล[4] = Wire.read();

ข้อมูล[5] = Wire.read();

}

ล่าช้า (300);

// แปลงข้อมูล

xGyro = ((ข้อมูล[1] * 256) + ข้อมูล[0]);

ถ้า (xGyro > 32767)

{

xGyro -= 65536;

}

yGyro = ((ข้อมูล[3] * 256) + ข้อมูล[2]);

ถ้า (yGyro > 32767)

{

ไจโร -= 65536;

}

zGyro = ((ข้อมูล[5] * 256) + ข้อมูล[4]);

ถ้า (zGyro > 32767)

{

zGyro -= 65536;

}

// ส่งออกข้อมูลไปยังแดชบอร์ด

Particle.publish("แกน X ของการหมุน:", String(xGyro));

Particle.publish("แกน Y ของการหมุน:", String(yGyro));

Particle.publish("แกน Z ของการหมุน:", สตริง (zGyro));

ล่าช้า (1000);

}

ขั้นตอนที่ 5: การใช้งาน:

การใช้งาน
การใช้งาน

BMG160 มีแอพพลิเคชั่นมากมายในอุปกรณ์ต่างๆ เช่น โทรศัพท์มือถือ อุปกรณ์เชื่อมต่อระหว่างเครื่องกับมนุษย์ โมดูลเซ็นเซอร์นี้ได้รับการออกแบบมาเพื่อตอบสนองความต้องการสำหรับการใช้งานของผู้บริโภค เช่น ระบบป้องกันภาพสั่นไหว (DSC และกล้องโทรศัพท์) เกมและอุปกรณ์ชี้ตำแหน่ง นอกจากนี้ยังใช้ในระบบที่ต้องการการจดจำท่าทางและระบบที่ใช้ในการนำทางภายในอาคาร

แนะนำ: