สารบัญ:

การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Raspberry Pi: 4 ขั้นตอน
การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Raspberry Pi: 4 ขั้นตอน

วีดีโอ: การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Raspberry Pi: 4 ขั้นตอน

วีดีโอ: การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Raspberry Pi: 4 ขั้นตอน
วีดีโอ: สอนใช้งาน GY-273 โมดูลวัดสนามแม่เหล็ก 3แกน โมดูลเข็มทิศ 3-Axis Digital Compass Module HMC5883L 2024, กรกฎาคม
Anonim
Image
Image

HMC5883 เป็นเข็มทิศดิจิตอลที่ออกแบบมาสำหรับการตรวจจับสนามแม่เหล็กระดับต่ำ อุปกรณ์นี้มีช่วงสนามแม่เหล็กกว้าง +/-8 Oe และอัตราเอาต์พุต 160 Hz เซ็นเซอร์ HMC5883 ประกอบด้วยตัวขับสายรัดแบบลดสนามแม่เหล็กอัตโนมัติ การยกเลิกออฟเซ็ต และ ADC 12 บิตที่ช่วยให้ทิศทางของเข็มทิศแม่นยำตั้งแต่ 1° ถึง 2° I²C Mini Modules ทั้งหมดได้รับการออกแบบให้ทำงานที่ 5VDC

ในบทช่วยสอนนี้ เราจะอธิบายการทำงานโดยละเอียดของ HMC5883 กับ Raspberry pi และการเขียนโปรแกรมโดยใช้ภาษาการเขียนโปรแกรม Java

ขั้นตอนที่ 1: ฮาร์ดแวร์ที่จำเป็น:

ฮาร์ดแวร์ที่จำเป็น
ฮาร์ดแวร์ที่จำเป็น
ฮาร์ดแวร์ที่จำเป็น
ฮาร์ดแวร์ที่จำเป็น
ฮาร์ดแวร์ที่จำเป็น
ฮาร์ดแวร์ที่จำเป็น

ฮาร์ดแวร์ที่จำเป็นสำหรับการทำงานให้สำเร็จมีดังนี้:

1. HMC5883

2. ราสเบอร์รี่ปี่

3. สายเคเบิล I2C

4. I2C Shield สำหรับ Raspberry Pi

5. สายเคเบิลอีเธอร์เน็ต

ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์:

การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์

ส่วนการเชื่อมต่อฮาร์ดแวร์โดยทั่วไปจะอธิบายการเชื่อมต่อสายไฟที่จำเป็นระหว่างเซ็นเซอร์และราสเบอร์รี่ pi ตรวจสอบให้แน่ใจว่าการเชื่อมต่อถูกต้องเป็นสิ่งจำเป็นพื้นฐานในขณะที่ทำงานกับระบบใด ๆ สำหรับเอาต์พุตที่ต้องการ ดังนั้น การเชื่อมต่อที่จำเป็นมีดังนี้:

HMC5883 จะทำงานบน I2C นี่คือตัวอย่างไดอะแกรมการเดินสาย ซึ่งสาธิตวิธีเชื่อมต่อแต่ละอินเทอร์เฟซของเซ็นเซอร์

นอกกรอบ บอร์ดได้รับการกำหนดค่าสำหรับอินเทอร์เฟซ I2C ดังนั้นเราขอแนะนำให้ใช้การเชื่อมต่อนี้หากคุณไม่เชื่อเรื่องพระเจ้า สิ่งที่คุณต้องมีคือสี่สาย!

ต้องใช้พิน Vcc, Gnd, SCL และ SDA เพียงสี่การเชื่อมต่อเท่านั้น และเชื่อมต่อด้วยสายเคเบิล I2C

การเชื่อมต่อเหล่านี้แสดงให้เห็นในภาพด้านบน

ขั้นตอนที่ 3: รหัส Java เพื่อวัดความเข้มของสนามแม่เหล็ก:

รหัส Java เพื่อวัดความเข้มสนามแม่เหล็ก
รหัส Java เพื่อวัดความเข้มสนามแม่เหล็ก
รหัส Java เพื่อวัดความเข้มสนามแม่เหล็ก
รหัส Java เพื่อวัดความเข้มสนามแม่เหล็ก

ข้อดีของการใช้ raspberry pi คือ ให้ความยืดหยุ่นของภาษาการเขียนโปรแกรมที่คุณต้องการตั้งโปรแกรมบอร์ดเพื่อเชื่อมต่อกับเซ็นเซอร์ ใช้ประโยชน์จากข้อได้เปรียบของบอร์ดนี้ เรากำลังสาธิตที่นี่ว่าเป็นการเขียนโปรแกรมในภาษาจาวา รหัสจาวาสำหรับ HMC5883 สามารถดาวน์โหลดได้จากชุมชน github ของเราที่ Dcube Store

เพื่อความสะดวกของผู้ใช้ เรากำลังอธิบายรหัสที่นี่ด้วย:

ในขั้นแรกของการเข้ารหัส คุณต้องดาวน์โหลดไลบรารี pi4j ในกรณีของจาวา เนื่องจากไลบรารีนี้รองรับฟังก์ชันที่ใช้ในโค้ด ดังนั้น หากต้องการดาวน์โหลดห้องสมุด คุณสามารถไปที่ลิงก์ต่อไปนี้:

pi4j.com/install.html

คุณสามารถคัดลอกโค้ดจาวาที่ใช้งานได้สำหรับเซ็นเซอร์นี้จากที่นี่ด้วย:

นำเข้า com.pi4j.io.i2c. I2CBus;

นำเข้า com.pi4j.io.i2c. I2CDevice;

นำเข้า com.pi4j.io.i2c. I2CFactory;

นำเข้า java.io. IOException คลาสสาธารณะ HMC5883

{

โมฆะคงที่สาธารณะหลัก (สตริง args ) พ่นข้อยกเว้น

{

// สร้างบัส I2C

I2CBus บัส = I2CFactory.getInstance(I2CBus. BUS_1);

// รับอุปกรณ์ I2C ที่อยู่ HMC5883 I2C คือ 0x1E(30)

อุปกรณ์ I2CDevice = Bus.getDevice(0x1E);

// เลือกการตั้งค่าคอนฟิกรีจิสเตอร์ A

// การกำหนดค่าการวัดปกติ อัตราข้อมูล o/p = 0.75 Hz

อุปกรณ์.write(0x00, (ไบต์)0x60);

// เลือกโหมดลงทะเบียน

// โหมดการวัดต่อเนื่อง

อุปกรณ์.write(0x02, (ไบต์)0x00);

เธรดการนอนหลับ (500);

// อ่านข้อมูลขนาด 6 ไบต์จาก 0x03 (3)

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

ไบต์ data = ไบต์ใหม่[6];

อุปกรณ์อ่าน (0x03, ข้อมูล, 0, 6);

// แปลงข้อมูล

int xMag = ((ข้อมูล[0] & 0xFF) * 256 + (ข้อมูล[1] & 0xFF));

ถ้า(xMag > 32767)

{

xMag -= 65536;

}

int zMag = ((ข้อมูล[2] & 0xFF) * 256 + (ข้อมูล[3] & 0xFF));

ถ้า(zMag > 32767)

{

zMag -= 65536;

}

int yMag = ((ข้อมูล[4] & 0xFF) * 256 + (ข้อมูล[5] & 0xFF));

ถ้า(yMag > 32767)

{

yMag -= 65536;

}

// ส่งออกข้อมูลไปที่หน้าจอ

System.out.printf("สนามแม่เหล็กในแกน X: %d %n", xMag);

System.out.printf("สนามแม่เหล็กในแกน Y: %d %n", yMag);

System.out.printf("สนามแม่เหล็กในแกน Z: %d %n", zMag);

}

}

ฟังก์ชัน Write() และ read() ใช้สำหรับเขียนคำสั่งและอ่านเอาต์พุตของเซ็นเซอร์ตามลำดับ ส่วนต่อไปนี้แสดงการอ่านค่าสนามแม่เหล็ก

// อ่านข้อมูลขนาด 6 ไบต์จาก 0x03 (3)

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

ไบต์ data = ไบต์ใหม่[6];

อุปกรณ์อ่าน (0x03, ข้อมูล, 0, 6);

ผลลัพธ์จะแสดงในภาพด้านบน

ขั้นตอนที่ 4: การใช้งาน:

การใช้งาน
การใช้งาน

HMC5883 เป็นโมดูลมัลติชิปแบบยึดบนพื้นผิวที่ออกแบบมาสำหรับการตรวจจับสนามแม่เหล็กต่ำพร้อมอินเทอร์เฟซดิจิทัลสำหรับการใช้งาน เช่น เข็มทิศและการวัดความเข้มข้นของสนามแม่เหล็กที่มีต้นทุนต่ำ ความแม่นยำและความแม่นยำในระดับสูงหนึ่งถึงสององศาทำให้สามารถนำทางคนเดินถนนและแอปพลิเคชัน LBS ได้

แนะนำ: