Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:59
Šiandieniniame pasaulyje daugiau nei pusė jaunimo ir vaikų mėgsta žaidimus, o visi, kuriems tai patinka, susižavėję techniniais žaidimų aspektais, žino judesio jutimo svarbą šioje srityje. Mes taip pat buvome nustebinti to paties dalyko ir tiesiog norėdami jį parodyti ant lentų, sumanėme dirbti su giroskopo jutikliu, galinčiu išmatuoti bet kurio objekto kampinį greitį. Taigi, jutiklis, kurio ėmėmės užduočiai spręsti, yra BMG160. BMG160 yra 16 bitų skaitmeninis triašis giroskopo jutiklis, galintis išmatuoti kampinį greitį trimis statmenais kambario matmenimis.
Šioje pamokoje mes parodysime BMG160 darbą su „Raspberry pi“, naudojant „Java“kaip programavimo kalbą.
Aparatūra, kurios jums reikės šiam tikslui, yra tokia:
1. BMG160
2. Raspberry Pi
3. I2C kabelis
4. „I2C Shield“, skirtas „Raspberry Pi“
5. Ethernet kabelis
1 žingsnis: BMG160 apžvalga:
Pirmiausia norime jus supažindinti su pagrindinėmis jutiklio modulio, kuris yra BMG160, ypatybėmis ir ryšio protokolu, kuriuo jis veikia.
BMG160 iš esmės yra 16 bitų skaitmeninis triašis giroskopo jutiklis, galintis išmatuoti kampinį greitį. Jis gali apskaičiuoti kampinius rodiklius trimis statmenais kambario matmenimis, x, y ir z ašimis, ir pateikti atitinkamus išėjimo signalus. Jis gali bendrauti su aviečių pi plokšte, naudodamas I2C ryšio protokolą. Šis konkretus modulis sukurtas taip, kad atitiktų vartotojų reikmėms ir pramonės reikmėms keliamus reikalavimus.
Ryšio protokolas, kuriame veikia jutiklis, yra I2C. I2C reiškia integruotą grandinę. Tai ryšio protokolas, kuriame ryšys vyksta per SDA (nuoseklius duomenis) ir SCL (nuoseklaus laikrodžio) linijas. Tai leidžia prijungti kelis įrenginius vienu metu. Tai vienas iš paprasčiausių ir efektyviausių ryšio protokolų.
2 žingsnis: ko jums reikia..
Medžiagos, reikalingos mūsų tikslui pasiekti, apima šiuos aparatūros komponentus:
1. BMG160
2. Raspberry Pi
3. I2C kabelis
4. „I2C Shield For Raspberry Pi“
5. Ethernet kabelis
3 žingsnis: prijungimas prie aparatūros:
Techninės įrangos prijungimo skyriuje iš esmės paaiškinamos reikalingos laidų jungtys tarp jutiklio ir aviečių pi. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:
BMG160 veiks per I2C. Čia yra elektros instaliacijos schemos pavyzdys, parodantis, kaip prijungti kiekvieną jutiklio sąsają.
Iš karto plokštė sukonfigūruota I2C sąsajai, todėl rekomenduojame naudoti šį prijungimą, jei esate kitaip agnostikas. Viskas, ko jums reikia, yra keturi laidai!
Reikia tik keturių jungčių „Vcc“, „Gnd“, „SCL“ir „SDA“kaiščių, kurie yra prijungti naudojant I2C kabelį.
Šie ryšiai parodyti aukščiau esančiose nuotraukose.
4 žingsnis: 3 ašių giroskopo matavimas naudojant „Java“kodą:
„Raspberry pi“naudojimo pranašumas yra tai, kad suteikia lankstumo programavimo kalbai, kuria norite programuoti plokštę, kad su ja susietumėte jutiklį. Pasinaudoję šiuo šios plokštės pranašumu, mes čia demonstruojame jos programavimą „Java“. BMG160 „Java“kodą galima atsisiųsti iš mūsų „Github“bendruomenės, kuri yra „Dcube Store Community“.
Be to, kad būtų lengviau vartotojams, mes taip pat paaiškiname kodą: kaip pirmąjį kodavimo žingsnį turite atsisiųsti „pi4j“biblioteką „Java“atveju, nes ši biblioteka palaiko kode naudojamas funkcijas. Taigi, norėdami atsisiųsti biblioteką, galite apsilankyti šioje nuorodoje:
pi4j.com/install.html
Taip pat galite nukopijuoti šio jutiklio darbinį „Java“kodą:
importuoti com.pi4j.io.i2c. I2CBus;
importuoti com.pi4j.io.i2c. I2CDevice;
importuoti com.pi4j.io.i2c. I2CFactory;
importuoti java.io. IOException;
viešosios klasės BMG160
{
public static void main (String args ) metimai Išimtis
{
// Sukurti I2C magistralę
I2CBus magistralė = I2CFactory.getInstance (I2CBus. BUS_1);
// Gauti I2C įrenginį, BMG160 I2C adresas yra 0x68 (104)
I2CDĮrenginio įrenginys = autobusas.getDevice (0x68);
// Pasirinkite diapazono registrą
// Konfigūruoti visą diapazoną, 2000 dps
device.write (0x0F, (baitas) 0x80);
// Pasirinkite pralaidumo registrą
// Pralaidumas 200 Hz
device.write (0x10, (baitas) 0x04);
Siūlai.miegoti (500);
// Perskaitykite 6 baitus duomenų
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
baitas duomenys = naujas baitas [6];
device.read (0x02, duomenys, 0, 6);
// Konvertuoti duomenis
int xGyro = ((duomenys [1] ir 0xFF) * 256 + (duomenys [0] ir 0xFF));
jei (xGyro> 32767)
{
xGyro -= 65536;
}
int yGyro = ((duomenys [3] ir 0xFF) * 256 + (duomenys [2] ir 0xFF));
jei (yGyro> 32767)
{
yGyro -= 65536;
}
int zGyro = ((duomenys [5] ir 0xFF) * 256 + (duomenys [4] ir 0xFF));
jei (zGyro> 32767)
{
zGyro -= 65536;
}
// Išvesti duomenis į ekraną
System.out.printf ("X sukimosi ašis: %d %n", xGyro);
System.out.printf ("Y sukimosi ašis: %d %n", yGyro);
System.out.printf ("Z sukimosi ašis: %d %n", zGyro);
}
}
Biblioteka, palengvinanti i2c ryšį tarp jutiklio ir plokštės, yra pi4j, įvairūs jos paketai I2CBus, I2CDevice ir I2CFactory padeda užmegzti ryšį.
importuoti com.pi4j.io.i2c. I2CBus; importuoti com.pi4j.io.i2c. I2CDevice; importuoti com.pi4j.io.i2c. I2CFactory; importuoti java.io. IOException;
Ši kodo dalis leidžia jutikliui išmatuoti kampinį greitį, rašant atitinkamas komandas naudojant rašymo () funkciją, o tada duomenys nuskaitomi naudojant funkciją (skaityti).
// Pasirinkite diapazono registrą // Konfigūruokite visą mastelio diapazoną, 2000 dps device.write (0x0F, (baitas) 0x80); // Pasirinkti pralaidumo registrą // Pralaidumo 200 Hz įrenginys. Rašyti (0x10, (baitas) 0x04); Siūlai.miegoti (500);
// Perskaitykite 6 baitus duomenų
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb baitas duomenys = naujas baitas [6]; device.read (0x02, duomenys, 0, 6);
Duomenys, gauti iš jutiklio, konvertuojami į tinkamą formatą, naudojant šiuos metodus:
int xGyro = ((duomenys [1] ir 0xFF) * 256 + (duomenys [0] ir 0xFF)); if (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((duomenys [3] ir 0xFF) * 256 + (duomenys [2] ir 0xFF)); if (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((duomenys [5] ir 0xFF) * 256 + (duomenys [4] ir 0xFF)); if (zGyro> 32767) {zGyro -= 65536; }
Išvestis spausdinama naudojant System.out.println () funkciją tokiu formatu.
System.out.println ("X sukimosi ašis: %d %n", xGyro); System.out.println ("Y sukimosi ašis: %d %n", yGyro); System.out.println ("Z sukimosi ašis: %d %n", zGyro);
Jutiklio išvestis parodyta aukščiau esančiame paveikslėlyje.
5 žingsnis: programos:
BMG160 turi daugybę programų tokiuose įrenginiuose kaip mobilieji telefonai, žmogaus ir mašinos sąsajos įrenginiai. Šis jutiklio modulis buvo sukurtas taip, kad atitiktų vartotojų poreikiams pritaikytus reikalavimus, tokius kaip vaizdo stabilizavimas (DSC ir fotoaparatas-telefonas), žaidimų ir nukreipimo įrenginiai. Jis taip pat naudojamas sistemose, kuriose reikalingas gestų atpažinimas, ir sistemose, naudojamose navigacijai patalpose.
Rekomenduojamas:
Darbo su „I2C“jutiklio sąsaja pradžia ?? - Sąsaja su jūsų MMA8451 naudojant ESP32: 8 žingsniai
Darbo su „I2C“jutiklio sąsaja pradžia ?? - Sąsaja su jūsų MMA8451 naudojant ESP32: Šioje pamokoje sužinosite viską apie tai, kaip paleisti, prijungti ir gauti I2C įrenginį (akselerometrą), dirbantį su valdikliu (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
3 ašių giroskopo jutiklio BMG160 sąsaja su „Arduino Nano“: 5 žingsniai
3 ašių giroskopo jutiklio sąsaja su BMG160 su „Arduino Nano“: šiandieniniame pasaulyje daugiau nei pusė jaunimo ir vaikų mėgsta žaidimus, o visi, kuriems tai patinka, susižavėję techniniais žaidimų aspektais, žino judesio jutimo svarbą šioje srityje. Mus taip pat nustebino tas pats
Giroskopo jutiklio valdoma platforma labirintui: 3 žingsniai
Giroskopo jutiklio valdoma platforma labirinto galvosūkiui: ši instrukcija buvo sukurta vykdant Pietų Floridos universiteto (www.makecourse.com) kurso „Make“projekto reikalavimą. "Šis paprastas projektas, įkvėptas savaime balansuojančios platformos, kuri priima atsiliepimus iš akcelerijos
3 ašių giroskopo jutiklio BMG160 sujungimas su dalele: 5 žingsniai
3 ašių giroskopo jutiklio sąsaja su dalelėmis: Šiuolaikiniame pasaulyje daugiau nei pusė jaunimo ir vaikų mėgsta žaidimus, o visi, kuriems tai patinka, susižavėję techniniais žaidimų aspektais, žino judesio jutimo svarbą. šį domeną. Mus taip pat nustebino tas pats
MPU6050-akselerometras+giroskopo jutiklio pagrindai: 3 žingsniai
MPU6050-akselerometras+giroskopo jutiklio pagrindai: MPU6050 yra labai naudingas jutiklis. „Mpu 6050“yra IMU: inercinis matavimo vienetas (IMU) yra elektroninis prietaisas, kuris matuoja ir praneša apie konkrečią kūno jėgą, kampinį greitį ir kartais orientaciją kūno, naudojant derinį