naza2frsky - адаптер смартпорта для FrSky за 3$

Davest

О, спасибо! Помчал заказывать Mini atmega328. А с чего адаптация кстати? Можно ссыль на источник?

11 days later
kensi

Доброго времени суток Алексей, я тоже хочу попробовать прикрутить ардуинку с Вашим модом прошивки к АПМ, точнее к Crius AIOP2 прошитый мегапиратом, думаю это не принципиально. Но есть пара вопросов, прошу помощи:

  • если я верно понял, то ардуинка может измерять батарейку по баночно, но мне не понятно как по баночно ее подключить( к каким пинам ардуинки)?
    -что подключается к пинам FUEL, RPM, T1, T2, и ACC1,2,3
    спасибо, и прошу не пинать сильно если вопросы покажутся уж слишком ламерскими)
alezz

пример подключения батареи побаночно я показывал здесь: rcopen.com/forum/f123/topic386079/28
Для этого скетча под АРМ rcopen.com/forum/f123/topic386079/60 даже ничего делать не нужно, припаял резисторы и все должно работать (нужно только задать количество банок в скетче)
Вышеупомянутый скетч не мой, моя только адаптация под обычную ардуинку, поэтому подключать что-то на входы FUEL, RPM, T1, T2, и ACC1,2,3 не имеет смысла. Если же речь идет о моем naza2frsky под назу, то на первые 4 входа подразумевалось что будет подан любой PWM сигнал (с регулятора мотора, с приемыша, с сервы и т.д), на последние три - любой аналоговый с уровнем 0-3.3В Побаночно с батареей этот вариант работать не умеет, сделать конечно можно но необходимо дополнительное программирование

kensi

Верно ли я понял Вас, что выходы резистивных делителей подключаются на пины А0(первая банка),А1-2… А5-6ая банка? выбор кол-ва банок задается тут #define MAXCELLS 6? и еще, при компиляции в arduIDE 1.0.5 вываливается куча ворнингов, но проект собирается, так и должно быть? (папку GCS_MAVLink забросил в либы)

alezz

да, все верно. Еще раз повторю что проект под АРМ не моего авторства и мной не проверен (пока просто не на чем), мной сделана только минимальная адаптация под atmega 328P (фактически изменено буквально несколько строк)

kensi

Алексей, спасибо Вам огромное, больше бы у Вас получалось таких “не моих” проектов))) я соберу и буду тестить, отпишусь потом о результате, может это в конечном итоге тоже поможет кому нибудь)

kensi

Здравствуйте Алексей, собрал и подключил переходник для апм на ардуине нано, подключил так:
-D9 в s.port frsky
-rx ardu на tx порта телеметрии
при компиляции прошивки вылезло много ворнингов, но прошивка собралась (уж не знаю должно ли так быть?)
задал на экране тараниса показывать все данные какие вместились(наугад), среди них: Alt, Galt, Curr, Dist, Vfas, speed, Cell… все показатели в нуле, но телеметрия с самого приемника приходит точно так как отображается напряжения питания самого приемника и Rssi, куда бы покопать и как можно убедиться что переходник точно принимает и отправляет данные? спасибо.

и еще, на выводе Д9 ардуины висит логический ноль постоянно, так мне поведал осциллограф(((

alezz
kensi:

-D9 в s.port frsky
-rx ardu на tx порта телеметрии

уже писал что такое подключение возможно только при использовании телеметрии одновременно с другими устройствами, например радиомодемом или блютуз модулем. Если подключен только адаптер смартпорта, то нужно подключать и провод tx ardu <> rx порта телеметрии. Запросы на АРМ кто то давать ведь должен? 😃 Возможно ошибка в этом. А вообще на ардуинке во время отправки данных в смартпорт должен помигивать светодиод (который на D13 сидит)

kensi

ммм, про запросы не подумал сори, подключил по уарту полностью - ничего не поменялось… пощупал осцилом что отдает арду на тх уарта(в этот момент арду никуда не была подключена), уарт ничего не отправляет… тоесть нет запросов по мавлинку и оттого проблема?

alezz

в МиссионПланнер телеметрию включил? 😃

kensi

у меня на этом же уарте висит мавлинк осд, тоже только по rx подключена и работает… не могу понять почему не вижу хапросов от переходника, может быть в этом трабл?

alezz
kensi:

у меня на этом же уарте висит мавлинк осд, тоже только по rx подключена и работает… не могу понять почему не вижу хапросов от переходника, может быть в этом трабл?

не знаю, возможно, как уже говорил не я автор этого проекта. Попробуй тогда параллельно с ОСД-шкой включить, посмотришь результат, пойдут ли данные на ардуинку и с ардуинки в смартпорт.

Еще. Можно попробовать закомментарить это условие:

void FrSkySPort_SendPackage(uint16_t id, uint32_t value) {

  if(MavLink_Connected) {
    digitalWrite(led,HIGH);
  }

так:

void FrSkySPort_SendPackage(uint16_t id, uint32_t value) {

  //if(MavLink_Connected) {
    digitalWrite(led,HIGH);
  //}

тогда светодиод будет мигать при передаче в смартпорт независимо от того законнектился ли мавлинк или нет. Т.е. проверим и работу смартпорта и работу мавлинка

kensi

переподключил все с нуля(дабы проверить себя), прошил с поправленным кодом светодиода, диод не моргает(((на арду данные сыпятся пачками

alezz

приемник в режиме D16 забинден?

kensi

да, получаю с него все 16 каналов через самодельный переходник для sbus

kensi

да я использую D5? биндил без всяких перемычек, не думаю что беда в приемнике, думаю что то с арду, так как с нее по прtжнему ничего не льется на D9

alezz
kensi:

да я использую D5? биндил без всяких перемычек, не думаю что беда в приемнике, думаю что то с арду, так как с нее по прtжнему ничего не льется на D9

Нет, теперь точно понятно что проблема именно со смартпортом, копай в этом направлении. Прикол в том что ардуинка отвечает на запросы, новый смартпорт безхабовый, все датчики соединены на один информационный провод параллельно. Достигнуто это двунаправленным режимом - датчик спрашивают, он отвечает. Если датчик не спрашивают он молчит дабы не мешать другому.
Попробуй залить мой naza2frsky он должен отвечать приемнику независимо от того есть ли наза или нет. Понятно что в данных будут сплошные нули, но светодиод мигать обязан

kensi

Да есть тусклое помаргиваение, и оно не равномерное… это я залил прошивку для назы

пощупал сам сматртпорт на приемнике, вижу на нем непонятную активность в виде коротеньких и редких пачек, даже не пачек а скорее всего 1-байтных посылок, каждые примерно 11-12 мс…

alezz

ну так и должно быть, теперь попробуй скажем в Т1 отправлять каке нибудь число и смотреть появится ли оно на тараньке, вместо
FrSkySPort_SendPackage(FR_ID_T1, motor1_percent_get()); //Motor1
напиши
FrSkySPort_SendPackage(FR_ID_T1, 123); //Motor1