Как подружить две библиотеки iBUSTelemetry.h и SoftwareSerial.h ?
- Войдите на сайт для отправки комментариев
Привет знатокам.
Как подружить две библиотеки iBUSTelemetry.h и SoftwareSerial.h ?
Мне надо по IBUS принимать и отправлять данные. Для отправки есть библиотека iBUSTelemetry.h , а для приема iBUS.h. iBusBM.h не подходит , так как она HardwareSerial применяет, который занят.
Библиотека iBUSTelemetry.h создает первый SoftwareSerial_1. Думаю с библиотекой SoftwareSerial.h создать еще один SoftwareSerial_2. Но они друг дружке мешают. Похоже что работают от одного таймера (тут я ниже нуля только гадаю). Через второй SoftwareSerial_2 запущу прием данных при помощи iBUS.h.
У меня эти два SoftwareSerial будет работать по одиночке. Первый работает, второй отдыхает и на оборот. Это думаю сделать командой listen. Одновременной работы не будет.
Сылки на библиотеки :
iBUSTelemetry.h https://github.com/adis1313/iBUSTelemetry-Arduino
SoftwareSerial.h https://github.com/PaulStoffregen/SoftwareSerial
Софтовый работает через PCINT, попробуй разнести на разные группы..
Да, мне пришлось заворачивать всё в обёртку SomeSerial (аналогичную задачу)
я так понял IBUS.h не взлетит, она для прямого канала, надо разбираться как передается информация в обратном канале, давай ссылку на iBusBM.h
Спасибо за ответ.
Сылка на iBusBM.h https://github.com/bmellink/IBusBM.
А вот здесь я ниже нуля ---> Софтовый работает через PCINT, попробуй разнести на разные группы..
Канечно буду искать, но пока пойму ни одна неделя пройдет. Это я свой первый проект делаю и Ардуинку первый раз увидел месяц назад. Хотя за месяц уже много узнал.
Если поможет , то ошибка
Если можете, помогите.
Извините за ошибки, я не русский.
Если можете, помогите.
эта библиотека тоже не пойдёт, её применение на стороне радиоуправляемой модели.
Arduino library for Flysky/Turnigy RC iBUS protocol - servo (receive) and sensors/telemetry (send) using hardware UART.
Нужна библиотека разбирающая sensors/telemetry (send)...
Наверно её можно написать разобравшись с библиотекой передачи телеметрии, но это не мой уровень
Да, кстати, библиотека телеметрии заточена под аппаратуру FlySky на 14 каналов доступные в прошивке qba667 Fly Plus.
Если это ваш первый проект - просто примите как данность, что в программе может быть только один СофтСериал.
Это строго говоря неверно, но новичку два сериала не запустить.
Такая глупая мысль пришла, библиотека iBUSTelemetry.h отправляет данные. А, если в нее добавить прием из iBUS.h. или iBusBM.h. Они все в отдельности рабочие.
Я упертый и буду искать, капатса, спрашивать. Ну когда не надоест искать куплю Мегу, но это не скоро так случитса.
Два софварных порта можно переключать. Один работает, другой спит. Мне не надо, чтоб они оба одновременно работали.
Такая глупая мысль пришла, библиотека iBUSTelemetry.h отправляет данные. А, если в нее добавить прием из iBUS.h. или iBusBM.h. Они все в отдельности рабочие.
так они не телеметрию принимают а параметры всех 14 каналов (значение PWM)...
или я не пойму, что ты хочешь сделать
ты хочешь сделать свой полётный контроллер?
Все, что надо разбирать описано в этой библиотеке - https://github.com/qba667/FlySkyI6/blob/master/source/source/ibustelemetry.h
В софтсериале даже функция есть - listen(). Для выбора активного экземпляра софтсериала. Так что я бы не стал ждать, пока рак на горе свистнет и заслушают оба чудесным образом.
Такая глупая мысль пришла, библиотека iBUSTelemetry.h отправляет данные. А, если в нее добавить прием из iBUS.h. или iBusBM.h. Они все в отдельности рабочие.
так они не телеметрию принимают а параметры всех 14 каналов (значение PWM)...
или я не пойму, что ты хочешь сделать
ты хочешь сделать свой полётный контроллер?
Все, что надо разбирать описано в этой библиотеке - https://github.com/qba667/FlySkyI6/blob/master/source/source/ibustelemetry.h
iBUS.h Принимает 14 каналов PWM. Можно пользоватса Software portom.
iBusBM.h. Принимает 14 каналов PWM передает телеметрию, но только с нескольки датчиков. Использует Hardware порт.
iBUSTelemetry.h передает телеметрию со всех датчиков, которые мне нужны. Пользетса Software портом.
Да, такая есть. Я знаю это. Вот данной функцией я и хочу пользоваться при переключений с приема на передачу и на оборот. Но вот проблема в том, что софтсериал и IbusTelemetry вместе работать не может.
Мне нужны две библиотеки IbusTelemetry и (IBUS или IBUSBM). IbusTelemetry уже в библиотеке сделан софтваресериал. IBUS можно было бы подкльчить через SoftwareSerial создав порт. Но как писал IbusTelemetry и SoftwareSerial вместе не может работать.
iBUS.h Принимает 14 каналов PWM. Можно пользоватса Software portom.
iBusBM.h. Принимает 14 каналов PWM передает телеметрию, но только с нескольки датчиков. Использует Hardware порт.
iBUSTelemetry.h передает телеметрию со всех датчиков, которые мне нужны. Пользетса Software портом.
то есть вам даже не нужно два порта, достаточно чуть поправить библиотеки iBUS.h и iBUSTelemetry.h, чтобы они не открывали каждая свой СофтСериал, а работали с одним и тем же
то есть вам даже не нужно два порта, достаточно чуть поправить библиотеки iBUS.h и iBUSTelemetry.h, чтобы они не открывали каждая свой СофтСериал, а работали с одним и тем же
пока совершенно непонятно что именно ТС делает, в приёмнике порты на приём (по нему принимается значение PWM для 14 каналов) и передачу (по нему обратный канал телеметрии обрабатываемый пультом управления) разделены. Изначально я думал, что ТС имеет желание сделать свои датчики телеметрии с протоколом IBUS
iBUS.h Принимает 14 каналов PWM. Можно пользоватса Software portom.
iBusBM.h. Принимает 14 каналов PWM передает телеметрию, но только с нескольки датчиков. Использует Hardware порт.
iBUSTelemetry.h передает телеметрию со всех датчиков, которые мне нужны. Пользетса Software портом.
то есть вам даже не нужно два порта, достаточно чуть поправить библиотеки iBUS.h и iBUSTelemetry.h, чтобы они не открывали каждая свой СофтСериал, а работали с одним и тем же
Можно и так. Как писал у меня хардваре уже занят. А прием и передача на софтваре. Это один или два порта мне разницы нет. С одним даже лучше.
iBUSTelemetry.h передает телеметрию со всех датчиков, которые мне нужны. Пользетса Software портом.
нет, он использует - https://github.com/nickstedman/SoftwareSerialWithHalfDuplex
то есть вам даже не нужно два порта, достаточно чуть поправить библиотеки iBUS.h и iBUSTelemetry.h, чтобы они не открывали каждая свой СофтСериал, а работали с одним и тем же
пока совершенно непонятно что именно ТС делает, в приёмнике порты на приём (по нему принимается значение PWM для 14 каналов) и передачу (по нему обратный канал телеметрии обрабатываемый пультом управления) разделены. Изначально я думал, что ТС имеет желание сделать свои датчики телеметрии с протоколом IBUS
Вы правы. У меня свои датчики телеметрии с протоколом IBUS. они уже испробаваны с iBUSTelemetry и хорошо работают. Два из них очень нужны. Еще три нужны, ну дальше видно будет.
Ребята, я в программирование ноль. Английского языка не знаю. Учить и то, и другое поздновато. Мне летом 60 лет. Но как писал , в пространстве интернета много чего нашел и применил. Я даже не думал, что за полтора месяца можно старому новичку столько узнать и сделать. То что сделал, это не тупые копии с интернета. Я делал под себя и старалса понять , что делаю.
Не обижайте, помогите.
Рисуйте структурную схему, что вы там конструируете! Прокладку на шине IBUS на ардуине UNO(nano) c интеграцией своих датчиков я так понимаю
Рисуйте структурную схему, что вы там конструируете! Прокладку на шине IBUS c интеграцией своих датчиков я так понимаю
Все сегодня. Пошел спать. Завтра очень рано вставать. На работе попробую описать и нарисовать свои хотелки.
Большое спасибо сегодня.
Привет.
Попробую описать свой проект.
В моем проекте будет занято не мене 10 каналов принимаемых с ФлиСки. 4 канала для выбора режима работы и адресации памяти и других настроек это два потенциометра и 2 тумблера ( один из них трехпозиционный SwC ). Все 4 канала падключаетса на прямую приемник iA6b --> АРДУНО без всяких IBUS. Остальные данные еще 6 каналов АРДУИНО принимает по IBUS (iBUS.h). При выключеных тумблерах Идет прием с пульта и можно начать ручное управление всеми органами управления с пульта. При включении трехпозиционного в среднее положение переходим в фазу настроек и ручное управление отключаетса , а включаетса телеметрия (iBUSTelemetry.h). Остаетса рабочими также 4канала выше описаны, оставшиеся 6 бездействует отключены. После настроек трехпозиционный тумблер переключаю в третье положение и тогда телеметрия (iBUSTelemetry.h) остаетса работать а (iBUS.h) - выключеным. В этом положении обьект в режиме АВТО и все управление с Ардуино.
Так с описания видно, что (iBUS.h) применяетса только в исходном положении трехпозиционного тумблера. (iBUSTelemetry.h) применяетса в остальных двух положениях тумблера SwC .
SwC 0 положение BUS.h
SwC 1 положение iBUSTelemetry.h
SwC 2 положение iBUSTelemetry.h
Как то так
попробуй разнеси IBUS.h и телеметрию -iBUSTelemetry.h на разные PCINT (их использует SoftwareSerial):
Из примера телеметрии:
iBUSTelemetry telemetry(11); // I use only PCINT0 interrupt vector, so you can use D8 to D13 pins.
TC! Ты где пропал? Показывай подключение приёмника!
Так?
Хотите сказать, что при переключении передатчика в режим IBUS остаются доступны 6 каналов по PWM и становятся доступны 14 каналов по IBUS?
Собрал два примера из библиотек в единое целое, в библиотеке iBUS.h заменил порт на AltSoftSerial.h, компилируется без ошибок и предупреждений, осталось проверить на железе:
Удастся проверить?
Удастся проверить?
и не будет работать. Обратите внимание на вот этот окмментарий в библиотеке AltSoftSerial
:
так aduino nanoкак и Uno
// Arduino Uno 9 8 10
пакурили это самвспомнил. Сейчас попробую
так aduino nanoкак и Uno
// Arduino Uno 9 8 10
пакурили это самвспомнил. Сейчас попробую
в коде выше вот так:
так работать не будет
и не будет работать. Обратите внимание на вот этот окмментарий в библиотеке AltSoftSerial
то, что протокол IBUS проблемный (для меня) и к бабке не ходи, лет 5 назад так его и не одолел (на атмеге, на STM он работает, в тойже прошивке INAV), но так как мне хватало 8 каналов и не парился, сподвигло, что кому-то это еще кроме меня интересно...
Да, это не только на этой библиотеке, от неё есть еще форки:
у меня с этим всё нормально (но не работает):
так aduino nanoкак и Uno
// Arduino Uno 9 8 10
пакурили это самвспомнил. Сейчас попробую
в коде выше вот так:
так работать не будет
я поправил, пост был еще 11 числа, за это время много воды утекло, выкинул всё оставив только приём IBUS, не выходит каменный цветок...надо попробовать поменять аппаратуру, может в ней косяк какой...приёмники менял
библиотек уже перепробовал кучу, естественно с правкой библиотеки iBUS
и не будет работать. Обратите внимание на вот этот окмментарий в библиотеке AltSoftSerial
то, что протокол IBUS проблемный (для меня) и к бабке не ходи, лет 5 назад так его и не одолел (на атмеге, на STM он работает, в тойже прошивке INAV), но так как мне хватало 8 каналов и не парился, сподвигло, что кому-то это еще кроме меня интересно...
Да, это не только на этой библиотеке, от неё есть еще форки:
у меня с этим всё нормально (но не работает):
сделано, но не работает
сделано, но не работает
у тебя вообще библиотеки iBUS и IBusBM на приём работают?
Поставил пульт на погрузку питания. После погрузки начну проверять по новой все библиотеки отдельно.
Поставил пульт на погрузку питания. После погрузки начну проверять по новой все библиотеки отдельно.
Железо atmega328pb
беру этот скетч с библиотекой IBusBM.h, пока приёмник с аппаратурой не соединился в мониторе по нулям, как только включаю аппаратуру, вывод прекращается:
Вывод в мониторе порта:
[/quote]
у тебя вообще библиотеки iBUS и IBusBM на приём работают?
[/quote]
IBusBM работает. Проверил еще раз.
iBUS не работает с твоей сылки. Та что работала выкинул (заменил твоей). Теперь перепробовал с нескольки мест, все не работает. Не помню от куда раньше брал. Была рабочая.
Этот рабочий код, но он hardware
Поставил пульт на погрузку питания. После погрузки начну проверять по новой все библиотеки отдельно.
Железо atmega328pb
беру этот скетч с библиотекой IBusBM.h, пока приёмник с аппаратурой не соединился в мониторе по нулям, как только включаю аппаратуру, вывод прекращается:
Вывод в мониторе порта:
IBusBM.h телеметрию не смог подключить. А прием каналов работает. Там подключение через диод ирезистор
https://github.com/betaflight/betaflight/wiki/Single-wire-FlySky-(IBus)-telemetry
gince - возьмите уже Мегу и подключите через два зардовых Сериала
так в коде прямой разбор пакетов, попробую на разных софтовых библиотеках, дам знать
IBusBM.h телеметрию не смог подключить. А прием каналов работает. Там подключение через диод ирезистор
https://github.com/betaflight/betaflight/wiki/Single-wire-FlySky-(IBus)-telemetry
это подключение актуально для прошивки betaflight, сигналы переводятся в однопроводный двунаправленный интерфейс, для INAV прошивки выходы с приёмника (SERVO - SENSOR) подключаются в стандартный порт сериал и он настраивается
Рабочий код IBusBM.h
Рабочий код IBusBM.h
А Ардуино какая?
А Ардуино какая?
NANO
А Ардуино какая?
NANO
1. Версия ардуино IDE какая
2. как подключаешь
3. Выбираешь nano из стандартного набора плат или какое-то иное ядро?
А Ардуино какая?
NANO
1. Версия ардуино IDE какая
2. как подключаешь
3. Выбираешь nano из стандартного набора плат или какое-то иное ядро?
IDE > 1.8.16
Выбираю Процессор >atmega328P
стандартный выбор
Так?
FS IA-6B servo -------> RXD nano (old bootloader)
V+ -------> 5V
G -------> GND
Так?
FS IA-6B servo -------> RXD nano (old bootloader)
V+ -------> 5V
G -------> GND
если nano (old bootloader), то незагружаета в нано. Если 328P, загружаетса.
FS IA-6B servo -------> RXD nano (328P) ----->D8
V+ -------> 5V
G -------> GND
похоже у тебя нано с новым загрузчиком, всё дело в нём, надо попробовать перешить свою, у меня не работает (
понял. Буду ждать
Первый раз полез в менять библиотеку. Поменять ничего не поменял, а только новую функцию добавил. Херня получилась.
Тут iBUS.cpp
тут iBUS.h
Ваш код с новой функцией
и прдупреждения с ошибками
Что дальше делать пока не знаю.
раненая птица в руки не даваласьэтот IBUS мне уже лет пять неподвластен, пока вообще не могу определиться в чем проблема,есть две аппаратуры FLYSKY FS-I6 перешитая на 10 каналов, и FLYSKY FS-I6S она 10 канальная, два приёмника FS-i6B, FS-i10B, работают и по PWM и по PPM и через SBUS, а вот пытаюсь настроить IBUS - ан нет, запитываю правда от USB порта, но по напряжению все норм 4.65V
Пока не одолею приём дальше идти некуда...
Я сравнивал две библиотеки SoftwareSerial и iBusTelemetry. Так iBusTelemetry скопировала полностью весь код с SoftwareSerial кроме инверсии. Потом дописали код самой телеметрии. Вот если так сделать - скопировать AltSoftSerial и в конце дописать прием PWM по IBUS.
Беда в том, что я только начинаю все это осваивать. Пока мне не под силу это сделать.