Оглавление:

Измерение магнитного поля с использованием HMC5883 и Raspberry Pi: 4 шага
Измерение магнитного поля с использованием HMC5883 и Raspberry Pi: 4 шага

Видео: Измерение магнитного поля с использованием HMC5883 и Raspberry Pi: 4 шага

Видео: Измерение магнитного поля с использованием HMC5883 и Raspberry Pi: 4 шага
Видео: GY-273 3х осевой магнитный компас QMC5883L 2024, Июль
Anonim
Image
Image

HMC5883 - цифровой компас, разработанный для измерения магнитного поля в слабом поле. Это устройство имеет широкий диапазон магнитного поля +/- 8 Э и выходную частоту 160 Гц. Датчик HMC5883 включает в себя приводы ремня с автоматическим размагничиванием, отмену смещения и 12-разрядный АЦП, обеспечивающий точность направления по компасу от 1 ° до 2 °. Все мини-модули I²C рассчитаны на работу при 5 В постоянного тока.

В этом руководстве мы собираемся подробно объяснить работу HMC5883 с Raspberry pi и его программирование с использованием языка программирования java.

Шаг 1: Требуемое оборудование:

Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование

Оборудование, необходимое для выполнения задачи, следующее:

1. HMC5883

2. Raspberry Pi

3. Кабель I2C

4. I2C Shield для Raspberry Pi

5. Кабель Ethernet.

Шаг 2: Подключение оборудования:

Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования

В разделе «Подключение оборудования» в основном объясняются проводные соединения, необходимые между датчиком и Raspberry Pi. Обеспечение правильных соединений является основной необходимостью при работе с любой системой для достижения желаемого результата. Итак, необходимые подключения следующие:

HMC5883 будет работать по I2C. Вот пример схемы подключения, демонстрирующий, как подключить каждый интерфейс датчика.

Изначально плата настроена для интерфейса I2C, поэтому мы рекомендуем использовать это подключение, если вы не сторонник этого. Все, что вам нужно, это четыре провода!

Требуются только четыре соединения, выводы Vcc, Gnd, SCL и SDA, которые подключаются с помощью кабеля I2C.

Эти соединения показаны на рисунках выше.

Шаг 3: Java-код для измерения интенсивности магнитного поля:

Код Java для измерения интенсивности магнитного поля
Код Java для измерения интенсивности магнитного поля
Код Java для измерения интенсивности магнитного поля
Код Java для измерения интенсивности магнитного поля

Преимущество использования raspberry pi заключается в том, что он предоставляет вам гибкость языка программирования, на котором вы хотите запрограммировать плату, чтобы связать с ней датчик. Используя это преимущество этой платы, мы демонстрируем здесь ее программирование на Java. Код Java для HMC5883 можно загрузить в нашем сообществе github, которое называется Dcube Store.

Помимо удобства пользователей, мы также объясняем код здесь:

В качестве первого шага кодирования вам необходимо загрузить библиотеку pi4j в случае java, потому что эта библиотека поддерживает функции, используемые в коде. Итак, чтобы скачать библиотеку, вы можете перейти по следующей ссылке:

pi4j.com/install.html

Вы также можете скопировать рабочий java-код для этого датчика отсюда:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

import java.io. IOException; открытый класс HMC5883

{

public static void main (String args ) выдает исключение

{

// Создаем шину I2C

Шина I2CBus = I2CFactory.getInstance (I2CBus. BUS_1);

// Получение устройства I2C, адрес I2C HMC5883 - 0x1E (30)

Устройство I2CDevice = Bus.getDevice (0x1E);

// Выбираем регистр конфигурации A

// Нормальная конфигурация измерения, скорость передачи данных o / p = 0,75 Гц

device.write (0x00, (байт) 0x60);

// Выбираем регистр режима

// Режим непрерывного измерения

device.write (0x02, (байт) 0x00);

Thread.sleep (500);

// Считываем 6 байтов данных из 0x03 (3)

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

byte data = новый байт [6];

device.read (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

byte data = новый байт [6];

device.read (0x03, данные, 0, 6);

Результат показан на картинке выше.

Шаг 4: Приложения:

Приложения
Приложения

HMC5883 - это многокристальный модуль для поверхностного монтажа, предназначенный для измерения магнитного поля в слабом поле с цифровым интерфейсом для таких приложений, как недорогой компас и магнитометрия. Его точность и точность на уровне от одного до двух градусов позволяют использовать пешеходную навигацию и приложения LBS.

Рекомендуемые: