Mundarija:

HMC5883 va Raspberry Pi yordamida magnit maydon o'lchami: 4 qadam
HMC5883 va Raspberry Pi yordamida magnit maydon o'lchami: 4 qadam

Video: HMC5883 va Raspberry Pi yordamida magnit maydon o'lchami: 4 qadam

Video: HMC5883 va Raspberry Pi yordamida magnit maydon o'lchami: 4 qadam
Video: Raspberry Pi HMC5883 3-Axis Digital Compass Java Tutorial 2024, Noyabr
Anonim
Image
Image

HMC5883-past maydonli magnit sezish uchun mo'ljallangan raqamli kompas. Bu qurilma magnit maydonining keng diapazoni +/- 8 Oe va chiqish tezligi 160 Gts. HMC5883 sensori kompas sarlavhasini 1 ° dan 2 ° gacha aniqligini ta'minlaydigan avtomatik uzatish tasmasi drayverlarini, ofsetni bekor qilishni va 12-bitli ADC ni o'z ichiga oladi. Barcha I²C mini -modullari 5VDC da ishlashga mo'ljallangan.

Ushbu qo'llanmada biz HMC5883 ning Raspberry pi bilan batafsil ishlashini va uni java dasturlash tili yordamida dasturlashini tushuntirmoqchimiz.

1 -qadam: Uskuna kerak:

Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi

Vazifani bajarish uchun zarur bo'lgan uskunalar quyidagilar:

1. HMC5883

2. Raspberry Pi

3. I2C kabeli

4. Raspberry Pi uchun I2C qalqoni

5. Ethernet kabeli

2 -qadam: Uskuna ulanishi:

Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi
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:

HMC5883 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.

3 -qadam: Magnit maydon intensivligini o'lchash uchun Java kodi:

Magnit maydon intensivligini o'lchash uchun Java kodi
Magnit maydon intensivligini o'lchash uchun Java kodi
Magnit maydon intensivligini o'lchash uchun Java kodi
Magnit maydon intensivligini o'lchash uchun Java kodi

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 -da dasturlashni namoyish qilamiz. HMC5883 uchun java kodini bizning github hamjamiyatidan yuklab olish mumkin, bu Dcube do'koni.

Foydalanuvchilarning qulayligi uchun biz bu erda ham kodni tushuntiramiz:

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;

m. com.pi4j.io.i2c. I2CFactory;

java.io. IOException import qilish; HMC5883 umumiy klassi

{

public static void main (String args ) istisno qiladi

{

// I2C avtobusini yarating

I2CBus avtobus = I2CFactory.getInstance (I2CBus. BUS_1);

// I2C qurilmasini oling, HMC5883 I2C manzili 0x1E (30)

I2CDevice qurilmasi = Bus.getDevice (0x1E);

// Konfiguratsiya registrini tanlang A

// Oddiy o'lchov konfiguratsiyasi, ma'lumotlar tezligi o/p = 0,75 Gts

device.write (0x00, (bayt) 0x60);

// Mode reestrini tanlang

// Uzluksiz o'lchash rejimi

device.write (0x02, (bayt) 0x00);

Thread.sleep (500);

// 0x03 dan 6 bayt ma'lumotni o'qing (3)

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

bayt ma'lumotlar = yangi bayt [6];

device.read (0x03, ma'lumotlar, 0, 6);

// Ma'lumotni aylantirish

int xMag = ((ma'lumotlar [0] & 0xFF) * 256 + (ma'lumotlar [1] & 0xFF));

agar (xMag> 32767)

{

xMag -= 65536;

}

int zMag = ((ma'lumotlar [2] & 0xFF) * 256 + (ma'lumotlar [3] & 0xFF));

agar (zMag> 32767)

{

zMag -= 65536;

}

int yMag = ((ma'lumotlar [4] & 0xFF) * 256 + (ma'lumotlar [5] & 0xFF));

agar (yMag> 32767)

{

yMag -= 65536;

}

// Ma'lumotni ekranga chiqarish

System.out.printf ("X o'qida magnit maydon: %d %n", xMag);

System.out.printf ("Y o'qida magnit maydon: %d %n", yMag);

System.out.printf ("Z o'qida magnit maydon: %d %n", zMag);

}

}

Yozish () va o'qish () funktsiyalari mos ravishda buyruqlarni yozish va sensor chiqishini o'qish uchun ishlatiladi. Quyidagi qism magnit maydon qiymatlarining o'qilishini ko'rsatadi.

// 0x03 dan 6 bayt ma'lumotni o'qing (3)

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

bayt ma'lumotlar = yangi bayt [6];

device.read (0x03, ma'lumotlar, 0, 6);

Chiqish yuqoridagi rasmda ko'rsatilgan.

4 -qadam: Ilovalar:

Ilovalar
Ilovalar

HMC5883-bu past narxli kompas va magnitometriya kabi ilovalar uchun raqamli interfeysli past maydonli magnitli sezish uchun mo'ljallangan, sirtga o'rnatiladigan, ko'p chipli modul. Uning birdan ikki darajagacha yuqori aniqlik va aniqligi piyodalar navigatsiyasi va LBS ilovalarini ishga tushiradi.

Tavsiya: