zheleznaja_chast:stm32_usb_dmx_controller

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
zheleznaja_chast:stm32_usb_dmx_controller [2022/12/23 02:36] – [Установка] 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** должен быть
 активирован! (как это сделать смотрите ниже в разделе "Настройка") активирован! (как это сделать смотрите ниже в разделе "Настройка")
 +
 По умолчанию плата подключена к виртуальному COM-порту ПК. Это можно проверить с помощью диспетчера устройств Windows. По умолчанию наша плата использует тот же драйвер что и программатор и будет указана в разделе "COM и LPT". По умолчанию плата подключена к виртуальному COM-порту ПК. Это можно проверить с помощью диспетчера устройств Windows. По умолчанию наша плата использует тот же драйвер что и программатор и будет указана в разделе "COM и LPT".
 порты» как «Виртуальный COM-порт STMicroelectronics». В противном случае загрузите «Виртуальный COM-порт STM32». порты» как «Виртуальный COM-порт STMicroelectronics». В противном случае загрузите «Виртуальный COM-порт STM32».
 +
 Драйвер с сайта [[https://www.st.com/content/st_com/en.html|STM]] и установите его. Вы можете изменить номер COM-порта в Драйвер с сайта [[https://www.st.com/content/st_com/en.html|STM]] и установите его. Вы можете изменить номер COM-порта в
-«Настройках порта» в диспетчере устройств. В противном случае сохраните настройки по умолчанию. Скорость передачи+«Настройках порта» в диспетчере устройств. В противном случае сохраните настройки по умолчанию. 
 + 
 + Скорость передачи
 не имеет значения в данном случае. Handshake в настройках порта не поддерживается. не имеет значения в данном случае. Handshake в настройках порта не поддерживается.
-Когда соединение выполнено между контактом PA14 (контакт SWD-Clk) и землей (перемычка на CN3), плата видится ПК как стандартный интерфейс USB/MIDI. Когда+Когда соединение выполнено между контактом PA14 (контакт SWD-Clk) и землей (__перемычка на CN3__), плата видится ПК как **//стандартный интерфейс USB/MIDI//.**  
 + 
 +Когда
 плата подключается к ПК, драйвер устанавливается автоматически (Windows XP или более поздняя версия). В плата подключается к ПК, драйвер устанавливается автоматически (Windows XP или более поздняя версия). В
-в диспетчере устройств Windows он отображается в разделе «Аудио-, видео- и игровой контроллер» как «STM32+в диспетчере устройств Windows он отображается в разделе «Аудио-, видео- и игровой контроллер» как «**STM32
-UsbDmx» или просто «USB-Audio Device».+UsbDmx**» или просто «**USB-Audio Device**». 
 По умолчанию устройство чувствительно к MIDI-каналу 1 (младший полубайт байта состояния = 0!) По умолчанию устройство чувствительно к MIDI-каналу 1 (младший полубайт байта состояния = 0!)
 Для функционального тестирования и других операций с MIDI DMX в ручном режиме используется простое консольное программное обеспечение. Для функционального тестирования и других операций с MIDI DMX в ручном режиме используется простое консольное программное обеспечение.
Строка 82: Строка 118:
 В режиме ASCII, а также в режиме MIDI передатчик DMX запускается автоматически со всеми 512 DMX. В режиме ASCII, а также в режиме MIDI передатчик DMX запускается автоматически со всеми 512 DMX.
 каналов на нулевом уровне. каналов на нулевом уровне.
 +
 <note important>Внимание: при установке или удалении перемычки во время работы платы сброс и перебор USB в течении 1-2 секунд.</note> <note important>Внимание: при установке или удалении перемычки во время работы платы сброс и перебор USB в течении 1-2 секунд.</note>
 После этого устройство должно быть перезапущено. Программное обеспечение или COM После этого устройство должно быть перезапущено. Программное обеспечение или COM
Строка 92: Строка 129:
 интегрирован в набор команд ASCII. По этой причине имена некоторых команд изменены. интегрирован в набор команд ASCII. По этой причине имена некоторых команд изменены.
 ==== Краткий справочник всех команд ASCII ==== ==== Краткий справочник всех команд ASCII ====
-Heading 1      Heading 2       ^^ +Команда Описание       ^^ 
-|  **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 секунды ||
 |  ** X**  |немедленно остановить (заморозить) все процессы затухания на их текущих уровнях|| |  ** X**  |немедленно остановить (заморозить) все процессы затухания на их текущих уровнях||
-|  **D** | немедленно установить выход всех каналов DMX на 0 || +|  **D**   | немедленно установить выход всех каналов DMX на 0 || 
-| ** Rn**  |прочитать n байтов из буфера передачи, начиная с адресованного канала DMX || + ** Rn**  |прочитать n байтов из буфера передачи, начиная с адресованного канала DMX || 
-|  **Q** | уровень отображения выбранного DMX-канала, Fade Time и DMX-цикл||+|  **Q**   | уровень отображения выбранного DMX-канала, Fade Time и DMX-цикл||
 |  **Ln**  |ограничить длину цикла DMX до n каналов DMX (n = от 24 до 512)|| |  **Ln**  |ограничить длину цикла DMX до n каналов DMX (n = от 24 до 512)||
 |  ** ~n**  | сохранить пресет в буфер передачи|| |  ** ~n**  | сохранить пресет в буфер передачи||
-|  ** @n** | загрузить пресет || +|  ** @n**  | загрузить пресет || 
-|  ** Cn** | установить MIDI-канал, используемый MIDI-командами (1-16)|| +|  ** Cn**  | установить MIDI-канал, используемый MIDI-командами (1-16)|| 
-|   **U**  изменить USB Vid/Pid|| +|   **U**  |изменить USB Vid/Pid|| 
-| **?**   отобразить список актуальных глобальных параметров|| + **?**   |отобразить список актуальных глобальных параметров|| 
- +<note>Каждой команде управления и каждому сообщению о состоянии назначается одна буква. Если 
- +команда ожидает параметр, то он указан после буквы команды в острых угловых скобках **<..:>**. Числовое 
 +значения всегда в десятичном формате **__и отправляется через USB как текст ASCII__**. 
 +</note> 
 +=== S <DMX канал> === 
 +Параметр: адрес DMX (диапазон от 1 до 512) — это номер канала DMX, 
 +управляется последующими командами. 
 +Например: S25 - Выбран 25 канал DMX, и далее мы должны добавить ему параметры следующей командой 
 +=== V <уровень канала> === 
 +Параметр: уровень (диапазон от 0 до 255) — это значение (например, интенсивность лампы или светодиода), которое будет 
 +немедленно передается по фактически выбранному через команду выше, каналу DMX. 
 +=== , (запятая) <уровень> === 
 +Параметр: уровень (диапазон от 0 до 255) — это значение или интенсивность, которая будет немедленно 
 +передается по выбранному каналу DMX 
 +=== + (не принимает параметры)=== 
 +Увеличить (добавить +1)к уровню канала. То есть увеличить яркость на +1 
 +Комментарий: Байт нельзя сделать больше десятичного числа 255. Если он уже равен 255, + 
 +команда игнорируется. Если на этом канале DMX активен процесс затухания, увеличивается только конечное значение. 
 +=== - (не принимает параметры)=== 
 +Уменьшить (Уменьшить -1)уровень  канала. То есть уменьшить яркость на -1 
 +Комментарий: Байт нельзя сделать меньше десятичного числа 0.  
 +=== = <длинна блока> === 
 +Время затухания определяется 
 +фактическое содержимое регистра FADETIME. 
 +Параметр: <длина блока> (от 1 до 512) — это количество каналов DMX, в которые 
 +один и тот же уровень копируется
 ===== Компоненты для сборки контроллера ===== ===== Компоненты для сборки контроллера =====
 {{https://dmx-512.ru/_media/zheleznaja_chast/shema.jpg?nolink&300 |}} {{https://dmx-512.ru/_media/zheleznaja_chast/shema.jpg?nolink&300 |}}
  • zheleznaja_chast/stm32_usb_dmx_controller.1671762989.txt.gz
  • Последнее изменение: 2022/12/23 02:36
  • (внешнее изменение)