STM32 и USB-HID — это просто

На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании – просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите – нужно оно вам или нет.

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Заставим ее работать

16 канальный программируемый DC выключатель

Периодически появляется задача управлять нагрузкой различной мощности. И если для 220В это легко решается готовыми модулями твердотельных реле SSR25, то для постоянного напряжения ничего подобного нет.
Каждый раз изобретать велосипед надоело и я сделал девайс на 16 каналов с мощными ключами, каждый из которых в состоянии справиться с нагрзукой до 30В и 10-15А без радиатора, а с радиатором намного больше.
Сейчас освещение постепенно переходит на постоянное напряжение – светодиодные ленты, светодиодные лампы, низковольтные галогенки, куча всего в доме работает от постоянного напряжения и всем этим можно управлять с помощью подобной платы. Ключей можно распаять столько, сколько нужно. Плату можно подключить по UART к компу или через Bluetooth адаптер беспроводно, питание подавать от компа или от того же источника, что питает лампы. Каждый канал имеет свой индикаторный светодиод активности.
Вообще-то у платы совсем другая задача, но и в доме тоже пригодится 🙂

Немного деталек, горячий паяльник, программа на десяток строк и плата оживает веселыми огоньками.
Пока нет запланированного аккуратного маленького кварца, питание подается снаружи, потому что под рукой нет LDO и MOSFET ключи нужно купить.

Времени ушло примерно 1 день на схему и разводку печатной платы и 1 день на изготовление.
Еще фотки

Рама квадрокоптера с моторами и регуляторами в сборе

HK SuperMini QuadCopter Frame with Motors

В комплекте:

Рама полностью собрана и облетана, крепление клеевое – ПВА.

Один мотор с регулятором был снят для тестирования на стенде. Поставить обратно несложно.

Цена комплекта – 2050р

Купить или задать вопрос

Радиоуправление (RC) – HK-T6A-V2

Комплект радиоуправления Hobbyking HK-T6A-V2.
Это универсальный и простой в использовании программируемый 6-канальный комплект радиоуправления:

HK-T6A-V2

  • Частота – 2.4ГГц
  • Компактный 6-канальный приемник и совместимость с приемниками Turnigy, Flysky, Eurgle, iMax
  • Совместим с микровертолетами V911, Thunder – управление гораздо точнее и удобнее комплектного пульта.
  • Можно использовать для управления квадрокоптером из моей статьи
  • Удобные триммеры
  • Компактный, но удобный корпус
  • Тренерский порт, позволяющий подключиться более опытному моделисту и помочь в управлении.
  • Программируется подключением к компьютеру и настраиваются микшеры, инверсии каналов, функции переключателей и крутилок.
  • Позволяет на компьютере хранить любое количество настроек моделей

Дополнительно

  • Сделан вольтмоддинг, позволяющий использовать 2S LiPo аккумулятор или стандартные АА аккумуляторы
  • Кабель для подключения к компьютеру в подарок (в комплекте он не поставляется)

Цена 1450р
Купить или задать вопрос

Радиоуправление (RC) – 2канальный автомобильный пульт

2х канальный пульт радиоуправления для автомодели или судомодели.

2Ch Transmitter2Ch Transmitter ControlsСвойства и возможности:

  • Частота 27.125Мгц
  • Компактный 2-канальный приемник
  • Питание – 8xАА батареек или аккумуляторов
  • Разъем для зарядки аккумуляторов прямо в пульте
  • Сменный кварц для изменения частоты пульта
  • Прорезиненое удобное колесо управления
  • Триммер макисмального газа
  • Триммер центра управления
  • Отдельные экспоненты на газ и тормоз
  • Отдельные экспоненты для руля влево и вправо
  • Настраиваемые двойные расходы руля
  • Реверс газа
  • Реверс руля

Цена 550р
Купить или задать вопрос

Em::Blocks 1.43 patch

В версии Em::Blocks 1.43 появилась новая структура шаблонов для STM32.
Теперь они более грамотно организованы.
В патч-твик я добавил SPL для STM32F10x и STM32F4xx, а также CMSIS 3.0 для STM32 на ядре Cortex-M3 (серия F1 и F2).
Твикер теперь недеструктивно настраивает среду – все изменения легко откатить – оригинальные файлы не изменяются.
Также можно сбэкапить профиль KeyBindings для перехода между версиями.

Замечу, что в пределах major версий папка профиля сохраняется. Напрмиер, для всех версий 1.4x папка будет 1.40.
Скачать R EmBlocks patcher-tweaker v1.2.0.27

Em::Blocks 1.41 patch

Вышла Em::Blocks 1.41

Патч для версий 1.40 и 1.41 как и для всех последюущих версий будет доступен на своей постоянной страничке R EmBlocksPatch.

В этой версии патча я удалил поддержку ColinkEx – пользоваться этим отладчиком удобно только под CooCox IDE – у них неполноценный commandline API – нужно много чего править в конфиг файлах отладчика для прошивки и отладки.

Если кому-то она нужна, то добавляется очень просто. Можно взять из предыдущей версии патча все, что для нее нужно.

По просьбе читателей добавил выбор вручную папки .config файла (для тех кто на XP)

Прошивка STM32 с помощью STM32 Flash Loader Demonstrator

Ко мне периодически обращаются с вопросом – как прошить STM32?

В STM32 есть встроенный Bootloader, затереть его в отличие от Arduino нельзя, никаких фьюз-битов тоже настраивать не нужно. То есть в любом новом проце с завода есть все, чтобы его прошить через обычный COM порт или USB-UART переходник.
Почему такая простая операция вызывает проблемы, я не знаю, но решил, что проще один раз показать 🙂

Я взял для примера плату из этого поста, но принцип абсолютно одинаковый для любых плат:

  1. пин BOOT0 подтянуть к питанию (3.3V)
  2. подключить USART1 микроконтрллера черех переходник USB-UART к ПК.
  3. запустить Flash Loader Demonstrator и залить прошивку
  4. отключить переходник USB-UART (не обязательно)
  5. подтянуть BOOT0 к земле (нормальное положение)
  6. если питание не отключали, то нажать Reset на плате, если отключали – пора подключить питание

Вот и все операции.
Показываю наглядно:

Надеюсь, теперь у всех все получится 🙂

Россия + Китай = DJI

Заказали мне тут анализ GPS+Compass модуля DJI от их нового топового полетного контроллера A2.
разоборка и анализ модуля показали, что DJI использует (сюрприз-сюрприз) российский модуль
NV08C-CSM, являющийся комбинированным GPS ГЛОНАСС Galileo модулем.
NAV08C-CSM
А вот он внутри модуля DJI:
DJI GPS&Compass
В обвязке модуля используется свой активный усилитель и классная круглая керамическая антенна большого диаметра (c обратной стороны платы).
Связь с модулем по шине CAN. Обслуживается он микроконтроллером LPC1114.

Em::Blocks 1.31 patch

Вышла Em::Blocks 1.31, и я как обычно выпустил для нее патч. Функционал тот же, но с учетом изменений в новой версии. Ничего не ломает, только добавляет те же плюшки, что и обычно. Немного заодно обновил шаблоны проектов.

Установка

Ставится как обычно:

  • Устанавливаем EmBlocks 1.31
  • Копируем содержимое архива с патчем в папку к EmBlocks с заменой файлов
  • Запускаем один раз среду, чтобы она создала свой профиль
  • Запускаем REmBlocksToolsPatch.exe, жмем Save Updated Config, чтобы добавить пункты меню для прошивки с помощью ST-Link, ST-Link /V2 и CoLinkEx.

Готово, можно пользоваться.