RF модули от HOPERF RFM01 & RFM02

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
MiklSh
Потрогал лапой паяльник
Сообщения: 361
Зарегистрирован: Чт дек 28, 2006 12:46:58
Откуда: Хлынов
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение MiklSh »

По крайней мере то, что в глаза бросилось:
*приемник вывод DATA/nFFS иногда на массу сажает - у Вас оно жестко на +Upp подключено - через резистор надо.
*у передатчика задержки тактирования по SCK 16мс - помню бился, сильно мало / сильно много, не хотел передавать, остановился на 1мкс.
*у приемника CE84/CE87: s1=0 s0=1 - при этом приемник цепляется именно за преамбулу, те самые "0xAA 0xAA 0xAA 0x2D 0xD4" передатчика, иначе весь массив битов принимается со сдвигом - в итоге на выходе каша. Если при этом буфер не запоняется - значит что то выше, в приемной части не так.

с полосой приема - не то, у Вас:
на приемнике 8D8A = 134кГц на передатчике 8B81 = 60кГц

у меня
на приемнике 9189 = 200кГц на передатчике 9086 = 210кГц

Ширина передачи должна быть больше чем лимит срабатывания у приемника.

Остальное пока не осилил.

Все это ИМХО, могу ошибаться.
avv
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Вс мар 21, 2010 13:12:46

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение avv »

Maxxon,
удалось запустить модули-то?
Муромец
Родился
Сообщения: 2
Зарегистрирован: Пт июл 09, 2010 13:37:48

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Муромец »

Добрый день, у меня вопрос по дальности работы rfm модулей.
Собраны приемник и передатчик на модулях RFM01, 02 фирмы hope. 433 Мгц. первый вариант был собран на макетной плате с кучей проводов, как на приемнике так и на передатчике, получилось растояние порядка 150 метров с антеннами ANT 433 HETH, но намотанными вручную. далее была собрана вторая версия, которая работала максимум на 70м. после чего развели платы и спаяли все аккуратно на smd компонентах. Вышло расстояние 70м(
купил антенны в магазе и получилось следующее:
ANT 433 PW-LP 100м с натягом
ANT 433 SP примерно 50м
ANT 433 HETH 70м.
http://www.megachip.ru/search.php?searc ... mp;x=0&y=0
а необходимо 150м. какие могут быть варианты для увеличения дальности?
... может есть еще какие-то антенны
... Есть ли усилитель, который можно поставить на выход передатчика, Вот например такой не подойдет:
http://www.terraelectronica.ru/news_postup.php?ID=791 или я не так понял?
... есть ли какието советы по расположению модулей относительно общей платы, относительно батареек питания

хотелось бы оставить эти модули, посколько под них уже все есть. приемник (ручной прибор) должен иметь небольшую антенну, передатчик стационарный, но тоже не хотелось бы антунну вешать 70см.
Аватара пользователя
Maxxon
Открыл глаза
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Maxxon »

2 avv: сорри, был в отпуске, не мог проверить. Займусь в ближайшие пару дней и отпишусь. Тут поляк один классную документацию прислал на сами чипы модулей и прогу для симуляции передачи между модулями на компе, надо осилить. Поделюсь со всеми.
Аватара пользователя
Maxxon
Открыл глаза
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Maxxon »

2 Муромец

Может дальность прямо пропорциональна напряжению питания, не пробовали изменять до верхних границ?
Муромец
Родился
Сообщения: 2
Зарегистрирован: Пт июл 09, 2010 13:37:48

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Муромец »

пробовал, к сожалению питание не вариант.
Аватара пользователя
zebrox
Встал на лапы
Сообщения: 117
Зарегистрирован: Вс апр 12, 2009 22:40:37

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение zebrox »

Maxxon писал(а):Поделюсь со всеми.

Ждем-с с нетерпением)
Аватара пользователя
Maxxon
Открыл глаза
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Maxxon »

Забирайте :)

Выложил сюда: http://depositfiles.com/files/kds6h85ck
И сюда: http://rapidshare.com/files/406524289/rfm0102_datasheets.zip

В архиве доки на чипы модулей и конфигуратор с симуляцией.

Буду благодарен модераторам форума, если разместят здесь на сайте, так как ссылки на файлообменники недолговечные.
Также можно было бы выложить конфигураторы от controller-designs.de, так как google их совсем неявно индексирует:

RFM01: http://www.controller-designs.de/index.php?lang=de&cat=projekte&cont=rfm01_eva&sub=
RFM02: http://www.controller-designs.de/index.php?lang=de&cat=projekte&cont=rfm02_eva&sub=
RFM12: http://www.controller-designs.de/index.php?lang=de&cat=projekte&cont=uebersicht&sub= (целый список)
avv
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Вс мар 21, 2010 13:12:46

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение avv »

О_о!!! :o
Спасибо!!!
Аватара пользователя
Maxxon
Открыл глаза
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Maxxon »

Комментарий: насколько мне известно, для симуляции надо выбирать SI4320 (RFM01) и SI4021 (он же IA4221, RFM02).
На сайте silabs.com доступна версия 3.1 софтины.
Аватара пользователя
Maxxon
Открыл глаза
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Maxxon »

В очередной раз сел мучать модули. Крышу снесло окончательно... Столько лет занимаюсь электроникой и программированием и тут такой облом. Плюнул, съездил в мегу за новым приемником. Запаял. Завелось с первого раза. Приличных слов просто не осталось...

P.S.: его пример - другим наука (с)...
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение clawham »

Maxxon, не могли бы вы выслать Вашу тех документацию мне на электронку чтоб я её разместил на своём сервере - домашний 5 мегабит отдача и всегда живой :)
ато эти рапиды и депозиты....блин ну такое фуфло
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
bsresident
Родился
Сообщения: 1
Зарегистрирован: Пн авг 09, 2010 09:41:01

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение bsresident »

Maxxon, можешь выложить свою рабочую версию...Две недели уже мучаюсь, а эффекта никакого: RFM01 не получает посылку (не дергает nIRQ, в статусе не горит FFIT) , если включено обнаружение Sync word, если выключено - поток бессмысленный байтов
Аватара пользователя
Maxxon
Открыл глаза
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Maxxon »

Выложу чуть попозже, когда все тесты пройдут :) Скорее всего, в виде отдельной статьи :)

На самом деле, огромная благодарность тов. MiklSh. Когда я уже отчаялся, вспомнил что он выложил несколько постов назад рабочий код, собственно отсюда и стал плясать. Собрал схемку согласно комментам, увидел что при работающем коде приемник не реагирует адекватно и заменил его. После замены все действительно заработало :) Рекомендую тоже пойти этим путем.
Пара нюансов:
1. По коду передатчика на SPI инициализируются единички, это, например, мешает моему программатору (а-ля AVR910 USB), который перестает видеть тиньку после прошивки. В случае программатора типа uniprof, полагаю, все будет работать без косяков.
2. Дребезг контактов на передатчике. Если нажать кнопку очень быстро, отрабатывает. Если хоть на долю секунды дольше, то нет (для моей конструкции, конечно, это минус, так как мне наоборот дребезг необходим :) подлечим как-нибудь...)

P.S.: повесьте светодиод на VDI до земли и включите его в фифо, для отладки очень удобно.
grjgrj
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн сен 28, 2009 08:59:02

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение grjgrj »

Люди помогите! Работаю с RFM01 и RFM02 + две Atmega8.
Использую примеры выложенные в этой теме: не идет поллинг nIRQ, программа на нем зависает и работать не хочет.
В чем может быть проблема? Вот код:

Код: Выделить всё

//Команда работает проверл с помоoью CLK
void WriteCMD  (unsigned int Cmd)
{


 unsigned char u;

   nSEL=0; delay_us(10);
   SCK=0; delay_us(10);
   for(u=0;u<16;u++)
   {
       SCK=0; delay_us(10);
       if(Cmd&0x8000)
       {
          SDI=1;
       }
       else
       {
          SDI=0;
       }
       delay_us(10);
       SCK=1;
       delay_us(10);
       Cmd<<=1;
   };
   SCK=0; delay_us(10);
   nSEL=1;delay_us(10);

}


void rf02_shiftout(unsigned short wert)
{
   unsigned char j;
   for (j=0; j<8; j++)
   {
       UART1_Write_Text("Sn1");
       while(nIRQ==1);                                                          //вот здесь виснит
       UART1_Write_Text("Send2");
       while(!(nIRQ==1));                                                             
       UART1_Write_Text("Send3");
       delay_us(3);                                                             
       if (wert&128)                                                           
          {SDI=1;}                                                             
  //        {FSK=1;}                                                             
       else
          {SDI=0;}                                                             
   //       {FSK=0;}                                                             
       wert<<=1;                                                               
    }
}

//Отправка
void rf02_txdata(unsigned char date[8])
{
   unsigned char k,wert,temp;

   wert=0xC6;
   nSEL=0;
   for (k=0; k<8; k++)
   {
     if (wert&128)
         {SDI=1;}
     else
         {SDI=0;}
     SCK=1;
     delay_us(1);
     wert<<=1;
     SCK=0;
     delay_us(1);
   }

   rf02_shiftout(0xAA);
   rf02_shiftout(0xAA);
   rf02_shiftout(0xAA);
   rf02_shiftout(0x2D);
   rf02_shiftout(0xD4);
   for (k=0; k<8; k++)
    {
     temp=date[k];
     rf02_shiftout(temp);
    }
   rf02_shiftout(0xAA);
   rf02_shiftout(0x00); // áåç ýòîãî îòðåçàåòññÿ ïîñëåäíèé áèò ïðè ïåðåäà÷å
   while(nIRQ==1);
   delay_us(10);                                                               
   nSEL=1;
   delay_us(10);                                                               
     UART1_Write_Text("SendFin");

}

//Инициализция
void Inti_RFM_02()
{
   UART1_Write_Text("Init");
   Delay_ms(500);
   nSEL=0;delay_us(10);
  // WriteCMD(0xC001);
  // WriteCMD(0xCC00);   //×òåíèå ñòàòóñ áàéòà (ìîæåò è íå íàäî)
   WriteCMD(0x9086);   //868 MHz band, 1 MHz CLK, 12.5 pF   ms : FSK sign = 0   df(fsk) = 150 kHz
   WriteCMD(0xA840);   //RFM02 - Frequency Command      //Set center frequency to 867.84 MHz
   WriteCMD(0xC811);   //RFM02 - Datarate Command       //Set datarate to 19.15708 kbps
   WriteCMD(0xB400);   //RFM02 - Power Setting Command  //Set output power to -12 dB
   WriteCMD(0xC2A0);   //RFM02 - LB Det./TX Sync. Command //âêëþ÷åíà ñèíõðîíèçàöèÿ óðîâåíü áàòðàåå 2,2Â, êàëèáðîâêà WathDog âûêëþ÷åíà
   WriteCMD(0xD2C0);   //RFM02 - PLL Command              //38,4 ìàêñ áèòðåéò, -107 dbc/hz 33% òîêà
   WriteCMD(0xC0E0);   //RFM02 - Power Management Command

   UART1_Write_Text("InitFin");

}

//Отправка
void RFM_Send()
{
  unsigned short date[8];

  date[0]=0xA0; date[1]=0xA1; date[2]=0xA2; date[3]=0xA3; date[4]=0xA4; date[5]=0xA5; date[6]=0xA6; date[7]=0xA7;
 Inti_RFM_02();
  rf02_txdata(date);
  VD=1; delay_ms(10); VD=0;
  rf02_txdata(date); delay_ms(1);
  rf02_txdata(date); delay_ms(1);
  rf02_txdata(date); delay_ms(1);
  rf02_txdata(date); delay_ms(1);
  rf02_txdata(date); delay_ms(1);
  rf02_txdata(date); delay_ms(1);
  rf02_txdata(date); delay_ms(1);
  WriteCMD(0xC001);                                                             //CLOSE TX çàâðåøåíèå ïåðåäà÷è!, à ãäå íà÷àëàñü?
  UART1_Write_Text("SendFin");
  InputBytes[0]=0;                                                             //Ñáðîñ êîìàíäû
  i=0;
}


Проблеме найдена, код рабочий, проблема была в кривых лапах. Удалось запустить прием-передачу, проблем нет!
Но есть еще вопрос, подскажите как правильно организовать прием данных одним RFM01 он нескольких RFM02, да так чтобы коллизии не было и данные не терялись, передача 11 байт раз в день или реже.
Stepan
Встал на лапы
Сообщения: 126
Зарегистрирован: Пн мар 16, 2009 07:37:42
Откуда: Новосибирск

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Stepan »

grjgrj вам надо rfm12 и проверки чек сумм и высылание подтвержения о том что пакет принят правильно и опрос... т.к. вероятность неприема пакета всегда есть, а вам ещё и несколько передатчиков надо принимать
меньше слов - больше дела
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение TechMike »

Разбираюсь с RFM02+tiny2313, пытаюсь ее заставить передавать на нужной частоте, но не получается.
Использую исходники немца, вот отсюда http://myfablab.wordpress.com/2010/06/22/rfm01-and-rfm02-libraries-for-arduino-18-version-0-1/
Подключил так:
FSK - на +5в или "в воздухе"
CLS - "в воздухе"
VDD-+5в
nIRQ - PB4
SDI - PB0
SCK - PB1
VSS - GND
nSEL - PB2
и светодиоды на PD4 и PD2 для отладки.
МК заведен от внутреннего RC генератора 8Мгц.
tiny2313 видит RFM02, успешно проходит ее инициализация и начинает раз в секунду слать "0000001111100000888888888\n" но на частоте 434.0мгц ничего не происходит, тишина. Отсканировал все вплоть до 450.0мгц, иногда на пару кубиков слышно передачу модуля, но это явно промежуточная частота или гармоники самого RFM02.
Сканирую с помощью yaesu vr6
Исходники ниже.
Что я делаю не так?
Вложения
rf02.h
(684 байт) 604 скачивания
rf02.c
(3.35 КБ) 327 скачиваний
main.c
(2.3 КБ) 339 скачиваний
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение TechMike »

Заработал RFM02 на передачу. пришлось в исходнике немного задержки в SPI подкорректировать, самое главное сконфигурировать входы-выходы МК. Для моего включения вот так:

Код: Выделить всё

DDRB=0b11101111; // делаем выходами все порты PINB, кроме PB4(IRQ).
PINB=0b00000000; // выводим на все выходы PORTB 0
PORTB=0b00000000; // и НЕ подягиваем на +питания.

DDRD=0b11111111; // делаем выходами все порты PIND.
PIND=0b00000000; // выводим на все выходы PORTD 0
PORTD=0b00000000; // и НЕ подягиваем на +питания.

Теперь вопрос в том, почему у меня модуль не включает несущую когда конфигурю Power Management Command, а приходится играться Configuration Setting Command
Пример, инициализирую модуль вот так:

Код: Выделить всё

// init rfm02, see datasheet
rf02_trans(0b1100110000000000); // read status

// Configuration Setting Command: band[MHz]=433,CLK frequency[MHz]=2,Load capacitor [pF]=10,ms=0,frequency deviation[kHz]=60
rf02_trans(0b1000101110000001);

// Power Management Command: close all ,the module will get into the sleep state.
//rf02_trans(0b1100000000000001);

// Frequency Setting Command: 433band: Fc=430+1600*0.0025= MHz
rf02_trans(0b1010011001000000);

// Data Rate Command: data rate=4.8k bps
rf02_trans(0b1100100001000111);

// Low Battery Detector and Tx bit Synchronization Command:
// dwc: Disable wake-up timer periodical calibration
// ebs: Enable TX bit synchronization function
// Disable Low battery detector
rf02_trans(0b1100001000100000);

// PLL Setting and Reset Mode Command:
// PLL bandwidth: Max datarate [kbps]=19.2, Phase Noise at 1MHz offset [dBc/Hz](typical)=-112,Charage pump current=25%
rf02_trans(0b1101001001000000);

// Power Management Command:
// ea:Enable power amplifier
// ex:Enable crystal oscillator
// es:Enable synthesizer
rf02_trans(0b1100000000111000);

// Power Setting Command: set relative output power:=MAX
rf02_trans(0b10110000);


Потом перед началом передачи приходится давай команду

Код: Выделить всё

rf02_trans(0b1000101111100000); // TX on (Configuration Setting Command)

А "выключать" несущую только вот так:

Код: Выделить всё

rf02_trans(0b100010111000 0001); // TX off (Configuration Setting Command)


Хотя по примеру обмена с модулем в датащите, нужно для этого использоваться последние два байта Power Management Command
Почему так?
newbart
Родился
Сообщения: 1
Зарегистрирован: Вс мар 18, 2007 10:44:45

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение newbart »

А у меня виснет и при ожидании nIRQ и SDO.
Сделал вариант считки статуса - выдает все время разные числа 1276, 1218, 1091 и т.д.

Код: Выделить всё

#define Set_SDI()    (PORTB |=  (1 << 6))
#define Clr_SDI()    (PORTB &= ~(1 << 6))
#define Set_SCK()    (PORTB |=  (1 << 5))
#define Clr_SCK()    (PORTB &= ~(1 << 5))
#define Set_nSEL()    (PORTB |=  (1 << 4))
#define Clr_nSEL()    (PORTB &= ~(1 << 4))

unsigned int rf01_read_status(void)
{
  unsigned char i;
  unsigned int temp = 0;
 
  Clr_SCK();
  Clr_nSEL();
  Clr_SDI();
  for (i=0; i<16; i++)
  {
    Clr_SCK(); delay_us(10); 
    temp <<= 1;
    if (PINA & (1<<1)) temp |= 0x0001;
    Set_SCK(); delay_us(10);
  };
  Clr_SCK();
  delay_us(10);
  Set_nSEL();
  return(temp);
}

void main(void)
{
  lcd_init();
  __delay_cycles(1000000);
  DDRB |= (1 << 4)|(1 << 5)|(1 << 6);
  Set_nSEL();
  DDRA = 0x00;
  __delay_cycles(1000000);

  for (;;)
  {
    temp = rf01_read_status();
    lcd_show_uint(temp);
    __delay_cycles(9000000);
  }
}
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение TechMike »

newbart писал(а):А у меня виснет и при ожидании nIRQ и SDO.
Сделал вариант считки статуса - выдает все время разные числа 1276, 1218, 1091 и т.д.


Порт для nIRQ сконфигурирован как вход?
Ответить

Вернуться в «Периферия»