GPIO Extender-2
Zero Coding мини-контроллер для ваших проектов

Управление без программирования — просто текстовые команды

Компактный размер. 10 универсальных портов.
Без перепрошивки и IDE.
Только терминал и простые команды.
Ключевые преимущества
Почему GPIO-Extender-2 удобен для небольших проектов?

Никакого программирования
Забудьте о языках программирования и IDE. Управляйте устройством через простые текстовые команды с ПК.

Компактный размер
Устройство помещается на ладони и не требует дополнительной инфраструктуры или монтажа.

Легкое подключение
Просто подсоедините к USB, и устройство готово к работе. Не нужны драйверы или настройки. Питание и управление по одному интерфейсу.

Понятный интерфейс
Текстовые команды с интуитивно понятным синтаксисом, которые легко запомнить даже новичку.

Автономный режим Сохраняйте настройки в памяти и используйте устройство даже без компьютера. Устройство может автономно выполнять несложные сценарии по заданному скрипту.
Для чего нужен USB GPIO Extender-2
  • Очень простое управление сигналами
    GPIO Extender-2 - в первую очередь устройство простого управления сигналами с ПК: позволяет с помощью команд в (виртуальный) последовательный порт USB интерфейса изменять состояние 10 входов-выходов.
  • Гибкость
    GPIO Externder-2 позволяет:
    1. сделать 10 выходов, либо 10 входов или как-то разделить их, например как 2 выхода и 8 входов.
    2. использовать, как генератор PWM сигналов (4 канала).
    3. использовать, как АЦП (9) каналов.
    4. использовать режим определения частоты и скважности (2 канала)
    5. подключать датчики температуры-влажности DHT22
    6. подключать светодиодную ленту WS2812B
    И передавать все эти данные по запросу ПК.
  • Заскриптованная работа
    Устройство можно запрограммировать на выполнение своей простой логики.
Характеристики
1. Интерфейс подключения: USB (HID+CDC)
2. Рабочие интерфейсы: GPIO, ADC, PWM
3. Количество выводов: 25, управляемых - 10
4. Габариты: 54х15х10мм
5. Работает в Win7/Linux/macOS и других ОС
6. Поддержка скриптов для самостоятельного задания логики работы в автономном режиме (без ПК).
Графический конфигуратор
Графический конфигуратор - это демонстрационная программа для знакомства с возможностями устройства и источник кода для использования в своих проектах.

Подключите ваше устройство
  1. Подключите GPIO Extender 2 к компьютеру через USB.
  2. Ваш компьютер определит устройство как виртуальный COM-порт и как HID-устройство. Подключите конфигуратор через один из интерфейсов (какой будет доступен). Возможно, вам нужно будет запускать с правами администратора/суперпользователя в зависимости от прав доступа к интерфейсам в вашей ОС.
Текстовый протокол
Краткое руководство по началу работы

Подключите ваше устройство
  1. Подключите GPIO Extender 2 к компьютеру к USB.
  2. Ваш компьютер определит устройство как виртуальный COM-порт и как HID-устройство. Виртуальный последовательный-порт (CDС) нужен для легкой интеграции с вашими программами, а HID позволяет работать без драйверов в системах, где нет доступа к CDC.

Откройте терминал (при работе с CDC)
Запустите любое приложение для работы с последовательным портом:
  • Windows: PuTTY, TeraTerm, Arduino Serial Monitor, pyserial-miniterm.
  • macOS: Screen, Serial, CoolTerm, pyserial-miniterm.
  • Linux: Screen, Minicom, PuTTY, pyserial-miniterm.

Подключитесь к последовательному порту
  • Windows: устройство вида COM3 и т.п.
  • macOS: устройство вида /dev/tty.usbmodem2073306558472 и т.п.
  • Linux: устройство вида /dev/ttyACM0 и т.п.
Введите следующую команду и нажмите Enter:
~I
Вы должны увидеть ответ вида:
~IGPIO-Extender-2.0.0;SN:xxxx-xxxx-xxxx
Интерфейс команд

Все команды начинаются с символа ~ и заканчиваются возвратом каретки (\r) и переводом строки (\n).
Ответ также начинается с ~ и символа отправленной команды и символами (\r\n).
По-умолчанию включен режим "эхо", чтобы вы видели печатаемые вами символы.
При интеграции с ПО это неудобно и эхо лучше отключить (сделать это можно в настройках или командой).

Базовые команды
Расширенные команды
Ответы об ошибках
Команды, выполнение которых не удалось, будут возвращать сообщение об ошибке, например
~JError - Ошибка установки значений выводов.
Также, сложные команды могут сообщать о деталях ошибки, например:
~PError:Mode
~PError:Freq
Конфигурация выводов

GPIO Extender 2 имеет 10 выводов, которые могут быть настроены в следующие режимы:
Установка режимов

Для настройки всех выводов одновременно используйте команду ~D, за которой следуют 10 символов режимов. При попытке установить неподдерживаемый пином режим, он будет выставлен в I. Команда в ответ шлет получившийся режим для пинов.
Сложные режимы (не I,O) после деинициализации могут занимать ресурсы, потому устройство после отключения сложного режима устройство следует перезагрузить.
Устанавливаем пины 3-4 как выходы, остальные - как входы.
~DIIOOIIIII
Управление выводами
Цифровой выход
Включить вывод 2:
~S2:1
Выключить вывод 2:
~S2:0
Чтение входов
Считать цифровой вход 2:
~G2
Считать аналоговый вход 3:
~G3
Получить значения всех GPIO за один раз:
~V
Выход ШИМ (P)

Установить вывод в режим ШИМ:
Инициализировать ШИМ с частотой в Гц (пин должен быть настроен в режим P):
~P[pin]:[frequency]
~P3:1000
Установить коэффициент заполнения ШИМ (0-100)%:
~S[pin]:[value]
~S3:50
Пример: установить 50% заполнения при 1 кГц на выводе 3:
~P3:1000
~S3:50
Аналоговый вход (A)

Ответ будет в значениях диапазона 0-4095

Прочитать аналоговое значение (пин должен быть настроен в режим A):
~G[pin]
Измерение частоты и скважности (С)

Прим.: нельзя использовать пины 4 и 5 одновременно в этом режиме
Прочитать значение частоты и скважности (пин должен быть настроен в режим C):
~G[pin]
РАБОТА С ТЕМПЕРАТУРНЫМ ДАТЧИКОМ DHT22
Устройство поддерживает работу с цифровыми датчиками температуры и влажности DHT22/AM2302.
Подключение датчика
  • VCC → подключите к источнику питания 3.3В или 5В (зависит от модели датчика)
  • GND → подключите к общей земле устройства
  • DATA → подключите к любому из пинов 0-9 GPIO-экстендера
ОБЯЗАТЕЛЬНО установите подтягивающий резистор 4.7-10кОм между VCC и DATA, если он не установлен на датчике.
Настройка режима работы
Установите пин для подключения датчика (например, пин 5)
~DIIIIIDIII
Чтение значений с датчика
Команда чтения G с номером пина: ~G5.
В ответ приходит данные вида:
~G24.5С,60.5%
Особенности работы
  • Минимальный интервал между измерениями: 2 секунды. DHT22 требует времени для стабилизации и корректного считывания данных.
  • Точность измерений:Температура: ±0.5°C, влажность: ±2-5%
  • Диапазон измерений:Температура: от -40 до +80°C, влажность: от 0 до 100%

Рекомендации по использованию
  • Всегда используйте подтягивающий резистор между питанием и линией данных
  • Располагайте датчик в стороне от источников тепла и прямых солнечных лучей
  • Избегайте быстрых изменений влажности, которые могут привести к конденсации
  • При первом включении датчику может потребоваться 1-2 минуты для стабилизации показаний
Управление RGB-светодиодной лентой WS2812
Режим вывода - W
Вывод 9 может управлять лентой длиной до 30 светодиодов WS2812B.
Цвета кодируются палитрой.
Закрасить 3 светодиода (пин должен быть настроен в режим W):
~Y090A0C
Палитра 256 цветов Базовые 16 цветов VGA (00-0F) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F RGB цветовой куб 6×6×6 (коды 10-E7) 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 Градации серого (коды E8-FF) E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF * Отображаемые цвета могут отличаться от реальных цветов на WS2812B светодиодах
UART

Встроенный интерфейс UART для обмена небольшими сообщениями в другим устройством.
Настройка UART (режим 115200,8,N,1 настроен по-умолчанию и его можно не выставлять):
~U115200,8,N,1
Отправка данных (пин 2 должен быть настроен как 'T' через команду ~D):
~S2:Hello
Прием данных (пин 6 должен быть настроен, как 'R' через команду ~D).
Буфер на чтение в устройстве на 256 байт. За раз ~G выдает до 40 байт.
~G6
~GHello
Скриптование - встроенный интерпретатор

Контроллер может работать самостоятельно (без управляющих команд), если загрузить туда скрипт.
Это экспериментальная функция и возможности скриптов относительно основного режима сильно ограничены.
Поддерживаемые команды
+ Установить текущий пин в высокое состояние
- Установить текущий пин в низкое состояние
> Перейти к следующему пину
< Перейти к предыдущему пину
. Прочитать значение текущего пина
: Войти в режим ШИМ для текущего пина
% Установить скважность ШИМ (далее 0-9 для 0-100% с шагом 10%)
# Прочитать аналоговое значение с текущего пина
@ Настроить текущий пин (i=вход, o=выход, p=шим, a=аналоговый)
d[ms] Задержка на [мс] миллисекунд (например, d100 для задержки 100мс)
Базовая конфигурация и управление пинами
(обычно не нужно настраивать конфигурацию скриптом)
@o>@o>@i    // Настроить пин 1 как выход, пин 2 как выход, пин 3 как вход
<<+>+         // Вернуться к пину 1, установить его в 1, перейти к пину 2, установить пин 2 в 1
<<.>.>      // Вернуться к пину 1, прочитать его, перейти к пину 2, прочитать его, перейти к пину 3, прочитать его
Управление ШИМ
>@p:0%5     // Перейти к пину 2, настроить как ШИМ, установить частоту 1Гц, скважность 50%
Возможные частоты ШИМ в режиме интерпретатора
    1,      // '0' - 1 Гц (медленное мигание)
    10,     // '1' - 10 Гц (мигание)
    50,     // '2' - 50 Гц (серво, некоторые моторы)  
    100,    // '3' - 100 Гц (низкочастотная PWM для моторов)
    200,    // '4' - 200 Гц (моторы)
    500,    // '5' - 500 Гц (средняя частота для моторов)
    800,    // '6' - 800 Гц (моторы, вентиляторы)
    1000,   // '7' - 1 кГц (стандарт для светодиодов)
    1500,   // '8' - 1.5 кГц (светодиоды)
    2000,   // '9' - 2 кГц (высокочастотные светодиоды)
    3000,   // 'A'/'a' - 3 кГц (высокочастотные приложения)
    5000,   // 'B'/'b' - 5 кГц (высокочастотные светодиоды)
    8000,   // 'C'/'c' - 8 кГц (очень высокочастотные приложения)
    10000,  // 'D'/'d' - 10 кГц (ультравысокие частоты)
    15000,  // 'E'/'e' - 15 кГц (ультразвуковые приложения)
    20000   // 'F'/'f' - 20 кГц (максимум системы)
Мигание светодиодом
@o      // Пин 1 как выход
+       //  Установить высокий уровень
d500    // Пауза 500 мс
-       // Установить низкий уровень
d500    // Пауза 500 мс
+       // Установить высокий уровень
d500    // Пауза 500 мс
-       // Установить низкий уровень

Команда будет выглядеть так: ~X>@o+d500-d500+d500-