Mundarija:
- 1 -qadam: BMG160 haqida umumiy ma'lumot:
- 2 -qadam: Sizga nima kerak.. !
- 3 -qadam: Uskuna ulanishi:
- 4-qadam: Java-kod yordamida 3 o'qli giroskopni o'lchash:
- 5 -qadam: Ilovalar:
Video: Raspberry Pi bilan BMG160 3 o'qli giroskop sensori o'zaro bog'lanishi: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Zamonaviy dunyoda yoshlar va bolalarning yarmidan ko'pi o'yinni yaxshi ko'radilar va o'yinni texnik jihatdan qiziqtirganlarning hammasi bu sohada harakatni sezishning ahamiyatini bilishadi. Bizni ham xuddi shu narsa hayratda qoldirdi va uni taxtalarga qo'yish uchun biz har qanday narsaning burchak tezligini o'lchaydigan giroskop sensori ustida ishlashni o'yladik. Shunday qilib, biz vazifani hal qilish uchun sensori - BMG160. BMG160-bu 16 bitli, raqamli, uch fazali, giroskopli sensor, u burchak tezligini xonaning uchta perpendikulyar o'lchovida o'lchashi mumkin.
Ushbu qo'llanmada biz BMG160 ning Raspberry pi bilan ishlashini ko'rsatamiz, Java dasturlash tili sifatida ishlatiladi.
Buning uchun sizga kerak bo'lgan uskunalar quyidagilar:
1. BMG160
2. Raspberry Pi
3. I2C kabeli
4. Raspberry Pi uchun I2C qalqoni
5. Ethernet kabeli
1 -qadam: BMG160 haqida umumiy ma'lumot:
Birinchidan, biz sizni BMG160 sensori modulining asosiy xususiyatlari va u ishlaydigan aloqa protokoli bilan tanishtirmoqchimiz.
BMG160-bu asosan 16-bitli, raqamli, uch fazali, giroskopli burchak tezligini o'lchaydigan sensor. U burchak tezligini xona, y va z o'qi bo'yicha uchta perpendikulyar o'lchovda hisoblashi va mos keladigan chiqish signallarini berishi mumkin. U malina pi taxtasi bilan I2C aloqa protokoli yordamida muloqot qilishi mumkin. Ushbu modul iste'molchi talablariga, shuningdek sanoat maqsadlariga javob beradigan tarzda ishlab chiqilgan.
Sensor ishlaydigan aloqa protokoli I2C. I2C o'zaro integratsiyalashgan sxemani anglatadi. Bu aloqa protokoli bo'lib, bunda aloqa SDA (ketma -ket ma'lumotlar) va SCL (ketma -ket soat) liniyalari orqali amalga oshiriladi. Bu bir vaqtning o'zida bir nechta qurilmalarni ulash imkonini beradi. Bu eng oddiy va samarali aloqa protokoli.
2 -qadam: Sizga nima kerak.. !
Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:
1. BMG160
2. Raspberry Pi
3. I2C kabeli
4. Raspberry Pi uchun I2C qalqoni
5. Ethernet kabeli
3 -qadam: Uskuna ulanishi:
Uskuna ulanish bo'limi, asosan, sensori va malina pi o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:
BMG160 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.
Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz. Sizga faqat to'rtta sim kerak!
Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.
Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.
4-qadam: Java-kod yordamida 3 o'qli giroskopni o'lchash:
Malinali pi -ni ishlatishning afzalligi shundaki, u sizga sensorni interfeysga ulash uchun taxtani dasturlashni xohlagan dasturlash tilining moslashuvchanligini ta'minlaydi. Ushbu kengashning afzalliklaridan foydalanib, biz bu erda Java dasturlashini namoyish qilamiz. BMG160 uchun Java kodini bizning github hamjamiyatidan yuklab olish mumkin, bu Dcube Store hamjamiyati.
Foydalanuvchilarning qulayligi uchun biz bu erda ham kodni tushuntirmoqdamiz: kodlashning birinchi bosqichi sifatida siz java holatida pi4j kutubxonasini yuklab olishingiz kerak, chunki bu kutubxona kodda ishlatiladigan funktsiyalarni qo'llab -quvvatlaydi. Shunday qilib, kutubxonani yuklab olish uchun quyidagi havolaga kirishingiz mumkin:
pi4j.com/install.html
Bu sensor uchun ishlaydigan java kodini bu erdan ham ko'chirishingiz mumkin:
com.pi4j.io.i2c. I2CBus -ni import qilish;
com.pi4j.io.i2c. I2CDevice -ni import qilish;
com.pi4j.io.i2c. I2CFactory -ni import qilish;
java.io. IOException ni import qilish;
ommaviy sinf BMG160
{
public static void main (String args ) istisno qiladi
{
// I2C avtobusini yarating
I2CBus avtobus = I2CFactory.getInstance (I2CBus. BUS_1);
// I2C qurilmasini oling, BMG160 I2C manzili 0x68 (104)
I2CDevice qurilmasi = bus.getDevice (0x68);
// diapazon registrini tanlang
// To'liq o'lchov oralig'ini sozlash, 2000 dps
device.write (0x0F, (bayt) 0x80);
// tarmoqli kengligi registrini tanlang
// tarmoqli kengligi 200 Gts
device.write (0x10, (bayt) 0x04);
Thread.sleep (500);
// 6 bayt ma'lumotni o'qing
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
bayt ma'lumotlar = yangi bayt [6];
device.read (0x02, ma'lumotlar, 0, 6);
// Ma'lumotni aylantirish
int xGyro = ((ma'lumotlar [1] & 0xFF) * 256 + (ma'lumotlar [0] & 0xFF));
agar (xGyro> 32767)
{
xGyro -= 65536;
}
int yGyro = ((ma'lumotlar [3] & 0xFF) * 256 + (ma'lumotlar [2] & 0xFF));
agar (yGyro> 32767)
{
yGyro -= 65536;
}
int zGyro = ((ma'lumotlar [5] & 0xFF) * 256 + (ma'lumotlar [4] & 0xFF));
agar (zGyro> 32767)
{
zGyro -= 65536;
}
// Ma'lumotni ekranga chiqarish
System.out.printf ("Aylanish o'qi: %d %n", xGyro);
System.out.printf ("Y o'qining aylanish o'qi: %d %n", yGyro);
System.out.printf ("Z-aylanish o'qi: %d %n", zGyro);
}
}
Sensor va karta o'rtasidagi i2c aloqasini osonlashtiradigan kutubxona pi4j, uning turli paketlari I2CBus, I2CDevice va I2CFactory ulanishni o'rnatishga yordam beradi.
com.pi4j.io.i2c. I2CBus; import com.pi4j.io.i2c. I2CDevice; com.pi4j.io.i2c. I2CFactory -ni import qilish; java.io. IOException ni import qilish;
Kodning bu qismi sensorni yozish () funktsiyasi yordamida tegishli buyruqlarni yozish orqali burchak tezligini o'lchashga majbur qiladi, so'ngra o'qish () funktsiyasi yordamida ma'lumotlar o'qiladi.
// Ro'yxatdan o'tish registrini tanlang // To'liq o'lchovli diapazonni sozlash, 2000 dps device.write (0x0F, (bayt) 0x80); // tarmoqli kengligi registrini tanlang // Tarmoqli kengligi 200 Hz qurilma.yozish (0x10, (bayt) 0x04); Thread.sleep (500);
// 6 bayt ma'lumotni o'qing
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb bayt ma'lumotlar = yangi bayt [6]; device.read (0x02, ma'lumotlar, 0, 6);
Sensordan olingan ma'lumotlar quyidagicha mos formatga o'tkaziladi:
int xGyro = ((ma'lumotlar [1] & 0xFF) * 256 + (ma'lumotlar [0] & 0xFF)); agar (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((ma'lumotlar [3] & 0xFF) * 256 + (ma'lumotlar [2] & 0xFF)); agar (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((ma'lumotlar [5] & 0xFF) * 256 + (ma'lumotlar [4] & 0xFF)); agar (zGyro> 32767) {zGyro -= 65536; }
Chiqish System.out.println () funktsiyasi yordamida quyidagi formatda chop etiladi.
System.out.println ("Aylanish o'qi: %d %n", xGyro); System.out.println ("Y o'qining aylanish o'qi: %d %n", yGyro); System.out.println ("Z-aylanish o'qi: %d %n", zGyro);
Sensorning chiqishi yuqoridagi rasmda ko'rsatilgan.
5 -qadam: Ilovalar:
BMG160 uyali telefonlar, inson mashinalari interfeysi qurilmalari kabi qurilmalarda turli xil ilovalarga ega. Sensor moduli tasvirni barqarorlashtirish (DSC va kamera-telefon), o'yin va ishora qurilmalari kabi iste'molchi ilovalariga qo'yiladigan talablarni qondirish uchun ishlab chiqilgan. Shuningdek, u imo -ishorani aniqlashni talab qiladigan tizimlarda va ichki navigatsiyada ishlatiladigan tizimlarda qo'llaniladi.
Tavsiya:
Raspberry Pi bilan o'zaro bog'langan GPS moduli: 10 qadam
Raspberry Pi bilan o'zaro bog'langan GPS moduli: Hey bolalar !! GPS modulini Raspberry Pi bilan bog'lamoqchimisiz? Ammo buni amalga oshirish qiyinmi? "Xavotir olmang, men sizga yordam berish uchun keldim! Siz quyidagi qismlardan foydalanib boshlashingiz mumkin:
BMG160 3 o'qli giroskop sensori Arduino Nano bilan o'zaro bog'lanishi: 5 qadam
BMG160 3 o'qli giroskop sensori Arduino Nano bilan o'zaro bog'lanishi: Zamonaviy dunyoda yoshlar va bolalarning yarmidan ko'pi o'yinni yaxshi ko'radi va o'yinni texnik jihatdan qiziqtirganlarning hammasi harakatni sezishning muhimligini biladi. bu domenda. Bizni ham xuddi shu narsa hayron qoldirdi
Tinkercad -dagi Arduino bilan o'zaro bog'liq LCD displey: 5 qadam
Tinkercad -da Arduino bilan interfeysli LCD: Ushbu maqoladagi kod Hitachi HD44780 standart drayverini ishlatadigan LCD -lar uchun yozilgan. Agar sizning LCD displeyingizda 16 ta pin bo'lsa, unda Hitachi HD44780 drayveri bo'lishi mumkin. Ushbu displeylar 4 bitli yoki 8 bitli rejimda ulanishi mumkin. LCD -ni 4 soniyada ulash
BMG160 zarrachali 3 o'qli giroskop sensori bilan o'zaro bog'lanish: 5 qadam
3 o'qli BMG160 zarracha sensori bilan zarracha bilan o'zaro bog'lanish: Zamonaviy dunyoda yoshlar va bolalarning yarmidan ko'pi o'yinni yaxshi ko'radi va o'yinni texnik jihatdan qiziqtirganlarning hammasi harakatni sezishning muhimligini biladi. bu domen. Bizni ham xuddi shu narsa hayron qoldirdi
BMP180 (Barometrik bosim sensori) Arduino bilan o'zaro bog'lanish: 9 qadam
BMP180 (Barometrik bosim sensori) Arduino bilan o'zaro aloqada: BMP-180-i2c interfeysli raqamli Barometrik bosim sensori. Boschning bu kichik sensori kichik o'lchamlari, kam quvvat sarfi va yuqori aniqlik bilan juda qulay. Sensor o'qilishini qanday talqin qilishimizga qarab, biz