Агуулгын хүснэгт:
- Алхам 1: BMG160 -ийн тойм:
- Алхам 2: Танд хэрэгтэй зүйл..
- Алхам 3: Тоног төхөөрөмжийн холболт:
- Алхам 4: Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт:
- Алхам 5: Өргөдөл:
Видео: Бөөрөлзгөнө Pi-тай BMG160 3 тэнхлэгтэй гироскоп мэдрэгчийн интерфейс: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Өнөөгийн ертөнцөд залуучууд, хүүхдүүдийн талаас илүү хувь нь тоглоом тоглох дуртай байдаг бөгөөд тоглоомын техникийн талаас нь сонирхдог бүх хүмүүс энэ чиглэлээр хөдөлгөөн мэдрэхийн ач холбогдлыг мэддэг. Бид мөн адил зүйлийг гайхаж, самбар дээр байрлуулахын тулд аливаа объектын өнцгийн хурдыг хэмжих гироскоп мэдрэгч дээр ажиллах талаар бодож үзсэн. Тиймээс даалгаврыг шийдвэрлэхийн тулд бидний авсан мэдрэгч бол BMG160 юм. BMG160 бол дижитал, гурван тэнхлэгтэй, гироскопын мэдрэгч бөгөөд өрөөний перпендикуляр гурван хэмжээсээр өнцгийн хурдыг хэмжих боломжтой.
Энэхүү гарын авлагад бид програмчлалын хэл болгон Java -г ашиглан BMG160 -ийн Raspberry pi -тэй хэрхэн ажиллахыг харуулах болно.
Энэ зорилгоор танд хэрэгтэй тоног төхөөрөмж дараах байдалтай байна.
1. BMG160
2. Raspberry Pi
3. I2C кабель
4. Raspberry Pi -д зориулсан I2C бамбай
5. Ethernet кабель
Алхам 1: BMG160 -ийн тойм:
Юуны өмнө бид танд BMG160 мэдрэгч модулийн үндсэн шинж чанарууд болон түүн дээр ажилладаг холбооны протоколыг танилцуулахыг хүсч байна.
BMG160 нь үндсэндээ өнцгийн түвшинг хэмжих боломжтой 16 бит, дижитал, гурван тэнхлэгтэй, гироскоп мэдрэгч юм. Энэ нь x-, y- ба z-тэнхлэг гэсэн гурван перпендикуляр өрөөний хэмжээсээр өнцгийн хурдыг тооцоолох, холбогдох гаралтын дохиог өгөх чадвартай. Энэ нь I2C холбооны протокол ашиглан бөөрөлзгөнө pi самбартай харилцах боломжтой. Энэхүү тусгай модуль нь хэрэглэгчийн хэрэглээ болон үйлдвэрлэлийн зориулалтаар тавигдах шаардлагыг хангахад зориулагдсан болно.
Мэдрэгчийн ажилладаг холбооны протокол нь I2C юм. I2C нь нэгдсэн хэлхээний товчлол юм. Энэ бол SDA (цуваа өгөгдөл) ба SCL (цуваа цаг) шугамаар дамжуулан харилцаа холбоо явагддаг харилцаа холбооны протокол юм. Энэ нь олон төхөөрөмжийг нэгэн зэрэг холбох боломжийг олгодог. Энэ бол хамгийн энгийн бөгөөд үр дүнтэй харилцааны протоколын нэг юм.
Алхам 2: Танд хэрэгтэй зүйл..
Зорилгодоо хүрэхийн тулд бидэнд шаардлагатай материалууд нь дараахь тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүдийг агуулдаг.
1. BMG160
2. Raspberry Pi
3. I2C кабель
4. Raspberry Pi -д зориулсан I2C бамбай
5. Ethernet кабель
Алхам 3: Тоног төхөөрөмжийн холболт:
Тоног төхөөрөмжийн холболтын хэсэг нь үндсэндээ мэдрэгч ба бөөрөлзгөнө pi хооронд шаардлагатай утас холболтыг тайлбарладаг. Аливаа систем дээр ажиллахад шаардлагатай гаралтын хувьд зөв холболтыг хангах нь хамгийн чухал зүйл юм. Тиймээс шаардлагатай холболтууд дараах байдалтай байна.
BMG160 нь I2C дээр ажиллах болно. Мэдрэгчийн интерфэйс бүрийг хэрхэн яаж холбохыг харуулсан утасны диаграмын жишээ энд байна.
Хайрцагнаас гадуурх самбар нь I2C интерфэйс дээр тохируулагдсан байдаг тул хэрэв та өөр ойлголтгүй бол энэ холболтыг ашиглахыг зөвлөж байна. Танд ердөө дөрвөн утас л хангалттай!
Vcc, Gnd, SCL, SDA зүүг зөвхөн дөрвөн холболт шаарддаг бөгөөд эдгээр нь I2C кабелийн тусламжтайгаар холбогддог.
Эдгээр холболтыг дээрх зурган дээр харуулав.
Алхам 4: Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт:
Бөөрөлзгөнө pi ашиглах давуу тал нь мэдрэгчийг интерфэйстэй холбохын тулд самбарыг програмчлах хэлний уян хатан байдлыг өгдөг. Энэхүү самбарын давуу талыг ашиглахын тулд бид Java програмчлалыг энд харуулав. BMG160 -ийн Java кодыг манай github нийгэмлэгээс татаж авч болно Dcube Store Community.
Хэрэглэгчдэд хялбар байхын тулд бид кодыг энд тайлбарлаж байна: Кодлох эхний алхам бол java тохиолдолд pi4j номын санг татаж авах хэрэгтэй, учир нь энэ номын сан нь кодонд ашиглагддаг функцийг дэмждэг. Тиймээс номын санг татаж авахын тулд та дараах линкээр орж үзэх боломжтой.
pi4j.com/install.html
Та энэ мэдрэгчийн java кодыг эндээс хуулж болно.
com.pi4j.io.i2c. I2CBus импортлох;
com.pi4j.io.i2c. I2CD төхөөрөмжийг импортлох;
com.pi4j.io.i2c. I2CFactory импортлох;
java.io. IOException импортлох;
нийтийн анги BMG160
{
public static void main (String args ) Exception хаядаг
{
// I2C автобус үүсгэх
I2CBus автобус = I2CFactory.getInstance (I2CBus. BUS_1);
// I2C төхөөрөмж авах, BMG160 I2C хаяг нь 0x68 (104)
I2CDevice төхөөрөмж = bus.getDevice (0x68);
// Мужийн бүртгэлийг сонгоно уу
// Бүрэн хэмжээний масштабыг тохируулах, 2000 dps
device.write (0x0F, (байт) 0x80);
// Зурвасын өргөний бүртгэлийг сонгоно уу
// зурвасын өргөн 200 Гц
төхөөрөмж. бичих (0x10, (байт) 0x04);
Thread.sleep (500);
// 6 байтын өгөгдлийг уншина уу
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
байт өгөгдөл = шинэ байт [6];
device.read (0x02, өгөгдөл, 0, 6);
// Өгөгдлийг хөрвүүлэх
int xGyro = ((өгөгдөл [1] & 0xFF) * 256 + (өгөгдөл [0] & 0xFF));
хэрэв (xGyro> 32767)
{
xGyro -= 65536;
}
int yGyro = ((өгөгдөл [3] & 0xFF) * 256 + (өгөгдөл [2] & 0xFF));
хэрэв (yGyro> 32767)
{
yGyro -= 65536;
}
int zGyro = ((өгөгдөл [5] & 0xFF) * 256 + (өгөгдөл [4] & 0xFF));
хэрэв (zGyro> 32767)
{
zGyro -= 65536;
}
// Дэлгэц рүү өгөгдөл гаргана
System.out.printf ("Эргэлтийн тэнхлэг: %d %n", xGyro);
System.out.printf ("Y тэнхлэгийн эргэлтийн тэнхлэг: %d %n", yGyro);
System.out.printf ("Z тэнхлэгийн эргэлтийн тэнхлэг: %d %n", zGyro);
}
}
Мэдрэгч ба самбар хоорондын i2c холболтыг хөнгөвчлөх номын сан нь pi4j бөгөөд түүний төрөл бүрийн багцууд I2CBus, I2CDevice, I2CFactory нь холболт тогтооход тусалдаг.
com.pi4j.io.i2c. I2CBus импортлох; com.pi4j.io.i2c. I2CD төхөөрөмжийг импортлох; com.pi4j.io.i2c. I2CFactory импортлох; java.io. IOException импортлох;
Кодын энэ хэсэг нь мэдрэгчийг бичих () функцийг ашиглан холбогдох тушаалуудыг бичих замаар өнцгийн хурдыг хэмжих боломжийг олгодог бөгөөд дараа нь read () функцийг ашиглан өгөгдлийг уншдаг.
// Хүрээний бүртгэлийг сонгох // Бүрэн хэмжээний мужийг тохируулах, 2000 dps device.write (0x0F, (байт) 0x80); // зурвасын өргөний бүртгэлийг сонгох // Bandwidth 200 Hz device.write (0x10, (byte) 0x04); Thread.sleep (500);
// 6 байтын өгөгдлийг уншина уу
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb байт өгөгдөл = шинэ байт [6]; device.read (0x02, өгөгдөл, 0, 6);
Мэдрэгчээс хүлээн авсан өгөгдлийг дараах хэлбэрийг ашиглан зохих формат руу хөрвүүлнэ.
int xGyro = ((өгөгдөл [1] & 0xFF) * 256 + (өгөгдөл [0] & 0xFF)); хэрэв (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((өгөгдөл [3] & 0xFF) * 256 + (өгөгдөл [2] & 0xFF)); хэрэв (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((өгөгдөл [5] & 0xFF) * 256 + (өгөгдөл [4] & 0xFF)); хэрэв (zGyro> 32767) {zGyro -= 65536; }
Гаралтыг System.out.println () функцийг ашиглан дараах форматаар хэвлэнэ.
System.out.println ("Эргэлтийн тэнхлэг: %d %n", xGyro); System.out.println ("Y тэнхлэгийн эргэлтийн тэнхлэг: %d %n", yGyro); System.out.println ("Z тэнхлэгийн эргэлтийн тэнхлэг: %d %n", zGyro);
Мэдрэгчийн гаралтыг дээрх зурагт үзүүлэв.
Алхам 5: Өргөдөл:
BMG160 нь гар утас, хүний машины интерфейс гэх мэт төхөөрөмжүүдэд олон төрлийн програмуудтай. Энэхүү мэдрэгчийн модуль нь дүрс тогтворжуулах (DSC ба камер-утас), тоглоом, заагч төхөөрөмж гэх мэт хэрэглэгчийн хэрэглээний шаардлагыг хангахад зориулагдсан болно. Энэ нь дохио зангаа таних шаардлагатай систем, дотор навигацид ашигладаг системд ашиглагддаг.
Зөвлөмж болгож буй:
3 тэнхлэгтэй гироскопын BMG160 мэдрэгчийг Arduino Nano-той холбох: 5 алхам
Гурван тэнхлэгтэй гироскоп мэдрэгч BMG160-ийн Ардуино Нанотой харилцах: Орчин үеийн ертөнцөд залуучууд, хүүхдүүдийн талаас илүү хувь нь тоглоом тоглох дуртай байдаг бөгөөд тоглоомын техникийн талаас нь сонирхдог бүх хүмүүс хөдөлгөөн мэдрэхийн ач холбогдлыг мэддэг. энэ домэйнд. Бид мөн ижил зүйлийг гайхаж байсан
3 тэнхлэгтэй гироскоп мэдрэгч BMG160-ийн тоосонцортой холбох: 5 алхам
3 тэнхлэгтэй гироскоп мэдрэгч BMG160-ийн тоосонцортой харилцах: Өнөөгийн ертөнцөд залуучууд, хүүхдүүдийн талаас илүү хувь нь тоглоом тоглох дуртай байдаг бөгөөд тоглоомын техникийн талаас нь сонирхдог бүх хүмүүс хөдөлгөөн мэдрэхийн ач холбогдлыг мэддэг. энэ домэйн. Бид мөн ижил зүйлийг гайхаж байсан
MPU6050-Акселерометр+Гироскоп мэдрэгчийн үндсэн ойлголт: 3 алхам
MPU6050-Акселерометр+Гироскопын мэдрэгчийн үндсэн ойлголт: MPU6050 бол маш хэрэгтэй мэдрэгч юм. MPU 6050 бол IMU: Инерцийн хэмжих нэгж (IMU) нь биеийн тодорхой хүч, өнцгийн хурд, заримдаа чиглэлийг хэмжиж мэдээлдэг электрон төхөөрөмж юм. биеийн хослолыг ашиглан
6 тэнхлэгтэй мэдрэгчийн модуль FSP200 шалгалт тохируулга ба туршилт: 6 алхам
6 тэнхлэгтэй мэдрэгчийн модуль FSP200 шалгалт тохируулга ба туршилт: FSP200 нь 6 тэнхлэгтэй инерцийн хэмжих нэгжийн процессор бөгөөд чиглэл ба чиглэлийг гаргадаг. Энэ нь тогтвортой, үнэн зөв чиглэл, чиглэлийг хангахын тулд акселерометр ба гиро мэдрэгчийг нэгтгэдэг. FSP200 нь робот ашиглахад тохиромжтой
GY-521 MPU6050 3 тэнхлэгтэй хурдасгах гироскоп 6DOF модулийн заавар: 4 алхам
GY-521 MPU6050 3 тэнхлэг хурдасгах гироскоп 6DOF модулийн заавар: Тодорхойлолт Энэхүү энгийн модуль нь Arduino болон бусад хянагчтай I2C (Wire Arduino номын санг ашиглана уу) ашиглан интерфэйс хийхэд шаардлагатай бүх зүйлийг агуулсан бөгөөд 3 тэнхлэгт-X, Y ба Z Үзүүлэлтүүд Хурдны тоолуурын хүрээ: ± 2, ±