Перейти к содержимому
Betaflight | PINIO & PINIO Box (ПИНИО и Бокс ПИНИО)

Betaflight | PINIO & PINIO Box (ПИНИО и Бокс ПИНИО)

Технику БПЛА
Понедельник, 18 августа 2025

Обзор

PINIO — это абстракция простого интерфейса GPIO (General Purpose Input/Output — универсальные входы/выходы).

PINIO BOX — это механизм для привязки логических боксов (режимов) к выходам PINIO.

Большинство целевых плат (flight controllers) поддерживают настройку до четырёх выводов для функции PINIO, которыми затем можно управлять через PINIO BOX.

PINIO

Вывод микроконтроллера (MCU) можно назначить на PINIO с помощью CLI-команды resource:

resource PINIO <индекс> <ID_вывода>

Пример назначения ресурсов для PINIO:

resource PINIO 1 A01  
resource PINIO 2 A08  
resource PINIO 3 C99  
resource PINIO 4 D02

Конфигурация PINIO (PINIO CONFIG)

Конфигурация режима работы каждого вывода задаётся CLI-переменной pinio_config. Это список (массив) из 8-битных значений, разделённых запятыми.
Старший бит (MSB) указывает на инверсию сигнала, а оставшиеся 7 бит определяют режим ввода/вывода согласно описанию в drivers/pinio.h (в текущей реализации поддерживается только режим push-pull output).

КонстантаHEXDECОписание
PINIO_CONFIG_OUT_INVERTED 0x80 128 Инвертированный выход
PINIO_CONFIG_MODE_MASK 0x7F 127 Маска для режима
PINIO_CONFIG_MODE_OUT_PP 0x01 1 Выход в режиме Push-Pull (двухтактный выход)

Примечание: Значения можно комбинировать, например, инверсия плюс режим.

Пример значения pinio_config:

set pinio_config = 1,129,1,1

Это означает:

  • режим Output-Push-Pull для PINIO #1, #3 и #4
  • режим Inverted Output-Push-Pull для PINIO #2 (128 + 1 = 129)

Значение по умолчанию: 1 (Output-Push-Pull).

PINIO BOX (Бокс ПИНИО)

CLI-переменная pinio_box — это список, разделённый запятыми, из постоянных ID боксов (Permanent ID). Она связывает боксы с соответствующими выходами PINIO.

После привязки статус активации бокса (включён/выключен) отражается на состоянии связанного выхода PINIO (и, следовательно, на физическом выводе). Механизм PINIO BOX самостоятельно отслеживает состояние активации боксов и работает независимо от их основного назначения, по сути расширяя управление выходами PINIO через боксы.

Постоянные ID с 40 по 43 соответствуют пользовательским боксам USER1–USER4, которые отображаются в списках боксов на вкладке «Modes» в конфигураторе.

Пример установки pinio_box:

set pinio_box = 0,39,43,255

При такой настройке PINIO #1–#4 будут связаны с бокcами:

PINIOОписаниеПостоянный ID
1 ARM (Взведение) 0
2 VTX PIT MODE 39
3 USER4 43
4 BOXID_NONE (Не используется) 255

Таблица постоянных ID боксов (AUX-режимов) — источник msp/msp_box.c:

Бокс (Box)Режим (Mode)IDПримечания
BOXARM ARM 0  
BOXANGLE ANGLE 1  
BOXHORIZON HORIZON 2  
BOXALTROLD ALTITUDE HOLD 3 добавлено в 4.6
BOXANTIGRAVITY ANTI GRAVITY 4  
BOXMAG MAG 5  
BOXHEADFREE HEADFREE 6  
BOXHEADADJ HEADADJ 7  
BOXCAMSTAB CAMSTAB 8  
BOXCAMTRIG CAMTRIG 9 удален
BOXGPSHOME GPS HOME 10 удален
BOXPOSHOLD POSITION HOLD 11 добавлено в 4.6
BOXPASSTHRU PASSTHRU 12  
BOXBEEPERON BEEPER 13  
BOXLEDMAX LEDMAX 14 удален
BOXLEDLOW LEDLOW 15  
BOXLLIGHTS LLIGHTS 16 удален
BOXCALIB CALIB 17  
BOXGOV GOVERNOR 18 удален
BOXOSD OSD DISABLE SW 19  
BOXTELEMETRY TELEMETRY 20  
BOXGTUNE GTUNE 21 удален
BOXRANGEFINDER RANGEFINDER 22 удален
BOXSERVO1 SERVO1 23  
BOXSERVO2 SERVO2 24  
BOXSERVO3 SERVO3 25  
BOXBLACKBOX BLACKBOX 26  
BOXFAILSAFE FAILSAFE 27  
BOXAIRMODE AIR MODE 28  
BOX3D DISABLE / SWITCH 3D 29  
BOXFPVANGLEMIX FPV ANGLE MIX 30  
BOXBLACKBOXERASE BLACKBOX ERASE (>30s) 31  
BOXCAMERA1 CAMERA CONTROL 1 32  
BOXCAMERA2 CAMERA CONTROL 2 33  
BOXCAMERA3 CAMERA CONTROL 3 34  
BOXFLIPOVERAFTERCRASH FLIP OVER AFTER CRASH 35  
BOXPREARM PREARM 36  
BOXBEEPGPSCOUNT BEEP GPS SATELLITE COUNT 37  
BOX3DDISABLESWITCH 3D ON A SWITCH 38 удален
BOXVTXPITMODE VTX PIT MODE 39  
BOXUSER1 USER1 40  
BOXUSER2 USER2 41  
BOXUSER3 USER3 42  
BOXUSER4 USER4 43  
BOXPIDAUDIO PID AUDIO 44  
BOXPARALYZE PARALYZE 45  
BOXGPSRESCUE GPS RESCUE 46  
BOXACROTRAINER ACRO TRAINER 47  
BOXDISABLEVTXCONTROL DISABLE VTX CONTROL 48  
BOXLAUNCHCONTROL LAUNCH CONTROL 49  
BOXMSPOVERRIDE MSP OVERRIDE 50  

Примечание: Значение 255 определено как BOXID_NONE и означает, что слот PINIO не используется.


Примеры использования

Включение/выключение устройств

Многие встроенные или внешние устройства/модули имеют специальный провод для включения/выключения. Поведение зависит от устройства:

  • Некоторым требуется подать сигнал HIGH (логическую 1, примерно 3.3 В) на этот провод для включения.
  • Другим требуется сигнал LOW (логический 0, примерно 0 В) для включения.

Обязательно изучите документацию вашего устройства для правильного подключения.

Поиск предопределённых функций PINIO

Некоторые полётные контроллеры поставляются с заранее настроенными PINIO, например для переключения камеры, подачи питания VTX или управления встроенным Bluetooth.

Используйте команду resource на работающей плате для просмотра назначения выводов:

resource PINIO 1 B00

Это означает, что PINIO #1 назначен на вывод B00. Для добавления новых PINIO не удаляйте существующие ресурсы, а увеличивайте индекс.

Отключение встроенного Bluetooth при взведении мотора (ARM)

Большинство контроллеров с Bluetooth модулем имеют настройку по умолчанию. Пример конфигурации:

# resource
...
resource PINIO 1 B00

# get pinio_config
pinio_config = 129,1,1,1

# get pinio_box
pinio_box = 0,255,255,255

PINIO #1 назначен на вывод B00, pinio_box равен 0, что соответствует боксу BOXARM (ARM). При взведении бокс активируется.

pinio_config равно 129 (128 + 1), то есть PINIO настроен как Output-Push-Pull с инверсией. Физический сигнал на выводе инвертирован — при активации бокса сигнал LOW (~0 В).

Встроенный Bluetooth выключается подачей LOW на вывод (по проекту схемы).

Отключение внешнего Bluetooth UART-адаптера при взведении мотора (ARM)

Принцип тот же, что и для встроенного модуля. Для настройки:

  1. Выберите свободный вывод для управления устройством.
  2. Уточните, какой сигнал (HIGH или LOW) требуется для включения/выключения устройства.

Пример:

Имеется PPM-вывод B09, который освобождается для управления внешним Bluetooth-модулем с проводом POWER или ENABLE. Документация показывает, что сигнал LOW выключает модуль.

Для настройки:

resource PPM B09
resource PINIO 1 C08
resource PINIO 2 C09

resource PPM none
resource PINIO 3 B09

# get pinio_config
pinio_config = 1,1,1,1

# set pinio_config = 1,1,129,1  # Устанавливаем инверсию (129) для PINIO #3

# get pinio_box
pinio_box = 40,41,255,255

# set pinio_box = 40,41,0,255  # Привязываем PINIO #3 к боксу ARM (ID=0)

# save

Комментарий:

  • Для PINIO #3 изменяем pinio_config с 1 на 129 (инверсия), чтобы устройство выключалось при активации бокса (ARM).
  • Изменяем pinio_box с 255 на 0 (BOXARM), чтобы PINIO #3 активировался при взведении.
  • Не забывайте выполнять команду save.

Включение Bluetooth в режиме Pit Mode (VTX PIT MODE)

Идентичная настройка, но для pinio_box PINIO #3 устанавливаем 39 (BOXVTXPITMODE), чтобы Bluetooth включался при активации Pit Mode.

Управление включением/выключением VTX с пульта с помощью пользовательской функции (USERn)

Цель — управлять питанием VTX с помощью переключателя на пульте.

Требуется:

  • VTX с выводом для включения/выключения (POWER / ENABLE)
  • Функция на плате контроллера, позволяющая отключать питание VTX (готовый модуль типа RealPit или самодельная схема с транзистором)
  • Использование одного из боксов BOXUSER<n> (ID 40–43), который появится на вкладке Modes и может быть назначен на канал пульта

Пример:

# resource
resource PPM B03

# resource PPM none  # освобождаем ресурс PPM

# resource PINIO 1 B03  # назначаем вывод B03 на PINIO #1

# get pinio_box
pinio_box = 255,255,255,255

# set pinio_box = 40,255,255,255  # привязываем PINIO #1 к боксу USER1 (ID=40)

# save

Комментарий:

  • pinio_config менять не требуется — значение по умолчанию 1 (Output-Push-Pull) подходит для включения по сигналу HIGH.
  • Первое значение pinio_box устанавливается в 40 (BOXUSER1), так как это первая пользовательская функция.
  • После сохранения в конфигураторе на вкладке Modes появится режим USER1, который можно привязать к каналу пульта.
  • Не забудьте выполнить save.

Ключевые термины и пояснения

  • PINIO (ПИНИО): Абстракция GPIO вывода для универсального управления.
  • PINIO BOX (Бокс ПИНИО): Механизм привязки логических режимов (боксов) к физическим выводам PINIO.
  • CLI (Command Line Interface): Интерфейс командной строки для настройки полётного контроллера.
  • Resource (Ресурс): Команда CLI для назначения физических выводов микроконтроллера на логические функции.
  • Box (Бокс / Режим): Логическое состояние (например, ARM, ANGLE, USER1), которое можно включить или выключить с помощью переключателя на пульте или автоматически.
  • Permanent ID (Постоянный ID): Уникальный числовой идентификатор бокса.
  • ARM (Взведение): Режим, когда двигатели коптера готовы к работе (обычно активируется стиком или переключателем).
  • VTX (Video Transmitter): Видеопередатчик.
  • Pit Mode: Режим пониженной мощности VTX (часто для соблюдения правил или экономии энергии на земле).
  • Push-Pull Output (Двухтактный выход): Тип выхода цифровой логики, способный явно выдавать и высокий (HIGH), и низкий (LOW) уровень.
  • Inverted (Инвертированный): Состояние физического вывода, противоположное логическому состоянию бокса (HIGH при выключенном боксе, LOW при включённом).
  • BOXID_NONE (255): Значение, указывающее, что слот PINIO не используется.
  • USER1 - USER4: Пользовательские боксы/режимы, которые можно свободно назначать для управления через PINIO.
Betaflight | PINIO & PINIO Box (ПИНИО и Бокс ПИНИО) ID 14
  • Betaflight | Функции удержания высоты (Altitude Hold) и удержания позиции (Position Hold)

    Betaflight 4.6 представляет функции удержания высоты (Altitude Hold) и удержания позиции (Position Hold). Эти функции позволяют пилоту использовать тумблер для включения функции зависания дрона в фиксированном месте и на постоянной высоте в режиме Angle. Стики можно использовать для регулировки высоты и положения. Обязательно требуется GPS, а использование магнитометра (компаса) настоятельно рекомендуется.