FrSky 2.4GHz FHSS, новый игрок на рынке 2.4ГГц
он подменяется двумя байтами
Можно заранее заменять запрещенные значения 0x7E и 0x7D на ближайшее меньшее или большее, чтобы не было байтстаффинга. Если с датчика пришло 0x7E=126, то заменить на 0x7F=127 и отдать в приемник (аналогично, запрещенный “7D=125” заменить на 7С=124). Тогда чип внутри приемника\передатчика не будет делать подмены байтов, длина принятого слова будет постоянной. А погрешность датчика 126~127, 125~124 не критична.
А погрешность датчика 126~127, 125~124 не критична
Для напряжения или оборотов может и не критично , а я хотел туда GPS пустить, чтоб если что, искать легче было. Видимо на выходные достану это дело из долгого ящика.
Наверное можно и так делать, дело каждого, но это не правильное решение, гораздо проще делать все как говорится “по человечески” 😃, и это абсолютно не сложно и очень быстро на самом деле.
Совершенно верно! Для датчиков, контролирующих постоянно меняющуюся величину с точностью в 8 разрядов - некритично… А вот, если точность нужна выше (одного байта мало) или данные представляют собой достаточно сложную структуру (тот же GPS) - такой способ не годится…
С удовольствием посмотрел бы на правильный алгоритм разбора таких пакетов данных… Можно на С, можно ромбиками-квадратиками… Если у кого есть ссылка - дайте…
Игорю Лытневу: Правильно, доставайте, если будут вопросы или непонятки подскажу-помогу по возможности… У меня тоже мысль есть, освободить аппаратный уарт у меги для гпс приемника а в фриску “пихать” какой-нить любой ножкой, но это как время позволит.
Павлу Бакулину: Если нужно могу показать как в моей прогрммке это написано на “СИ”, но только позже, вечером скорее всего, сейчас нет моих исходников под рукой.
Да! Посмотрю с удовольствием… Может, даже пойму чего-нибудь 😃…
У меня была мысль, подключить GPS-модуль прямо к приемнику… Для летающей модели этого было бы вполне достаточно - скорость, высота, направление на базу, координаты… Летал с телеметрией от Smalltim только с GPS-модулем - вполне устраивало!
Запустил Ская через 2Ватный бустер,значения остались прежними.
Для Павла Бакулина: Нашел на флешке свои исходники, вот кусок в котором обрабатывается приемный буфер. RX_ptr - это это переменная которая после принятия стопфлага 0x7E из уарт принимает соотв. значение…
if(RX_ptr&0x80) //Если приняли буфер по UART, то разгребаем его…
{INT8U data, m=0;
for(i=0; i<8; i++) //n<=RX_ctr;
{if(RX_buf[i]==0x7D) data=RX_buf[++i]|0x20; //байтстаффинг
else data=RX_buf[i]; //байтстаффинг
switch (RX_ptr)
{case 0x81: {data_Ur[m]=data; break;} // Пользовательские данные (грузим в буфер)
case 0x82: {DATA_Fr[m]=data; break;} // Данные FrSky (грузим в буфер)
default: break;
}
m++;
}
}
Если у кого есть ссылка - дайте…
В описании протокола есть: When byte 0x7D is received, discard this byte, and the next byte is XORed with 0x20;
Упс , опоздал.
Илья, спасибо! В приведенном Вами фрагменте кода знакомые буквы вижу - попробую “вкурить” 😛…
Игорь, я пытался перевести Гуглом эту строчку из описания протокола - результат неутешительный 😦…
Вы можете растолковать эту строчку по-русски?
Игорь, я пытался перевести Гуглом эту строчку из описания протокола - результат неутешительный …
Вы можете растолковать эту строчку по-русски?
При приеме 0x7d , отказаться от этого байта, а следующий байт XORим с 0x20;
что собственно у kuznetsovin и сделано :
if(RX_buf[i]==0x7D) data=RX_buf[++i]|0x20;
в результате
вместо : 0x7D 0x5E имеем 0x5E XOR 0x20 = 0x7E
вместо : 0x7D 0x5D имеем 0x5D XOR 0x20 = 0x7D
Павел: если детально, то… если время приема встретится байт 0x7D (When byte 0x7D is received), выбросите его (discard this byte), ваш следующий байт будет в результате логической операции - and the next byte is XORed with 0x20… В моей программке это написано:
if(RX_buf[i]==0x7D) data=RX_buf[++i]|0x20; //байтстаффинг
else data=RX_buf[i]; //байтстаффинг
опоздал 😃
XOR им с 0x20
Ну, вот! Стоило всего-лишь добавить “русское” окончание к абревиатуре XOR - сразу дошло! Спасибо!
Ну, вот! Стоило всего-лишь добавить “русское” окончание к абревиатуре XOR - сразу дошло! Спасибо!
Я вообще этот кусок в описании не замечал пока не услышал от kuznetsovin слово “байтстаффинг” , за что ему еще раз огромное спасибо , теперь дело пойдет.
Игорь и еще, как бы не маловажное на мой взгляд, может еще кому-то интересно, после того как “разгребешь” байтстаффинг и определишь по байту 0xFD-(что данные юзерские), смотри следующий байт-(количетво верных байт в кадре) и если он равен шести, то тогда их-(юзерские данные) используй, я делаю именно так, потому что количество верных байт может быть меньше или они сдвинуты как-то, без этого условия в данных на приеме проскакивает “лажа”… Удачи! 😃
С этим я как раз разобрался , я именно про байтстаффинг прощелкал , поэтому иногда получал лажу , и кинул все в долгий ящик, думал фриска глючит , а оказалось как всегда : человеческий фактор .
А от чего у вас такой симпатичный дисплейчик ?
Дисплейчик от моторолы Т190, С200 графический, интерфйс I2C, встроенный драйвер в нем PCF8548. Джойстик для навигации по меню, тоже от мобилы + кнопочка… В плане удобства отображения на нем вроде как гораздо удобней чем на символьном, да и интерфейс последовательный, что не маловажно. Вот вид поближе немного.
Дисплейчик от моторолы Т190, С200 графический, интерфейс I2C, встроенный драйвер в нем PCF8548. Джойстик для навигации по меню, тоже от мобилы + кнопочка… В плане удобства отображения на нем вроде как гораздо удобней чем на символьном, да и интерфейс последовательный, что не маловажно. Вот вид поближе немного.
Я пока делаю на дисплее от сименса s65 цветной графический дисплей 132х176, SPI интерфейс, но это временно , цветной дисплей плохо виден на солнце , да и не нужен он там, поэтому и присматриваю что то другое.
Появились “фирменные” телеметрийные примочки. Датчики, мониторчики 😃
Да и цены вроде не высокие
Вот думаю на один из аналоговых каналов датчик тока нацепить. Вот типа такого.
Правда выдает на выходе на 1Ампер 40миливолть,т.е. если максимум 60Ампер выйдет 0.2Вольта.Прийдётся ставить усилок.
Для тех, кто не верит, наконец-то удалось запечатлеть на видео полет на 3 км с использованием телеметрийных модуля DJT и приемника D8R от FrSky.На передаче стоковая 2 dBi антенна, на приеме самодельные коаксиальные диполи rcopen.com/forum/f4/topic186091/1441 пост 1444.
Видео ускорено и порезано – 26 минут смотреть сил не хватит, да и на ютуб долго закачивать такой файл. Запись на HD брелок №11, на закате, поэтому за качество сильно не ругайте. Все таки кто-то был прав, сказав про 11 брелок, что HD качество и HD разрешение – это разные вещи. Монтаж видео я только начал осваивать;-)
В общем, после взлета, произвел тестирование Игловского автопилота, немного полетал вокруг, и направился вдаль. Наземной записи пока нет, но есть несколько фоток на телефон. На удалении 3 км начались FS, и пришлось повернуть назад. На фотках видно параметр DIS в самом левом нижнем углу – расстояние от точки старта. Отображается инверсно, т.к. в настройках OSD указан предел 3000 м.