
GPIO Extender-2: инструкция, команды и сценарии
Настройка десяти выводов GPIO Extender-2, команды CDC/HID, ШИМ, АЦП, UART, DHT22, WS2812 и встроенные сценарии.
GPIO Extender-2 предоставляет десять универсальных выводов и управляется по USB CDC или HID. Основная логика может оставаться в программе на ПК, а короткие последовательности GPIO, ШИМ и АЦП выполняться внутри контроллера.
Настройка через GUI
Настольный конфигуратор
GPIO Extender Configurator 1.1.0 работает через USB HID или виртуальный COM-порт CDC. В программе можно настроить выводы, отправить команду вручную, построить график, управлять WS2812 и читать DHT. Снимки ниже сделаны в версии 1.1.0 с подключённым GPIO Extender-2.
Установка и запуск
Скачайте готовую сборку для своей операционной системы:
- Windows —
GPIO-Extender-Configurator-1.1.0.exe; - Linux x86-64 —
GPIO-Extender-Configurator-1.1.0-x86_64.AppImage; - macOS на Apple Silicon —
GPIO-Extender-Configurator-1.1.0-macos-arm64.dmg; - macOS на процессоре Intel —
GPIO-Extender-Configurator-1.1.0-macos-x86_64.dmg.
В Windows запустите файл .exe, в macOS откройте подходящий образ .dmg. В
Linux при необходимости разрешите запуск AppImage:
chmod +x GPIO-Extender-Configurator-1.1.0-x86_64.AppImage
./GPIO-Extender-Configurator-1.1.0-x86_64.AppImage
Исходники конфигуратора
содержат extender2_configurator.py, gpio_extender_protocol.py и
requirements.txt. Для запуска исходников нужен Python 3.10 или новее.
Сохраните все три файла в одном каталоге и выполните:
python -m pip install -r requirements.txt
python extender2_configurator.py
Для подключения через serial (CDC) повышенные права обычно не нужны. В
Windows выберите появившийся COM-порт, в macOS — /dev/tty.usbmodem.... В
Linux приложение работает без повышения прав, если текущему пользователю
разрешён доступ к /dev/ttyACM*. Для hid в Linux может потребоваться
udev-правило доступа к /dev/hidraw* с VID=0483 и PID=A26A.
Подключение через CDC или HID
- Подключите GPIO Extender-2 к USB.
- Выберите интерфейс:
serial— CDC-порт видаCOM3,/dev/ttyACM0или/dev/tty.usbmodem...; скорость 115 200 бод программа задаёт сама;hid— USB HID без выбора виртуального COM-порта.
- Нажмите Обновить и выберите устройство.
- Нажмите Подключить. После проверки связи появятся модель, версия прошивки и серийный номер, а кнопка сменится на Отключить.
Если CDC-порт не появился или недоступен, воспользуйтесь инструкцией по CDC-драйверу.
Настройка выводов
Вкладка Пины после подключения читает режимы и значения всех десяти выводов. В списке каждого вывода остаются только поддерживаемые им режимы.
- Выберите режим. Конфигуратор сразу отправит обновлённую строку режимов в устройство.
- Для выхода
O, ШИМPили UART TXTвведите значение и нажмите Установить. Для ШИМ сначала задайте общую частоту от 1 до 20 000 Гц. - Нажмите Чтение в строке вывода или Прочитать значения для всех выводов.
- Нажимайте Сохранить в память только тогда, когда текущая конфигурация должна восстанавливаться после отключения питания.

Команды в терминале
Введите команду с ~ или без него и нажмите Enter либо Отправить.
Конфигуратор добавляет префикс и перевод строки для CDC, а при работе через HID
преобразует ту же запись в HID-пакет.
На снимке >> обозначает отправленную команду, а BG: — ответ, который
фоновый приёмник получил через CDC. При подключении через HID ответ выводится с
пометкой << OK. Например:
Mчитает режимы всех выводов;Vчитает десять значений одной строкой;G6читает вывод 6;D...задаёт режимы, аJ...— значения всех выводов.
В ответе на J знак ! означает, что значение установлено, а E — что для
текущего режима его установить нельзя. Полный синтаксис приведён в
таблице команд.

Кнопка Очистить удаляет журнал только с экрана. Она не меняет режимы, значения или настройки устройства.
Мониторинг значений
- Отметьте нужные выводы.
- Выберите цифровые значения, АЦП, захват частоты, температуру или влажность DHT. Режимы выводов должны соответствовать выбранному типу данных.
- Задайте интервал от 100 до 5000 мс и нажмите Запустить.
- Нажмите Остановить, чтобы зафиксировать график, или Очистить, чтобы удалить накопленные точки.
Конфигуратор хранит до 100 последних точек для каждого выбранного вывода. Выводы опрашиваются последовательно, поэтому полный цикл для нескольких линий может занимать больше заданного интервала.

RGB и DHT
Для DHT22 задайте режим D, подключите DATA к выбранному выводу и добавьте
подтяжку 4,7–10 кОм между VCC и DATA, если её нет на модуле. Команда ~G5
возвращает строку вида ~G24.5C,60.5%. На вкладке DHT можно выполнить
разовое чтение всех датчиков или включить автообновление с интервалом от 1 до
60 секунд. Для DHT22 выбирайте интервал не менее 2 секунд.
Для WS2812 переведите вывод 4 в режим W и откройте вкладку RGB. Быстрые
кнопки заполняют ленту одним цветом, а палитра позволяет составить свою
HEX-последовательность. За одну команду через CDC можно передать цвета для
30 светодиодов, через HID — для 31.


Веб-конфигуратор
Чтобы настроить устройство без установки программы, откройте extender2.unitx.pro в браузере с поддержкой Web Serial. Подключение, режимы выводов, WS2812, DHT, терминал и монитор описаны в отдельной пошаговой инструкции.
Протокол CDC и HID
Команды ниже нужны для работы из терминала и интеграции GPIO Extender-2 в свою программу. Настольный и веб-конфигураторы используют тот же протокол.
Первый запуск
Подключите устройство к USB. Оно определяется как виртуальный COM-порт (CDC) и как HID-устройство.
Для работы через CDC откройте порт в терминале: например,
COM3в Windows,/dev/tty.usbmodem...в macOS или/dev/ttyACM0в Linux. Подойдут PuTTY, Tera Term, Arduino Serial Monitor,screen, Minicom илиpyserial-miniterm.Каждая команда начинается с
~и завершается символами\r\n. Отправьте~I, чтобы проверить связь:> ~I < ~IGPIO-Extender-2-1.2.0;SN:xxxx-xxxx-xxxxЗдесь и далее
>обозначает отправленную команду, а<— ответ устройства. Номер версии и серийный номер в ответе~Iзависят от экземпляра.В CDC по умолчанию может быть включён повтор введённых символов. Для обмена с программой его удобнее явно выключить командой
~E0;~E1включает повтор обратно:> ~E0 < ~EOKПеред подключением нагрузки настройте и проверьте каждый вывод отдельно.
Режимы выводов
| Режим | Символ | Назначение |
|---|---|---|
| Вход GPIO | I | цифровой вход |
| Выход GPIO | O | цифровой выход |
| ШИМ (PWM) | P | широтно-импульсная модуляция |
| Измерение сигнала (CC) | C | частота и коэффициент заполнения |
| Аналоговый вход (АЦП) | A | значение 0–4095 |
| UART TX | T | передача UART |
| UART RX | R | приём UART |
| DHT | D | DHT22/AM2302 |
| WS2812 | W | адресная RGB-лента |
| Вывод | Поддерживаемые функции |
|---|---|
| 1 | GPIO, АЦП, DHT |
| 2 | GPIO, ШИМ, АЦП, UART TX, DHT |
| 3 | GPIO, ШИМ, АЦП, DHT |
| 4 | GPIO, АЦП, WS2812B, измерение частоты и коэффициента заполнения, DHT |
| 5 | GPIO, АЦП, измерение частоты и коэффициента заполнения, DHT |
| 6 | GPIO, ШИМ, АЦП, UART RX, DHT |
| 7 | GPIO, ШИМ, АЦП, DHT |
| 8 | GPIO, DHT |
| 9 | GPIO, АЦП, измерение частоты и коэффициента заполнения, DHT |
| 10 | GPIO, DHT |
В протоколе вывод 10 обозначается цифрой 0: используется последовательность
1,2,3,4,5,6,7,8,9,0.
Выводы 4 и 5 используют общий ресурс измерения частоты и коэффициента заполнения и конфликтуют друг с другом. Для двух одновременных измерений используйте вывод 9 в паре с одним из них.
Основные команды
Примеры ответов ниже соответствуют прошивке 1.2.0. В версиях 1.1.x и старше
команда ~E без параметра переключала echo, ~J могла возвращать переданные
значения, а ~B — отключать USB без ответа. Сначала запросите версию командой
~I.
| Команда | Что делает | Пример ответа |
|---|---|---|
~D[10 режимов] | задать режимы выводов 1…9, 10 | ~DIIOOIIIIII |
~J[10 значений] | задать значения сразу для всех выводов | ~J<10 статусов> |
~Sn:v | установить значение вывода | ~SOK |
~Gn | прочитать один вывод | ~G1, ~G1234, ~G1000,50 |
~M | прочитать десять текущих режимов | ~MIIOOIIIIII |
~V | прочитать десять значений одной строкой | ~V0011000000 |
~Pn:частота | задать частоту ШИМ в диапазоне 1…20000 Гц | ~POK |
~Ubaud,data,parity,stop | настроить UART | ~UOK |
~L0 / ~L1 | выключить / включить встроенный красный светодиод | ~LOK |
~W[индексы цветов] | передать цвета на WS2812 | ~WOK |
~F | сохранить режимы, значения и сценарий | ~FOK |
~Q[часть] | очистить буфер или добавить часть сценария | ~QOK:длина |
~R | перезагрузить устройство | ~ROK |
~I | получить версию и серийный номер | ~IGPIO-Extender-2-... |
~E0 / ~E1 | выключить / включить повтор команд в CDC | ~EOK |
~B | перейти в загрузчик | ~BOK, затем USB-порт отключается |
Ответ ~D содержит фактически применённые режимы. Если вывод не поддерживает
запрошенный режим, вместо него устройство возвращает I. Ответ ~J содержит
по одному статусу на вывод: ! означает успешную установку, E — что значение
для текущего режима установить нельзя.
~V всегда возвращает десять символов в порядке 1,2,3,4,5,6,7,8,9,0.
Для GPIO это 0 или 1; значение АЦП сжимается из диапазона 0...4095 в
цифру 0...9. Для точного значения АЦП используйте ~Gn.
Примеры команд и ответов
В примерах не показан повтор команды, который устройство может присылать при
включённом CDC echo. Перед автоматическим обменом отправьте ~E0 и дождитесь
~EOK.
Цифровые входы и выходы
Настроим все десять выводов как выходы, зададим их состояния, затем прочитаем режимы, один вывод и все значения:
> ~DOOOOOOOOOO
< ~DOOOOOOOOOO
> ~J0011000000
< ~J!!!!!!!!!!
> ~M
< ~MOOOOOOOOOO
> ~G3
< ~G1
> ~V
< ~V0011000000
Отдельный выход устанавливается командой ~S. Для выхода 2:
> ~S2:1
< ~SOK
> ~S2:0
< ~SOK
ШИМ
Все каналы ШИМ используют один таймер, поэтому частота у них общая, а
коэффициент заполнения задаётся для каждого вывода отдельно. Настроим вывод 3
в режим P, зададим 1 кГц и 50 %:
> ~DIIPIIIIIII
< ~DIIPIIIIIII
> ~P3:1000
< ~POK
> ~S3:50
< ~SOK
Частота должна находиться в диапазоне 1…20000 Гц, коэффициент заполнения —
0…100 %. Команда ~G не читает состояние вывода в режиме ШИМ и отвечает
~GError:PWM.
Аналоговый вход
Настроим вывод 3 как АЦП и прочитаем значение. Ответ зависит от напряжения на
входе и находится в диапазоне 0...4095:
> ~DIIAIIIIIII
< ~DIIAIIIIIII
> ~G3
< ~G1234
Измерение частоты и коэффициента заполнения
Настроим вывод 4 в режим C. В ответе ~G первое число — частота в герцах,
второе — коэффициент заполнения в процентах:
> ~DIIICIIIIII
< ~DIIICIIIIII
> ~G4
< ~G1000,50
Выводы 4 и 5 нельзя одновременно использовать в этом режиме. Для двух измерений используйте вывод 9 вместе с выводом 4 или 5.
DHT22 и AM2302
DATA датчика можно подключить к любому свободному выводу. Между DATA и VCC нужен подтягивающий резистор 4,7–10 кОм, если его нет на модуле. Для вывода 5:
> ~DIIIIDIIIII
< ~DIIIIDIIIII
> ~G5
< ~G24.5C,60.5%
Первое число — температура, второе — относительная влажность. Между чтениями DHT22 выдерживайте не менее двух секунд.
WS2812
Лента подключается к выводу 4, настроенному в режим W. Каждая пара
шестнадцатеричных символов — индекс цвета одного светодиода в палитре из
256 цветов. За одну команду CDC можно передать цвета для 1–30 светодиодов:
> ~DIIIWIIIIII
< ~DIIIWIIIIII
> ~W090A0C
< ~WOK
UART
Для UART используются вывод 2 (TX) и вывод 6 (RX). Настроим режимы и параметры
115200, 8 бит, без контроля чётности, 1 стоп-бит:
> ~DITIIIRIIII
< ~DITIIIRIIII
> ~U115200,8,N,1
< ~UOK
> ~S2:Hello
< ~SOK
> ~G6
< ~GHello
При пустом приёмном буфере ~G6 отвечает ~GEMPTY. Буфер UART вмещает
256 байт, одна команда чтения возвращает до 40 байт.
Ошибки команд
Ошибка начинается с префикса исходной команды и содержит причину. Например:
> ~DIIAIIIIIII
< ~DIIAIIIIIII
> ~P3:1000
< ~PError:Mode
> ~DIIPIIIIIII
< ~DIIPIIIIIII
> ~P3:50000
< ~PError:Freq
> ~W090A0C
< ~WError:Pin
В первом примере вывод 3 не был настроен как ШИМ, во втором частота вне допустимого диапазона, в третьем вывод 4 не был настроен как WS2812.
Обновление прошивки
- Подключитесь к устройству и отправьте команду
~B. Последовательный порт исчезнет, а зелёный светодиод начнёт мигать: устройство перешло в загрузчик. - Скачайте прошивку из раздела файлов GPIO Extender. Для записи используйте UnitX HID Flasher на macOS или OD HID Flasher для Windows и Linux. Запустите программу и выберите файл прошивки.
- Нажмите кнопку прошивки и дождитесь завершения. После переподключения
отправьте
~Iчерез CDC или HID и проверьте номер версии.


