Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай тоног төхөөрөмж:
- Алхам 2: Тоног төхөөрөмжийн холболт:
- Алхам 3: Хөдөлгөөнийг хянах код:
- Алхам 4: Өргөдөл:
Видео: MPU-6000 ба бөөмийн фотон ашиглан хөдөлгөөн хянах: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
MPU-6000 бол 6 тэнхлэгтэй хөдөлгөөн хянах мэдрэгч бөгөөд 3 тэнхлэг хурдасгуур, 3 тэнхлэгтэй гироскоптой. Энэхүү мэдрэгч нь объектын гурван хэмжээст хавтгайд байршил, байршлыг оновчтой хянах чадвартай. Үүнийг хамгийн нарийвчлалтайгаар байрлалын дүн шинжилгээ хийх шаардлагатай системд ашиглаж болно.
Энэхүү гарын авлагад бөөмийн фотонтой MPU-6000 мэдрэгч модулийн интерфэйсийг харуулав. Хурдатгал ба эргэлтийн өнцгийн утгыг уншихын тулд I2c адаптер бүхий бөөмийг ашигласан бөгөөд энэхүү I2C адаптер нь мэдрэгчийн модульд холбогдоход хялбар, илүү найдвартай болгодог.
Алхам 1: Шаардлагатай тоног төхөөрөмж:
Бидний даалгаврыг гүйцэтгэхэд шаардлагатай материалууд нь доор дурдсан тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүдийг агуулдаг.
1. MPU-6000
2. Бөөмийн фотон
3. I2C кабель
4. Бөөмийн фотоны I2C бамбай
Алхам 2: Тоног төхөөрөмжийн холболт:
Тоног төхөөрөмжийн холболтын хэсэг нь үндсэндээ мэдрэгч ба бөөмийн фотоны хооронд шаардлагатай утас холболтыг тайлбарладаг. Аливаа систем дээр ажиллахад шаардлагатай гаралтын хувьд зөв холболтыг хангах нь хамгийн чухал зүйл юм. Тиймээс шаардлагатай холболтууд дараах байдалтай байна.
MPU-6000 нь I2C дээр ажиллах болно. Мэдрэгчийн интерфэйс бүрийг хэрхэн яаж холбохыг харуулсан утасны диаграмын жишээ энд байна.
Хайрцагнаас гадуурх самбар нь I2C интерфэйс дээр тохируулагдсан байдаг тул хэрэв та өөр ойлголтгүй бол энэ холболтыг ашиглахыг зөвлөж байна. Танд ердөө дөрвөн утас л хангалттай!
Vcc, Gnd, SCL, SDA зүүг зөвхөн дөрвөн холболт шаарддаг бөгөөд эдгээр нь I2C кабелийн тусламжтайгаар холбогддог.
Эдгээр холболтыг дээрх зурган дээр харуулав.
Алхам 3: Хөдөлгөөнийг хянах код:
Одоо бөөмийн кодоос эхэлье.
Мэдрэгчийн модулийг arduino ашиглан ашиглахдаа application.h болон spark_wiring_i2c.h номын санг агуулдаг. "application.h" болон spark_wiring_i2c.h номын сан нь мэдрэгч ба бөөмийн хооронд i2c холболтыг хөнгөвчлөх функцуудыг агуулдаг.
Хэрэглэгчийн тав тухыг хангах үүднээс бөөмийн кодыг бүхэлд нь доор харуулав.
#include #include // MPU-6000 I2C хаяг нь 0x68 (104) #Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Particle.variable хувьсагчийг тохируулах ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // 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); // Accelerometer тохиргооны бүртгэлийг сонго Wire.write (0x1C); // Бүрэн хэмжээний хүрээ = +/- 16g Wire.write (0x18); // I2C дамжуулалтыг зогсоох Wire.endTransmission (); // I2C дамжуулалтыг эхлүүлэх Wire.beginTransmission (Addr); // Эрчим хүчний удирдлагын бүртгэлийг сонго Wire.write (0x6B); // PLG xGyro лавлагаатай Wire.write (0x01); // I2C дамжуулалтыг зогсоох Wire.endTransmission (); саатал (300); } void loop () {unsigned int data [6]; // I2C дамжуулалтыг эхлүүлэх Wire.beginTransmission (Addr); // Wire.write мэдээллийн бүртгэлийг сонгох (0x3B); // I2C дамжуулалтыг зогсоох Wire.endTransmission (); // Wire.requestFrom -аас 6 байт өгөгдөл хүсэх (Addr, 6); // 6 байтын өгөгдлийг унших бол (Wire.available () == 6) {data [0] = Wire.read (); өгөгдөл [1] = Wire.read (); өгөгдөл [2] = Wire.read (); өгөгдөл [3] = Wire.read (); өгөгдөл [4] = Wire.read (); өгөгдөл [5] = Wire.read (); } саатал (800); // Өгөгдлийг хөрвүүлэх xAccl = ((өгөгдөл [1] * 256) + өгөгдөл [0]); хэрэв (xAccl> 32767) {xAccl -= 65536; } yAccl = ((өгөгдөл [3] * 256) + өгөгдөл [2]); хэрэв (yAccl> 32767) {yAccl -= 65536; } zAccl = ((өгөгдөл [5] * 256) + өгөгдөл [4]); хэрэв (zAccl> 32767) {zAccl -= 65536; } саатал (800); // I2C дамжуулалтыг эхлүүлэх Wire.beginTransmission (Addr); // Wire.write мэдээллийн бүртгэлийг сонгох (0x43); // I2C дамжуулалтыг зогсоох Wire.endTransmission (); // Wire.requestFrom -аас 6 байт өгөгдөл хүсэх (Addr, 6); // 6 байтын өгөгдлийг унших бол (Wire.available () == 6) {data [0] = Wire.read (); өгөгдөл [1] = Wire.read (); өгөгдөл [2] = Wire.read (); өгөгдөл [3] = Wire.read (); өгөгдөл [4] = Wire.read (); өгөгдөл [5] = Wire.read (); } // Өгөгдлийг хөрвүүлэх xGyro = ((өгөгдөл [1] * 256) + өгөгдөл [0]); хэрэв (xGyro> 32767) {xGyro -= 65536; } yGyro = ((өгөгдөл [3] * 256) + өгөгдөл [2]); хэрэв (yGyro> 32767) {yGyro -= 65536; } zGyro = ((өгөгдөл [5] * 256) + өгөгдөл [4]); хэрэв (zGyro> 32767) {zGyro -= 65536; } // Мэдээллийн самбарт Particle.publish руу өгөгдөл гаргана ("X-Axis дахь хурдатгал:", String (xAccl)); саатал (1000); Particle.publish ("Y-Axis дахь хурдатгал:", String (yAccl)); саатал (1000); Particle.publish ("Z-Axis дахь хурдатгал:", String (zAccl)); саатал (1000); Particle.publish ("Эргэлтийн тэнхлэг:", String (xGyro)); саатал (1000); Particle.publish ("Y-тэнхлэгийн эргэлт:", String (yGyro)); саатал (1000); Particle.publish ("Z-тэнхлэгийн эргэлт:", String (zGyro)); саатал (1000); }
Particle.variable () функц нь мэдрэгчийн гаралтыг хадгалах хувьсагчдыг үүсгэдэг ба Particle.publish () функц нь сайтын хяналтын самбарт гаралтыг харуулдаг.
Мэдээллийн хувьд мэдрэгчийн гаралтыг дээрх зурагт үзүүлэв.
Алхам 4: Өргөдөл:
MPU-6000 бол хөдөлгөөн хянах мэдрэгч бөгөөд ухаалаг гар утас, таблетуудын хөдөлгөөний интерфейсээс хэрэглээгээ олж чаддаг. Ухаалаг гар утаснуудад эдгээр мэдрэгчийг аппликешн болон утасны удирдлага, сайжруулсан тоглоом, бодит байдал, панорамик зураг авах, үзэх, явган зорчигч, тээврийн хэрэгслийн навигацийн дохио өгөх команд гэх мэт програмуудад ашиглаж болно. MotionTracking технологи нь гар утас, таблетыг хүчирхэг 3D ухаалаг төхөөрөмж болгон хөрвүүлэх боломжтой бөгөөд үүнийг эрүүл мэнд, фитнесийн хяналтаас авахуулаад байршилд суурилсан үйлчилгээнд ашиглах боломжтой юм.
Зөвлөмж болгож буй:
ADXL345 ба бөөмийн фотон ашиглан хурдатгалын хэмжилт: 4 алхам
ADXL345 ба Particle Photon ашиглан хурдатгалын хэмжилт: ADXL345 нь ± 16 г хүртэл өндөр нарийвчлалтай (13 бит) хэмжигдэхүүнтэй, жижиг, хэт нимгэн, 3 тэнхлэгтэй акселерометр юм. Дижитал гаралтын өгөгдлийг 16 битийн хоёр нэмэлт хэлбэрээр форматласан бөгөөд I2 C дижитал интерфэйсээр дамжуулан авах боломжтой. Үүнийг хэмждэг
HMC5883 ба бөөмийн фотон ашиглан соронзон орны хэмжилт: 4 алхам
HMC5883 ба бөөмийн фотон ашиглан соронзон орны хэмжилт: HMC5883 нь бага талбайн соронзон мэдрэх зориулалттай дижитал луужин юм. Энэхүү төхөөрөмж нь өргөн соронзон орны хүрээтэй +/- 8 Oe ба гаралтын хурд нь 160 Гц юм. HMC5883 мэдрэгч нь унтраах автомат оосор жолооч, офсет цуцлах
H3LIS331DL болон бөөмийн фотон ашиглан хурдатгалын хэмжилт: 4 алхам
H3LIS331DL ба Particle Photon ашиглан хурдатгалын хэмжилт: H3LIS331DL нь дижитал I²C серийн интерфейстэй, "нано" гэр бүлд хамаарах бага хүчин чадалтай, 3 тэнхлэг бүхий хурдны хэмжигдэхүүн юм. H3LIS331DL нь хэрэглэгчийн сонгох боломжтой бүрэн масштабтай ± 100g/± 200g/± 400g бөгөөд хурдатгалыг хэмжих чадвартай
Бөөмийн фотон ашиглан чийг мэдрэгч: 6 алхам
Particle Photon ашиглан чийг мэдрэгч: Танилцуулга Энэхүү гарын авлагад бид Particle Photon болон түүний ортой эсвэл гадны WiFi антен ашиглан чийгийн мэдрэгчийг бүтээх гэж байна. WiFi -ийн хүч чадал нь агаарт болон газрын чийгийн хэмжээнээс хамаарна. Бид энэ зарчмыг ашигладаг
MCP9803 ба бөөмийн фотон ашиглан температурын хэмжилт: 4 алхам
MCP9803 ба ширхэгийн фотон ашиглан температур хэмжих: MCP9803 нь 2 утастай өндөр нарийвчлалтай температур мэдрэгч юм. Тэдгээр нь температурыг мэдрэх програмыг хөнгөвчлөх хэрэглэгчийн програмчлагдах бүртгэлүүдтэй. Энэхүү мэдрэгч нь олон бүсийн температурыг хянах маш нарийн системд тохиромжтой