zheleznaja_chast:stm32_usb_dmx_controller

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
zheleznaja_chast:stm32_usb_dmx_controller [2022/12/23 02:55] – [Установка] slyfoxleozheleznaja_chast:stm32_usb_dmx_controller [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
 ====== USB DMX 512 Контролер управления на базе STM32 своими руками ====== ====== USB DMX 512 Контролер управления на базе STM32 своими руками ======
-Простой интерфейс USB-DMX512 на базе STM32F042 Представлен простой и компактный интерфейс USB-DMX512 на базе микроконтроллера STM32F042F6 (20-контактный TSSOP). +Простой интерфейс USB-DMX512 на базе STM32F042  
-Команды и питание передается через USB. Контролер поддерживает USB 2.0. + 
-Хост-компьютер видит его как MIDI-интерфейс или виртуальный COM-порт.Соответственно, управление DMX возможно с помощью MIDI-сообщений, а также текстовых команд ASCII.В качестве частного случая реализован протокол MiniDMX, который поддерживается рядом управляющих программ DMX, например «DMXControl3».+Представлен простой и компактный интерфейс USB-DMX512 на базе микроконтроллера STM32F042F6 (20-контактный TSSOP). 
 + 
 +Команды и питание передается через USB. **Контролер поддерживает USB 2.0.** 
 + 
 +Хост-компьютер видит его как __MIDI-интерфейс или виртуальный COM-порт__. 
 + 
 +Соответственно, управление DMX возможно с помощью **MIDI-сообщений**, а также **текстовых команд ASCII.** 
 +В качестве частного случая реализован протокол **MiniDMX**, который поддерживается рядом управляющих программ DMX, например «**DMXControl3**». 
 Компактный размер платы 43х30мм.{{ :zheleznaja_chast:stm32-usbdmx-board.png?400|}} Компактный размер платы 43х30мм.{{ :zheleznaja_chast:stm32-usbdmx-board.png?400|}}
-Выбор класса USB на стороне хоста между MIDI и виртуальным COM-портом осуществляется с помощью перемычки на разъеме SWD (может быть расширен до переключателя). + 
-Напряжение питания 5 В (общий ток без нагрузки DMX около 20 мА, с подключенной шиной DMX до 50 мА) уменьшается линейным стабилизатором с малым падением напряжения до 3,3 В, которое питает микроконтроллер. +Выбор класса USB на стороне хоста между MIDI и виртуальным COM-портом осуществляется с помощью перемычки на разъеме SWD (перемычку можете заменить на переключатель). 
-В режиме MIDI, а также в режиме ASCII команды разработаны таким образом, что ручное управление DMX возможно с помощью программного обеспечения терминала ASCII или с помощью MIDI-секвенсора.+ 
 +Напряжение питания 5 В (//общий ток без нагрузки DMX около 20 мА, с подключенной шиной DMX до 50 мА//) уменьшается линейным стабилизатором с малым падением напряжения до 3,3 В, которое питает микроконтроллер. 
 + 
 +В режиме MIDI, а также в режиме ASCII команды разработаны таким образом, что ручное управление DMX возможно с помощью **терминала ASCII или с помощью MIDI-секвенсора**. 
 предусмотрены команды для установки любого из 512 каналов DMX на любой уровень 0..255 выполнение плавных переходов фейдов с временем фейда до 12,7 секунд, регулируется с шагом 1/10 секунды ограничение количества передаваемых каналов DMX от 24 до 512  предусмотрены команды для установки любого из 512 каналов DMX на любой уровень 0..255 выполнение плавных переходов фейдов с временем фейда до 12,7 секунд, регулируется с шагом 1/10 секунды ограничение количества передаваемых каналов DMX от 24 до 512 
 +
 фактические уровни определенных каналов DMX обратно в управляющее программное обеспечение. фактические уровни определенных каналов DMX обратно в управляющее программное обеспечение.
 +
 __Cохранять до 36 сцен освещения в энергонезависимой памяти микроконтроллера и перезагружать любую по команде.__ __Cохранять до 36 сцен освещения в энергонезависимой памяти микроконтроллера и перезагружать любую по команде.__
 +
 (Сцена № 0 автоматически загружается после включения питания.) Протокол MiniDMX хорошо подходит для сложных операций освещения, управляемых специальным программным обеспечением для освещения. (Сцена № 0 автоматически загружается после включения питания.) Протокол MiniDMX хорошо подходит для сложных операций освещения, управляемых специальным программным обеспечением для освещения.
-Когда USB работает как виртуальный COM-порт, доступен специальный режим конфигурации для настройки основного MIDI-канала и пользовательского USB Vid/Pid.+ 
 +Когда USB работает как виртуальный COM-порт, доступен специальный режим конфигурации для настройки основного MIDI-канала и пользовательского **USB Vid/Pid**. 
 Пользовательские настройки хранятся во флэш-памяти микроконтроллера в энергонезависимой памяти. Пользовательские настройки хранятся во флэш-памяти микроконтроллера в энергонезависимой памяти.
 <note important> <note important>
Строка 17: Строка 34:
 Исходный код вполне подходит в качестве шаблона для дальнейшей собственной разработки, особенно в отношении DMX и USB.Он программируется непосредственно на уровне регистров, без использования внешних библиотек или драйверов. Исходный код вполне подходит в качестве шаблона для дальнейшей собственной разработки, особенно в отношении DMX и USB.Он программируется непосредственно на уровне регистров, без использования внешних библиотек или драйверов.
 ===== Описание железной части ===== ===== Описание железной части =====
-Микроконтроллер тактируется внутренним осциллятором (HSI48), частота которого синхронизируется с сигналом USB. Этот метод обеспечивает очень стабильный выходной сигнал DMX.+Микроконтроллер тактируется внутренним осциллятором (//HSI48//), частота которого **синхронизируется с сигналом USB**.** Этот метод обеспечивает очень стабильный выходной сигнал DMX**. 
 Потому что невозможно повторно запустить USART микроконтроллера STM32 сразу после сброса DMX, USART Tx продолжает работать в режиме ожидания во время сброса DMX. Он питается через Потому что невозможно повторно запустить USART микроконтроллера STM32 сразу после сброса DMX, USART Tx продолжает работать в режиме ожидания во время сброса DMX. Он питается через
-резистор к DMX-драйверу MAX487, на который подается низкий уровень другим выходом с открытым стоком+резистор к DMX-драйверу **MAX487**, на который подается низкий уровень другим выходом с открытым стоком 
 микроконтроллер во время сброса DMX. микроконтроллер во время сброса DMX.
-Общий ток питания без нагрузки DMX составляет около 25 мА, с подключенной шиной DMX до 50 мА.+ 
 +Общий ток питания без нагрузки DMX составляет около **25 мА**, с подключенной шиной **DMX до 50 мА**. 
 Для простого воспроизведения с помощью простых инструментов аппаратное обеспечение построено на **однослойной** печатной плате с **небольшим количеством перемычек.** Для простого воспроизведения с помощью простых инструментов аппаратное обеспечение построено на **однослойной** печатной плате с **небольшим количеством перемычек.**
 +
 провода. Толщина и расстояние между печатными проводами рассчитаны на любительские технологии. Сборка предназначена провода. Толщина и расстояние между печатными проводами рассчитаны на любительские технологии. Сборка предназначена
 +
 и нескольких сквозных отверстий и деталей SMD. и нескольких сквозных отверстий и деталей SMD.
 ===== Схематическая диаграмма ===== ===== Схематическая диаграмма =====
Строка 39: Строка 62:
 ===== Прошивка микропроцессора ===== ===== Прошивка микропроцессора =====
 Поскольку на этой плате нет порта RS-232, программирование возможно только с Поскольку на этой плате нет порта RS-232, программирование возможно только с
-SWD программатор. Вместо покупки специального модуля ST-LINK рекомендуется +**SWD программатор** 
-использовать модуль STM Nucleo-64, который дешевле, его можно настроить как программатор и + 
-дополнительно можно использовать для других экспериментов с микроконтроллерами STM32. Как программировать +Вместо покупки специального модуля ST-LINK рекомендуется 
-внешние детали с Nucleo, прочитайте его руководство. Когда программатор отключен (т.е. используется+использовать модуль **STM Nucleo-64**, который дешевле, его можно настроить как программатор и 
 +дополнительно можно использовать для других экспериментов с микроконтроллерами STM32. 
 + 
 + Как программировать 
 +внешние детали с **Nucleo**, прочитайте его руководство. Когда программатор отключен (т.е. используется
 автономный, см. рисунок выше), и программное обеспечение отправляет сообщение о проблеме типа «"no target автономный, см. рисунок выше), и программное обеспечение отправляет сообщение о проблеме типа «"no target
 voltage», подключите выход 3,3 В (//контакт рядом с текстом U1//) регулятора (5 контактов) на части ST-Link voltage», подключите выход 3,3 В (//контакт рядом с текстом U1//) регулятора (5 контактов) на части ST-Link
Строка 51: Строка 78:
  
 {{:zheleznaja_chast:programmator.jpg?nolink&400|}} {{:zheleznaja_chast:programmator.jpg?nolink&400|}}
 +
 Соберите короткий адаптер для программирования (см. рисунок выше, длина провода не более 25 см): Соберите короткий адаптер для программирования (см. рисунок выше, длина провода не более 25 см):
 +
 --- подключите 2-й контакт разъема Nucleo SWD (считая сбоку в сторону Mini --- подключите 2-й контакт разъема Nucleo SWD (считая сбоку в сторону Mini
 разъем USB) с выводом PA14 нашей платы (красный на фото выше). разъем USB) с выводом PA14 нашей платы (красный на фото выше).
Строка 65: Строка 94:
 ---- ----
 ===== Установка ===== ===== Установка =====
-По умолчанию интерфейс USB работает с STM Vid/Pid, но это разрешено только для тестирования. +По умолчанию интерфейс USB работает с** STM Vid/Pid**, но это разрешено только для тестирования. 
- Для любого публичного использования ваш индивидуальный Vid/Pid должен быть+ Для любого публичного использования ваш индивидуальный **Vid/Pid** должен быть
 активирован! (как это сделать смотрите ниже в разделе "Настройка") активирован! (как это сделать смотрите ниже в разделе "Настройка")
  
Строка 101: Строка 130:
 ==== Краткий справочник всех команд ASCII ==== ==== Краткий справочник всех команд ASCII ====
 ^ Команда ^ Описание       ^^ ^ Команда ^ Описание       ^^
-|  **Sn**  | выбор канала DMX для последующего действия (n=1 - 512)     || +|  **[[#S <DMX канал>|Sn]]**  | выбор канала DMX для последующего действия (n=1 - 512)     || 
-|  **Vn**  | установить уровень DMX на адресуемом канале DMX (n=0 - 255) || +|  **[[#V <уровень канала>|Vn]]**  | установить уровень DMX на адресуемом канале DMX (n=0 - 255) || 
-|  **,n** (//запятая// | сначала прибавляется адрес канала DMX, и устанавливается уровень (n=0 - 255) || +|  **[[#, (запятая) <уровень>|,n]]** (//запятая// | сначала прибавляется адрес канала DMX, и устанавливается уровень (n=0 - 255) || 
-|   **+**   | увеличить адресный уровень буфера передачи канала DMX на единицу || +|   **[[#(не принимает параметры)|+]]**   | увеличить адресный уровень буфера передачи канала DMX на единицу || 
-|  **-**   | уменьшить адресный уровень буфера передачи DMX-канала на единицу ||+|  **[[#- (не принимает параметры)|-]]**   | уменьшить адресный уровень буфера передачи DMX-канала на единицу ||
 |  **=n**  | установить n каналов DMX, начиная с (адресованного канала +1), на уровень адресованного канала. || |  **=n**  | установить n каналов DMX, начиная с (адресованного канала +1), на уровень адресованного канала. ||
 |  **Tn**  | Плавное затухание n в 1/10 секунды || |  **Tn**  | Плавное затухание n в 1/10 секунды ||
Строка 119: Строка 148:
 |  **?**   |отобразить список актуальных глобальных параметров|| |  **?**   |отобразить список актуальных глобальных параметров||
 <note>Каждой команде управления и каждому сообщению о состоянии назначается одна буква. Если <note>Каждой команде управления и каждому сообщению о состоянии назначается одна буква. Если
-команда ожидает параметр, то он указан после буквы команды в острых угловых скобках <..:>. Числовое +команда ожидает параметр, то он указан после буквы команды в острых угловых скобках **<..:>**. Числовое 
-значения всегда в десятичном формате и отправляется через USB как текст ASCII.+значения всегда в десятичном формате **__и отправляется через USB как текст ASCII__**.
 </note> </note>
 === S <DMX канал> === === S <DMX канал> ===
  • zheleznaja_chast/stm32_usb_dmx_controller.1671764141.txt.gz
  • Последнее изменение: 2022/12/23 02:55
  • (внешнее изменение)