• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

SBUS processing

vivivi

New member
Привет. Погуглил, но что-то не нашел, чтобы SBUS библиотеки были портированы под esp8266. С ними могут быть какие-то подводные камни? Идея такая. Есть возможность управлять GoPro (спускать затвор, например) через esp8266 через кнопку, подключенную к gpio2. Это уже проверено и работает. Теперь нужно, чтобы команды управления GoPro выгребались из SBUS. Вроде должно работать, но непонятно как отлаживать. Если читать SBUS через Rx, то как выводить что-то в консоль? Через gpio же не получится, наверное?
 

vivivi

New member
@vivivi выводят в TX, же. Верно? И есть ещё SoftSerial.
С выводом вроде разобрался, TX еще через GPIO2 можно слать. Теперь еще с самим SBUS надо разобраться. BolderFlight SBUS библиотека имеет вот такие варианты


// begin the serial port for SBUS
#if defined(__MK20DX128__) || defined(__MK20DX256__) // Teensy 3.0 || Teensy 3.1/3.2
_bus->begin(_sbusBaud,SERIAL_8E1_RXINV_TXINV);
SERIALPORT = _bus;
#elif defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__MKL26Z64__) // Teensy 3.5 || Teensy 3.6 || Teensy LC
_bus->begin(_sbusBaud,SERIAL_8E2_RXINV_TXINV);
#elif defined(STM32L496xx) || defined(STM32L476xx) || defined(STM32L433xx) || defined(STM32L432xx) // STM32L4
_bus->begin(_sbusBaud,SERIAL_SBUS);
#elif defined(_BOARD_MAPLE_MINI_H_) // Maple Mini
_bus->begin(_sbusBaud,SERIAL_8E2);
#endif

Вот что может подойти для 8266 - SERIAL_SBUS или SERIAL_8E2? Еще не раскопал пока.
 

Алексей.

Active member
BolderFlight SBUS библиотека имеет вот такие варианты
На сегодняшний день у этой библиотеки заявлена поддержка esp32 (добавлена в октябре 18-го) и в коде соответственно есть инициализация для esp32
Код:
    // begin the serial port for SBUS
   #if defined(__MK20DX128__) || defined(__MK20DX256__)  // Teensy 3.0 || Teensy 3.1/3.2
       _bus->begin(_sbusBaud,SERIAL_8E1_RXINV_TXINV);
       SERIALPORT = _bus;
   #elif defined(__IMXRT1052__) || defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__MKL26Z64__)  // Teensy 4.0 || Teensy 3.5 || Teensy 3.6 || Teensy LC
       _bus->begin(_sbusBaud,SERIAL_8E2_RXINV_TXINV);
   #elif defined(STM32L496xx) || defined(STM32L476xx) || defined(STM32L433xx) || defined(STM32L432xx)  // STM32L4
       _bus->begin(_sbusBaud,SERIAL_SBUS);
   #elif defined(_BOARD_MAPLE_MINI_H_) // Maple Mini
       _bus->begin(_sbusBaud,SERIAL_8E2);
   #elif defined(ESP32)                // ESP32
        _bus->begin(_sbusBaud,SERIAL_8E2);
  #elif defined(__AVR_ATmega2560__)  // Arduino Mega 2560
        _bus->begin(_sbusBaud, SERIAL_8E2);
#endif
Почему нет упоминания о esp8266 не понятно
 

vivivi

New member
В общем, все получилось. Я взял библиотеку, которую использовали вот тут управление камерой gopro с пульта frsky taranis, для Ардуины с теми же целями. Я ее воткнул в 8266, и все получилось. Аппаратный таймер timer1 каждую миллисекунду опрашивает SBUS, в loop читаются значания каналов и посылаются wifi команды камере. Камера немного тупит, поэтому пришлось поставить полусекундный delay после отправки команды, чтобы не дребезжало. Можно было сделать более элегантно, но ради такого небольшого функционала не захотел тратить много времени.
 
Сверху Снизу