Компас на ардуино с дисплеем: Как сделать электронный компас на датчике MPU-9250 и Arduino

Содержание

Как сделать электронный компас и термометр для машины на основе Ардуино-совместимого модуля своими руками

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

Я начал с базовой функции, показывающей угол наклона и поворота цифрового магнитометра на ЖК-дисплее, но на микроконтроллере осталось множество неиспользованных аналоговых и цифровых пинов (я использовал совместимый с Ардуино JeonLab mini). Поэтому я подключил к нему цифровой датчик температуры и фототранзистор, подстраивающий яркость подсветки дисплея (одиночный светодиод).

После этого на контроллере осталось еще несколько свободных пинов и у меня есть планы по добавлению дополнительных датчиков, например наружный термометр, устройство анти-вор и т.

д.

Картинка в начальной части этой инструкции иллюстрирует устройство в полной сборке и установленное поверх зеркала заднего вида автомобиля. Девайс отображает направление, наклон и температуру в салоне.

Шаг 1: Список компонентов

  • LCD: 16×2 HD44780 LCD (белый текст на синем фоне): это очень популярный дисплей, который легко найти и купить.
  • JeonLab mini v1.3: это недорогая плата, совместимая с Arduino. На рынке существует несколько небольших плат, совместимых с Arduino, так что просто выберите ту, которую можно спрятать за экранчиком.
  • Цифровой компас: MAG3110 (купил готовый на Ebay): я пробовал другой цифровой компас пару лет назад и мне не удалось его запустить, а эту модель удалось легко запрограммировать. Всё будет объяснено более детально далее в статье.
  • Датчик температуры TMP36: взгляните на спецификацию с сайта Digikey. Он очень прост в использовании.
  • Фототранзистор LTR-4206E: Я уверен, что любой другой ИК-фототранзистор будет работать не хуже.
  • Регулятор 7805: Вы знаете для чего он нужен. Зарядка автомобиля и напряжение равны примерно 13.8-14.4V, тогда как нам для работы контроллера и монитора нужно 5V.
  • Резисторы и конденсаторы (смотрите схему)
  • Штекер для автомобильного зарядника
  • Плата прототипирования
  • Кнопка-выключатель (нормально открытый, normal open, N.O.) для калибровки магнитометра
  • Цельный медный провод (1мм в диаметре) для крепления девайса
  • Стяжки для кабеля

Шаг 2: Схема устройства

JeonLab mini v1.3 — это Ардуино с минимумом функционала. Для загрузки программы понадобится USB-интерфейс FTDI, который нужен лишь для загрузки кода и последовательной коммуникации.

Подключение дисплея хорошо объяснено в документации к библиотеке на странице руководства к Arduino, для удобства я лишь изменил распиновку. Помните, что вам также нужно изменить пины и в коде программы. Одна важная вещь, о которой стоит сказать — анод светодиодной подсветки дисплея подключен не к V, а к цифровому пину 5, который поддерживает широтно-импульсную модуляцию (ШИМ, pulse-width modulation, PWM), что позволяет управлять яркостью подсветки дисплея.

У датчика температуры TMP36 есть три ножки — V, сигнал и GND. Я соединил сигнальную ножку с одним из аналоговых входов JeonLab mini. Смотрите программу Ардуино в следующем шаге, чтобы понять, как рассчитывается температура по датчику.

Фототранзистор имеет две ножки — положительную и отрицательную. Вы можете держать резистор между отрицательным проводом и GND до тех пор, пока получаете корректные значения в темноте (я тестировал девайс на рассвете) и при ярком освещении (в этом случае вам не нужно ничего измерять, так как мы и так будем получать максимальные значения). Яркость, измеренная этим фототранзистором, используется для регулировки яркости светодиода подсветки дисплея. Файлы

  • JeonLab Car Digital Compass Thermometer.sch

Шаг 3: Предварительные тесты и рассёт курса

Прежде всего, я собрал и протестировал дисплей, JeonLab mini и магнетометр MAG3110 на макетной плате. У магнетометра есть трёхосевой датчик, но, так как дороги в местности, где я живу, относительно ровные, я решил не заморачиваться со сложными формулами и просто вычислять угол направления при помощи ATAN осей X и Y — всё работает достаточно хорошо.

Сила и направление магнитного поля отличаются от места к месту. Для точного измерения электронного компаса и карты вам нужно знать магнитное отклонение (разница между севером компаса и настоящим географическим севером). В моем коде я не вычитал и не добавлял отклонение, но если в вашем местоположении оно очень большое, вы можете добавить его, чтобы компенсировать разницу.

По предварительным испытаниям я определил максимальные и минимальные значения осей X и Y, представляющие север и юг, но значения распределены по углу неравномерно. Другими словами, центральное значение не представляет восток или запад. Это, как мне известно, обыкновенно для всех полупроводниковых магнитометров, если в них нет встроенных алгоритмов компенсации. Чтобы правильно считывать направление (приблизительно), я обнаружил, что если вы знаете значения для севера и юга для каждой оси, X и Y, то достаточно просто вычислить ATAN разностей текущего значения и средние значения X и Y дадут вам угол направления (см. скетч Arduino в следующем шаге), и всё будет отлично работать. Это не идеальный способ вычисления направления, но мы и не говорим о точности до десятых долей. Я ездил с компасом в своём автомобиле около недели и результаты оказались вполне удовлетворительными.

Шаг 4: Скетч Ардуино

Я добавил настолько подробные комментарии к коду, насколько это возможно. Скачайте приложенный файл.

Файлы

  • JeonLab_car_sensors.zip

Шаг 5: Сборка электронных компонентов

Шаг 6: Собираем из проволки каркас

Шаг 7: Установка и готовый вид

База знаний Амперки [Амперка / Вики]

Здесь собрана вся база знаний Амперки: инструкции и подсказки по Arduino и Raspberry Pi, оригинальные проекты, схемы распиновки модулей и datasheet’ы, теория электричества для начинающих и другая полезная информация. Ищите ответы на технические вопросы в нашей Wiki, накопленной годами!

Теория

Электричество

  • Понятие электричества

  • Принципиальные схемы

  • Основные законы электричества

  • Управление электричеством

  • Делитель напряжения

Компоненты

  • Конденсатор

  • Резистор

  • Диод

  • Светодиод

  • Кнопка

  • Светодиодные сборки

  • Биполярный транзистор

  • Полевой транзистор

  • Пьезодинамик

Сигналы, интерфейсы, протоколы

  • Аналоговый сигнал

  • Цифровой сигнал

  • Датчики и сенсоры: теория

  • Широтно-импульсная модуляция (ШИМ, PWM)

Механика

  • Коллекторный двигатель

  • Сервопривод

Программирование на C++

  1. Языки программирования: обзор

  2. Структура программы на C++ для Arduino

  3. Константы, переменные и арифметика

  4. Логические переменные, выражения if, ветвление

  5. Конечные автоматы, перечисления enum, выражения switch

  6. Случайные числа

Мифы и легенды о…

  1. Мейкерах и DIY

  2. Arduino

  3. Espruino и JavaScript

  4. Raspberry Pi


Технический FAQ

  • Решение частых проблем

Руководства

Iskra JS и Espruino

Начало работы с Espruino: JavaScript в микроконтроллере

  • Что такое Espruino

  • Подключение и настройка

  • Загрузка интерпретатора JS:

    • BBC micro:bit

    • STM32 Nucleo

    • ESP8266

  • Для тех кто переходит с Arduino

  • Как создать и подключить свою библиотеку в Espruino Web IDE

  • Как использовать библиотеки без интернета

  • Iskra JS

  • Iskra JS Mini

  • Espruino Pico

  • Espruino MDBT42Q Breakout

  • Espruino Pixl. js

  • Espruino Puck.js v1

  • Espruino Puck.js v2.1

    NEW

Arduino

  • Что такое Arduino?

  • Подключение и настройка

  • Видеоуроки Джереми Блюма

    HIT

  • Видеоуроки Карандаша и Самоделкина

  • Менеджер плат

  • Установка библиотек

  • Собираем Arduino своими руками

  • Arduino Nano RP2040 Connect

    NEW

  • Arduino MKR GSM 1400

  • Arduino MKR Vidor 4000

  • Arduino MKR Wi-Fi 1010

  • Arduino Yun Rev 2

  • Arduino MKR Zero

  • Arduino Uno

  • Arduino Nano

  • Arduino Nano Every

  • Arduino Nano 33 IoT

  • Arduino Nano 33 BLE

  • Arduino Nano 33 BLE Sense

  • Arduino Uno WiFi

  • Arduino Uno WiFi Rev2

  • Arduino Mega 2560

  • Arduino Leonardo

  • Arduino Leonardo ETH

  • Arduino Due

  • Arduino M0

  • Arduino M0 Pro

  • Arduino Yun

  • Arduino Yun Mini

  • Arduino Tian

  • STEMTera

Arduino Shields

  • Multiservo Shield v2

  • Multiservo Shield v1

  • Troyka Shield

  • Troyka Shield LP

  • Troyka Slot Shield

  • Troyka Mega Tail Shield

  • Screw Shield

  • Motor Shield

  • Motor Shield Plus

  • Relay Shield

  • AC/DC Shield

  • EasyVR 3 Plus Shield

  • Ethernet Shield

  • GPRS Shield

  • Mini IO — шилд для Arduino Mini

Iskra

  • Iskra Uno

    HIT

  • Iskra Nano Pro

  • Iskra Mega

  • Iskra Neo

  • Iskra Mini

micro:bit

  • Плата BBC micro:bit v2

    HIT

  • Плата BBC micro:bit v1. 5

  • Модуль питания Kitronik MI: Power Board v2

  • Умная перчатка Pimoroni MINI.MU

  • Драйвер моторов drive:bit

  • Драйвер сервоприводов servo:bit

  • Светодиодный диск ZIP Halo HD

  • Светодиодная матрица ZIP Tile

  • Плата мониторинга окружающей среды Pimoroni enviro:bit

  • Сенсорная клавиатура Pimoroni touch:bit

  • Светодиодная матрица Pimoroni scroll:bit

  • Модуль питания micro:bit

  • Адаптер micro:bit Breakout

  • Робот MiniBit

  • Робот Bit:Bot XL

  • Светодиодное лицо BitFace Breakout

  • Дальномер Ultrasonic Breakout

xDuino и другие платформы

  • Particle Photon

  • Microview OLED

  • Strela

  • STM32 Nucleo

  • Netduino 2

Teensy

  • Подключение и настройка

  • Teensy 3. 2

  • Teensy 3.5

  • Teensy 3.6

  • Teensy 4.0

ESP8266

  • Как прошить модули

  • Как создать резервную копию прошивки

  • ESP-01

  • Troyka WiFi

ESP32

  • ESP-WROOM-32 DevKit v1

Raspberry Pi

  • Начало работы

  • Запись Raspberry Pi OS на карту microSD

  • Заводим Raspberry Pi

  • Настройка Raspberry Pi OS

  • SSH — работа без экрана

  • VNC — удалённый рабочий стол

  • Настройка штатных камер

  • Интерфейсы

  • Raspberry Pi 4 Model B

  • Raspberry Pi 3 Model A+

  • Raspberry Pi Zero W

  • Raspberry Pi Zero

  • Raspberry Pi 3 Model B

  • Raspberry Pi CM3+

  • Raspberry Pi CM I/O Board v3

Raspberry Pi HATs

  • Raspberry Pi PoE HAT

    NEW

  • Raspberry Pi PoE+ HAT

    NEW

  • Battery HAT

    HIT

  • Ethernet / USB HAT

  • Troyka HAT

    HIT

  • Пианино Pimoroni Piano HAT

  • Pi Zero USB Stem

  • Плата мониторинга окружающей среды Pimoroni Enviro+ HAT

  • LED-матрица Pimoroni Unicorn HAT Mini

  • Умная колонка Pimoroni Pirate Audio

  • Усилитель наушников Pimoroni Pirate Audio

  • ТВ-тюнер Raspberry Pi TV HAT (DVB-T2)

  • Troyka Cap

  • Драйвер RGB-матриц

  • Адаптер Raspberry Pi Breakout

  • Корпус для RPi в стиле MegaDrive

  • Корпус для RPi в стиле SNES

  • Raspberry Pi Camera v2

  • Raspberry Pi Camera v2 NoIR

  • Raspberry Pi High Quality Camera

Raspberry Pi Pico

  • Среда разработки Thony Python IDE

  • Установка библиотек в Thonny Pyhon IDE

  • Raspberry Pi Pico

    HIT

  • Цветной дисплей 1,14” (v1) для Raspberry Pi Pico

    NEW

  • IMU-сенсор 10 DOF (v1) для Raspberry Pi Pico

    NEW

  • Часы реального времени (v1) для Raspberry Pi Pico

    NEW

  • Дисплей E-Ink для Raspberry Pi Pico v1 2,13” (v1) для Raspberry Pi Pico

    NEW

Onion Omega2

  • Onion Omega2

  • Установка и настройка Onion Omega2

  • Onion Breadboard Dock

OpenMV

  • Среда разработки OpenMV IDE

  • Камера машинного зрения OpenMV H7

  • Камера машинного зрения OpenMV M7

  • OpenMV LCD Shield

  • OpenMV WiFi Shield

  • OpenMV Wireless TV Shield

Troyka-модули и сенсоры

Что такое Troyka-модули

  • pH-метр с щупом

  • Солемер с щупом

  • Текстовый дисплей 16×2

  • Screw Pad

  • Энкодер

  • Импульсный блок питания на 600 мА

  • Импульсный блок питания на 3000 мА

  • Power Cell

  • OLED-дисплей

  • Линейный регулятор напряжения

  • Адаптер «мама-папа»

  • Приёмопередатчик на 868 МГц

  • Bluetooth Low Energy

  • Метеодатчик

  • USB-UART преобразователь

  • Расширитель портов I²C

  • Усилитель класса D

  • Модуль подтяжки

  • Понижающий DC-DC и преобразователь уровней для WS2812

  • Аналоговый акселерометр

  • Ползунковый потенциометр

  • H-мост (1 канал)

  • H-мост (2 канала)

  • Светодиодная матрица 8×8

  • Датчик вибрации

  • Расширитель GPIO-портов

  • Приёмник GPS/GLONASS v2

  • Приёмник GPS/GLONASS с выносной антенной v2

  • Светодиодная RGB матрица 4×4

  • Внешний ЦАП с TRS 3,5 мм

  • Внешний ЦАП с клеммником

  • MIDI in/out

  • Четырёхкнопочная клавиатура

  • Датчик шума

  • Четырёхразрядный индикатор (вторая ревизия)

  • Wi-Fi модуль

  • SD картридер

  • Troyka Pad

  • Аудиомодули:

    • Аудиовыходы

    • Аудиовход

  • Датчик приближения и освещённости VL6180

  • Приёмопередатчик RS-485

  • Bluetooth HC-05

  • Датчик тока

  • Датчик цвета

  • IMU-сенсор на 10 степеней свободы v2

  • Гироскоп v2

  • Акселерометр

  • Магнитометр / компас

  • Барометр v2

  • Датчики газа MQ:

    • датчик широкого спектра газов MQ-2

    • датчик паров спирта MQ-3

    • датчик природного газа MQ-4

    • датчик горючих газов MQ-5

    • датчик сжиженного углеводородного газа MQ-6

    • датчик угарного газа MQ-7

    • датчик водорода газа MQ-8

    • датчик горючих и угарного газов MQ-9

    • датчик углекислого газа MQ-135

  • Сканер RFID/NFC

  • 3D-джойстик

  • Датчик температуры и влажности

  • Часы реального времени

  • Повышающий стабилизатор напряжения

  • Реле

  • Силовой ключ (N-канал)

  • Силовой ключ (P-канал)

  • Драйвер шагового двигателя

  • Четырёхразрядный индикатор (первая ревизия)

  • Аналоговый термометр

  • Датчик освещённости

  • Тактовая кнопка

Zelo-модули

  • Восьмиканальный датчик линии v1

  • Инфракрасный датчик движения

  • Сборка силовых ключей (P-FET)

  • Сборка силовых ключей (N-FET)

  • AC/DC — блок питания и реле

  • Мини-реле

  • Power Bank v1

  • Power Bank v2

Slot-модули

  • Uno Slot

  • Wi-Fi Slot

  • Slot Expander

Текстовые дисплеи

  • Текстовый дисплей 8×2

  • Текстовый дисплей 16×2

  • Текстовый дисплей 20×4

  • Текстовый дисплей 16×2 / I²C

  • Текстовый дисплей 20×4 / I²C

  • Текстовый дисплей 16×2 / I²C / 3,3 В

  • Текстовый дисплей 20×4 / I²C / 3,3 В

Графические дисплеи

  • Графический дисплей 128×64

  • Графический дисплей 128×64 / I²C

    NEW

  • Цветной графический дисплей 480×240 / 3,2”

  • Цветной графический дисплей 320×240 / 2,2”

HMI-дисплеи Nextion

  • Чем HMI-дисплей отличается от простого экрана

  • Подключение и настройка

  • Дисплей Nextion Discovery 2,4”

    NEW

  • Дисплей Nextion Discovery 2,8”

    NEW

  • Дисплей Nextion Discovery 3,5”

    NEW

  • Дисплей Nextion Enhanced 2,4”

  • Дисплей Nextion Enhanced 2,8”

  • Дисплей Nextion Enhanced 3,2”

  • Дисплей Nextion Enhanced 3,5”

  • Дисплей Nextion Enhanced 4,3”

  • Дисплей Nextion Enhanced 5”

  • Дисплей Nextion Enhanced 7”

  • Дисплей Nextion Intelligent 4,3”

    NEW

  • Дисплей Nextion Intelligent 4,3” в корпусе

    NEW

  • Дисплей Nextion Intelligent 5”

    NEW

  • Дисплей Nextion Intelligent 5” в корпусе

    NEW

  • Дисплей Nextion Intelligent 7”

  • Дисплей Nextion Intelligent 7” в корпусе

  • Дисплей Nextion Intelligent 10,1”

  • Адаптер Nextion I/O

  • Плата расширения Nextion I/O

  • Преобразователь USB-UART Nextion Foca Max

Дисплеи для Raspberry Pi

  • Цветной дисплей для Raspberry Pi 4,3” / 800×480 / IPS / DSI

    NEW

  • Дисплей для Raspberry Pi 5” / 800×480 / IPS / DPI

    NEW

  • Дисплей для Raspberry Pi 7” / 1024×600 / IPS / DPI

    NEW

  • Резистивный сенсорный дисплей для Raspberry Pi 320×240 / 2,8” / SPI

  • Резистивный сенсорный дисплей для Raspberry Pi 480×320 / 3,5” / SPI

  • Резистивный сенсорный дисплей для Raspberry Pi 480×320 / 3,5” / HDMI

  • Резистивный сенсорный дисплей для Raspberry Pi 800×480 / 5” / HDMI

  • Ёмкостный сенсорный дисплей для Raspberry Pi 800×480 / 5” / HDMI

  • Ёмкостный сенсорный AMOLED дисплей 5,5” / 1920×1080 / HDMI

    NEW

  • Ёмкостный сенсорный AMOLED дисплей 5,5” / 1920×1080 / HDMI / в корпусе

    NEW

  • Ёмкостный сенсорный дисплей для Raspberry Pi 1024×600 / 7” / HDMI

  • Ёмкостный сенсорный дисплей для Raspberry Pi 1024×600 / 7” / HDMI / в корпусе

  • Ёмкостный сенсорный HDMI-дисплей для Raspberry Pi 1920×1080 / 11,6” в корпусе

  • Сенсорный дисплей для Raspberry Pi / HDMI

  • Сенсорный дисплей для Raspberry Pi / SPI

E-Ink дисплеи

  • Брелок E-Ink 1,54” с NFC

    HIT

  • Экран E-Ink 1,54” / монохромный

  • Экран E-Ink 1,54” / красный

  • Экран E-Ink 1,54” / жёлтый

  • Дисплейный модуль E-Ink 2,13” для Raspberry Pi / монохромный

  • Дисплейный модуль E-Ink 2,13” для Raspberry Pi / красный

  • Дисплейный модуль E-Ink 2,13” для Raspberry Pi / жёлтый

  • Дисплейный модуль E-Ink 2,7” для Raspberry Pi / монохромный

  • Дисплейный модуль E-Ink 2,7” для Raspberry Pi / красный

  • Экран E-Ink 4,2” / монохромный

  • Экран E-Ink 4,2” / красный

  • Экран E-Ink 4,2” / жёлтый

  • Экран E-Ink 5,83” / монохромный

  • Экран E-Ink 5,83” / красный

  • Экран E-Ink 5,83” / жёлтый

  • Экран E-Ink 7,5” / монохромный

  • Экран E-Ink 7,5” / красный

  • Экран E-Ink 7,5” / жёлтый

Светодиодные модули

  • Семисегментный индикатор SegM8

  • Круглый светодиодный модуль RGB WS2812 (7×LED)

  • Светодиодные модули RGB WS2811 (20×3)

  • Светодиодные модули RGB WS2811 (20×3) с винтовым креплением

Умные устройства Sonoff

  • Настройка приложения eWeLink

  • Умная Wi-Fi IP-камера Sonoff GK-200MP2-B

    NEW

  • Умное реле Sonoff BASIC

  • Умное реле Sonoff BASICR2

  • Умное реле Sonoff Th26

  • Умное реле Sonoff POWR2

  • Умное реле Sonoff MINIR2

  • Умное реле Sonoff RE5V1C

  • Умная розетка Sonoff S26

  • Умный патрон Sonoff SlampherR2

  • Умный выключатель Sonoff T2EU1C

  • Умный USB-адаптер Sonoff Micro

  • Умное реле Sonoff 4CHPROR3

  • Датчик влажности и температуры Sonoff AM2301

  • Герметичный датчик температуры Sonoff DS18B20

Сервоприводы

  • Что такое сервопривод

  • Сервоприводы PDM с удержанием угла

  • Сервоприводы PDM постоянного вращения

  • Сервопривод Feetech FS90

  • Сервопривод Feetech FS90R

  • Сервопривод Feetech FT90B

  • Сервопривод Feetech FT90R

  • Сервопривод Feetech FS0403-FB

  • Сервопривод Feetech FS90-FB

  • Сервопривод Feetech FB5317M-360

  • Сервопривод Feetech FB5118M

  • Сервопривод Feetech FT6335M

Электромеханические модули

  • Коллекторные моторы 12 мм

  • Шаговый двигатель 28BYJ-48 5V

  • Электронный замок (27×28×18 мм)

  • Электронный замок (54×38×28 мм)

  • Соленоидные актуаторы

Другие сенсоры и модули

  • Waveshare Датчик Пыли Sharp GP2Y1010AU0F

  • Датчик качества воздуха CCS811

  • Breadboard Power Supply

  • Понижающий DC/DC-преобразователь для Arduino

  • Ёмкостный датчик влажности почвы

  • Резистивный датчик влажности почвы

  • Ёмкостный датчик уровня жидкости

  • Светодиодная RGB Матрица 64×32

  • Аналоговый датчик линии

  • Цифровой датчик линии

  • Сканер штрихкодов и QR-кодов

  • Мультивалютный монетоприёмник

  • Эталонный монетоприёмник

  • Цветная светодиодная лента

  • Белая светодиодная лента

  • Герметичный датчик температуры DS18B20

  • Nano Switch

  • Импульсные источники питания

  • XBee Series 2

  • Ультразвуковой дальномер HC-SR04

  • Лидар Benewake TFmini

  • Лидар Benewake TFmini-S

  • Лидар Benewake TFmini Plus

  • Лидар Benewake TF02

  • Лидар Benewake TF02 Pro

  • Матричные клавиатуры:

    • четыре клавиши (1×4)

    • двенадцать клавиш (4×3)

    • шестнадцать клавиш (4×4)

Микросхемы и микроконтроллеры

  • CD4026: управление 7-сегментными индикаторами

  • Прошивка ATtiny с помощью Arduino

  • Прошивка ATtiny программатором и чистый «Си»

Корпусирование

  • #Структор

Проекты

Мини-проекты с Arduino

  1. Маячок

  2. Маячок с нарастающей яркостью

  3. Светильник с управляемой яркостью

  4. Терменвокс

  5. Ночной светильник

  6. Пульсар

  7. Бегущий огонёк

  8. Мерзкое пианино

  9. Миксер

  10. Кнопочный переключатель

  11. Светильник с кнопочным управлением

  12. Кнопочные ковбои

  13. Секундомер

  14. Счётчик нажатий

  15. Комнатный термометр

  16. Метеостанция

  17. Пантограф

  18. Тестер батареек

  19. Светильник, управляемый по USB

  20. Перетягивание каната

Простые проекты на Arduino Uno и Slot Shield

Как собрать проект на Arduino Uno

  • Простые часы

  • Часы c подстройкой времени

  • Автономные часы

  • Электронный будильник

  • Бионический будильник

  • Метеодатчик для компьютера

  • Автономная метеостанция

  • Электронный барометр

  • Метеостанция c выносным термометром, гигрометром и барометром

  • Универсальный ИК-контроллер с датчиком температуры

  • Метеокомпьютер с записью на SD

  • Игра «Саймон говорит…»

  • Игра «Кнопочные ковбои»

  • Игра «Flappy Bird»

  • Игра «Змейка»

Проекты на Iskra Neo и Slot Shield

Что такое проекты на Slot Shield

  • Автоматическая кормушка для рыб

  • Электронные кубики для настольных игр

  • Тамагочи «Space Invaders»

  • Сигнализация для холодильника

  • Велокомпьютер с GPS модулем

  • Часы Фишера для быстрых шахмат

  • GPS-трекер

  • Цифровые часы

  • Автополив для комнатных цветов

  • Детектор протечки воды

  • Климат-контроль

  • Светомузыка

  • Хлоп-реле

  • «Кнопочные ковбои»

  • «Саймон говорит…»

  • Кухонный таймер

  • Детектор дыма

  • Простая метеостанция

Умные устройства

  • Счётчик электроэнергии

    NEW

  • Счётчик подписчиков Instagram

    NEW

  • Автоматические кормушки для домашних животных

  • Пульсометр «Измеритель счастья»

  • Часы Nixie Clock

  • Умный чайник

  • Аркадный игровой автомат на Retro Pie

  • Система быстрой обтравки фотографий

  • Гидропонная система периодического затопления «Гидрогоршок»

  • Arduino в космосе — собираем самописец для стратосферного зонда

  • Умная вытяжка

  • Игровая ретро-консоль на Raspberry

  • GPS-телеметрия для картинга

  • Игровой автомат «Капитиан Крюк»

  • Собираем Pong на Arduino

  • Робот-бармен на соленоидных клапанах

  • Счетчик лайков с конфетами

  • Система интеллектуального полива газонов

  • Nyan! Умный технокотик

  • Универсальный пульт управления из старого телефона

  • Виджет из светофора: мониторим Travis CI на Iskra JS

  • Электронный тайник с IMU-сенсором

  • POV-спидометр для велосипеда

  • Танцевальная битва

  • Автоматизируем капельный полив

  • Оптический синтезатор Look Modular (проект на GeekTimes)

  • Гаражный парктроник

  • Как достать соседа c перфоратором

  • Умный лабиринт для крыс на Iskra JS

  • Пиротехнический радиопульт

  • Лазерная игрушка для кошек

  • Новогодняя SMS-ёлка

  • Хэллоуинская тыква

  • Мишкофон

  • POV-бегущая строка из 8 светодиодов

  • Клавиатурный шпион

  • Робот Мариачи

  • GPRS-логгер для теплицы

  • SMS-розетка

  • Технокуб

  • Бутылочный Bluetooth-катер

  • Кашляющая пепельница

  • MIDI-контроллер «Шарманка»

  • Ночной мониторинг сайтов

  • Жалюзи с электроприводом

  • Фотобудка для кота

  • Кодовый замок «Тук-тук»

  • Карта офисной активности

  • Поворотный стол для 3D-фотосъемки

  • Голосовой тир

  • Беспроводная метеостанция

  • Автополивщик растений на Arduino

  • Аудиоинформер скорости ветра

  • RFID-магнитофон «Becha»

  • Bluetooth Android-пульт для светодиодов

  • Прогноз погоды на дисплее TE-ULCD

  • Прогноз погоды на светодиодной матрице

  • Барабанная установка на Iskra JS

Робототехника

  • Робот на ROS. Часть 1: шасси и бортовая электроника

  • Робот на ROS. Часть 2: дистанционное управление и навигация

  • Робот на ROS. Часть 3: распознавание речи для голосового управления

    NEW

  • Робот на ROS. Часть 4: синтез речи и голосовое управление

    NEW

  • Робот для езды по линии на магнитной маркерной доске

  • Как собрать орнитоптер

  • Дирижабль для GoPro

  • Как устроить гонки #Робоняш

  • Робототехническая лаборатория «Робоняша»

  • Управляем роботом на Iskra JS по Bluetooth

  • Собираем простой ИК-бот на Arduino Uno и Iskra JS

  • Сборка основы для мобильного двухколёсного робота

  • Робот, ездящий по линии под управлением Arduino

  • Углубленное изучение коллекторных моторов постоянного тока

  • Соединительные провода «папа-папа» своими руками

  • Платформа робота MiniBit

  • Платформа робота Bit:Bot XL

Занимательные проекты

  • Олдскульная неоновая вывеска с анимацией

    NEW

  • Шарманка на Arduino

    NEW

  • Многозадачность на Arduino

  • Аудио плеер на Arduino через встроенный «ЦАП»

  • Аудио плеер на Arduino через внешний «ЦАП»

  • Светодиодная панель на Arduino

  • Светодиодная панель на Raspberry Pi

Эксперименты из наборов

  • Набор «Малина»

  • Набор «Драгстер»

  • Набор «Йодо»

  • Автополив — дополнение набора «Йодо»

  • IoT (Интернет вещей) — дополнение набора «Йодо»

  • IoT (Интернет вещей) — дополнение набора «Матрёшка»

  • Как открыть сетевой порт

Цифровой компас MicroView — SparkFun Learn

Введение

В этом учебном пособии вы узнаете, как использовать 3-осевой магнитометр MAG3110 для создания портативного цифрового компаса! Этот проект также будет использовать SparkFun MicroView для отображения заголовка.

Если вы еще не проверили его, ознакомьтесь с новым руководством по подключению MAG3110, чтобы узнать, как работает это устройство!

Необходимые материалы

В этом проекте используется магнитометр MAG3110 для определения магнитного севера, а также SparkFun Microview для отображения и управления всем шоу. Если у вас его нет, вам также понадобится программатор MicroView для загрузки кода в MicroView.

Поскольку MicroView представляет собой логическое устройство с напряжением 5 В, а MAG3110 — устройство с более низким напряжением, вам также потребуется двунаправленный логический преобразователь для облегчения связи между ними. Будьте осторожны, если вы соедините их напрямую друг с другом, вы можете повредить датчик MAG3110!

Я решил сделать все это на батарейках, чтобы можно было ходить с ним. Я использовал силовую ячейку SparkFun — зарядное устройство / усилитель LiPo и аккумулятор LiPo емкостью 850 мАч. Тем не менее, не стесняйтесь привязывать его к компьютеру через USB, если вы не хотите получать дополнительные детали.

Вы можете построить все это на макетной плате или использовать изящную съемную макетную плату SparkFun для более постоянного проекта.

Для большинства этих деталей вам, возможно, придется припаять штекерные разъемы для использования с макетной платой. См. рекомендуемое чтение ниже для советов о том, как это сделать!

Список пожеланий ниже содержит большинство деталей, которые вам понадобятся.

Рекомендуемая литература

Прежде чем приступить к изучению этого руководства, вы можете ознакомиться с любой из приведенных ниже тем.

  • Связь I2C
  • Пайка через отверстие (и полезные советы по пайке разъемов!)
  • Руководство по подключению двунаправленного логического преобразователя
  • Краткое руководство по PowerCell
  • Начало работы с MicroView
  • Направляющая для подключения MAG3110

Аппаратное подключение

Это может показаться сложным, но есть только несколько основных блоков схемы: питание, мозги, регулятор уровня и датчик.

Питание схемы

Если вы не используете питание от батареи, вы можете просто игнорировать PowerCell. Обязательно питайте MAG3110 только напряжением 3,3 В. Если подать на него 5 В, он может выйти из строя! В MicroView есть внутренний стабилизатор на 3,3 В, но, к сожалению, он не вытащен на контакты. Вместо этого вы можете использовать внешний стабилизатор LDO 3,3 В. См. техническое описание, как это подключить (это действительно просто!).

PowerCell имеет возможность выбора выходного напряжения — 5 В (по умолчанию) или 3,3 В. Чтобы использовать его в нашем проекте, нам нужно изменить выход на 3,3 В. Есть перемычка для пайки, которая выбирает это. Используйте фитиль для удаления припоя и соедините центральную площадку с площадкой с надписью «3.3V».

Убедитесь, что контактная площадка для пайки выглядит так, чтобы выбрать выходное напряжение 3,3 В.

Если вы все еще не уверены в своем подключении, см. Краткое руководство PowerCell.

При любом методе обязательно проверьте выходное напряжение источника питания с помощью мультиметра, прежде чем что-либо к нему подключать!

Подключение MicroView

MicroView имеет встроенный повышающий стабилизатор на 5 В. Это означает, что вы можете подать на него более низкое напряжение питания (до 3,3 В), и он будет повысить их до необходимых 5В. Это позволяет очень легко питать наш MicroView от выхода 3,3 В PowerCell.

Удобно, что MicroView выводит эти 5 В на внешний контакт для использования в других частях нашей схемы. Это хорошо, потому что нам нужно использовать переключатель логического уровня.

Вспомните распиновку MicroView:

Подключите источник 3,3 В к контакту VIN MicroView и соедините контакт GND с землей. Вуаля! У MicroView есть мощность.

Подключение устройства сдвига уровня

Устройство сдвига уровня позволяет логическим устройствам с более высоким напряжением (5 В) взаимодействовать с логическими устройствами с более низким напряжением (3,3 В) без повреждения или неправильной связи. Для получения дополнительной информации о логических уровнях см. это руководство, а чтобы узнать больше о том, как подключить переключатель уровня, см. это руководство.

Вот переключатель уровня, который мы будем использовать:

сторона напряжения. Подключите источник высокого напряжения «HV» к контакту 5V MicroView и соедините GND с землей.

Для стороны низкого напряжения подключите LV к 3,3 В, а GND к земле.

I
2 C Связь

Датчик MAG3110 обменивается данными через I 2 C. Этот протокол удобен тем, что требует только двух проводов между устройствами. А именно SDA (последовательные данные) и SCL (последовательные часы). Из распиновки, показанной ранее, вы можете видеть, что MicroView имеет SCL и SDA на контактах 2 и 3 соответственно.

Нам нужно сдвинуть только эти два выхода, поэтому подключите SCL и SDA MicroView к HV1 и HV2 преобразователя уровня.

Подключение датчика MAG3110

Датчик MAG3110 представляет собой 3-осевой магнитометр, который можно использовать для измерения силы магнитных полей. Эти данные можно использовать для определения магнитного севера! Ознакомьтесь с руководством по подключению MAG3110, чтобы узнать больше о том, как использовать этот датчик!

Разветвитель MAG3110 имеет всего несколько контактов, которые нам нужно подключить.

MAG3110 может работать только с напряжением до 3,6 В, поэтому обязательно подключайте VCC к 3,3 В, а не к 5 В. Контакт GND подключается к земле, а SCL и SDA должны подключаться к LV1 и LV2 переключателя уровня. Убедитесь, что вы не перепутали местами SCL или SDA с обеих сторон переключателя уровня, иначе вы не сможете общаться с датчиком.

Цепь завершена

Теперь цепь должна быть завершена. Перед подключением аккумулятора обязательно проверьте соединения.

Если вы решили использовать питание USB (с помощью программатора MicroView) и внешний регулятор 3,3 В, эта схема находится ниже. Не беспокойтесь о конденсаторах, это всего лишь фильтрующие конденсаторы, рекомендованные в паспорте регулятора.

Если вы использовали более портативную схему PowerCell на батарейках, вы можете следовать этой схеме, показанной ниже.

Эскиз MicroView

Теперь, когда схема завершена, пришло время запрограммировать MicroView! Если вы еще этого не сделали, ознакомьтесь с Руководством по подключению MAG3110 и загрузите библиотеку SparkFun MAG3110 Arduino. Эта библиотека упрощает использование датчика MAG3110 и включает пример эскиза цифрового компаса, который мы собираемся использовать. Не знаете, как установить библиотеку Arduino? Ознакомьтесь с этим руководством!.

Библиотека магнитометра SparkFun MAG3110 для Arduino

После установки библиотеки вы можете найти код для цифрового компаса в разделе Примеры → SparkFun MAG3110 Magnetometer Breakout Arduino Library → SparkFun_DigitalCompass.

Код в основном представляет собой пример кода калибровки, а также управляет визуализацией спрайтов.

Получение спрайтов на MicroView

Рендеринг спрайтов на MicroView может быть сложной задачей. Я написал небольшой скетч Processing, чтобы преобразовать растровые изображения в шестнадцатеричный код, чтобы его было легче отображать в MicroView. Он не очень отполирован, но вы можете скачать его, используя ссылку ниже, или вы можете найти файлы в репозитории MAG3110 Arduino Library GitHub.

Конвертер изображений uView

Возможно, вам потребуется установить библиотеку Processing sDrop. Если вам нужна помощь с обработкой, см. это руководство.

Когда вы запустите скетч, на вашем экране появится виртуальный MicroView. Перетащите любой растровый файл (до 64×48 пикселей) в виртуальный MicroView, и он преобразует его в шестнадцатеричный формат. Обратите внимание, что все пиксели должны быть белыми или черными. Вы должны увидеть предварительный просмотр в виртуальном MicroView.

Скопируйте шестнадцатеричный вывод из консоли обработки и скопируйте его в свой код. Теперь вы можете загрузить этот шестнадцатеричный код в экранный буфер MicroView, и он должен отобразить его правильно. Возможно, вам придется отформатировать шестнадцатеричный код (и избавиться от лишних запятых), чтобы он правильно скомпилировался.

Понимание и запуск скетча

В начале кода вы увидите много слов PROGMEM . Так как в этом скетче используется много спрайтов, обычная память не может вместить их все. Это ключевое слово является частью библиотеки, позволяющей хранить определенные переменные в памяти.

Остальная часть кода следует примерному эскизу калибровки для библиотеки MAG3110. Если вы хотите узнать больше о калибровке MAG3110, см. руководство по подключению, ссылка на которое приведена ранее. Заголовок, который я получаю от этого, мне пришлось компенсировать на 90 градусов, так как MicroView и ось x MAG31110 были направлены в разные стороны.

Когда вы впервые запускаете скетч, вам нужно будет откалибровать MAG3110, повернув его на 360 градусов несколько раз, удерживая его горизонтально.

В зависимости от заголовка код загружает в MicroView другой спрайт.

После калибровки у вас должен быть работающий цифровой компас!

Ресурсы и дальнейшее развитие

Есть много других интересных проектов, которые вы можете сделать с датчиком MAG3110. Если вы объедините MAG3110 с несколькими другими датчиками, вы сможете реализовать множество проектов, включающих определение местоположения и ориентации.

Ознакомьтесь с книгой Shawn Hymel’s Adventues in Science: Использование магнитометра в качестве компаса и примерами кода для идей:

Чтобы получить больше удовольствия от датчиков, ознакомьтесь с другими замечательными учебными пособиями SparkFun:

Цилиндр Das Blinken

Цилиндр, украшенный светодиодными лентами, станет отличным свадебным подарком.

Избранное Любимый 1

Руководство по подключению OpenLog Artemis

Как использовать и перепрограммировать OpenLog Artemis, регистратор данных с открытым исходным кодом. OLA предварительно запрограммирован на автоматическую регистрацию данных. OLA также может записывать последовательные данные, аналоговые напряжения или показания с внешних устройств I2C с поддержкой Qwiic. Некоторые из этих устройств с поддержкой Qwiic включают в себя модули GPS/GNSS, датчики давления, высоты, влажности, температуры, качества воздуха, окружающей среды, расстояния и веса.

Избранное Любимый 0

Nextion 3,5-дюймовый ЖК-цифровой компас для Arduino Uno

Это точный, простой в сборке цифровой компас, в котором используется 3,5-дюймовый ЖК-дисплей Nextion TFT и 3-осевой модуль компаса QMC5883L.

Детали

Создание точного цифрового компаса — довольно простая задача, особенно с Arduino Uno, которая упрощает жизнь благодаря своим превосходным библиотекам. Что отличает этот компас от других, так это то, что он использует ЖК-дисплей TFT с 65 336 цветами для отображения хорошего изображения компаса и курса в градусах. Я также потратил некоторое время на изучение явления полярного блуждания, влияющего на показания компаса.

Для обеспечения точности компаса необходимо учитывать магнитное склонение пользователя. Расплавленная порода, взбивающаяся и вращающаяся под нашими ногами, заставляет магнитные полюса Земли медленно колебаться. Это колебание влияет на показания компаса. Магнитное склонение — это «смещение колебания», которое необходимо добавить к курсу.

Магнитное склонение — важное понятие для точной навигации. Компас всегда будет указывать вдоль силовых линий магнитного поля (которые сходятся на так называемых магнитных полюсах). Угол между направлением силы и направлением на географический северный полюс называется склонением. Если компас в вашем местоположении указывает вправо от истинного севера, склонение положительное или восточное, а если он указывает влево от истинного севера, склонение отрицательное или западное. При движении по поверхности земного шара линии постоянного магнитного склонения называются изогонические линии .

На изображении показаны кривые уровня, нарисованные на карте склонения для обозначения изменения магнитного склонения с течением времени, начиная с 1900 года. Каждая кривая уровня представляет собой изогональную линию.

К счастью, магнитное склонение для мест на Земле отслеживается различными агентствами. Его можно измерить самостоятельно, но самый простой способ получить эту информацию — посетить веб-сайт Magnetic-Declination.com и найти его для вашего местоположения.

На изображении выше показано магнитное склонение для моего местоположения в Великобритании. Это значение добавляется к азимуту курса (измерению углового курса), полученному из модуля компаса. В моем случае значение равно -1,5. Неспособность добавить это значение к заголовку приводит к неточным показаниям компаса. Кроме того, поскольку магнитное склонение меняется со временем, компас необходимо периодически обновлять с новым значением.

Те из вас, кому нужна дополнительная информация, могут получить доступ к программе просмотра склонений на веб-сайте Национального управления океанических и атмосферных исследований. Это средство просмотра отображает данные о склонении в прошлом, а также дает прогнозы о том, куда они могут пойти дальше.

В дополнение к средству просмотра Национальное агентство геопространственной разведки (NGA) предоставляет исходный код, написанный на C, который можно бесплатно загрузить, и включает файл данных, обновляемый каждые пять лет для учета движения северного магнитного полюса.

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

Короче говоря, если не считать калибровки компаса перед его использованием (это включает в себя вращение компаса на 360 градусов и запись некоторых смещений), это почти единственная деталь, о которой вам нужно позаботиться при работе с цифровым компасом. Подключить модуль компаса к Arduino и ЖК-дисплею — простая задача. Трудная часть заключается в обеспечении того, чтобы компас давал точные показания.


Инструкции по сборке этого компаса см. в разделе «Инструкции по сборке ».

  • 1 × 4 ГБ микро SD-карта ЖК-дисплей загружает свой пользовательский интерфейс с карты micro SD.
  • 1 × Ардуино Уно
  • 1 × Модуль компаса QMC5883L Доступен за несколько долларов на Ebay.
  • 1 × Nextion NX4832T035 3,5-дюймовый ЖК-дисплей TFT
  • 1 × Адаптер карты памяти Micro SD Для передачи файлов с ПК на карту micro SD требуется адаптер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *