Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

Блок служит для того, чтобы подключить радиоапаратуру по протокола S-BUS к ESP32

Ответить
Bond2222
Рядовой
Сообщения: 8
Зарегистрирован: 05.01.2022{, 20:09}
Репутация: 1
Имя: Dima

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#1

Сообщение Bond2222 » 10.07.2022{, 00:55}

Здравствуйте.
Хочу подключить радиоапаратуру Radiolink AT10 к ESP32 по протоколу S-BUS. Нашел подходящую библиотеку на GitHub (https://github.com/bolderflight/sbus), и даже протестировал пример кода, который там был с выводом данных в com порт.
Пример работает отлично, все данные с пульта (16 каналов данных, и 2 цифровых ) передаются через ESP32 в COM порт.

Удалось сделать свой блок SBus, и протестировать, работает как и задумывался. Все 16 выходов с данными и 2 цифровых, работают и отображаются из пользовательского блока. Отправку данных в COM порт убрал из кода.

Конечно было бы круто ещё сделать обратную связь ( телеметрию ) с ESP32 назад на радиоаппаратуру. (Пару лет назад видел как один программист для себя так сделал).

Спасибо большое за помощь. Это мой первый пользовательский блок и не судите строго. Буду очень рад если он кому то пригодится.


Описание блока:
Сигнальный провод SBUS подключен к пину GPIO16 (RX2)

Вход:
EN (Boolean) - при "true" блок работает, при "false" не работает

Выхода:
CH1 - CH16 (Integer) - выхода с данными.
CH17 (Boolean) - нормально на нем "false", если теряется сигнал между радиоаппаратурой и приемником то стает "true"
CH18 (Boolean) - нормально на нем "false", если приемник перешел в безопасный режим то стает "true" ( обычно стает в безопасный режим сразу после потери сигнала)
Вложения
Шина_данных_S_BUS_(Code_-_Basic).ubi
(389.19 КБ) 19 скачиваний
Последний раз редактировалось Bond2222 10.07.2022{, 18:12}, всего редактировалось 9 раз.

aidar_i
Полковник
Сообщения: 3126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

Блок протокола S-BUS для ESP32

#2

Сообщение aidar_i » 10.07.2022{, 08:25}

Bond2222 писал(а):
10.07.2022{, 00:55}
нужна помощь специалистов.
В библиотеке 16 каналов.
Создайте выхода "sbus_data[ i ]", где i от 0 до 15

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок протокола S-BUS для ESP32

#3

Сообщение Dryundel » 10.07.2022{, 08:51}

Bond2222 писал(а):
10.07.2022{, 00:55}
Пример работает отлично, все данные с пульта (18 каналов) передаются через ESP32 в COM порт.
А точно каналов 18, а не 16?

Отправлено спустя 6 минут 8 секунд:
aidar_i писал(а):
10.07.2022{, 08:25}
Создайте выхода "sbus_data[ i ]", где i от 0 до 15

aidar_i, я думаю здесь надо делать, а не намекать. :)
Такие циклы не для новичков.
Там всего то пару строчек дописать надо, но сомневаюсь, что вопрошающий справится.

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 681
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 51
Имя: Виктор

Блок протокола S-BUS для ESP32

#4

Сообщение ViktorPetrov » 10.07.2022{, 11:23}

Пару строчками на мой взгляд, там не обойдешься :(
СпойлерПоказать
SBUS.ino
(598 байт) 20 скачиваний
Готовое решение на aliexpress стоит как две ESP32.

aidar_i
Полковник
Сообщения: 3126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

Блок протокола S-BUS для ESP32

#5

Сообщение aidar_i » 10.07.2022{, 11:29}

Dryundel писал(а):
10.07.2022{, 08:57}
aidar_i, я дума
Я не намекаю.
Вместо i ставьте цифры от 0 до 15 и создайте 16 выходов, можно, конечно, изменить количество в библиотеке до 18, но я не изучал библиотеку , не знаю будет ли работать 18 каналов.
Например, так
can1=sbus_data[ 0 ];
can2=sbus_data[ 1 ];
.....
can16=sbus_data[ 15 ];
Где can1...can16 выхода блока в int.

Bond2222
Рядовой
Сообщения: 8
Зарегистрирован: 05.01.2022{, 20:09}
Репутация: 1
Имя: Dima

Блок протокола S-BUS для ESP32

#6

Сообщение Bond2222 » 10.07.2022{, 12:39}

Dryundel писал(а):
10.07.2022{, 08:57}
Bond2222 писал(а):
10.07.2022{, 00:55}
Пример работает отлично, все данные с пульта (18 каналов) передаются через ESP32 в COM порт.
А точно каналов 18, а не 16?

Все верно, каналов с данными 16 . Если я точно понял, то в описании 17 и 18 канал это цифровые каналы.
На практике канал 17 и 18 работают так: при потере сигнала между радиоаппаратурой и приемником, сперва на канале 17 появляется "1" и через секунду на 18 канале появляется "1". Они тоже важные, так как определяют наличие связи.

Отправлено спустя 5 минут 21 секунду:
aidar_i писал(а):
10.07.2022{, 11:29}
Dryundel писал(а):
10.07.2022{, 08:57}
aidar_i, я дума
Я не намекаю.
Вместо i ставьте цифры от 0 до 15 и создайте 16 выходов, можно, конечно, изменить количество в библиотеке до 18, но я не изучал библиотеку , не знаю будет ли работать 18 каналов.
Например, так
can1=sbus_data[ 0 ];
can2=sbus_data[ 1 ];
.....
can16=sbus_data[ 15 ];
Где can1...can16 выхода блока в int.
Огромное спасибо за подсказку. Я щас работаю над блоком, но не уверен до конца что все получится, так как я только новичок и учусь, но буду стараться.
Вложения
Блок.png
com port.jpg

aidar_i
Полковник
Сообщения: 3126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

Блок протокола S-BUS для ESP32

#7

Сообщение aidar_i » 10.07.2022{, 14:24}

Эти каналы так сделали?
CH17 = sbus.ch17();
CH18 = sbus.ch 18();
17, 18 в bool.

Bond2222
Рядовой
Сообщения: 8
Зарегистрирован: 05.01.2022{, 20:09}
Репутация: 1
Имя: Dima

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#8

Сообщение Bond2222 » 10.07.2022{, 16:56}

aidar_i писал(а):
10.07.2022{, 14:24}
Эти каналы так сделали?
CH17 = sbus.ch17();
CH18 = sbus.ch 18();
17, 18 в bool.
Да, так и сделал, но с этими двома каналами ( CH17; CH18 ) ничего не получилось, пока не подсмотрел в коде с примером, как они назывались при отправки в UARD:
CH17 = sbus_rx.lost_frame();
CH18 = sbus_rx.failsafe();
По правде, потом уже досмотрел, в описании на GitHub ниже так и было указано))))

Блок SBus протестировал, работает как и задумывался. Все 16 выходов с данными и 2 цифровыми, работают и отображаются из пользовательского блока. Отправку данных в COM порт убрал из кода.
Последний раз редактировалось Bond2222 10.07.2022{, 18:08}, всего редактировалось 2 раза.

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 681
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 51
Имя: Виктор

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#9

Сообщение ViktorPetrov » 10.07.2022{, 18:05}

Разве на ESP32 есть аналоговые выходы?

aidar_i
Полковник
Сообщения: 3126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#10

Сообщение aidar_i » 10.07.2022{, 18:32}

Bond2222 писал(а):
10.07.2022{, 16:56}
Блок SBus протестировал, работает как и задумывался.
Оформите как следует и выложите в тему пользовательские блоки.
Предварительно испытайте основательно.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#11

Сообщение Dryundel » 10.07.2022{, 22:25}

ViktorPetrov писал(а):
10.07.2022{, 18:05}
Разве на ESP32 есть аналоговые выходы?
Вы удивитесь но есть. Целых две штуки! :)

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 681
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 51
Имя: Виктор

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#12

Сообщение ViktorPetrov » 11.07.2022{, 12:47}

Dryundel писал(а):
10.07.2022{, 22:25}
Вы удивитесь но есть. Целых две штуки! :)
Частоту дискредитации для ЦАП , какую порекомендуете выставить?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Подключение радиоаппаратуры к ESP32 по протоколу S-BUS

#13

Сообщение Dryundel » 11.07.2022{, 13:43}

ViktorPetrov писал(а):
11.07.2022{, 12:47}
Частоту дискредитации для ЦАП , какую порекомендуете выставить?
Смотря для чего.
Частота дискретизации ЦАП контроллера ESP32 может достигать порядка 13 МГц, однако это серьезная нагрузка для МК при модуляции. Если воспроизводить голос, то думаю можно обойтись 100 кГц. Но можно и на радиопередачу звука замахнуться.
Вот отличная статья на этот счет.
«Привет, Хабр» на частоте 835 кГц

Ответить

Вернуться в «Помогите, а то я "нимагу"»