zheleznaja_chast:stm32_usb_dmx_controller

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
zheleznaja_chast:stm32_usb_dmx_controller [2022/12/23 02:14] – [Компоненты для установки] 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
 порт должен быть закрыт перед изменением режима, иначе перезапуск этого программного обеспечения может быть заблокирован. В порт должен быть закрыт перед изменением режима, иначе перезапуск этого программного обеспечения может быть заблокирован. В
 В этом случае для повторного включения программного обеспечения требуется еще один  сброс USB-устройства. В этом случае для повторного включения программного обеспечения требуется еще один  сброс USB-устройства.
-===== Компоненты для установки ===== +===== Режимы работы ===== 
-{{https://dmx-512.ru/_media/zheleznaja_chast/shema.jpg?nolink&400 |}}+Набор команд ASCII 
 +**активен**, **когда PA14** (**контакт SWD-Clk**)перемычка**__ НЕ подключен__** к земле. 
 +В контексте версии микропрограммы 1.4 (июль 2020 г.) предыдущий режим настройки удален и 
 +интегрирован в набор команд ASCII. По этой причине имена некоторых команд изменены. 
 +==== Краткий справочник всех команд ASCII ==== 
 +^ Команда ^ Описание       ^^ 
 +|  **[[#S <DMX канал>|Sn]]**  | выбор канала DMX для последующего действия (n=1 - 512)     || 
 +|  **[[#V <уровень канала>|Vn]]**  | установить уровень DMX на адресуемом канале DMX (n=0 - 255) || 
 +|  **[[#, (запятая) <уровень>|,n]]** (//запятая// | сначала прибавляется адрес канала DMX, и устанавливается уровень (n=0 - 255) || 
 +|   **[[#+ (не принимает параметры)|+]]**   | увеличить адресный уровень буфера передачи канала DMX на единицу || 
 +|  **[[#- (не принимает параметры)|-]]**   | уменьшить адресный уровень буфера передачи DMX-канала на единицу || 
 +|  **=n**  | установить n каналов DMX, начиная с (адресованного канала +1), на уровень адресованного канала. || 
 +|  **Tn**  | Плавное затухание n в 1/10 секунды || 
 +|  ** X**  |немедленно остановить (заморозить) все процессы затухания на их текущих уровнях|| 
 +|  **D**   | немедленно установить выход всех каналов DMX на 0 || 
 +|  ** Rn**  |прочитать n байтов из буфера передачи, начиная с адресованного канала DMX || 
 +|  **Q**   | уровень отображения выбранного DMX-канала, Fade Time и DMX-цикл|| 
 +|  **Ln**  |ограничить длину цикла DMX до n каналов DMX (n = от 24 до 512)|| 
 +|  ** ~n**  | сохранить пресет в буфер передачи|| 
 +|  ** @n**  | загрузить пресет || 
 +|  ** Cn**  | установить MIDI-канал, используемый MIDI-командами (1-16)|| 
 +|   **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 |}}
 IC1: [[https://alii.pub/6k6ymp|3.3 V regulator: LF33 CDT, source Reichelt, Conrad 1185435]] IC1: [[https://alii.pub/6k6ymp|3.3 V regulator: LF33 CDT, source Reichelt, Conrad 1185435]]
  
  • zheleznaja_chast/stm32_usb_dmx_controller.1671761682.txt.gz
  • Последнее изменение: 2022/12/23 02:14
  • slyfoxleo