Mục lục:

Đo từ trường bằng HMC5883 và Raspberry Pi: 4 bước
Đo từ trường bằng HMC5883 và Raspberry Pi: 4 bước

Video: Đo từ trường bằng HMC5883 và Raspberry Pi: 4 bước

Video: Đo từ trường bằng HMC5883 và Raspberry Pi: 4 bước
Video: Bài 8. Giao tiếp Arduino với cảm biến góc la bàn số MPU6050 2024, Tháng mười một
Anonim
Image
Image

HMC5883 là một la bàn kỹ thuật số được thiết kế để cảm biến từ trường thấp. Thiết bị này có dải từ trường rộng +/- 8 Oe và tốc độ đầu ra là 160 Hz. Cảm biến HMC5883 bao gồm trình điều khiển dây đeo khử dầu tự động, hủy bù trừ và ADC 12 bit cho phép độ chính xác của hướng la bàn từ 1 ° đến 2 °. Tất cả các Mô-đun Mini I²C được thiết kế để hoạt động ở 5VDC.

Trong hướng dẫn này, chúng tôi sẽ giải thích hoạt động chi tiết của HMC5883 với Raspberry pi và cách lập trình của nó bằng ngôn ngữ lập trình java.

Bước 1: Yêu cầu phần cứng:

Yêu cầu phần cứng
Yêu cầu phần cứng
Yêu cầu phần cứng
Yêu cầu phần cứng
Yêu cầu phần cứng
Yêu cầu phần cứng

Phần cứng cần thiết để hoàn thành nhiệm vụ như sau:

1. HMC5883

2. Raspberry Pi

3. Cáp I2C

4. I2C Shield cho Raspberry Pi

5. Cáp Ethernet

Bước 2: Kết nối phần cứng:

Kết nối phần cứng
Kết nối phần cứng
Kết nối phần cứng
Kết nối phần cứng

Phần kết nối phần cứng về cơ bản giải thích các kết nối dây cần thiết giữa cảm biến và pi raspberry. Đảm bảo các kết nối chính xác là điều cần thiết cơ bản trong khi làm việc trên bất kỳ hệ thống nào để có kết quả đầu ra mong muốn. Vì vậy, các kết nối cần thiết như sau:

HMC5883 sẽ hoạt động trên I2C. Đây là sơ đồ đấu dây ví dụ, minh họa cách đấu dây cho từng giao diện của cảm biến.

Ngoài ra, bo mạch được định cấu hình cho giao diện I2C, vì vậy, chúng tôi khuyên bạn nên sử dụng kết nối này nếu bạn không có kiến thức khác. Tất cả những gì bạn cần là bốn dây!

Chỉ cần bốn kết nối là chân Vcc, Gnd, SCL và SDA và chúng được kết nối với sự trợ giúp của cáp I2C.

Các kết nối này được thể hiện trong các hình trên.

Bước 3: Mã Java để đo cường độ từ trường:

Mã Java để đo cường độ từ trường
Mã Java để đo cường độ từ trường
Mã Java để đo cường độ từ trường
Mã Java để đo cường độ từ trường

Lợi thế của việc sử dụng raspberry pi là, cung cấp cho bạn sự linh hoạt của ngôn ngữ lập trình mà bạn muốn lập trình bảng để giao tiếp cảm biến với nó. Khai thác lợi thế này của bảng này, chúng tôi đang chứng minh ở đây nó là lập trình bằng Java. Có thể tải xuống mã java cho HMC5883 từ cộng đồng github của chúng tôi là Dcube Store.

Cũng như để người dùng dễ dàng sử dụng, chúng tôi cũng giải thích mã ở đây:

Là bước đầu tiên của mã hóa, bạn cần tải xuống thư viện pi4j trong trường hợp của java, vì thư viện này hỗ trợ các chức năng được sử dụng trong mã. Vì vậy, để tải thư viện, bạn có thể truy cập liên kết sau:

pi4j.com/install.html

Bạn cũng có thể sao chép mã java đang hoạt động cho cảm biến này từ đây:

nhập com.pi4j.io.i2c. I2CBus;

nhập com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

import java.io. IOException; public class HMC5883

{

public static void main (String args ) ném Exception

{

// Tạo bus I2C

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

// Lấy thiết bị I2C, địa chỉ I2C HMC5883 là 0x1E (30)

Thiết bị I2CDevice = Bus.getDevice (0x1E);

// Chọn thanh ghi cấu hình A

// Cấu hình đo thông thường, tốc độ dữ liệu o / p = 0,75 Hz

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

// Chọn đăng ký Chế độ

// Chế độ đo liên tục

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

Thread.sleep (500);

// Đọc 6 byte dữ liệu từ 0x03 (3)

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

byte data = byte mới [6];

device.read (0x03, dữ liệu, 0, 6);

// Chuyển đổi dữ liệu

int xMag = ((dữ liệu [0] & 0xFF) * 256 + (dữ liệu [1] & 0xFF));

if (xMag> 32767)

{

xMag - = 65536;

}

int zMag = ((dữ liệu [2] & 0xFF) * 256 + (dữ liệu [3] & 0xFF));

nếu (zMag> 32767)

{

zMag - = 65536;

}

int yMag = ((dữ liệu [4] & 0xFF) * 256 + (dữ liệu [5] & 0xFF));

nếu (yMag> 32767)

{

yMag - = 65536;

}

// Xuất dữ liệu ra màn hình

System.out.printf ("Từ trường trong Trục X:% d% n", xMag);

System.out.printf ("Từ trường trong Trục Y:% d% n", yMag);

System.out.printf ("Từ trường trong Trục Z:% d% n", zMag);

}

}

Các hàm Write () và read () được sử dụng để viết các lệnh và đọc đầu ra cảm biến tương ứng. Phần sau minh họa cách đọc các giá trị từ trường.

// Đọc 6 byte dữ liệu từ 0x03 (3)

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

byte data = byte mới [6];

device.read (0x03, dữ liệu, 0, 6);

Đầu ra được hiển thị trong hình trên.

Bước 4: Ứng dụng:

Các ứng dụng
Các ứng dụng

HMC5883 là một mô-đun đa chip, gắn trên bề mặt được thiết kế để cảm biến từ trường thấp với giao diện kỹ thuật số cho các ứng dụng như la bàn chi phí thấp và từ kế. Độ chính xác và độ chính xác cao từ một đến hai độ của nó cho phép Điều hướng dành cho người đi bộ và Ứng dụng LBS.

Đề xuất: