Специальные цены   новые товары
+ Ответить в теме
Страница 43 из 116 ПерваяПервая ... 33 41 42 43 44 45 53 ... ПоследняяПоследняя
Показано с 1,681 по 1,720 из 4635

FrSky 2.4GHz FHSS, новый игрок на рынке 2.4ГГц

Тема раздела Аппаратура радиоуправления в категории Cамолёты - Общий; Как не прискорбно, но я покидаю стойкие ряды адептов Фруши, достал свою старушку (название произносить не буду , Геофизик знает!) ...

  1. #1681

    Регистрация
    30.08.2005
    Адрес
    Москва м.Красногвардейская
    Возраст
    54
    Сообщений
    13,292
    Как не прискорбно, но я покидаю стойкие ряды адептов Фруши, достал свою старушку (название произносить не буду , Геофизик знает!) .
    Переделывать на большую дальность ( как у опальной аппы) , да некогда, думал обмануть стихию дешевизной ВЧ блока и приёмышей, да не вышло!
    Извиняйте что не так, не поминайте в суе!
    Творите , среди вас есть Кулибины, и да пребудет с вами э.д.с.

  2.  
  3. #1682

    Регистрация
    08.09.2004
    Адрес
    Москва
    Возраст
    43
    Сообщений
    6,136
    Павел, у меня тоже уже начали опускаться руки, санва на 40 с зимы отказывается работать а до этого летал и неплохо....
    что только не пробовал, менял аппы и приемники
    плюнул - взял FrSky и бац обломс.....
    но тем не менее нашел способ решить проблему....
    в выходные попробую рандж тест в поле на даче без бустера - если даст полтора два км - я считаю с бустером можно и 5 выжать
    сегодняшний полет меня заново окрылил радостью торжества победы......
    может попробуете сделать как и я фильтр в приемник ?
    я попой чую - у FrSky есть еше потенциал для развития в плане дальности.....
    можно антенны отстроить - можно бустер....... телеметрия - не последнее дело......

  4. #1683

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Сегодня удалось считать данные из передатчика. В будни прикручу мониторчик или светодиодные линейки для отображения уровня заряда батареи (А2 через делитель напряжения) и RSSI.
    Данные потекли! RSSI в попугаях и напряжение. Шкала двигается по пикселю.

  5. #1684

    Регистрация
    08.09.2005
    Адрес
    Москва
    Возраст
    39
    Сообщений
    2,743
    Записей в дневнике
    3
    Какая интересная тема! пол года лежит у меня сия китайская фриска, не до нее было и вот зашел почитать сюда что к чему и понял что ставить мне ее совершенно не зачем.
    бустеры-шмустеры, борьба за пару км дальности и кольца, резонаторы и зуд серв, все смешалось в доме Облонских.
    Дядя Зигзаг, раз уж соскочил с фриски, звони-пиши в личку, ты меня не раз выручал и я чем смогу помогу-расскажу, ибо оффтоп тут.

  6.  
  7. #1685

    Регистрация
    28.06.2007
    Адрес
    Karmiel
    Возраст
    36
    Сообщений
    2,967
    Записей в дневнике
    9
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Данные потекли!
    Если не секрет,можно поодробней,про схему и прогу?

  8. #1686

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от hatuul Посмотреть сообщение
    Данные потекли! Если не секрет,можно поодробней,про схему и прогу?
    FrSky 2.4GHz FHSS, новый игрок на рынке 2.4ГГц - вот код для приема данных из ВЧ-блока.

    Экран WH-1602(a,b,c,d)-"буква" (Winstar). Если буква N - без подсветки! http://www.winstar.com.tw/products_d...oID=98&lang=ru - маркировка ЖКИ. Если хотите таблицу русских\английских символов, берите с кодом "CT". В ардуинку загружается библиотека LiquidCrystal, экран подключается по 4х-битной схеме. Если будете включать светодиодную подсветку, то не забудьте про балластные резисторы!

    Вывод символов на экран - по примеру из библиотеки LiquidCrystal. Шкала - отрисовка собственных символов, как описано http://robocraft.ru/blog/arduino/503.html Я вычисляю количество "полных блоков 5*8 пикселей", остаток дает единственный "1*8", "2*8", "3*8", "4*8" блок.
    Например, на картинке для RSSI 5 полных блоков и один "4*8" блок. Для напряжения - 2 полных блока и один "1*8".

    Код для приема данных и код для вывода на экран конфликтует по пину D2, нужно изменить. Также я подключил ногу Vo контраста на ШИМ вместо делителя 10кОм: int ledPin = 9; analogWrite(ledPin, 100);//V0 contrast.

    Код:
    /*
      LiquidCrystal Library - Serial Input
    
     Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
     library works with all LCD displays that are compatible with the
     Hitachi HD44780 driver. There are many of them out there, and you
     can usually tell them by the 16-pin interface.
    
     This sketch displays text sent over the serial port
     (e.g. from the Serial Monitor) on an attached LCD.
    
     The circuit:
     * LCD RS pin to digital pin 12
     * LCD Enable pin to digital pin 11
     * LCD D4 pin to digital pin 5
     * LCD D5 pin to digital pin 4
     * LCD D6 pin to digital pin 3
     * LCD D7 pin to digital pin 2
     * LCD R/W pin to ground
     * 10K resistor:
     * ends to +5V and ground
     * wiper to LCD VO pin (pin 3)
    
    
     http://www.arduino.cc/en/Tutorial/LiquidCrystal
     */
    
    // include the library code:
    #include <LiquidCrystal.h>
    
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    
    int ledPin = 9; //я подключил ногу Vo контраста на ШИМ вместо делителя 10кОм.
    int rssi = 102;
    int rssilevel =0;
    int rssilevelblock=0; //количество блоков в шкале rssi
    int rssileveldrob=0; //количество палок в неполном блоке 0..5  rssi
    float volt = 9.01;
    int vlevel = 0;
    int vlevelblock=0; //количество блоков в шкале
    int vleveldrob=0; //количество палок в неполном блоке 0..5
    int vl=0;
    /* Описываем наши собственные символы в виде массивов битовых масок.
     * Каждый символ - это восемь масок по пять бит.
     */
    enum { SYMBOL_HEIGHT = 8 };
    byte block[SYMBOL_HEIGHT] =
    {
      B11111,
      B11111,
      B11111,
      B11111,
      B11111,
      B11111,
      B11111,
      B11111
    };
    byte one[SYMBOL_HEIGHT] =
    {
      B10000,
      B10000,
      B10000,
      B10000,
      B10000,
      B10000,
      B10000,
      B10000
    };
    byte two[SYMBOL_HEIGHT] =
    {
      B11000,
      B11000,
      B11000,
      B11000,
      B11000,
      B11000,
      B11000,
      B11000
    };
    byte three[SYMBOL_HEIGHT] =
    {
      B11100,
      B11100,
      B11100,
      B11100,
      B11100,
      B11100,
      B11100,
      B11100
    };
    byte four[SYMBOL_HEIGHT] =
    {
      B11110,
      B11110,
      B11110,
      B11110,
      B11110,
      B11110,
      B11110,
      B11110
    };
    
    void setup(){
        // set up the LCD's number of columns and rows:
      lcd.begin(16, 2);  
      /* Регистрируем собственные символы с кодами 0, 1 и 2 */
      lcd.createChar(0, block);
      lcd.createChar(1, one);
      lcd.createChar(2, two);
      lcd.createChar(3, three);
      lcd.createChar(4, four);
      analogWrite(ledPin, 100);//V0 contrast
    
      lcd.setCursor(0, 0);
      lcd.print("R ");
      lcd.setCursor(0, 1);
      lcd.print("V ");
    }
    
    void loop()
    {
    
    
    
    
        ///test
    
       if (volt<=12.2)
        {
          volt = volt+0.01;
          delay(300);      
        }
        if (volt>12) {volt=9;}
    
    
        if (rssi<=256)
        {
          rssi = rssi+3;
          delay(300);      
        }
        if (rssi>256) {rssi=0;}
        //end test
    
    
    
    
    
        ///////////шкала вольтажа////////////////////////////////////////////////////
    
        //рисуем пустые клетки вольтажа
        vl=2;
        while (vl<16)
        {
          lcd.setCursor(vl, 1);
          lcd.print(" ");
          vl++;
        }
    
        vlevel      = map(volt*1000, 9000, 11900, 0, 4000);  //9-12V  0-4 000 palok
        vlevelblock = vlevel/500; //целых блоков 0..8
        vl=0;
        while (vl<vlevelblock) //рисуем блоки
        {
          lcd.setCursor(vl+8, 1);
          lcd.write(0); //our byte-char number 0
          vl++;
        }
        //узнаем, сколько палочек в недостающем блоке
        vleveldrob = (vlevel - vlevelblock* 500)/100;
        lcd.setCursor(vlevelblock+8, 1); //поставили курсор в первую чистаю клетку
        if (vleveldrob==1) {  lcd.write(1);  }
        else if (vleveldrob==2) {  lcd.write(2);  }
        else if (vleveldrob==3) {  lcd.write(3);  }
        else if (vleveldrob==4) {  lcd.write(4);  }
    
    
        ///////////шкала RSSI////////////////////////////////////////////////////
        //рисуем пустые клетки RSSI
        vl=2;
        while (vl<16)
        {
          lcd.setCursor(vl, 0);
          lcd.print(" ");
          vl++;
        }
    
        rssilevel      = map(rssi*100, 0, 25600, 0, 4000);  //0-256  0-4 000 palok
        rssilevelblock = rssilevel/500; //целых блоков 0..8
        vl=0;
        while (vl<rssilevelblock) //рисуем блоки
        {
          lcd.setCursor(vl+8, 0);
          lcd.write(0); //our byte-char number 0
          vl++;
        }
        //узнаем, сколько палочек в недостающем блоке
        rssileveldrob = (rssilevel - rssilevelblock* 500)/100;
        lcd.setCursor(rssilevelblock+8, 0); //поставили курсор в первую чистаю клетку
        if (rssileveldrob==1) {  lcd.write(1);  }
        else if (rssileveldrob==2) {  lcd.write(2);  }
        else if (rssileveldrob==3) {  lcd.write(3);  }
        else if (rssileveldrob==4) {  lcd.write(4);  }
    
    
        lcd.setCursor(2, 0);
        lcd.print(rssi);
        lcd.setCursor(2, 1);
        lcd.print(volt);
    
    
    }

  9. #1687

    Регистрация
    28.06.2007
    Адрес
    Karmiel
    Возраст
    36
    Сообщений
    2,967
    Записей в дневнике
    9
    Спасибо попробую.А левел конвертер надо ставить?

  10.  
  11. #1688

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от hatuul Посмотреть сообщение
    левел конвертер надо ставить?
    Не надо.
    Я любительским вольтметром измерил переменное напряжение на TX пине ВЧ-блока, показало 4.68 В.
    Вообще, я беру данные из ВЧ-блока в Ардуино (ее TTL 0..5В). А из Ардуины ничего не отправляю в ВЧ-блок. В мануалах не нашел, сколько вольт можно подать на RX ВЧ-блока.

    Насчет приемника - прочитал, что ему нужно 0~3.3В по каналу пользовательских данных. В А1, А2 вроде тоже только 3.3В (на выходных смогу измерить выход телеметрийного делителя напряжения, который приехал с ХК).

  12. #1689

    Регистрация
    28.06.2007
    Адрес
    Karmiel
    Возраст
    36
    Сообщений
    2,967
    Записей в дневнике
    9
    Страно.Пощупал осцилографом значения пляшут на ТХ от -5 до +5.Думаю мах323 стоит поставить.
    О.Побежали цыферки через Турнигу 9х.
    Нажмите на изображение для увеличения
Название: appa_001.jpg
Просмотров: 158
Размер:	95.5 Кб
ID:	526017Кажется тоже в попугаях.Правда вешал через 323 по этой схемке.
    Последний раз редактировалось HATUUL; 20.07.2011 в 15:12.

  13. #1690

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от hatuul Посмотреть сообщение
    ТХ от -5 до +5

    Я читал об этом на рц-гроупс. Автор писал, что там "настоящий" RS232 +-Vdd, поэтому требуется shifter для получения 0..Vdd. Также сигнал инвертированный, но библиотека Ардуино умеет инвертировать сигнал. Схема шифтера+инвертора показана в манулах, но я обошелся куском провода вместо нее. Похоже, для Ардуинки -5В = "0", +5 ="1".

  14. #1691

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Я читал об этом на рц-гроупс. Автор писал, что там "настоящий" RS232 +-Vdd, поэтому требуется shifter для получения 0..Vdd. Также сигнал инвертированный, но библиотека Ардуино умеет инвертировать сигнал. Схема шифтера+инвертора показана в манулах, но я обошелся куском провода вместо нее. Похоже, для Ардуинки -5В = "0", +5 ="1".
    Я диод последовательно ставил , потому как -5 не есть хорошо. Беда Ардуино что доку на камень внимательно читать не надо , а там, на входе, диод на массу , и какой у вас потечет ток зависит в основном от сопротивления выхода , в данном случае видимо китайцы ток как то ограничили , и вам повезло , но я бы не рисковал и добавил резстор и (или) диод .

  15. #1692

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от Игорь Лытнев Посмотреть сообщение
    на входе, диод на массу , и какой у вас потечет ток зависит в основном от сопротивления выхода , в данном случае видимо китайцы ток как то ограничили , и вам повезло , но я бы не рисковал и добавил резстор и (или) диод .
    Можно подробнее? Что может сгореть - ардуинка или ВЧ-блок?

  16. #1693

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    Добрый вечер всем, в ответ на пост 1044.. Попрытался тоже использовать телеметрийный комплект от фриская. Использовал графический дисплей от моторолы Т190 интерфейс I2C проц в базе мега32, на сборе мега8535, применяю на лодке, соответственно датчики для этого. Из общих функций: отсечка по напряжению, израсходованной емкости, превышению температуры, таймеру. Индикация по выбору что нужно.. общий вид на фото. Буду рад любой критике, замечаниям, пожеланиям и т.п..
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: IMG_0027.jpg‎
Просмотров: 183
Размер:	63.4 Кб
ID:	526113  

  17. #1694

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от kuznetsovin Посмотреть сообщение
    Из общих функций
    впечатляет!

    Цитата Сообщение от kuznetsovin Посмотреть сообщение
    на сборе мега8535
    В смысле, Мега собирает данные с датчиков и отдает в приемник? У вас получается на выходе ВЧ-блока FE-FD-длина слова-NU-byte1-...-byte6-FE? В байт 1-6 заданном порядке пишете указатель начала, значения параметров, указатель конца? С какой скоростью можно лить данные в приемник?

  18. #1695

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Можно подробнее? Что может сгореть - ардуинка или ВЧ-блок?
    В даташите на меги радел " Absolute maximum ratings" сказано:

    Напряжение на любом выводе кроме RESET,
    по отношению к земле .................................- 0,5 В до VCC +0,5 В

    Что стоит на выходе ВЧ блока я не помню но думаю врядли правильно его ч.з. диод(см схему входа меги) на массу садить.

  19. #1696

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    В приемник свои байты надо подавать на скорости 9600 никак их не оформляя - приемник сам сформирует из них пакет... Причем, если подавать в приемник, например, по 6 байт, то совсем не обязательно все шесть будут приходить одним пакетом... Может в одном пакете прийти 1 байт, а оставшиеся 5 в следующем пакете... Логику, по которой приемник передает пользовательские байты я до конца не понял... Это создает трудности при "декодировании" данных на приемной стороне...
    Пока все, что могу сказать... Если кто знает больше - делитесь!

  20. #1697

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Pav_13 Посмотреть сообщение
    Логику, по которой приемник передает пользовательские байты я до конца не понял... Это создает трудности при "декодировании" данных на приемной стороне
    Да , у меня с этим тоже трудности возникли, а планы были как у наполеона , пока забросил.
    А дисплей от чего , я брал от s65 но там цветной нафиг не надо.
    Корпус из уголька солидно смотрится , у меня корпуса это вечно больное место .

  21. #1698

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    Добрый день, к посту 1715: да, все верно мега 8535 собирает данные с датчиков, у меня 4-температуры-(датчики TMP36), ток-(датчик ACS754-100А), напряжение-(обычный делитель), 2-тахометра на INT0, INT1 висят-(оптрон H11L1 подключен в БК-регуляторе). Все собранное по уарту идет в приемник по известному протоколу на скорости 9600. Из шести пользовательских байтов у меня первый это указатель остальные мои данные. Мой полный кадр 15байт, в приемник пихать нужно с такой частотой чтобы битовая скорость (общаяя) была не больше 1200 (в протоколе в конце это отмечено). К посту 1717, да действительно как вы и написали такое есть что не всегда в юзерском пакете шесть байт, я тоже не знал что это за косяки при приеме, но поступаю просто: если на приеме не шесть байт, то этот кадр игнорирую. К посту 1716: с ВЧ-модуля выходит сигнал с обычного драйвера RS232, то есть он инвертированый с меняющейся полярностью, вполне достаточно поставить транзистор n-p-n перед приемным контроллером, как в схеме где описан протокол, или поставить драйвер ST232 к примеру, что я и сделал..

  22. #1699

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    Цитата Сообщение от kuznetsovin Посмотреть сообщение
    если на приеме не шесть байт, то этот кадр игнорирую.
    Поступил так же ... Если данные повторяющиеся, то - ничего страшного...
    Спасибо за разъяснение по поводу битовой скорости, а то переводил-переводил - так и не понял, к чему это ? В моей программке "запихивается" по 6 байт 10 раз в секунду... как я понял - это далеко до предела...
    В протоколе еще описаны тонкости обращения с данными, если они равны 7E или 7D... Тоже до конца не сообразил, поэтому пока тупо меняю такие значения на 7F... Но такой фокус можно проделывать не со всякими датчиками... Если можете пояснить что-нибудь по этому поводу - буду благодарен!

  23. #1700

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от kuznetsovin Посмотреть сообщение
    с ВЧ-модуля выходит сигнал с обычного драйвера RS232, то есть он инвертированый с меняющейся полярностью, вполне достаточно поставить транзистор n-p-n перед приемным контроллером, как в схеме где описан протокол, или поставить драйвер ST232 к примеру, что я и сделал..
    Транзистор только инвертирует, но не сдвигает? Подскажите, пожалуйста! Инвертирование я успешно делаю программно. Но в Ардуинку идет -5 +5В, а хотелось бы 0..5В. Последовательно поставить диод? (рассматриваем только прием данных в Ардуинку из ВЧ-блока)

  24. #1701

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Диод с резистором это минимум , для любителей экономить , транзистор лучше (он вам и проинвертирует), а еще лучше преобразователь уровня , но но в данном случае преобразователь уровня IMHO слегка излишество , но если бы делал не для себя а для промышленного применения то преобразователь уровня поставил бы обязательно. Транзистор IMHO самый оптимальный вариант , пример есть в описании протокола http://www.frsky-rc.com/uploadfile/2...1121837352.pdf только в вашем случае VCC = 5V
    Последний раз редактировалось Игорь Лытнев; 21.07.2011 в 10:43.

  25. #1702

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    идет -5 +5В, а хотелось бы 0..5В.
    Сделайте, как здесь http://forum.rcdesign.ru/attachment....6&d=1291153777
    Это из темы F3x таймер / FrSky телеметрия

  26. #1703

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    По-моему, это самое простое. Сдвиг на диоде. Инвертирую программно.


  27. #1704

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    По-моему, это самое простое. Сдвиг на диоде. Инвертирую программно.

    Самое простое для выполнения требований DS , но отсутствует какая либо защита.
    Желателно добавить резистор между TX и диодом (ом 300 -500) и резистор между RX и GND (1-10К)
    Цитата Сообщение от Pav_13 Посмотреть сообщение
    Сделайте, как здесь http://forum.rcdesign.ru/f4/f4/f4/f4...6&d=1291153777
    Почти правильная схема , не хватает резистора с базы T2 на массу

    Первая схема будет работать с фрискаем но если воткнуть в полноценный сом порт +-12 сгорит а при +-3 работать не будет , вторая свободна от этих недостатков
    Последний раз редактировалось Игорь Лытнев; 21.07.2011 в 11:32.

  28. #1705

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    Между входом RX и GND должен быть резистор в несколько КОм... На высокоомном входе можно получить неустойчивый "0"...

    Цитата Сообщение от Игорь Лытнев Посмотреть сообщение
    не хватает резистора с базы T2 на массу
    Я тоже предпочитаю ставить резисторы с базы на корпус, особенно в тех случаях, когда устройство может эксплуатироваться с не подключенным входом...
    Автор схемы, наверное, не планировал использовать свой модуль без подключения к источнику данных... Поэтому посчитал резистор ненужным ...
    Последний раз редактировалось Pav_13; 21.07.2011 в 11:33.

  29. #1706

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Pav_13 Посмотреть сообщение
    Автор схемы, наверное, не планировал использовать свой модуль без подключения к источнику данных...
    В жизни к сожалению не все идет по плану , проводочек отвалится например.

  30. #1707

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    К посту 1720 для Pav_13. То что вам не понятно в протоколе это обычный байтстаффинг, это очень не сложно: Если в текущих данных (принимаемый кадр) встречается байт 0x7E, то он подменяется двумя байтами 0x7D и 0x5E, если в принимаемом кадре встречается байт 0x7D, то он подменяется на два байта 0x7D и 0x5D. Соответственно, при "разгребании" приемного буфера количество байт в нем от 0x7E до 0x7E (от стартового до стопового байта) будет разным, потому что в передаваемых данных будут проскакивать байты 0x7E и 0x7D. Учитывая вышеописанную особенность, в программке нужно делать все в обратном порядке...

  31. #1708

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от kuznetsovin Посмотреть сообщение
    обычный байтстаффинг
    Вот спасибо! и главное пока не сказали я этого в описании протокола в упор не видел , и думал же как быть если в данных 7E

  32. #1709

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    30
    Сообщений
    1,497
    Цитата Сообщение от kuznetsovin Посмотреть сообщение
    он подменяется двумя байтами

    Можно заранее заменять запрещенные значения 0x7E и 0x7D на ближайшее меньшее или большее, чтобы не было байтстаффинга. Если с датчика пришло 0x7E=126, то заменить на 0x7F=127 и отдать в приемник (аналогично, запрещенный "7D=125" заменить на 7С=124). Тогда чип внутри приемника\передатчика не будет делать подмены байтов, длина принятого слова будет постоянной. А погрешность датчика 126~127, 125~124 не критична.

  33. #1710

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    А погрешность датчика 126~127, 125~124 не критична
    Для напряжения или оборотов может и не критично , а я хотел туда GPS пустить, чтоб если что, искать легче было. Видимо на выходные достану это дело из долгого ящика.

  34. #1711

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    Наверное можно и так делать, дело каждого, но это не правильное решение, гораздо проще делать все как говорится "по человечески" , и это абсолютно не сложно и очень быстро на самом деле.

  35. #1712

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    Совершенно верно! Для датчиков, контролирующих постоянно меняющуюся величину с точностью в 8 разрядов - некритично... А вот, если точность нужна выше (одного байта мало) или данные представляют собой достаточно сложную структуру (тот же GPS) - такой способ не годится...
    С удовольствием посмотрел бы на правильный алгоритм разбора таких пакетов данных... Можно на С, можно ромбиками-квадратиками... Если у кого есть ссылка - дайте...

  36. #1713

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    Игорю Лытневу: Правильно, доставайте, если будут вопросы или непонятки подскажу-помогу по возможности.. У меня тоже мысль есть, освободить аппаратный уарт у меги для гпс приемника а в фриску "пихать" какой-нить любой ножкой, но это как время позволит.

    Павлу Бакулину: Если нужно могу показать как в моей прогрммке это написано на "СИ", но только позже, вечером скорее всего, сейчас нет моих исходников под рукой.

  37. #1714

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    Да! Посмотрю с удовольствием... Может, даже пойму чего-нибудь ...
    У меня была мысль, подключить GPS-модуль прямо к приемнику... Для летающей модели этого было бы вполне достаточно - скорость, высота, направление на базу, координаты... Летал с телеметрией от Smalltim только с GPS-модулем - вполне устраивало!

  38. #1715

    Регистрация
    28.06.2007
    Адрес
    Karmiel
    Возраст
    36
    Сообщений
    2,967
    Записей в дневнике
    9
    Запустил Ская через 2Ватный бустер,значения остались прежними.

  39. #1716

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    Для Павла Бакулина: Нашел на флешке свои исходники, вот кусок в котором обрабатывается приемный буфер. 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++;
    }
    }

  40. #1717

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Pav_13 Посмотреть сообщение
    Если у кого есть ссылка - дайте...
    В описании протокола есть: When byte 0x7D is received, discard this byte, and the next byte is XORed with 0x20;

    Упс , опоздал.

  41. #1718

    Регистрация
    11.06.2008
    Адрес
    Ставрополь
    Возраст
    58
    Сообщений
    1,158
    Записей в дневнике
    6
    Илья, спасибо! В приведенном Вами фрагменте кода знакомые буквы вижу - попробую "вкурить" ...
    Игорь, я пытался перевести Гуглом эту строчку из описания протокола - результат неутешительный ...
    Вы можете растолковать эту строчку по-русски?

  42. #1719

    Регистрация
    26.08.2009
    Адрес
    Пинск, Беларусь
    Возраст
    46
    Сообщений
    212
    Цитата Сообщение от Pav_13 Посмотреть сообщение
    Игорь, я пытался перевести Гуглом эту строчку из описания протокола - результат неутешительный ...
    Вы можете растолковать эту строчку по-русски?
    При приеме 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

  43. #1720

    Регистрация
    11.09.2008
    Адрес
    Омск
    Возраст
    46
    Сообщений
    19
    Павел: если детально, то.. если время приема встретится байт 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]; //байтстаффинг

    опоздал

+ Ответить в теме

Похожие темы

  1. Новый игрок на рынке HD экшн камер
    от eugе в разделе Полеты по камере, телеметрия
    Ответов: 16
    Последнее сообщение: 22.02.2011, 20:36
  2. Продам Комплект аппаратуры Spektrum DX3R 2.4GHz DSM2™ 3CH (новая, дешево)
    от MaxRockets в разделе Барахолка. Аппаратура
    Ответов: 3
    Последнее сообщение: 20.11.2010, 17:05
  3. Новый игрок на рынке 2.4ггц передатчиков, с амбициями: вспучу всех!
    от tumbzik в разделе Аппаратура радиоуправления
    Ответов: 8
    Последнее сообщение: 20.09.2008, 22:43

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения