Как сделать электронный компас и термометр для машины на основе Ардуино-совместимого модуля своими руками
Я не очень хорош в нахождении мест и определении направлений, но умею читать карты и компас. В наше время навигация при помощи 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++
Языки программирования: обзор
Структура программы на C++ для Arduino
Константы, переменные и арифметика
Логические переменные, выражения if, ветвление
Конечные автоматы, перечисления enum, выражения switch
Случайные числа
Мифы и легенды о…
Мейкерах и DIY
Arduino
Espruino и JavaScript
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.
jsEspruino 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 v2HIT
Плата 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.
2Teensy 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
Маячок
Маячок с нарастающей яркостью
Светильник с управляемой яркостью
Терменвокс
Ночной светильник
Пульсар
Бегущий огонёк
Мерзкое пианино
Миксер
Кнопочный переключатель
Светильник с кнопочным управлением
Кнопочные ковбои
Секундомер
Счётчик нажатий
Комнатный термометр
Метеостанция
Пантограф
Тестер батареек
Светильник, управляемый по USB
Перетягивание каната
Простые проекты на 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 требуется адаптер.
