Например TDA7294

Форум РадиоКот • Просмотр темы - UART-RF модуль не работает
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб авг 02, 2025 22:46:30

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: UART-RF модуль не работает
СообщениеДобавлено: Вт фев 15, 2011 12:07:24 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
Написал программу, спаял в железе: 2 атмеги8 общаются по UART по проводам, на одной атмеге матричная клавиатура, на второй жк 2х16, нажимаем кнопку на клаве- на жк выводится цифра соответствующей клавиши. по проводам всё работает, припаяли RF модули 423, или 433 мГц не помню, (плата щас не у меня), (RF купили в промэлектронике). Пока клавишу не нажимаем, всё тихо, когда нажимаем клавишу, прилетает всякий мусор из набора случайных чисел. В чём может быть дело, помогите пожалуйста кто знает чего нибудь по этому поводу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Вт фев 15, 2011 13:25:24 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср дек 29, 2010 17:30:34
Сообщений: 130
Рейтинг сообщения: 0
Просто уартом модулировать радиомодули не проканает. Нужно что-то типа манчестера. Постоянная составляющая выходного сигнала портит всю картину.
Хотя возможны некоторые ситуации, при которых передача пройдет почти правильно, если не забыли про инверсию/неинверсию сигналов при прохождении через сами модули. Но закладываться на это не стоит. Нужно менять модуляцию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 10:11:21 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
Ну что такое манчестерский код немного посмотрел, понял, что нужно разбивать каждый передаваемый бит на 2 части, программно реализовать можно, вот только ресурсов у мк хватит лишь на то, чтобы выполнять только ранее перечисленные действия, а это лишь эксперимент на пути создания системы в которой центральный прибор (например на атмеге 16, 32...) будет по УАРТ-Радиоканалу опрашивать периферийные(на атмеге8, а лучше на еще более дешёвом), которые по 1-wire, или с помощью АЦП получают информацию от датчиков (температура, задымлённость, влажность и т.д.) и по этому же каналу центральный прибор управляет исполнительными блоками (реле). Делаем систему "Умный дом". Может есть дешёвые средства аппаратной реализации этого дела (манчестерский код). Дело в том, что сам я закончил электрофак и мк знаю всего полтора года в программировании самоучка, в целом представляю, в тонкости не вдаюсь, программы писать научился в CVAVR поэтому объясните попроще пожалуйста.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 10:20:32 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Просто уартом модулировать радиомодули не проканает.

Это если они без поддержки оного. А с поддержкой еще как работают. Последние и нужны автору.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 11:12:01 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
Радиомодуль RTL DATA SAW поддерживают RS-232. Если между МК и радиомодулем поставить согласователь уровней MAX-232 будет рааботать?


Последний раз редактировалось vgorskih Ср фев 16, 2011 11:30:11, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 11:20:22 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если именно RS-232 то да, нужен согласователь уровней.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 12:56:53 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср дек 29, 2010 17:30:34
Сообщений: 130
Рейтинг сообщения: 0
vgorskih писал(а):
Радиомодуль RTL DATA SAW поддерживают RS-232.

Я конечно извиняюсь, но похоже Вы заблуждаетесь.
Нету там поддержки RS-232. http://www.promelec.ru/UPLOAD/xml/pdfba ... A_SAW(full).pdf
Поскольку отсутствует кодер-декодер оного.
Об кодировании-декодировании, боюсь придется заботиться самому. :(
Если используете предложенный производителем метод кодирования, скорость будет не выше 2400.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 13:02:43 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Тогда я бы вообще не советовал его использовать. Полно ведь готовых модулей с поддержкой UART'а.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 13:11:30 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
вот он написано что RS-232 поддерживает

http://www.abacom-tech.com/assets/data_ ... AWuser.pdf


Последний раз редактировалось vgorskih Ср фев 16, 2011 14:33:37, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 13:13:32 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
просто куплены уже, обидно что просто так


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Ср фев 16, 2011 16:30:15 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср дек 29, 2010 17:30:34
Сообщений: 130
Рейтинг сообщения: 0
vgorskih писал(а):
вот он написано что RS-232 поддерживает
http://www.abacom-tech.com/assets/data_ ... AWuser.pdf


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

For intermittent signals consisting of single words or short strings of words with a relatively long no-signal
time, this method of generating a digital output is entirely adequate. However, it can cause problems
when the long-term mark/space ratio of the received signal moves too far away from unity. When faced
with long strings of non-encoded RS-232 words containing only 0s or 1s as data bits, the mean detector
output voltage stored on C will change, as the RC time-constant of around 10ms is not infinite. If the
string is long enough, detection errors will eventually occur.
This problem can occur whenever AC amplification is used when processing non encoded RS-232 data.
There is a way around this problem using Manchester encoding, which will be described later.

Об чем я и раньше говорил. Могут быть ситуации, когда оно передастся почти без ошибок. но закладываться на это не стоит.
И ситуации эти будут тем чаще, чем передаваемый сигнал ближе к 0x55 или 0xAA. Чем больше данные будут отличаться от указанных - тем выше вероятность ошибок!
Я уже не говорю об 0x00 и 0xFF.
Раньше нужно было знакомиться с покупкой.
Теперь придется ломать голову над методами кодирования. :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Чт фев 17, 2011 08:35:46 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
а что думаете вот об этой штуке пойдёт для вышеперечисленных целей или нет

http://cxem.net/rmodem/rmodem14.php

а то на форумах и хорошее и плохое пишут, сам баги паял на 90-108 МГц , настраивал с помощью осциллографа (благо был таковой под руками, FLUK вроде), а это чудо 400 с лишним, а осциллографа под руками нет вобще никакого не то чтобы на 400-500, вот и сомневаюсь в надежности, простоте настройки и пр. о чём там написано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Чт фев 17, 2011 09:37:32 
Это не хвост, это антенна

Карма: 2
Рейтинг сообщений: 21
Зарегистрирован: Чт янв 27, 2011 21:57:53
Сообщений: 1318
Рейтинг сообщения: 0
vgorskih писал(а):
а что думаете вот об этой штуке пойдёт для вышеперечисленных целей или нет
Но это же стандартный радиомодуль скопированный из даташита и сделанный на рассыпухе во времена их дефицита. Сейчас то зачем этим заниматься?
Да и не так просто их сделать, как кажется.
Вот в этой теме бились над неизвестным модулем, т.к. не нашли даташита который в конце концов оказался как раз такой, что Вы на рассыпухе собрались делать.

viewtopic.php?p=588447#p588447


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Чт фев 17, 2011 10:01:51 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 21, 2010 10:20:42
Сообщений: 12
Рейтинг сообщения: 0
в общем хрен с ними с купленными радиомодулями может ктонибудь посоветовать уже проверенные радиомодули работающие c UART на скоростях 1200-9600 без всяких манчестерских кодов, или такого в природе нет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Чт фев 17, 2011 10:36:38 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Всё есть. Вопрос в цене :)
Вот несколько модулей с описаниями/тестами: http://easyelectronics.ru/tag/radioperedacha


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Пт фев 18, 2011 20:54:51 
Открыл глаза

Зарегистрирован: Вс фев 06, 2011 16:18:39
Сообщений: 41
Рейтинг сообщения: 0
vgorskih писал(а):
в общем хрен с ними с купленными радиомодулями может ктонибудь посоветовать уже проверенные радиомодули работающие c UART на скоростях 1200-9600 без всяких манчестерских кодов, или такого в природе нет?


Такие есть, но стоит соответственно (один модуль от 29Евро со скоростью до 11500). Про манчетерский код не знаю, но использую кодировку хемминга. Ничего сложного в нем нет. правда передача и прием всех данных проводится дважды.
Если интресно, могу поделиться кусками кода.

Из-за громоздкости этих модулей (да и стоимости тоже), использую модули fm12. Это аналоги SI4420. Кода на них в сети море, но правда есть еще и, уже известные, заморочки. Стоимость в России от 7 дол. Правда обмен ведется по SPI. Эти модули уже протестировал, передают стабильно.

_________________
[url=http:///]:-)[/url]


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Вт фев 22, 2011 19:58:07 
Родился

Зарегистрирован: Пт апр 20, 2007 12:22:27
Сообщений: 5
Рейтинг сообщения: 0
To svd71
если не трудно поделитесь исходником


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Чт фев 24, 2011 00:49:17 
Открыл глаза

Зарегистрирован: Вс фев 06, 2011 16:18:39
Сообщений: 41
Рейтинг сообщения: 0
Atlant писал(а):
To svd71
если не трудно поделитесь исходником


Здесь только работа с кодами Хэмминга:
Код:
unsigned char hamminge[16]={0x15,0x02,0x49,0x5E,0x64,0x73,0x38,0x2F,0xD0,0xC7,0x8C,0x9B,0xA1,0xB6,0xFD,0xEA};
unsigned char hammingd[256]={
0x01,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x01,0x03,0x0A,0x02,0x03,0x07,
0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x06,0x02,0x03,0x0B,0x02,0x00,0x03,0x03,
0x04,0x0C,0x01,0x05,0x04,0x04,0x05,0x07,0x06,0x06,0x07,0x07,0x06,0x07,0x07,0x07,
0x06,0x04,0x05,0x05,0x04,0x00,0x0D,0x05,0x06,0x06,0x06,0x07,0x06,0x06,0x07,0x07,
0x00,0x02,0x01,0x01,0x04,0x00,0x01,0x09,0x02,0x02,0x03,0x02,0x02,0x02,0x03,0x03,
0x08,0x00,0x01,0x05,0x00,0x00,0x03,0x01,0x02,0x02,0x03,0x03,0x03,0x02,0x03,0x03,
0x04,0x04,0x05,0x05,0x04,0x04,0x04,0x05,0x06,0x02,0x0F,0x07,0x04,0x06,0x07,0x07,
0x04,0x05,0x05,0x05,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x05,0x06,0x0E,0x03,0x07,
0x08,0x0C,0x01,0x09,0x0A,0x08,0x09,0x09,0x0A,0x0A,0x0B,0x0B,0x0A,0x0A,0x0A,0x0B,
0x08,0x08,0x09,0x0B,0x08,0x00,0x0D,0x09,0x0A,0x0B,0x0B,0x0B,0x0A,0x0A,0x0B,0x0B,
0x0C,0x0C,0x0D,0x0C,0x0C,0x0C,0x0D,0x0D,0x0E,0x0C,0x0F,0x0F,0x0A,0x0E,0x0F,0x07,
0x0C,0x0C,0x0D,0x0D,0x0D,0x0C,0x0D,0x0D,0x06,0x0E,0x0F,0x0B,0x0E,0x0E,0x0D,0x0F,
0x08,0x08,0x09,0x09,0x08,0x09,0x09,0x09,0x0A,0x02,0x0F,0x0B,0x0A,0x0A,0x0B,0x09,
0x08,0x08,0x08,0x09,0x08,0x08,0x09,0x09,0x08,0x0A,0x0B,0x0B,0x0A,0x0E,0x03,0x0B,
0x0C,0x0C,0x0F,0x0D,0x04,0x0C,0x0D,0x09,0x0F,0x0E,0x0F,0x0F,0x0E,0x0E,0x0F,0x0F,
0x08,0x0C,0x0D,0x05,0x0C,0x0E,0x0D,0x0D,0x0E,0x0E,0x0F,0x0F,0x0E,0x0E,0x0F,0x0E};

Эти два массива служат для кодирования и декодирования данных. Какой из них для каких целей - догадайтесь сами. Лучше, конечно их разместить во флэше, но тут что то много любителей CV, а там вроде другая система декларирования.

Функция отправки.
Код:
void rf12_txdata(unsigned char * data, unsigned char number)
{   unsigned char i, checksum;
   LED_TX=1;
   rf12_trans(0x8238);         // TX on
   rf12_ready();
   rf12_trans(0xB8AA);                 //5 байт синхронизации. АА - за счет чередования нулей и единиц помогает приемнику "тактироваться" в переданном пакете
   rf12_ready();
   rf12_trans(0xB8AA);
   rf12_ready();
   rf12_trans(0xB8AA);
   rf12_ready();
   rf12_trans(0xB82D);
   rf12_ready();
   rf12_trans(0xB8D4);
   rf12_ready();
   rf12_trans(0xB800|(pgm_read_byte(&hamminge[number/16])));   // передается размер буфера данных
   rf12_ready();
   rf12_trans(0xB800|(pgm_read_byte(&hamminge[number&15])));
   if (number<=_MAX_BUF)      // если это подтверждение получения, то данных отправлять не нужно
   {   checksum=id;
      rf12_ready();
      rf12_trans(0xB800|(pgm_read_byte(&hamminge[id/16])));   // Paket ID
      rf12_ready();
      rf12_trans(0xB800|(pgm_read_byte(&hamminge[id&15])));
      for (i=0; i<number; i++)
      {   rf12_ready();
         rf12_trans(0xB800|(pgm_read_byte(&hamminge[*data/16]))); //каждый байт кодируется и посылается 2 раза. один так
         rf12_ready();
         rf12_trans(0xB800|(pgm_read_byte(&hamminge[*data&15]))); //второй раз так
         checksum+=*data;
         data++;
      }
   }
   else
   {   checksum=number;
   }
   checksum=256-checksum;
   rf12_ready();
   rf12_trans(0xB800|(pgm_read_byte(&hamminge[checksum/16])));   // Контрольная сумма для проверки
   rf12_ready();
   rf12_trans(0xB800|(pgm_read_byte(&hamminge[checksum&15])));
   rf12_ready();
   rf12_trans(0xB800);         // dummy data
   rf12_ready();
   rf12_trans(0x8208);         // TX off
   LED_TX=0;
}


теперь прием:
Код:
unsigned char rf12_rxdata(unsigned char *data, unsigned char *id)
{   unsigned char i, number,checksum;
   LED_RX=1;
   rf12_ready();
   number =(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255])*16);   // Размер переданного буфера
   rf12_ready();
   number|=(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255]));
   if (number>_MAX_BUF)            // Если это не подтверждение, то
   {   rf12_ready();
      *data[b] =[/b](pgm_read_byte(&hammingd[rf12_trans(0xB000)&255])*16); //прием первого байта
      rf12_ready();
      *data[b]|=[/b](pgm_read_byte(&hammingd[rf12_trans(0xB000)&255])); //прием второго байта
      rf12_trans(0xCA81);         // restart syncword detection:
      rf12_trans(0xCA83);         // enable FIFO
      LED_RX=0;
      return number;
   }
   rf12_ready();
   *id =(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255])*16);      //  Paket ID
   rf12_ready();
   *id|=(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255]));
   checksum=*id;
   for (i=0; i<number; i++)
   {   rf12_ready();
      *data =(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255])*16);
      rf12_ready();
      *data|=(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255]));
      checksum+=*data;
      data++;
   }
   rf12_ready();
   i=(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255])*16);      // Контрольная сумма
   rf12_ready();
   i|=(pgm_read_byte(&hammingd[rf12_trans(0xB000)&255]));
   checksum+=i;
   rf12_trans(0xCA81);         // restart syncword detection:
   rf12_trans(0xCA83);         // enable FIFO
   LED_RX=0;
   if (checksum)
      return 255;            // checksum error
   else
      return number;         // data ok
}


хардварные функции rf12_xxxx могут быть различной реализации. Поэтому смысла не вижу их приводить. В rfmXX работа ведется по SPI, поэтому первым байтом в слове идет команда, вторым данные. Естественно, кто будет это применять к UART, должны это учитывать и просто выкинуть байт команды.

_________________
[url=http:///]:-)[/url]


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Чт фев 24, 2011 22:26:16 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
В свое время как-то занимался изучением Приемопередатчик AT86RF211 400-950 MHz
Может что-то и пригодится http://www.radioscanner.ru/forum/topic32273.html
Исходники http://www.radioscanner.ru/uploader/2009/for_at86rf211s.zip


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: UART-RF модуль не работает
СообщениеДобавлено: Пт фев 25, 2011 21:33:47 
Родился

Зарегистрирован: Пт апр 20, 2007 12:22:27
Сообщений: 5
Рейтинг сообщения: 0
На BascomAVR:

http://bascom-forum.de/index.php?topic=475.0
http://www.circuitcellar.com/avr2004/DA3522.html


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y