Подключение радиоаппаратуры к ESP32 по протоколу S-BUS
Подключение радиоаппаратуры к ESP32 по протоколу S-BUS
Здравствуйте.
Хочу подключить радиоапаратуру 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" ( обычно стает в безопасный режим сразу после потери сигнала)
Хочу подключить радиоапаратуру 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" ( обычно стает в безопасный режим сразу после потери сигнала)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Bond2222 10 июл 2022, 18:12, всего редактировалось 9 раз.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Блок протокола S-BUS для ESP32
В библиотеке 16 каналов.
Создайте выхода "sbus_data[ i ]", где i от 0 до 15
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 52 раза
Блок протокола S-BUS для ESP32
А точно каналов 18, а не 16?Bond2222 писал(а): 10 июл 2022, 00:55 Пример работает отлично, все данные с пульта (18 каналов) передаются через ESP32 в COM порт.
Отправлено спустя 6 минут 8 секунд:
[ref=#ff8000]aidar_i[/ref], я думаю здесь надо делать, а не намекать.

Такие циклы не для новичков.
Там всего то пару строчек дописать надо, но сомневаюсь, что вопрошающий справится.
- ViktorPetrov
- Капитан
- Сообщения: 806
- Зарегистрирован: 09 апр 2018, 23:56
- Имя: Виктор
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Блок протокола S-BUS для ESP32
Пару строчками на мой взгляд, там не обойдешься
[spoiler] [/spoiler] Готовое решение на aliexpress стоит как две ESP32.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Блок протокола S-BUS для ESP32
Я не намекаю.
Вместо i ставьте цифры от 0 до 15 и создайте 16 выходов, можно, конечно, изменить количество в библиотеке до 18, но я не изучал библиотеку , не знаю будет ли работать 18 каналов.
Например, так
can1=sbus_data[ 0 ];
can2=sbus_data[ 1 ];
.....
can16=sbus_data[ 15 ];
Где can1...can16 выхода блока в int.
Блок протокола S-BUS для ESP32
Dryundel писал(а): 10 июл 2022, 08:57А точно каналов 18, а не 16?Bond2222 писал(а): 10 июл 2022, 00:55 Пример работает отлично, все данные с пульта (18 каналов) передаются через ESP32 в COM порт.
Все верно, каналов с данными 16 . Если я точно понял, то в описании 17 и 18 канал это цифровые каналы.
На практике канал 17 и 18 работают так: при потере сигнала между радиоаппаратурой и приемником, сперва на канале 17 появляется "1" и через секунду на 18 канале появляется "1". Они тоже важные, так как определяют наличие связи.
Отправлено спустя 5 минут 21 секунду:Огромное спасибо за подсказку. Я щас работаю над блоком, но не уверен до конца что все получится, так как я только новичок и учусь, но буду стараться.aidar_i писал(а): 10 июл 2022, 11:29Я не намекаю.
Вместо i ставьте цифры от 0 до 15 и создайте 16 выходов, можно, конечно, изменить количество в библиотеке до 18, но я не изучал библиотеку , не знаю будет ли работать 18 каналов.
Например, так
can1=sbus_data[ 0 ];
can2=sbus_data[ 1 ];
.....
can16=sbus_data[ 15 ];
Где can1...can16 выхода блока в int.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Блок протокола S-BUS для ESP32
Эти каналы так сделали?
CH17 = sbus.ch17();
CH18 = sbus.ch 18();
17, 18 в bool.
CH17 = sbus.ch17();
CH18 = sbus.ch 18();
17, 18 в bool.
Подключение радиоаппаратуры к ESP32 по протоколу S-BUS
Да, так и сделал, но с этими двома каналами ( CH17; CH18 ) ничего не получилось, пока не подсмотрел в коде с примером, как они назывались при отправки в UARD:aidar_i писал(а): 10 июл 2022, 14:24 Эти каналы так сделали?
CH17 = sbus.ch17();
CH18 = sbus.ch 18();
17, 18 в bool.
CH17 = sbus_rx.lost_frame();
CH18 = sbus_rx.failsafe();
По правде, потом уже досмотрел, в описании на GitHub ниже так и было указано))))
Блок SBus протестировал, работает как и задумывался. Все 16 выходов с данными и 2 цифровыми, работают и отображаются из пользовательского блока. Отправку данных в COM порт убрал из кода.
Последний раз редактировалось Bond2222 10 июл 2022, 18:08, всего редактировалось 2 раза.
- ViktorPetrov
- Капитан
- Сообщения: 806
- Зарегистрирован: 09 апр 2018, 23:56
- Имя: Виктор
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Подключение радиоаппаратуры к ESP32 по протоколу S-BUS
Оформите как следует и выложите в тему пользовательские блоки.
Предварительно испытайте основательно.
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 52 раза
- ViktorPetrov
- Капитан
- Сообщения: 806
- Зарегистрирован: 09 апр 2018, 23:56
- Имя: Виктор
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Подключение радиоаппаратуры к ESP32 по протоколу S-BUS
Частоту дискредитации для ЦАП , какую порекомендуете выставить?
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 52 раза
Подключение радиоаппаратуры к ESP32 по протоколу S-BUS
Смотря для чего.ViktorPetrov писал(а): 11 июл 2022, 12:47 Частоту дискредитации для ЦАП , какую порекомендуете выставить?
Частота дискретизации ЦАП контроллера ESP32 может достигать порядка 13 МГц, однако это серьезная нагрузка для МК при модуляции. Если воспроизводить голос, то думаю можно обойтись 100 кГц. Но можно и на радиопередачу звука замахнуться.
Вот отличная статья на этот счет.
«Привет, Хабр» на частоте 835 кГц
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя