0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
1

Atmega8 и 433Mhz передатчик и приемник

18.02.2015, 21:58. Показов 18974. Ответов 18
Метки нет (Все метки)

Вобщем такая беда. Есть 2 атмеги8, одна приемник ,другая передатчик,работают на частоте 12.8Mhz от внешнего кварца, скорость передачи по UART 9600 BAUD, и есть 2 модуля 433 Mhz приемник и передатчик как на фото http://img.dxcdn.com/productim... 0194_1.jpg.
Есть код RX и TX, приемника и передатчика соответственно, при замыкании на землю портов PB на передатчике, на приемнике эти же порты становятся в низкий сигнал, при размыкании в высокий.
При соединении проводом выводов RX и TX все работает четко, но при подключение на радиопередатчики почти ничего не работает, а именно, пока не дотронешься пальцем до земли на приемнике он не реагирует на принятую инфу. Может я не правильно подключил модули? уже и подтягивал резистором RX и TX, давал больше напряжение на модули, ставил фильтрующие кондеры на питание. Ничего не помогает. Единственное что нашел, передает все хорошо при подключении от разных источников питания атмеги и модули, при объединении земли атмег и передатчиков снова фигня начинается. Во вложении проекты приемника и передатчика для атмел студио 6.2. Заранее спасибо хоть за какуюто инфу.

[47.63 Кб]
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2015, 21:58
Ответы с готовыми решениями:

ATmega8 and RF 433mhz
Здравствуйте, мужики подскажите, купил на днях mega8 и решил научить её общаться с arduino по 433...

ИК приемник-передатчик. Проблем
Доброго времени суток! Стоит такая задача сделать ИК бампер для определения препятствия, для...

Atmega8 и ИК приемник+ пульт от вентилятора
Привет всем. Есть у меня RGB ночник, работающий на меге8. Возникло желание управлять им с...

Разница между ATMEGA8-16AI и ATMEGA8-16AU
Кто подскажет, в чем разница между ATMEGA8-16AI и ATMEGA8-16AU. Смотрю в Платане цены между ними...

18
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
18.02.2015, 22:49 2
Вообще то для коннекта по радио, нужен особый подход, а не просто передача\прием по UART...

Во первых, в начале должен пройти определенный пилот сигнал, который выведет АРУ приемника на оптимальный режим.
Во вторых, нужно определенное условие начала передачи... это может быть определенная пауза между пилотом и между основным пакетом... или это может быть определенный байт, после приема которого начинается прием всего пакета...
В третьих следуют данные о длине пакета (если она не постоянна), если длина пакета всегда постоянна, то это не нужно...
В четвертых следует основной пакет данных...
В пятых следует контрольная сумма, после проверки которой, принятый пакет может считаться актуальным...

Иначе это будет просто игрушка, которая то не будет работать, то будет самопроизвольно принимать какие то данные...
0
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
18.02.2015, 22:53 3
Я только учусь. Длина пакетов одинаковая. Есть примеры?
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
18.02.2015, 23:04 4
А сколько байт данных нужно передавать, и как часто?
0
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
18.02.2015, 23:05 5
Текущий код передает 12 байт, если можно оптимизировать то достаточно 2 байт данных без учета всяких проверок, частота нужна для начала 1 раз в сек
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
18.02.2015, 23:22 6
ну щя соображу примерчик...
0
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
18.02.2015, 23:27 7
Цитата Сообщение от ShodS
ну щя соображу примерчик...
Буду очень благодарен за помощь!
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
19.02.2015, 00:48 8
Замутил статейку...
http://asis-kbr.ru/forum/viewtopys.php? ... p=717#p717
0
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
19.02.2015, 08:44 9
Спасибо! Буду разбираться
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
19.02.2015, 10:18 10
данные радиомодули не имеют никакой защиты от потери данных, поэтому ее нужно делать программно
Как уже ShodS написал один из вариантов - манчестер
кстати именно манчестер используется китайцами в датчиках сигнализации и в радио розетках, под это дело они даже выпускают специализированные микросхемы.

я по лени использовал готовую библиотеку, она правда под ардуину https://code.google.com/p/rc-switch/dow ... p&can=3&q=

есть другие радиомодули которые берут на себя задачу по обеспечению сохранности данных при передаче
например на базе чипа NRF24L01. они стоят не сильно дороже RF433
0
MCSD: APP BUILDER
8791 / 1070 / 104
Регистрация: 17.06.2006
Сообщений: 12,603
19.02.2015, 11:14 11
приёмник здесь простейший, поэтому есть проблема - 1 передаётся чётко, а вот вместо 0, приёмник может выдавать шум, ловя любую помеху, отсюда и проблемы
0
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
21.02.2015, 05:15 12
Цитата Сообщение от ShodS
Все работает, спасибо большое! Но я не увидел настройки кол-ва байт данных для передачи.
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
21.02.2015, 18:26 13
Работает в железе или в протеусе?...

Код
//передать 2 байта
uint8_t Byte1 = 0x00;            //байт №1
uint8_t Byte2 = 0xff;            //байт №2

ManBufAddByte (0, data1);         //поместить в 0 ячейку буфера, байт данных
ManBufAddByte (1, data2);         //поместить в 1 ячейку буфера, байт данных
ManTransmitData (2);            //передать два байта данных из буфера

//принять 2 байта
uint8_t Byte1;                  //байт №1
uint8_t Byte2;                  //байт №2

while (1){
uint8_t* pBuf = ManRcvDataCheck();//проверка наличия данных
if (pBuf){                  //если указатель не нулевой, значит данные поступили
Byte1 = *pBuf++;         //читаем первый байт
Byte2 = *pBuf++;         //читаем второй байт
ManReceiveStart ();         //перезапуск процесса чтения MANCHESTER данных

//делаем чтото с Byte1 и Byte2...
}
}
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,044
21.02.2015, 18:29 14
Существуют ли приемники со следующей фичей: если есть полезный сигнал, на отдельном пине будет соответствующий сигнал? Чтобы не ловить лишний шум.
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
21.02.2015, 18:31 15
Цитата Сообщение от dymyurk1978
Существуют ли приемники со следующей фичей: если есть полезный сигнал, на отдельном пине будет соответствующий сигнал? Чтобы не ловить лишний шум.
Если в приемном модуле стоит контроллер который анализирует сигнал - то да...
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,044
21.02.2015, 18:41 16
По каким ключевым словам искать? Ну или примеры таких приемников.
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
21.02.2015, 18:51 17
Цитата Сообщение от dymyurk1978
По каким ключевым словам искать? Ну или примеры таких приемников.
Ну я вообще то имел ввиду, что простых приемников с такой функцией наверное не существует...
Сложные приемники (с контроллером), которые сами принимают сигнал - вроде известны... например NRF24 или что то подобное...

Цитата Сообщение от dymyurk1978
Чтобы не ловить лишний шум.
А в чем проблема? почему бы не мониторить сигнал своим контроллером? Для этого всего то будет происходить в секунду около 1000 прерываний по внешнему входу, ну и столько же прерываний по переполнению... совсем ничего для того же AVR... Если нужна экономичность, ну наверное есть контроллеры и поэкономичнее...
Тем более что сам приемный модуль кушает наверное даже больше контроллера...
0
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
21.02.2015, 19:20 18
Цитата Сообщение от ShodS
Работает в железе или в протеусе?...

Код:
//передать 2 байта
uint8_t Byte1 = 0x00; //байт №1
uint8_t Byte2 = 0xff; //байт №2

ManBufAddByte (0, data1); //поместить в 0 ячейку буфера, байт данных
ManBufAddByte (1, data2); //поместить в 1 ячейку буфера, байт данных
ManTransmitData (2); //передать два байта данных из буфера

//принять 2 байта
uint8_t Byte1; //байт №1
uint8_t Byte2; //байт №2

while (1){
uint8_t* pBuf = ManRcvDataCheck();//проверка наличия данных
if (pBuf){ //если указатель не нулевой, значит данные поступили
Byte1 = *pBuf++; //читаем первый байт
Byte2 = *pBuf++; //читаем второй байт
ManReceiveStart (); //перезапуск процесса чтения MANCHESTER данных

//делаем чтото с Byte1 и Byte2...
}
}
Работает и там и там :), спасибо за помощь!
0
Sirk_kyt
28.02.2015, 09:02 19
На будущее, если интересно, то можешь посмотреть модули CC1101
Они, конечно по-дороже и разбираться с ними по-сложнее, но оно того стОит!
На e-bay их навалом http://www.ebay.com/sch/i.html?_odkw=cc ... =&_sacat=0

Это старинный модуль, раньше его делала фирма Чипкон, а потом их Техас Инструментс купила.
У него столько настроек, что Техасы запилили даже специальную программу для настройки. Программа сама генерирует кусок кода на Си, устанавливающий значения регистров.
Модуль CC1101 поддерживает не только автоматическую проверку целостности (правильности доставки) данных, но и даже может делать восстановление потерянных бит! Это называется что-то вроде программного усиления сигнала.
И он настолько микропотребляющий, что с литиевой батарейкой можно сделать устройство, работающее годами!

Я их использовал как-то, дальность реально метров 250...300. Но сразу совет - лучше при настройке не жадничать и полосу сигнала сильно не зауживать, а то, по-ходу у китайских модулей кварцы гуляют от партии к партии...
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2015, 09:02

mega8 and RF 433mhz
Здравствуйте, мужики подскажите, купил на днях mega8 и решил научить её общаться с arduino по 433...

ATTiny85 + 433mhz receiver + ICSP
Здравствуйте. Проектирую схему с использованием attiny85 и 433mhz ASK ресивера FS1000A (...

Передатчик RC5 в Proteus
Всем привет. Нужно к микроконтроллеру AT90S2313 (К контакту PD0) подключить передатчик RC5. Но как...

Приемник, передатчик
Всем привет. Есть 2 катушки, одна с приемником, другая с передатчиком. Нужно чтобы светодиод горел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.