RFM69HW Методика тюнинга параметров

Тема в разделе "Проводная и беспроводная связь", создана пользователем sslobodyan, 4 дек 2016.

Метки:
  1. sslobodyan

    sslobodyan Гик

    Всем доброго здоровья!
    Ковыряю понемногу сабж на предмет получить максимальную дальность в диапазоне 433Мгц при нужной скорости. Сам нисколько экспертом в радио не являюсь, поэтому есть вопросы к знающим.
    Итак, используя библиотеку от lowpowerlab.com, удалось связать два модуля между собой на столе. Естественно, автор библиотеки настроил модули по своему усмотрению и под свои задачи. У меня задача передавать поток примерно в 2 килобайта в секунду на максимальную дистанцию. Поэтому выбираю битрейт 25000 (немного с запасом, но стремлюсь к минимальному). А вот как выбрать полосу пропускания и девиацию - не знаю. Методом тыка подобрал такое соотношение, при котором RSSI на приемной стороне максимально. А как это делать С ПОНИМАНИЕМ процесса - не знаю. И еще попутно вопрос с уровнем передачи. Сейчас получилось, что передатчик оглушает приемник, когда они рядом. Подскажите методику выбора битрейта, девиации, полосы пропускания и мощности передачи для потока 2 килобайта\сек на 433Мгц ?
     
  2. ИгорьК

    ИгорьК Давно здесь

    Как это проявляется?
     
  3. sslobodyan

    sslobodyan Гик

    Лежат два модуля рядом - приемник не принимает (не горит светодиод). Отношу приемник буквально на метр-два и светодиод загорается. На приемнике RSSI больше -9 не видел. Кстати, пока подбирал параметры, не контролировал "оглушение". Заметил случайно.
     
    ИгорьК нравится это.
  4. ИгорьК

    ИгорьК Давно здесь

    Я начинал заниматься этим модулем. Так и не разобрался, отложил на время...
     
  5. sslobodyan

    sslobodyan Гик

    С оглушением разобрался вроде. Есть такое отношение 2*Fdev/BR или MI . Так вот когда оно маленькое, то увеличивается энэргия в области центральной частоты. С увеличением этого отношения (должно быть от 0.5 до 10) оглушение проходит. Пока подобрал BR=25000, Fdev=20000, RxBw=010/24/3. Не нравится, что на столе получаю RSSI -32 -30 и передача всегда идет с одним или несколькими ретрансмитами. А модули интересные. Есть отзывы забугорных коллег о рабочей дистанции более 2 км по земле при битрейте 1200 на кусок провода.
     
    ИгорьК нравится это.
  6. sslobodyan

    sslobodyan Гик

    ИгорьК нравится это.
  7. sslobodyan

    sslobodyan Гик

    Фирменная прога для руления параметрами модуля http://www.hoperf.de/upload/rf/RFM65_69_69H_Register_Set.rar . К сожалению, требует подключать модуль через FTDI. Но при нажатии Ctrl+Alt+N переходит в рабочий режим без реального подключения. Можно контролировать попадание "в допуск" параметров и смотреть регистры. Удобно.

    Но всякий случай заброшу сюда копию поста с одного форума про подключение:
    ====================================================

    Я бы так поступил
    взял программу от SX1231SKB или RFM6X-TOOL
    они используют FT2232 (я использовал FT2232D хотя 420 рублей тоже жаба душила)
    Semtech хочет что бы FTDI назывался
    так SX1231SKB-915
    или SX1231SKB
    или Semtech USB bridge
    HopeRF хочет другие названия
    так RFM6X-915
    или RFM6X
    или HOPERF USB bridge
    Но это не важно - просто добавляем или меняем на стандартное название FT2232D
    Dual RS232
    На канал A соединяем SPI от SX1231 (
    SCK - 24 ADBUS0
    MOSI - 23 ADBUS1
    MISO - 22 ADBUS2
    CS - 21 ADBUS3

    DIO0-5 - BDBUS0-5

    Как то так

    Раздобыл FT2232D подключил
    SCK - 24 ADBUS0
    MOSI - 23 ADBUS1
    MISO - 22 ADBUS2
    CS - 21 ADBUS3
    DIO0-5 - BDBUS0-5
    Изменил имя на HOPERF USB bridge в итоге соединилось...
     
  8. ИгорьК

    ИгорьК Давно здесь

    ... в общем, изменил я этому модулю с HC-12.
     
  9. sslobodyan

    sslobodyan Гик

    Запишу сюда дабы не забыть :)
    Забугорные коллеги пишут, что есть 5 правил для выбора параметров в данном модуле.
    1. 0.5 <= 2*Fdev/BR <= 10 (MI) стараться понижать
    2. BR < 2*RxBw (bit rate) стараться понижать
    3. RxBw >= Fdev+BR/2 (полоса приемника стараться понижать)
    4. RxBwAfc >= Fdev+BR/2+LOlffset (полоса приема с автоподстройкой)
    5. Fdev + BR/2 < 500KHz (максимально что можно установить)
    Примерный расчет.
    433Мгц -> LOoffset = 8.66Khz (+-20ppm crystal)
    Берем RxBwAfc 41.7 (0b10 / 24 / 3)
    Актуальная полоса 41.7 - 8.7 = 33КГц (RxBw)
    Берем MI как 1.5 (3/2), тогда Fdev = BR * 0.75 = BR * 3/4
    Отсюда 33КГц >= BR * 3/4 + BR/2 имеем 33КГц >= BR*5/4, поэтому BR=33КГц*4/5=26.4 , берем 26Кгц.
    Fdev = 26000 * 0.75 = 19500
    Проверка
    1. 0.5 <= 2*19.5/26 <=10 Ok
    2. 26K < 2*33K Ok
    3. 33K >= 19.5K+13K OK
    4. 41.7K >= 19.5K+13K + 8.7K Ok
    5. 19.5K+13K < 500K Ok
    Итого: BR=26000 (0x04CF), Fdev=19500 (0x013F), RxRwAfc=41.7 (0b10/ 24/ 3)
    Заливал, работает. Можно ли улучшить - не знаю. Пропуски пакетов наблюдались, но виноват модуль или библиотека - не определял. Пока дальнейшие исследования отложил.
     
  10. BDW

    BDW Нуб

    Помогите разобраться с этим модулем.
    Задача: установить скорость 6,6(6)кбит, девиация 15кГц. Без преамбулы и без CRC.
    Требуется отсканировать код брелка (запуск webasto) и потом его имитировать.
    То, что требуется записать в регистры 0x03, 0x04, 0x05 и 0x06 я посчитал. А вот как это сделать? Корячить библиотеку ардуино?
     
  11. свою напиши.
     
  12. sslobodyan

    sslobodyan Гик

    Ну если открыть код библиотеки, найти в нем функцию отсылки байта по нужному адресу и вызов этой функции с нужными параметрами в своем коде уже называют "корячить" - то да, корячить.
     
  13. BDW

    BDW Нуб

    Это конечно хорошо. Но, как оказалось, все намного сложнее, чем мне казалось.
    Посчитать и найти где в библиотеке поменять значения на нужные мне (скорость и девиация) - это только верхушка айсберга. С преамбулой и проверкой - то же вроде как понятно. В регистры 0х2С и 0х2d требуется записать 0 для отключения преамбулы. В регистр 0х2e так же требуется записать 0. и 4 бит регистра 0х37 так же требуется обнулить. Я прав? или что то еще пропустил?
    А вот как организовать пакетную передачу/прием данных?
    Так же я хочу разобраться и написать все это самостоятельно. Только, к сожалению у меня проблема с англоязычной литературой. Так, что полностью datasheet мне не освоить. А с примерами на Си так же скудновато.
    В идеале, хотелось бы пример на arduino (с использованием библиотеки spi) или на Си как записать что либо в тот или иной регистр.