Перейти к содержанию
GPIO Extender-2: инструкция, команды и сценарии

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

  1. Подключите GPIO Extender-2 к USB.
  2. Выберите интерфейс:
    • serial — CDC-порт вида COM3, /dev/ttyACM0 или /dev/tty.usbmodem...; скорость 115 200 бод программа задаёт сама;
    • hid — USB HID без выбора виртуального COM-порта.
  3. Нажмите Обновить и выберите устройство.
  4. Нажмите Подключить. После проверки связи появятся модель, версия прошивки и серийный номер, а кнопка сменится на Отключить.

Если CDC-порт не появился или недоступен, воспользуйтесь инструкцией по CDC-драйверу.

Настройка выводов

Вкладка Пины после подключения читает режимы и значения всех десяти выводов. В списке каждого вывода остаются только поддерживаемые им режимы.

  1. Выберите режим. Конфигуратор сразу отправит обновлённую строку режимов в устройство.
  2. Для выхода O, ШИМ P или UART TX T введите значение и нажмите Установить. Для ШИМ сначала задайте общую частоту от 1 до 20 000 Гц.
  3. Нажмите Чтение в строке вывода или Прочитать значения для всех выводов.
  4. Нажимайте Сохранить в память только тогда, когда текущая конфигурация должна восстанавливаться после отключения питания.
Подключённый по CDC GPIO Extender-2 на вкладке Пины настольного конфигуратора
Вкладка «Пины» показывает фактически применённые режимы и прочитанные значения. Это пример тестовой сессии, а не шаблон конфигурации; серийный номер скрыт.

Команды в терминале

Введите команду с ~ или без него и нажмите Enter либо Отправить. Конфигуратор добавляет префикс и перевод строки для CDC, а при работе через HID преобразует ту же запись в HID-пакет.

На снимке >> обозначает отправленную команду, а BG: — ответ, который фоновый приёмник получил через CDC. При подключении через HID ответ выводится с пометкой << OK. Например:

  • M читает режимы всех выводов;
  • V читает десять значений одной строкой;
  • G6 читает вывод 6;
  • D... задаёт режимы, а J... — значения всех выводов.

В ответе на J знак ! означает, что значение установлено, а E — что для текущего режима его установить нельзя. Полный синтаксис приведён в таблице команд.

Команды M, V и G и ответы GPIO Extender-2 в терминале настольного конфигуратора
Терминал показывает отправленные команды и реальные ответы устройства через CDC.

Кнопка Очистить удаляет журнал только с экрана. Она не меняет режимы, значения или настройки устройства.

Мониторинг значений

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

Конфигуратор хранит до 100 последних точек для каждого выбранного вывода. Выводы опрашиваются последовательно, поэтому полный цикл для нескольких линий может занимать больше заданного интервала.

График цифровых значений GPIO Extender-2 в настольном конфигураторе
Монитор показывает изменения цифровых уровней на выводах 6–10.

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 в свою программу. Настольный и веб-конфигураторы используют тот же протокол.

Первый запуск

  1. Подключите устройство к USB. Оно определяется как виртуальный COM-порт (CDC) и как HID-устройство.

  2. Для работы через CDC откройте порт в терминале: например, COM3 в Windows, /dev/tty.usbmodem... в macOS или /dev/ttyACM0 в Linux. Подойдут PuTTY, Tera Term, Arduino Serial Monitor, screen, Minicom или pyserial-miniterm.

  3. Каждая команда начинается с ~ и завершается символами \r\n. Отправьте ~I, чтобы проверить связь:

    > ~I
    < ~IGPIO-Extender-2-1.2.0;SN:xxxx-xxxx-xxxx
    

    Здесь и далее > обозначает отправленную команду, а < — ответ устройства. Номер версии и серийный номер в ответе ~I зависят от экземпляра.

  4. В CDC по умолчанию может быть включён повтор введённых символов. Для обмена с программой его удобнее явно выключить командой ~E0; ~E1 включает повтор обратно:

    > ~E0
    < ~EOK
    
  5. Перед подключением нагрузки настройте и проверьте каждый вывод отдельно.

Режимы выводов

РежимСимволНазначение
Вход GPIOIцифровой вход
Выход GPIOOцифровой выход
ШИМ (PWM)Pширотно-импульсная модуляция
Измерение сигнала (CC)Cчастота и коэффициент заполнения
Аналоговый вход (АЦП)Aзначение 0–4095
UART TXTпередача UART
UART RXRприём UART
DHTDDHT22/AM2302
WS2812Wадресная RGB-лента
ВыводПоддерживаемые функции
1GPIO, АЦП, DHT
2GPIO, ШИМ, АЦП, UART TX, DHT
3GPIO, ШИМ, АЦП, DHT
4GPIO, АЦП, WS2812B, измерение частоты и коэффициента заполнения, DHT
5GPIO, АЦП, измерение частоты и коэффициента заполнения, DHT
6GPIO, ШИМ, АЦП, UART RX, DHT
7GPIO, ШИМ, АЦП, DHT
8GPIO, DHT
9GPIO, АЦП, измерение частоты и коэффициента заполнения, DHT
10GPIO, 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.

Обновление прошивки

  1. Подключитесь к устройству и отправьте команду ~B. Последовательный порт исчезнет, а зелёный светодиод начнёт мигать: устройство перешло в загрузчик.
  2. Скачайте прошивку из раздела файлов GPIO Extender. Для записи используйте UnitX HID Flasher на macOS или OD HID Flasher для Windows и Linux. Запустите программу и выберите файл прошивки.
  3. Нажмите кнопку прошивки и дождитесь завершения. После переподключения отправьте ~I через CDC или HID и проверьте номер версии.