Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38
V dnešním světě více než polovina mládeže a dětí má ráda hry a všichni, kteří ji mají rádi, fascinováni technickými aspekty hraní her vědí, jak důležité je v této oblasti snímání pohybu. Byli jsme také ohromeni stejnou věcí a jen aby to bylo na deskách, napadlo nás pracovat na gyroskopickém senzoru, který dokáže měřit úhlovou rychlost jakéhokoli objektu. Senzorem, který jsme vzali k řešení tohoto úkolu, je BMG160. BMG160 je 16bitový, digitální, triaxiální gyroskopický senzor, který dokáže měřit úhlovou rychlost ve třech kolmých rozměrech místnosti.
V tomto tutoriálu předvedeme fungování BMG160 s Raspberry pi pomocí Java jako programovacího jazyka.
Hardware, který budete pro tento účel potřebovat, je následující:
1. BMG160
2. Raspberry Pi
3. Kabel I2C
4. I2C štít pro Raspberry Pi
5. Ethernetový kabel
Krok 1: Přehled BMG160:
Nejprve bychom vás chtěli seznámit se základními funkcemi senzorového modulu BMG160 a komunikačním protokolem, na kterém funguje.
BMG160 je v podstatě 16bitový, digitální, triaxiální gyroskopický senzor, který dokáže měřit úhlové rychlosti. Je schopen vypočítat úhlové rychlosti ve třech kolmých rozměrech místnosti, osách x, y a z, a poskytovat odpovídající výstupní signály. Může komunikovat s deskou Raspberry Pi pomocí komunikačního protokolu I2C. Tento konkrétní modul je navržen tak, aby splňoval požadavky na spotřebitelské aplikace i průmyslové účely.
Komunikační protokol, na kterém senzor funguje, je I2C. I2C je zkratka pro interintegrovaný obvod. Jedná se o komunikační protokol, ve kterém probíhá komunikace prostřednictvím linek SDA (sériová data) a SCL (sériové hodiny). Umožňuje připojení více zařízení současně. Je to jeden z nejjednodušších a nejefektivnějších komunikačních protokolů.
Krok 2: Co potřebujete..
Materiály, které potřebujeme k dosažení našeho cíle, zahrnují následující hardwarové komponenty:
1. BMG160
2. Raspberry Pi
3. Kabel I2C
4. I2C štít pro Raspberry Pi
5. Ethernetový kabel
Krok 3: Připojení hardwaru:
Sekce zapojení hardwaru v zásadě vysvětluje zapojení kabelů požadovaná mezi snímačem a malinovým pi. Zajištění správného připojení je základní nutností při práci na jakémkoli systému pro požadovaný výstup. Požadovaná připojení jsou tedy následující:
BMG160 bude fungovat přes I2C. Zde je příklad schématu zapojení, které ukazuje, jak zapojit jednotlivá rozhraní senzoru.
Po vybalení je deska nakonfigurována pro rozhraní I2C, proto doporučujeme tuto přípojku použít, pokud jste jinak agnostik. Vše, co potřebujete, jsou čtyři dráty!
Jsou vyžadována pouze čtyři připojení Vcc, Gnd, SCL a SDA piny a ty jsou spojeny pomocí kabelu I2C.
Tato spojení jsou ukázána na obrázcích výše.
Krok 4: Měření 3osého gyroskopu pomocí kódu Java:
Výhodou použití raspberry pi je, že vám poskytuje flexibilitu programovacího jazyka, ve kterém chcete desku programovat, abyste s ní mohli propojit senzor. S využitím této výhody této desky zde předvádíme její programování v Javě. Kód Java pro BMG160 lze stáhnout z naší komunity github, kterou je Dcube Store Community.
Kromě jednoduchosti pro uživatele vysvětlujeme kód také zde: Jako první krok kódování si musíte stáhnout knihovnu pi4j v případě Java, protože tato knihovna podporuje funkce použité v kódu. Chcete -li si stáhnout knihovnu, můžete navštívit následující odkaz:
pi4j.com/install.html
Pracovní java kód pro tento senzor můžete zkopírovat také zde:
importovat com.pi4j.io.i2c. I2CBus;
importovat com.pi4j.io.i2c. I2CDevice;
importovat com.pi4j.io.i2c. I2CFactory;
import java.io. IOException;
veřejná třída BMG160
{
public static void main (String args ) vyvolá výjimku
{
// Vytvoření sběrnice I2C
Sběrnice I2CBus = I2CFactory.getInstance (I2CBus. BUS_1);
// Získejte zařízení I2C, adresa BMG160 I2C je 0x68 (104)
I2CDevice zařízení = bus.getDevice (0x68);
// Vyberte registr rozsahu
// Konfigurace rozsahu plného rozsahu, 2000 dps
device.write (0x0F, (byte) 0x80);
// Vyberte registr šířky pásma
// Šířka pásma 200 Hz
device.write (0x10, (byte) 0x04);
Thread.sleep (500);
// Přečíst 6 bajtů dat
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
byte data = nový byte [6];
device.read (0x02, data, 0, 6);
// Převod dat
int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));
if (xGyro> 32767)
{
xGyro -= 65536;
}
int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));
if (yGyro> 32767)
{
yGyro -= 65536;
}
int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));
if (zGyro> 32767)
{
zGyro -= 65536;
}
// Výstup dat na obrazovku
System.out.printf ("Osa rotace X: %d %n", xGyro);
System.out.printf ("Osa Y rotace: %d %n", yGyro);
System.out.printf ("Osa Z rotace: %d %n", zGyro);
}
}
Knihovna, která usnadňuje i2c komunikaci mezi senzorem a deskou, je pi4j, její různé balíčky I2CBus, I2CDevice a I2CFactory pomáhají navázat spojení.
importovat com.pi4j.io.i2c. I2CBus; importovat com.pi4j.io.i2c. I2CDevice; importovat com.pi4j.io.i2c. I2CFactory; import java.io. IOException;
Tato část kódu umožňuje senzoru měřit úhlovou rychlost zápisem příslušných příkazů pomocí funkce write () a poté jsou data čtena pomocí funkce read ().
// Výběr registru rozsahu // Konfigurace rozsahu plného rozsahu, 2000 dps device.write (0x0F, (byte) 0x80); // Vyberte registr šířky pásma // Šířka pásma 200 Hz zařízení. Psát (0x10, (byte) 0x04); Thread.sleep (500);
// Přečíst 6 bajtů dat
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = nový byte [6]; device.read (0x02, data, 0, 6);
Data přijatá ze snímače jsou převedena do příslušného formátu pomocí následujícího:
int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF)); if (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF)); if (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF)); if (zGyro> 32767) {zGyro -= 65536; }
Výstup je vytištěn pomocí funkce System.out.println () v následujícím formátu.
System.out.println ("Osa rotace X: %d %n", xGyro); System.out.println ("Osa Y rotace: %d %n", yGyro); System.out.println ("Osa Z rotace: %d %n", zGyro);
Výstup snímače je zobrazen na obrázku výše.
Krok 5: Aplikace:
BMG160 má různorodý počet aplikací v zařízeních, jako jsou mobilní telefony, zařízení rozhraní člověk -stroj. Tento senzorový modul byl navržen tak, aby splňoval požadavky spotřebitelských aplikací, jako je stabilizace obrazu (DSC a fotoaparát-telefon), herní a polohovací zařízení. Používá se také v systémech, které vyžadují rozpoznávání gest, a v systémech používaných ve vnitřní navigaci.
Doporučuje:
Začínáme s rozhraním senzoru I2C ?? - Rozhraní vašeho MMA8451 pomocí ESP32s: 8 kroků
Začínáme s rozhraním senzoru I2C ?? - Rozhraní vašeho MMA8451 pomocí ESP32s: V tomto tutoriálu se dozvíte vše o tom, jak spustit, připojit a získat zařízení I2C (Accelerometer) pracující s ovladačem (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Rozhraní 3osého gyroskopického senzoru BMG160 s Arduino Nano: 5 kroků
Rozhraní 3osého gyroskopického senzoru BMG160 s Arduino Nano: V dnešním světě více než polovina mládeže a dětí má ráda hry a všichni, kteří ji mají rádi, fascinováni technickými aspekty hraní, znají důležitost snímání pohybu v této doméně. Byli jsme také ohromeni stejnou věcí
Rozhraní 3osého gyroskopického senzoru BMG160 s částicí: 5 kroků
Rozhraní 3osého gyroskopického senzoru BMG160 s částicí: V dnešním světě více než polovina mládeže a dětí má ráda hry a všichni, kteří ji mají rádi, fascinováni technickými aspekty hraní her vědí, jak důležité je snímání pohybu. tuto doménu. Byli jsme také ohromeni stejnou věcí
Rozhraní teplotního senzoru (LM35) s ATmega32 a LCD displejem - Automatické ovládání ventilátoru: 6 kroků
Rozhraní teplotního senzoru (LM35) s ATmega32 a LCD displejem | Automatické ovládání ventilátoru: Rozhraní teplotního senzoru (LM35) s ATmega32 a LCD displejem
Vizualizace gyroskopického pohybu L3G4200D s mixérem: 5 kroků
Vizualizace pohybu gyroskopu L3G4200D pomocí mixéru: Koupil jsem si z eBay poměrně levný gyroskopický senzor L3G4200D, který dokáže detekovat rotaci ve 3 osách a dodávat jej prostřednictvím rozhraní I2C nebo SPI. Zkusil jsem to použít k detekci horizontální a vertikální rotace v reálném čase. Ukázalo se, že je to docela obtížné