สารบัญ:
- ขั้นตอนที่ 1: ฮาร์ดแวร์ที่จำเป็น:
- ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์:
- ขั้นตอนที่ 3: รหัส Java เพื่อวัดความเข้มของสนามแม่เหล็ก:
- ขั้นตอนที่ 4: การใช้งาน:
วีดีโอ: การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Raspberry Pi: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
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 เพื่อวัดความเข้มของสนามแม่เหล็ก:
ข้อดีของการใช้ 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 ได้
แนะนำ:
การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Arduino Nano: 4 ขั้นตอน
การวัดสนามแม่เหล็กโดยใช้ HMC5883 และ Arduino Nano: HMC5883 เป็นเข็มทิศดิจิตอลที่ออกแบบมาสำหรับการตรวจจับสนามแม่เหล็กระดับต่ำ อุปกรณ์นี้มีช่วงสนามแม่เหล็กกว้าง +/-8 Oe และอัตราเอาต์พุต 160 Hz เซ็นเซอร์ HMC5883 ประกอบด้วยตัวขับสายรัดแบบลดแรงดันอัตโนมัติ การยกเลิกออฟเซ็ต และ
การวัดสนามแม่เหล็กโดยใช้ HMC5883 และอนุภาคโฟตอน: 4 ขั้นตอน
การวัดสนามแม่เหล็กโดยใช้ HMC5883 และอนุภาคโฟตอน: HMC5883 เป็นเข็มทิศดิจิตอลที่ออกแบบมาสำหรับการตรวจจับสนามแม่เหล็กระดับต่ำ อุปกรณ์นี้มีช่วงสนามแม่เหล็กกว้าง +/-8 Oe และอัตราเอาต์พุต 160 Hz เซ็นเซอร์ HMC5883 ประกอบด้วยตัวขับสายรัดแบบลดแรงดันอัตโนมัติ การยกเลิกออฟเซ็ต และ
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น