Клуб "Трёх инженеров"
 

Email:

Пароль:

Забыли пароль?

Вступить в клуб?

Микроконтроллеры AVR

MS Visual Studio & C#

MODBUS-RTU & RS485

SolidWorks & Cosmos

Компьютерная техника

Мехатроника & Авиация

Силовая электроника

Всего статей:

Категорий/рубрик:

Комментариев:

Пользователей:

33

7

239

2025

 
видео прикол из Городка
На флотской кухне
Для корректного отображения этого элемента вам необходимо установить FlashPlayer и включить в браузере Java Script.

Пример приема и передачи информации посредством модулей Hoperf RFM22

Автор: Ильющенков Д. А.

Дата: 2010-01-10


В данной статье будет рассмотрен пример организации связи с помощью радиомодулей фирмы HopeFR RFM22. Выбор пал на эти модули неспроста. Во-первых, у них низкая цена (300-400 руб.). Во-вторых, дальность 200-300 м на открытой местности (до 100 м в помещении), что достаточно для управления автоматикой в пределах дома или квартиры. В-третьих, это их малые габаритные размеры.

Поставленная перед нами задача проста: передавать байт от одного модуля к другому, байт будет инкрементироваться каждые полсекунды.

На рисунке 1 предсталены основные электронные компоненты, необходимые для сборки модуля, работающего в режиме приема. На рисунке 2 изображен готовый "приемник" собранный на макетной плате.

Основные элементы для приемника

Рисунок 1 – Основные элементы для приемника.

Модуль RFM22, работающий в режиме приема.

Рисунок 2 – Модуль RFM22, работающий в режиме приема.

Итак, скачав мануал с офф-сайта, первым делом стоит разобраться со способами передачи данных: напрямую (direct-mode) или через буфер (fifo-mode). Первый тип подходит для данных, которые нужно отправлять без задержки (например, потоки аудио-данных, моментальные измерения с АЦП и т.д.). Второй тип – передача информации идет только после помещения её в буфер fifo. Мною было принято решение отправлять данные через fifo-буфер, т.к. «срочность» данных не требуется. В данном проекте была использована рекомендованная производителем частотная модуляция данных GFSK (регистр 0x71). Скорость передачи данных установлена на отметке 4800 kbit per sec. На остальных настройках останавливаться не буду, полный перечень регистров-установок приведен в документации к модулям.

Процедура инициализации модуля, работающего в режиме передачи, приведена ниже.

  1. void SPI_RFM_INIT (void)

  2. {

  3. // interrupt all disable

  4. SPI_WRITE(0x06, 0x00);

  5. // to ready mode

  6. SPI_WRITE(0x07, 01);

  7. // cap = 12.5pf

  8. SPI_WRITE(0x09, 0x7f);

  9. // cloсk output is 2MHz

  10. SPI_WRITE(0x0a, 0x05

  11. // GPIO2 for MCLK output

  12. SPI_WRITE(0x0d, 0x00);

  13. //GPIO port use default value

  14. SPI_WRITE(0x0e, 0x00);

  15. // NO ADC used

  16. SPI_WRITE(0x0f, 0x70);

  17. //no adc used

  18. SPI_WRITE(0x10, 0x00);

  19. // no temperature sensor used

  20. SPI_WRITE(0x12, 0x00);

  21. // no temperature sensor used

  22. SPI_WRITE(0x13, 0x00);

  23. // no mancheset code, no data whiting, data rate < 30Kbps

  24. SPI_WRITE(0x70, 0x20);

  25. // IF filter bandwidth

  26. SPI_WRITE(0x1c, 0x04);

  27. // AFC LOOP

  28. SPI_WRITE(0x1d, 0x40);

  29. // AFC timing

  30. SPI_WRITE(0x1e, 0x08);

  31. // clock recovery

  32. SPI_WRITE(0x20, 0x41);

  33. // clock recovery

  34. SPI_WRITE(0x21, 0x60);

  35. // clock recovery

  36. SPI_WRITE(0x22, 0x27);

  37. // clock recovery

  38. SPI_WRITE(0x23, 0x52);

  39. // clock recovery timing

  40. SPI_WRITE(0x24, 0x00);

  41. // clock recovery timing

  42. SPI_WRITE(0x25, 0x06);

  43. // Tx data rate 1

  44. SPI_WRITE(0x6e, 0x27);

  45. // Tx data rate 0

  46. SPI_WRITE(0x6f, 0x52);

  47. // data access control

  48. SPI_WRITE(0x30, 0x8c);

  49. // header control

  50. SPI_WRITE(0x32, 0xff);

  51. // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,

  52. SPI_WRITE(0x33, 0x42);

  53. // 64 nibble = 32byte preamble

  54. SPI_WRITE(0x34, 64);

  55. // 0x35 need to detect 20bit preamble

  56. SPI_WRITE(0x35, 0x20);

  57. // synchronize word

  58. SPI_WRITE(0x36, 0x2d);

  59. SPI_WRITE(0x37, 0xd4);

  60. SPI_WRITE(0x38, 0x00);

  61. SPI_WRITE(0x39, 0x00);

  62. // set tx header

  63. SPI_WRITE(0x3a, 's');

  64. SPI_WRITE(0x3b, 'o');

  65. SPI_WRITE(0x3c, 'n');

  66. SPI_WRITE(0x3d, 'g');

  67. // total tx 17 byte

  68. SPI_WRITE(0x3e, 1);

  69. // set rx header

  70. SPI_WRITE(0x3f, 's');

  71. SPI_WRITE(0x40, 'o');

  72. SPI_WRITE(0x41, 'n');

  73. SPI_WRITE(0x42, 'g');

  74. // all the bit to be checked

  75. SPI_WRITE(0x43, 0xff);

  76. // all the bit to be checked

  77. SPI_WRITE(0x44, 0xff);

  78. // all the bit to be checked

  79. SPI_WRITE(0x45, 0xff);

  80. // all the bit to be checked

  81. SPI_WRITE(0x46, 0xff);

  82. // tx power to Max

  83. SPI_WRITE(0x6d, 0x03);

  84. // no frequency hopping

  85. SPI_WRITE(0x79, 0x0);

  86. // no frequency hopping

  87. SPI_WRITE(0x7a, 0x0);

  88. // Gfsk, fd[8]=0, no invert for Tx/Rx data, fifo mode, txclk -->gpio

  89. SPI_WRITE(0x71, 0x22);

  90. // frequency deviation setting to 45k = 72*625

  91. SPI_WRITE(0x72, 0x48);

  92. // no frequency offset

  93. SPI_WRITE(0x73, 0x0);

  94. // no frequency offset

  95. SPI_WRITE(0x74, 0x0);

  96. // frequency set to 434MHz

  97. SPI_WRITE(0x75, 0x53);

  98. // frequency set to 434MHz

  99. SPI_WRITE(0x76, 0x64);

  100. // frequency set to 434MHz

  101. SPI_WRITE(0x77, 0x00);

  102. // GPIO Configuration 0.

  103. SPI_WRITE(0x0C,0b00010111);

  104. // GPIO Configuration 1.

  105. SPI_WRITE(0x0B,0b00011000);

  106. // fifo reset

  107. SPI_WRITE(0x08, 0x03);

  108. SPI_WRITE(0x08, 0x00);

  109. }

Функции считывания и записи данных:

  1. void SPI_WRITE(unsigned char Addr, unsigned char data)

  2. {

  3. unsigned char i=0;

  4. // Старший бит в адресе дб равен 1!!!

  5. Addr=Addr|0x80;

  6. nSEL=0;

  7. delay_us(10);

  8. for (i=0; i<8; i++)

  9. {

  10. nSDI=(Addr>>(7-i))&0x01;

  11. delay_us(10);

  12. nSCK=1;

  13. delay_us(30);

  14. nSCK=0;

  15. delay_us(20);

  16. }

  17. for (i=0; i<8; i++)

  18. {

  19. nSDI=(data>>(7-i))&0x01;

  20. delay_us(10);

  21. nSCK=1;

  22. delay_us(30);

  23. nSCK=0;

  24. delay_us(20);

  25. }

  26. // выборка чипа

  27. nSEL=1;

  28. delay_us(20);

  29. }

  30. unsigned char SPI_READ(unsigned char Addr)

  31. {

  32. unsigned char i=0;

  33. unsigned char data=0;

  34. // Старший бит в адресе дб равен 0!!!

  35. Addr=Addr&0x7F;

  36. nSEL=0;

  37. delay_us(10);

  38. for (i=0; i<8; i++)

  39. {

  40. nSDI=(Addr>>(7-i))&0x01;

  41. delay_us(10);

  42. nSCK=1;

  43. delay_us(30);

  44. nSCK=0;

  45. delay_us(20);

  46. }

  47. for (i=0; i<8; i++)

  48. {

  49. nSCK=1;

  50. delay_us(30);

  51. data=data<<1;

  52. data|=(nSDO);

  53. nSCK=0;

  54. delay_us(20);

  55. }

  56. // выборка чипа

  57. nSEL=1;

  58. delay_us(20);

  59. }

В главном цикле передатчика мы инкрементируем байт (а), записываем его в буфер fifo по адресу 0x7F и отправляем байт, переведя модуль в TX режим. Прерывание (низкий уровень на PINB.3) будет сигнализировать о том, что все данные из буфера были отправлены.

  1. while (1)

  2. {

  3. SPI_WRITE(0x7F, a++);

  4. // go to TX-mode

  5. SPI_WRITE(0x07, 9);

  6. while (PINB.3) PORTA.0=0;

  7. while (!PINB.3)

  8. {

  9. PORTA.0=1;

  10. SPI_RFM_INTREAD();

  11. }

  12. };

Чтобы сбросить флаги прерываний, необходимо прочитать соответствующие регистры. Эта операция выполняется в процедуре SPI_RFM_INTREAD

  1. void SPI_RFM_INTREAD (void)

  2. {

  3. char temp;

  4. temp = SPI_READ(0x03);

  5. //read the Interrupt Status1 register

  6. temp = SPI_READ(0x04);

  7. // interrupt is anable

  8. SPI_WRITE(0x05, 0x04);

  9. };

На приемном устройстве принятый пакет вызовет прерывание - низкий уровень на PINB.3. Изменение этого уровня фиксируется микроконтроллером приемника в основном цикле программы, проводится чтение одного байта из Fifo-буфера и выводит этот байт на LED-линейку.

  1. while(1)

  2. {

  3. if (!PINB.3)

  4. {

  5. LED_OUT(SPI_READ(0x7F));

  6. SPI_RFM_INTREAD();

  7. while (!PINB.3);

  8. }

  9. };

Видео с работающими модулями:


Все необходимые материалы для повторения, включая исходные коды для микроконтроллеров, datasheet на RFM22 в PDF, электрические принципиальные схемы, прилагаются.

P.S. В следующей статье будет рассмотрен модуль RFM12BP, обладающий большей выходной мощностью (до 0,5 Вт) по сравнению с RFM22.

Необходимо зарегистрироваться чтобы прочитать текст

Рейтинг:

Просмотров: 114113

Комментарии:

Автор: LVV (2013-12-23, 20:06)

Когда же будет статья про RFM12BP очень хочется дальность 3км для радиоуправления. [Ответить]

Автор: LVV (2013-12-23, 20:04)

Когда же будет статья про RFM12BP [Ответить]

Автор: Dimon (2013-02-06, 22:00)

RE: praktik. Без изменений приведенная программа микроконтроллера работать с RFM12B не будет [Ответить]

Автор: praktik (2012-11-30, 18:54)

RE: Dimon..Подскажите модуль RFM12B-868-S2 будит ли он работать в место RFM22. Немогу достать RFM22. С Ув. [Ответить]

Автор: Karabas (2012-10-19, 17:21)

Извиняюсь, с помощью "сохранить как" скачивается [Ответить]

Автор: Karabas (2012-10-19, 16:49)

Что то ни одна схема не открывается [Ответить]

Автор: praktik (2012-10-15, 19:34)

RE: bla.Подскажите модуль RFM12B-868-S2 будит ли он работать в место RFM22. Немогу достать RFM22. С Ув. [Ответить]

Автор: bla (2012-08-27, 13:13)

RE: asammm. Страница на китайском!!! =) А на человеческом языке инфы нет? [Ответить]

Автор: asammm (2012-06-22, 1:03)

Да забыл сказать модули брал не RFM22, а какие-то другие фото сдесь: http://item.taobao.com/item.htm?id=12898023836&ali_trackid=2:mm_14507416_2297358_8935934,0:1340305331_3z5_1852368289. Работают замечательно. [Ответить]

Автор: asammm (2012-06-22, 1:01)

Кстати, модули брал на Ebay.com, там они стоят 8-10 баксов, а потом нашел на TaoBao по 25 Юаней (примерно 4 доллара). Только вопрос с доставкой, тамошние продавцы редко отправляют напрямую. Приходится пользоваться услугами посредников за процент :). [Ответить]

Автор: asammm (2012-06-22, 0:57)

Спасибо большое Автору за проделанную работу, очень помогло. Теперь хочу сделать на lpc1768(есть опыт работы) только двусторонний обмен данными, типа брелка с обратной связью. [Ответить]

Автор: Gipsy (2012-03-02, 0:47)

Огромнейшее спасибо за стартовую заготовку!!! Сэкономили мне кучу времени. Пару часов (сделал под PIC) - и все работает, бум двигаться дальше! [Ответить]

Автор: yuta (2012-02-27, 16:52)

Dimon какие именно регистры считать?и как [Ответить]

Автор: Айрат (2012-02-27, 16:50)

взял за основу ваш код... у меня мега8. не могу понять почему не работает. кто может помочь? [Ответить]

Автор: Dimon (2012-02-21, 18:21)

RE: yuta. Проверьте инициализацию портов. Возможно в этом проблема. Попробуйте считать значения регистров в rfm. [Ответить]

Автор: yuta (2012-02-21, 13:19)

собрал похожую схему на atmega8. исходный код взял за основу, но не работает не знаю почему (((( товарищи помогите разобраться бьюсь уже больше недели (((( [Ответить]

Автор: yuta (2012-02-10, 13:54)

господа кто-нибудь делал подобное для atmega8? только начинаю с этим разбираться может кто подскажет?хорошо бы использовать стандартный spi меги [Ответить]

Автор: gruzdevf (2011-12-19, 6:16)

ну вот наконец дошли руки. на rfm23b 868мГц заработало. спасибо за пример :) что интересно действительно работают все остальные частоты от 400 до 900 мГц правда выходная мощность никудышняя, но сам факт интересен) для забавы на ардуине сделал анализатор спектра http://www.open.com.au/mikem/arduino/RF22/index.html что-то показывает, какието пики на некоторых частотах определённо есть. [Ответить]

Автор: amusich (2011-11-30, 22:07)

RE: Dimon. Прошу прощения, давно не заглядывал в страничку - отлаживался с беспроводным MODBUS RTU. У меня RFM23B, у него в даташите отсутствует, в отличии от RFM22B, рекомендация об упоминаемых соединениях. Поэтому нет, RX_A с GPIO1 и TX_A c GPIO0 не соединяю. Насчет программного управления, что имеется ввиду? У меня микроконтроллер STM32F1xxx по SPI управляет работой RFM23B. [Ответить]

Автор: Dimon (2011-11-07, 15:42)

RE: amusich. Т.е. вы используете программное управление режимом работы? А выводы RX_A c GPIO1 и TX_A c GPIO0 у вас соединены? [Ответить]

Автор: amusich (2011-11-06, 19:45)

Прошу прощения - bit2, а не bit3 (rxon). [Ответить]

Автор: amusich (2011-11-06, 19:38)

В моем варианте с DISCOVERY оказалось дело не в "соплях". При инициализации RFM23B-приемника в регистр 07h прописываю 05h. Далее уже в главном цикле проверил биты cps в "Device Status" (рег.02h), а они в состоянии "Idle" (00), т.е. вместо приема имеет место быть холостой ход. Добавил условие: если в регистре 07h нет RX (bit3), то поставить RX. И ура-а - прием пошел. Ищу теперь место, где поставить временную задержку при инициализации регистра 07h. [Ответить]

Автор: amusich (2011-11-04, 13:27)

Попробую с соединениями минимально возможной длины. [Ответить]

Автор: Dimon (2011-11-04, 12:25)

RE: amusich. Возможны наводки в проводах, дающие ложные логические значения на шине данных. [Ответить]

Автор: amusich (2011-11-03, 16:35)

Повторил инициализацию и логику, что в статье, для RFM23B-868 (0x7573, 0x7664), микроконтроллер STM32F100B (отладочный комплект STM32VLDISCOVERY). То, что с передающего RFM23 пакет уходит, вижу по наличию прерывания ТХ. Не могу добиться какого-либо приема на принимающем RFM23 (проверка на столе). "Сопли" (12-14 см), подключающие RFM23 к DISCOVERY могут играть нехорошую роль? [Ответить]

Автор: LVV (2011-10-08, 22:58)

LVV. Подскажите можно ли переделать радиотелефон Senao в радиопередатчик. Чтобы использовать только ВЧ блок. [Ответить]

Автор: CverG (2011-09-14, 13:33)

RE: Neitron. RFM23B-868S1 кто нибудь использовал? уже год то возьму, то отложу. ни как ничего не могу получить от этих модулей. ни так ни этак. [Ответить]

Автор: Dimon (2011-08-14, 22:24)

RE: gruzdevf. Сравнивая примеры на официальном сайте, отличий в инициализации не нашел [Ответить]

Автор: Dimon (2011-08-14, 22:12)

RE: TOLIANBS. Русской документации для RFM22 на момент выхода статьи не было. [Ответить]

Автор: Dimon (2011-08-14, 22:03)

RE: TOLIANBS. Аппаратный не использовал, т.к. во-первых не было необходимости, во-вторых код был полностью портирован из examples с официального сайта производителя. Думаю, что с такими познаниями перевод на аппаратный spi не вызовет у Вас проблем :). К RFM12BP руки так и не дошли, да и модулей уже нет. [Ответить]

Автор: vbaIvan (2011-08-08, 23:05)

RE: Neitron. Можно взглянуть на ваш код - сечас делаю линк на этих же модулях - не получается:( где косяк не вижу пока. Сделал на базе местного кода - не пашет заменил в регистрах 76,77 значения на 0х73,0х4b. Думаю ещё гдет косяк :( [Ответить]

Автор: gruzdevf (2011-08-03, 12:24)

как считаете, а для RFM-23B код инициализации будет такой же? они отличаются только мощностью и ценой? [Ответить]

Автор: Гришаня Рудаков (2011-07-25, 10:50)

RE: TOLIANBS. Dimon в отпуске.. недели две как минимум без связи с нами.. [Ответить]

Автор: TOLIANBS (2011-07-23, 13:26)

Да это браузер, скачал DOWNLOAD ом и посмитрел вопрос - почему не использовался ISP аппаратный интерфейс 2313 там получаеться простая процедура и довольно таки просто + данные кинул в ISP И РУЛИ ДАЛЬШЕ установил прерывание по ножке возврата данных(у 2313 есть такая возможность) А на руском описание для RFM22 нет?лень переводить да и можно ошибок наделать Насчёт RFM12BP как статья? [Ответить]

Автор: LVV (2011-07-23, 11:36)

RE: fmkit.А где взять прошивку для радиоуправления.Может скинеш.LVV. [Ответить]

Автор: Dimon (2011-07-22, 15:16)

RE: TOLIANBS. В FIFO буфер можно загружать до 64 байт (да хоть один байт как в этой статье). Принципиальные схемы приведены в формате gif с высоким разрешением- возможно у вас браузер глючит [Ответить]

Автор: TOLIANBS (2011-07-22, 3:40)

Ксожолению загружаеться пустые листы схем Меня интересует как подключит правильно используя 2313 в своём проекте хочу поставить МЕГУ8/48да и вопрос сказанно FIFO имеет 64 байта те можно загрузить всё FIFO и начать передачу или я чтото не понял? в TRC102(RFM12)2 байта там проще,но дальности в 120 метров не получаеться (пакеты по 10 байт от 5-и передатчиков при скорости 4800 с пакетными сиансами в 0,5 сек,1 запросил и пять по очереди ответили ) максимум 50-70 метров уверенного (без ошибок) а уносиш дальше , начинаются провалы и ещё антены если применять дипольные но специальо изменённые(к сожалению на 433 нет размеров только на 800 и900 ) будет ли связь дальше [Ответить]

Автор: Dimon (2011-07-21, 22:26)

RE: LVV. В статье проводился тест в режиме FSK. В GFSK режиме и используя модули с индексом "B" дальность будет больше. В комментариях кто-то писал о дальность в 2 км - вполне может быть.. Программу написать можно - она будет зависеть от ваших требований и задач. Воспользуйтесь приведенными примерами программ контроллеров, думаю, для начала вам это сильно поможет. [Ответить]

Автор: LVV (2011-07-21, 13:15)

Автор:LVV(2011-07-21,10:20) В интернете есть схема передатчика для РУ http://www.1slon.ru/viewpage.php?page_id=2 там дальность 3 км у вас же 300м где правда.А можна написать программу для РУ а то там нет. [Ответить]

Автор: Гришаня Рудаков (2011-07-20, 10:46)

RE: TOLIANBS.Попробуйте еще раз. Схемы в формате *.gif. Если не получиться открыть, сообщите по электронной почте, вышлем [Ответить]

Автор: TOLIANBS (2011-07-19, 22:38)

не открыцваються схемы, хотелось оценить и сравнить с своим решением [Ответить]

Автор: kest (2011-06-20, 23:08)

RE: opertechnic. У Вас случайно не осталось исходников от pic18? Взял код с сайта, поправил для MCC18, но не работает... rfm23B-868S1, менял 0x75й регистр с 0х53 на 0х73. Может еще упустил что? Кстати, при довольно частой передаче ни у кого модули не греются? [Ответить]

Автор: Кулибин (2011-05-18, 18:04)

RE: Dimon. благодарю [Ответить]

Автор: Dimon (2011-05-18, 15:23)

RE: Кулибин. nSEL - ножка выбора (SELECT) микросхемы (если на шине находится несколько микросхем, то можно выбирать ту, которая будет передавать данные по шине). Что касается режима работы (прием или передача и т.д.) - режим работы задает регистр 0x07h (стр. 16 в документации) [Ответить]

Автор: Кулибин (2011-05-17, 20:31)

RE: Кулибин. прошу прощения. использую "ФИФО" [Ответить]

Автор: Кулибин (2011-05-17, 19:46)

доброго времени суток. объясните пожалуйста такую вещь. пишу диплом. использую в качестве приёмо-передатчиков RFM-23. алгоритм такой.с АЦП микроконтроллера считываю сигнал, затем передаю его же на RFM-23(по схеме использую DIRECT MODE) . другой RFM-23 его принимает и через микроконтроллер с помощью ШИМ отправляет на исполнительное устройство. затем так же отправляет следующие данные. после отправки трёх пакетов, переключается в режим приёма, и принимает данные с управляемого устройства(к слову говоря это игрушка на радиоуправлении) о состоянии питания. соответственно в это время RFM на модели работает как передатчик. мне не нужен сам код, мне бы как это описать в алгоритме работы. как Я понял, смена режима записи и чтения в RFM реализован по спаду nSEL. какой сигнал надо передать с микроконтроллера и куда что бы RFM принял данные от микроконтроллера, передал его в эфир, потом снова принял-передал. снова принял-передал. потом получил данные из эфира-отправил их на микроконтроллер, и снова получил-отправил. ещё Я понял что nIRQ=0 когда RFM готов получать данные от микроконтроллера, а =1 когда отправляет. так? прошу извинить за возможную тупость. Я не программист. [Ответить]

Автор: Dimon (2011-05-11, 12:16)

RE: ASV. Я ничего не слышал. Использовал в нескольких проектах RFM23B-433-S2, работают до сих пор отлично. [Ответить]

Автор: ASV (2011-05-10, 14:03)

Коллеги, планировал заложить в новое изделие радиомодуль RFM23B-433, даже заказал в Платане 10шт, они мне отгружают 6 и говорят, что больше возить не будут потому что с заводом, который эти модули делает, какие то проблемы и в новое изделие их лучше не закладывать! Кто нибудь слышал про это? Или это всё фигня? [Ответить]

Автор: Dimon (2011-05-08, 15:16)

RE: murashh. Проверьте происходит ли прерывание при отправке и при получении пакетов. Записывать информацию в буфер можно только после того, как убедитесь, что предыдущий пакет отправлен (низкой уровень на nIRQ) [Ответить]

Автор: murashh (2011-05-08, 7:53)

Кто-нибуть посмотрите, где я накосячил? Ничего не получилось. http://radiokot.ru/forum/viewtopic.php?f=20&t=38421&p=821063#p821063 [Ответить]

Автор: Dimon (2011-03-25, 22:33)

RE: Serega. в регистр 0x7F записывается данные для отправки. После переводите модуль в режим передачи, путем отправки 0x09 в регистр 0x07. [Ответить]

Автор: Serega (2011-03-25, 22:02)

Извините за глупый вопрос, а в какой регистр нада записывать данные что бы их передать? [Ответить]

Автор: Serega (2011-03-25, 22:00)

Извините за глупый вопрос, а в какой регистр нада записывать данные что бы потом их передать? [Ответить]

Автор: opertechnic (2011-03-18, 20:12)

Простите за беспокойство, разобрался ... точнее поставил Ope* Offic* и нормально открылась таблица для расчетов. Да, а вот SPI у него медленный :( [Ответить]

Автор: opertechnic (2011-03-18, 17:01)

RE: Dimon. Да, в даташите от силаба немного по другому... но у меня 0x07 вообще не передает.Заказал антенны в магазине, жду доставки. Таблица кселевская глючит конкретно. Помогите настроить ПРИЕМНИК на 9600bps хотя-бы а то уже день сижу никак не могу вкурить как настроить. Заранее огромное спасибо... [Ответить]

Автор: Dimon (2011-03-16, 21:28)

Смотрите 39 страницу трансивера, входящего в модуль http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/Si4430-31-32.pdf&src=ProductMatrix. Согласно этой документации, максимальное усиление будет, если записать 0x07 в регистр 0x6D. Также рекомендую использовать GFSK-модуляцию 0x23 в регистр 0x71. По поводу скорости - смотрите комментарий Dimitri [Ответить]

Автор: (2011-03-14, 14:55)

RE: Dimon. В 6D пишу 03 . Кстати а за что отвечает 3 бит? А ещё не выходит поднять bitrate :( более 4800bps . Регистры 6E,6F - Tx Data Rate они-же и RX? [Ответить]

Автор: Dimon (2011-03-11, 21:29)

RE: opertechnic. В своем проекте я использовал штыревые антенны на диапазон 433 МГц. С модулем антенны были соединены 50-Омным кабелем. Посмотрите на какую выходную мощность настроены модули (регистр 0x6d) [Ответить]

Автор: opertechnic (2011-03-11, 15:45)

1-ую проблему решил.... лохонулся с SPI_Read (лишний сдвиг один был) ... а проблема с антенной осталась актуальной [Ответить]

Автор: opertechnic (2011-03-11, 14:40)

Вот и у меня появились 2 таких модулька ... сваял на 18ых пиках схемку, написал прогу ... с горем пополам всё заработало. Но есть пару вопросиков. 1. передаю 00 принимаю 00, передаю 01 принимаю 02, 02 - 04 и т.д. В чем хрень? никто не сталкивался? Вопрос 2 какие антенны использовали, а то я больше 50-70м получить не могу :( [Ответить]

Автор: Гришаня Рудаков (2011-02-23, 11:12)

RE: CverG.Все исходники, электрическая схема и документация доступны для скачивания после регистрации [Ответить]

Автор: CverG (2011-02-18, 17:53)

RE: Neitron. Поделитесь исходниками. у меня сто то не выходит, правда у меня RFM23B думаю разница не велика? [Ответить]

Автор: Dimitri (2010-09-15, 8:25)

Поделюсь своим начальным опытом с сиим девайсом. 100 kbps удались-таки. То есть видно, что с подачи буфера FIFO на передачу до момента выброса прерывания проходят около 6.2 мс, причём передаются 82 байта, из которых полезной информации 64 знака. Остальное - обрамление так сказать. Но самое-то главное, что они и принимаются с проверкой того, что пришло. А удалось это благодаря экселовской таблице со страницы Silabs. Посчитала мне все необходимые регистры. Осталось разобраться, почемы клинит на больших (да в общем-то и не очень, ведь можно до 10МГц) скоростях SPI. А то загрузка FIFO длиться дольше, чем сама передача. [Ответить]

Автор: fmkit (2010-09-12, 21:09)

с заявленной чувствительностью -121дб и 50мвТ (рфм42б) дальность должна быть несколько км я прикрутил модули на пульт радиоуправления и на полтораметровый самолет, 2км точно летает как надо [Ответить]

Автор: Dimon (2010-09-11, 20:41)

to granel: чем выше над землей, тем больше дальность. [Ответить]

Автор: granel (2010-09-11, 15:25)

и антенны обе - четверьть волновый штырь [Ответить]

Автор: granel (2010-09-11, 15:24)

народ, я не понял о дальности для какого модуля разговор? для rfm22 ? но я для модуля rfm01+rfm02 868mhz имею дальность до 450 метров. высота TX-окно 2-го этажа, rx-у меня в руках, стою на земле . [Ответить]

Автор: Dimon (2010-07-21, 22:20)

To Neitron: таких проблем не было. Однако, когда я собирал проект на передатчике RT-14 было что-то подобное. Проблеме была в антенне, точнее к отрезке провода. При изгибе антенны данные в эфире передавались с помехами и на приемной части на проходил контроль CRC, либо не приходил байт целиком. Проблема решилась установкой нормальной антенны, соединенной с модулем высокочастотным кабелем. [Ответить]

Автор: Neitron (2010-07-20, 16:45)

Direct mode оказываеться во много раз сложнее, китайцы сами его не используют. Там проблема отбора полезного сигнала, от той туфты что гонит приемник. Пришлось отказаться от его применения. В fifo режиме работает четко, правда иногда в посылке глотает первые 1-3 байта, не могу пока понять почему. Dimon у тебя не было такого, чтоб первые байты в посылках не доходили? [Ответить]

Автор: Neitron (2010-07-07, 17:25)

Там действительно инициализация на FSK происходит. Жаль нету примеров по работе в direct mode, щас вот пробую, то на выходе чето сплошной меандр, который не меняеться от манипуляции на передатчике. Если у кого получиться без буфера использовать модуля, дайте знать :) Без включеного передатчика идет прием шума с эфира. С передатчиком меандр. [Ответить]

Автор: guit (2010-07-06, 13:22)

Как только будет что показать обязательно поделюсь))). Пока только комплекташка пришла, надо теперь платы развести и начинать привязку ПО. По устройству (что это будет) здесь описал http://electronix.ru/forum/index.php?showtopic=78042. Насчёт результатов по GFSK - смотря что результатом назвать))), разве что на дальность сравнить можно, так как скорость передачи большая мне не требуется - менять её не буду оставлю 4.8К, но GFSK и FSK сравню по ошибкам и растоянию передачи. За ссылку спасибо, описание модуля сильно совпадает с даташитом RFM22, зато по ссылкам в конце ("Application Notes and Reference Designs") много интересного нашёл. [Ответить]

Автор: Dimon (2010-07-05, 22:25)

хм, точно! Ошибка была в официальном примере, который я принял за достоверный. Интересно, какие результаты будут у вас с Gfsk, ведь его рекомендует производитель.. Поделитесь наработками ;) Если интересно, то в состав модуля входит трансивер фирмы Silicon Lab. Вот его даташит http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/Si4430-31-32.pdf&src=ProductMatrix [Ответить]

Автор: guit (2010-07-05, 17:35)

По коду инициализации устройств не совсем понятно. В начале статьи Вы пишите, что используете GFSK модуляцию. Если по даташиту посмотреть описание на регистр 0x71, то значение 0x22 соответсвует обычной FSK, для GFSK необходимо занести 0x23.. Или я что-то не так понял?? [Ответить]

Автор: Dimon (2010-06-24, 18:37)

Да, конечно, тест на дальность связи проводил. На открытой местности дальность связи составляла около 100 м. при расположении на 1,5 м. над уровнем земли (высота оказывает сильное влияние). При этом были использованы антенны с коэффициентом усиления +2dBi. По данным производителя дальность связи в 200-300 метров достигается на открытом пространстве на высоте 10 м. над уровнем земли. Можно увеличить дальность, если поставить направленные антенны, но, как правило, они массивны... [Ответить]

Автор: Neitron (2010-06-24, 17:55)

Собрал похожую проверочную макетку только на RFM23 (+13dBm), часть кода взял с вашей статьи. Дальность составила около 60 м прямой видимости (устойчивый прием), антенны - кусок провода в изоляции (17-20см)питание 3,3 В. Никакого согласования с антенами не проводил, настройки такие же как в статье. Максимальное значение уровня сигнала приемника RSSI 98-107(когда два модуля лежат рядом), обрыв линка на значении RSSI 65-67. Возможно с нормальными антенами дальность будет больше. А вы проводили тест дальности? [Ответить]

Гости не имеют права добавлять комментарии и проставлять рейтинг.