Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| zheleznaja_chast:stm32_usb_dmx_controller [2022/12/23 02:36] – [Установка] slyfoxleo | zheleznaja_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. | + | |
| - | Хост-компьютер видит его как | + | Представлен простой и компактный интерфейс USB-DMX512 на базе микроконтроллера STM32F042F6 (20-контактный TSSOP). |
| + | |||
| + | Команды и питание передается через USB. **Контролер поддерживает USB 2.0.** | ||
| + | |||
| + | Хост-компьютер видит его как | ||
| + | |||
| + | Соответственно, | ||
| + | В качестве частного случая реализован протокол | ||
| Компактный размер платы 43х30мм.{{ : | Компактный размер платы 43х30мм.{{ : | ||
| - | Выбор класса USB на стороне хоста между MIDI и виртуальным COM-портом осуществляется с помощью перемычки на разъеме SWD (может | + | |
| - | Напряжение питания 5 В (общий ток без нагрузки DMX около 20 мА, с подключенной шиной DMX до 50 мА) уменьшается линейным стабилизатором с малым падением напряжения до 3,3 В, которое питает микроконтроллер. | + | Выбор класса USB на стороне хоста между MIDI и виртуальным COM-портом осуществляется с помощью перемычки на разъеме SWD (перемычку |
| - | В режиме MIDI, а также в режиме ASCII команды разработаны таким образом, | + | |
| + | Напряжение питания 5 В (//общий ток без нагрузки DMX около 20 мА, с подключенной шиной DMX до 50 мА//) уменьшается линейным стабилизатором с малым падением напряжения до 3,3 В, которое питает микроконтроллер. | ||
| + | |||
| + | В режиме MIDI, а также в режиме ASCII команды разработаны таким образом, | ||
| предусмотрены команды для установки любого из 512 каналов DMX на любой уровень 0..255 выполнение плавных переходов фейдов с временем фейда до 12,7 секунд, | предусмотрены команды для установки любого из 512 каналов DMX на любой уровень 0..255 выполнение плавных переходов фейдов с временем фейда до 12,7 секунд, | ||
| + | |||
| фактические уровни определенных каналов DMX обратно в управляющее программное обеспечение. | фактические уровни определенных каналов DMX обратно в управляющее программное обеспечение. | ||
| + | |||
| __Cохранять до 36 сцен освещения в энергонезависимой памяти микроконтроллера и перезагружать любую по команде.__ | __Cохранять до 36 сцен освещения в энергонезависимой памяти микроконтроллера и перезагружать любую по команде.__ | ||
| + | |||
| (Сцена № 0 автоматически загружается после включения питания.) Протокол MiniDMX хорошо подходит для сложных операций освещения, | (Сцена № 0 автоматически загружается после включения питания.) Протокол MiniDMX хорошо подходит для сложных операций освещения, | ||
| - | Когда USB работает как виртуальный COM-порт, | + | |
| + | Когда USB работает как виртуальный COM-порт, | ||
| Пользовательские настройки хранятся во флэш-памяти микроконтроллера в энергонезависимой памяти. | Пользовательские настройки хранятся во флэш-памяти микроконтроллера в энергонезависимой памяти. | ||
| <note important> | <note important> | ||
| Строка 17: | Строка 34: | ||
| Исходный код вполне подходит в качестве шаблона для дальнейшей собственной разработки, | Исходный код вполне подходит в качестве шаблона для дальнейшей собственной разработки, | ||
| ===== Описание железной части ===== | ===== Описание железной части ===== | ||
| - | Микроконтроллер тактируется внутренним осциллятором (HSI48), частота которого синхронизируется с сигналом USB. Этот метод обеспечивает очень стабильный выходной сигнал DMX. | + | Микроконтроллер тактируется внутренним осциллятором (//HSI48//), частота которого |
| Потому что невозможно повторно запустить USART микроконтроллера STM32 сразу после сброса DMX, USART Tx продолжает работать в режиме ожидания во время сброса DMX. Он питается через | Потому что невозможно повторно запустить USART микроконтроллера STM32 сразу после сброса DMX, USART Tx продолжает работать в режиме ожидания во время сброса DMX. Он питается через | ||
| - | резистор к DMX-драйверу MAX487, на который подается низкий уровень другим выходом с открытым стоком | + | резистор к DMX-драйверу |
| микроконтроллер во время сброса DMX. | микроконтроллер во время сброса DMX. | ||
| - | Общий ток питания без нагрузки DMX составляет около 25 мА, с подключенной шиной DMX до 50 мА. | + | |
| + | Общий ток питания без нагрузки DMX составляет около | ||
| Для простого воспроизведения с помощью простых инструментов аппаратное обеспечение построено на **однослойной** печатной плате с **небольшим количеством перемычек.** | Для простого воспроизведения с помощью простых инструментов аппаратное обеспечение построено на **однослойной** печатной плате с **небольшим количеством перемычек.** | ||
| + | |||
| провода. Толщина и расстояние между печатными проводами рассчитаны на любительские технологии. Сборка предназначена | провода. Толщина и расстояние между печатными проводами рассчитаны на любительские технологии. Сборка предназначена | ||
| + | |||
| и нескольких сквозных отверстий и деталей SMD. | и нескольких сквозных отверстий и деталей SMD. | ||
| ===== Схематическая диаграмма ===== | ===== Схематическая диаграмма ===== | ||
| Строка 39: | Строка 62: | ||
| ===== Прошивка микропроцессора ===== | ===== Прошивка микропроцессора ===== | ||
| Поскольку на этой плате нет порта RS-232, программирование возможно только с | Поскольку на этой плате нет порта RS-232, программирование возможно только с | ||
| - | SWD программатор. Вместо покупки специального модуля ST-LINK рекомендуется | + | **SWD программатор**. |
| - | использовать модуль STM Nucleo-64, который дешевле, | + | |
| - | дополнительно можно использовать для других экспериментов с микроконтроллерами STM32. Как программировать | + | Вместо покупки специального модуля ST-LINK рекомендуется |
| - | внешние детали с Nucleo, прочитайте его руководство. Когда программатор отключен (т.е. используется | + | использовать модуль |
| + | дополнительно можно использовать для других экспериментов с микроконтроллерами STM32. | ||
| + | |||
| + | Как программировать | ||
| + | внешние детали с **Nucleo**, прочитайте его руководство. Когда программатор отключен (т.е. используется | ||
| автономный, | автономный, | ||
| voltage», подключите выход 3,3 В (// | voltage», подключите выход 3,3 В (// | ||
| Строка 51: | Строка 78: | ||
| {{: | {{: | ||
| + | |||
| Соберите короткий адаптер для программирования (см. рисунок выше, длина провода не более 25 см): | Соберите короткий адаптер для программирования (см. рисунок выше, длина провода не более 25 см): | ||
| + | |||
| --- подключите 2-й контакт разъема Nucleo SWD (считая сбоку в сторону Mini | --- подключите 2-й контакт разъема Nucleo SWD (считая сбоку в сторону Mini | ||
| разъем USB) с выводом PA14 нашей платы (красный на фото выше). | разъем USB) с выводом PA14 нашей платы (красный на фото выше). | ||
| Строка 65: | Строка 94: | ||
| ---- | ---- | ||
| ===== Установка ===== | ===== Установка ===== | ||
| - | По умолчанию интерфейс USB работает с STM Vid/Pid, но это разрешено только для тестирования. | + | По умолчанию интерфейс USB работает с** STM Vid/Pid**, но это разрешено только для тестирования. |
| - | | + | |
| активирован! (как это сделать смотрите ниже в разделе " | активирован! (как это сделать смотрите ниже в разделе " | ||
| + | |||
| По умолчанию плата подключена к виртуальному COM-порту ПК. Это можно проверить с помощью диспетчера устройств Windows. По умолчанию наша плата использует тот же драйвер что и программатор и будет указана в разделе "COM и LPT". | По умолчанию плата подключена к виртуальному COM-порту ПК. Это можно проверить с помощью диспетчера устройств Windows. По умолчанию наша плата использует тот же драйвер что и программатор и будет указана в разделе "COM и LPT". | ||
| порты» как «Виртуальный COM-порт STMicroelectronics». В противном случае загрузите «Виртуальный COM-порт STM32». | порты» как «Виртуальный COM-порт STMicroelectronics». В противном случае загрузите «Виртуальный COM-порт STM32». | ||
| + | |||
| Драйвер с сайта [[https:// | Драйвер с сайта [[https:// | ||
| - | «Настройках порта» в диспетчере устройств. В противном случае сохраните настройки по умолчанию. Скорость передачи | + | «Настройках порта» в диспетчере устройств. В противном случае сохраните настройки по умолчанию. |
| + | |||
| + | Скорость передачи | ||
| не имеет значения в данном случае. Handshake в настройках порта не поддерживается. | не имеет значения в данном случае. Handshake в настройках порта не поддерживается. | ||
| - | Когда соединение выполнено между контактом PA14 (контакт SWD-Clk) и землей (перемычка на CN3), плата видится ПК как стандартный интерфейс USB/MIDI. Когда | + | Когда соединение выполнено между контактом PA14 (контакт SWD-Clk) и землей (__перемычка на CN3__), плата видится ПК как |
| + | |||
| + | Когда | ||
| плата подключается к ПК, драйвер устанавливается автоматически (Windows XP или более поздняя версия). В | плата подключается к ПК, драйвер устанавливается автоматически (Windows XP или более поздняя версия). В | ||
| - | в диспетчере устройств Windows он отображается в разделе «Аудио-, | + | в диспетчере устройств Windows он отображается в разделе «Аудио-, |
| - | UsbDmx» | + | UsbDmx**» |
| По умолчанию устройство чувствительно к MIDI-каналу 1 (младший полубайт байта состояния = 0!) | По умолчанию устройство чувствительно к MIDI-каналу 1 (младший полубайт байта состояния = 0!) | ||
| Для функционального тестирования и других операций с MIDI DMX в ручном режиме используется простое консольное программное обеспечение. | Для функционального тестирования и других операций с MIDI DMX в ручном режиме используется простое консольное программное обеспечение. | ||
| Строка 82: | Строка 118: | ||
| В режиме ASCII, а также в режиме MIDI передатчик DMX запускается автоматически со всеми 512 DMX. | В режиме ASCII, а также в режиме MIDI передатчик DMX запускается автоматически со всеми 512 DMX. | ||
| каналов на нулевом уровне. | каналов на нулевом уровне. | ||
| + | |||
| <note important> | <note important> | ||
| После этого устройство должно быть перезапущено. Программное обеспечение или COM | После этого устройство должно быть перезапущено. Программное обеспечение или COM | ||
| Строка 92: | Строка 129: | ||
| интегрирован в набор команд ASCII. По этой причине имена некоторых команд изменены. | интегрирован в набор команд ASCII. По этой причине имена некоторых команд изменены. | ||
| ==== Краткий справочник всех команд ASCII ==== | ==== Краткий справочник всех команд ASCII ==== | ||
| - | ^ Heading 1 | + | ^ Команда |
| - | | **Sn** | + | | **[[#S <DMX канал> |
| - | | **Vn** | + | | **[[#V < |
| - | | **,n** (// | + | | **[[#, (запятая) < |
| - | | | + | | **[[#+ (не принимает параметры)|+]]** | увеличить адресный уровень буфера передачи канала DMX на единицу || |
| - | | **-** | уменьшить адресный уровень буфера передачи DMX-канала на единицу || | + | | **[[#- (не принимает параметры)|-]]** |
| | **=n** | | **=n** | ||
| | **Tn** | | **Tn** | ||
| | ** X** |немедленно остановить (заморозить) все процессы затухания на их текущих уровнях|| | | ** X** |немедленно остановить (заморозить) все процессы затухания на их текущих уровнях|| | ||
| - | | **D** | немедленно установить выход всех каналов DMX на 0 || | + | | **D** |
| - | | ** Rn** |прочитать n байтов из буфера передачи, | + | | ** Rn** |прочитать n байтов из буфера передачи, |
| - | | **Q** | уровень отображения выбранного DMX-канала, | + | | **Q** |
| | **Ln** | | **Ln** | ||
| | ** ~n** | сохранить пресет в буфер передачи|| | | ** ~n** | сохранить пресет в буфер передачи|| | ||
| - | | ** @n** | загрузить пресет || | + | | ** @n** | загрузить пресет || |
| - | | ** Cn** | установить MIDI-канал, | + | | ** Cn** | установить MIDI-канал, |
| - | | | + | | |
| - | | **?** | отобразить список актуальных глобальных параметров|| | + | | **?** |отобразить список актуальных глобальных параметров|| |
| - | + | < | |
| - | + | команда ожидает параметр, | |
| + | значения всегда в десятичном формате **__и отправляется через USB как текст ASCII__**. | ||
| + | </ | ||
| + | === S <DMX канал> | ||
| + | Параметр: | ||
| + | управляется последующими командами. | ||
| + | Например: | ||
| + | === V < | ||
| + | Параметр: | ||
| + | немедленно передается по фактически выбранному через команду выше, каналу DMX. | ||
| + | === , (запятая) < | ||
| + | Параметр: | ||
| + | передается по выбранному каналу DMX | ||
| + | === + (не принимает параметры)=== | ||
| + | Увеличить (добавить +1)к уровню канала. То есть увеличить яркость на +1 | ||
| + | Комментарий: | ||
| + | команда игнорируется. Если на этом канале DMX активен процесс затухания, | ||
| + | === - (не принимает параметры)=== | ||
| + | Уменьшить (Уменьшить -1)уровень | ||
| + | Комментарий: | ||
| + | === = < | ||
| + | Время затухания определяется | ||
| + | фактическое содержимое регистра FADETIME. | ||
| + | Параметр: | ||
| + | один и тот же уровень копируется | ||
| ===== Компоненты для сборки контроллера ===== | ===== Компоненты для сборки контроллера ===== | ||
| {{https:// | {{https:// | ||