Оглавление:

Перо локализации СШП: 6 шагов
Перо локализации СШП: 6 шагов

Видео: Перо локализации СШП: 6 шагов

Видео: Перо локализации СШП: 6 шагов
Видео: 6 шагов чтобы уехать учиться или работать за границу 2024, Июль
Anonim
Перо локализации СШП
Перо локализации СШП

Ultra-WideBand Feather включает в себя модуль Decawave DWM1000 и ATSAMD21 ARM Cortex M0 в форм-факторе пера Adafruit. Модуль DWM1000 - это беспроводной модуль, соответствующий стандарту IEEE802.15.4-2011 UWB, способный выполнять точное позиционирование внутри помещений и обеспечивать высокую скорость передачи данных, что делает эту плату идеальной для проектов робототехники, где требуется локализация.

Особенности: - Decawave DWM1000 для точного отслеживания - ARM Cortex M0 для быстрых и мощных приложений - Совместимость с Adafruit Feather для интеграции с широкой существующей экосистемой - Интерфейс SWD для программирования и отладки приложений - Разъем USB-C - Встроенное зарядное устройство LiPo.

Для полного описания проекта и обновлений просмотрите этот проект на моем сайте Prototyping Corner по адресу prototypingcorner.io/projects/uwb-feather.

Исходное оборудование и программное обеспечение для этого проекта доступно в репозитории GitHub.

Шаг 1. Проектирование оборудования

Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн

Как упоминалось во введении, UWB Feather состоит из ATSAMD21 ARM Cortext M0 + для мозга и модуля Decawave DWM1000 для сверхширокополосной беспроводной связи в форм-факторе пера. Конструкция относительно проста, состоит из 20 элементов BoM на двухслойной печатной плате. Распиновка совместима с Adafruit M0 Feather.

Зарядка LiPo осуществляется одноэлементным полностью интегрированным контроллером управления зарядкой. Напряжение батареи можно контролировать на D9, однако, если требуется доступ ко всем вводам-выводам, JP1 можно разрезать, чтобы освободить этот вывод. Регулировка напряжения 3,3 В осуществляется линейным стабилизатором с малым падением напряжения AP2112K-3.3, обеспечивающим до 600 мА.

Распиновка полностью совместима с линейкой пера Adafruit M0, что упрощает перенос кода. Линии ввода-вывода DWM1000 подключены к шине SPI и цифровым контактам 2, 3 и 4 для RST, IRQ и SPI_CS соответственно (которые не отображаются через заголовок). D13 также подключен к встроенному светодиоду, что является стандартом для многих Arduino-совместимых плат.

Программирование может выполняться через заголовок SWD или через USB, если загружен соответствующий загрузчик, такой как uf2-samdx1 от Microsoft. Подробнее см. Прошивку.

Примечание о версии 1.0

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

Версия 1.1 будет включать исправление для этого, а также добавление разъема micro-b для тех, кто этого хочет. См. Рекомендации по версии 1.1 ниже.

Для ознакомления с конструктивными особенностями Bill of Materials и Hardware Version 1.1 см. Описание проекта.

Шаг 2: Сборка

сборка
сборка
сборка
сборка
сборка
сборка
сборка
сборка

С только 20 элементами BoM и большинством компонентов размером не менее 0603 (2 кварцевых конденсатора были 0402), ручная сборка этой платы была простой. У меня была печатная плата и трафарет для припоя производства JLCPCB в матовом черном цвете с обработкой поверхности ENIG.

Общая стоимость 5 досок (хотя 10 не имели разницы в цене) и трафарета составила 68 австралийских долларов, однако 42 доллара из этой суммы приходилось на доставку. Первый заказ у JLCPCB, и платы были очень высокого качества с красивой отделкой.

Шаг 3: Прошивка: программирование загрузчика

Прошивка: Программирование загрузчика
Прошивка: Программирование загрузчика
Прошивка: Программирование загрузчика
Прошивка: Программирование загрузчика
Прошивка: Программирование загрузчика
Прошивка: Программирование загрузчика

Прошивку можно загрузить через разъем SWD с помощью программатора, такого как J-Link от Segger. Выше показан J-Link EDU Mini. Чтобы начать программировать плату, нам нужно загрузить наш загрузчик, а затем настроить цепочку инструментов.

Я буду использовать Atmel Studio для прошивки загрузчика. Для этого подключите J-Link и откройте Atmel Studio. Затем выберите Инструменты> Программирование устройства. В разделе «Инструмент» выберите J-Link и установите «Устройство» на ATSAMD21G18A, затем нажмите «Применить».

Подключите J-Link к перьевому разъему SWD и подайте питание через USB или через аккумулятор. После подключения в разделе «Подпись устройства» нажмите «Читать». Текстовые поля «Подпись устройства» и «Целевое напряжение» должны отображаться соответствующим образом. Если они не проверяют соединения, попробуйте еще раз.

Чтобы прошить загрузчик, нам сначала нужно отключить предохранитель BOOTPROT. Для этого выберите Предохранители> USER_WORD_0. NVMCTRL_BOOTPROT и измените значение на 0 байт. Щелкните Программа, чтобы загрузить изменения.

Теперь мы можем прошить загрузчик, выбрав «Воспоминания»> «Флэш» и указав местоположение загрузчика. Перед выбором программирования убедитесь, что Erase Flash, и нажмите Program. Если все идет хорошо, D13 на плате должен начать пульсировать.

Теперь вам нужно установить предохранитель BOOTPROT на размер загрузчика 8 КБ. Для этого выберите Fuses> USER_WORD_0. NVMCTRL_BOOTPROT и измените значение на 8192 байта. Щелкните программу, чтобы загрузить изменения.

Теперь, когда загрузчик был прошит, D13 должен пульсировать, и при подключении через USB должно появиться запоминающее устройство. Здесь можно загрузить файлы UF2 для программирования платы.

Шаг 4: Прошивка: прошивка кода с помощью PlatformIO

Прошивка: прошивка кода с помощью PlatformIO
Прошивка: прошивка кода с помощью PlatformIO
Прошивка: прошивка кода с помощью PlatformIO
Прошивка: прошивка кода с помощью PlatformIO

Прошивка может быть загружена по протоколу UF2 или напрямую через интерфейс SWD. Здесь мы будем использовать PlatformIO из-за его простоты и простоты. Для начала создайте новый проект PIO и выберите Adafruit Feather M0 в качестве целевой доски. При загрузке через SWD с помощью J-Link установите upload_protocol в platformio.ini, как показано ниже.

[env: adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink

Теперь вы можете программировать плату в простом фреймворке Arduino.

Шаг 5: Прошивка: прошиваем якорь

Прошивка: Прошивка якоря
Прошивка: Прошивка якоря
Прошивка: Прошивка якоря
Прошивка: Прошивка якоря

Модули DWM1000 можно настроить как якоря или теги. Обычно якоря хранятся в известных статических местоположениях, а теги используют якоря для определения их относительного положения. Чтобы протестировать модуль DWM1000, вы можете загрузить пример DW1000-Anchor из репозитория GitHub.

Чтобы запустить эту программу с помощью PlatformIO, в PIO Home выберите Open Project, затем найдите папку DW1000-Anchor в репозитории GitHub. Затем нажмите кнопку загрузки PIO, и он автоматически найдет подключенный датчик отладки (убедитесь, что он подключен и на плату подано питание).

Прошивку тега необходимо загрузить на другую плату. Затем результат можно будет просмотреть в последовательном терминале.

Шаг 6: Идем дальше

Идти дальше
Идти дальше

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

Спасибо за прочтение. Оставляйте любые мысли или критические замечания в комментариях ниже и обязательно ознакомьтесь с проектом на Prototyping Corner.

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