ATmega8 and RF 433mhz

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 5
Зарегистрирован: Чт авг 07, 2014 14:28:00

Сообщение skript »

Здравствуйте, мужики подскажите, купил на днях mega8 и решил научить её общаться с arduino по 433 частоте
радио модули такие (FS1000A / XD-RF-5V) http://www.ebay.com/itm/433Mhz-RF-trans ... 2ed2fc8634

Приёмник - Ардуино
Передатчик - mega8

Скетчи проверял между двумя ардуинами всё работало, а вот с мега8 нечего не приходит(нажимаю мониторинг порта, там пусто). помогите пожалуйста разобраться, в этом деле я новенький так что не пинайте сильно если что не так изложил

загрузчик залит(фьюзы). mega8 прошиваю с помощью ардуино. в мегу заливал тестовый скетч (мигание светодиода), всё моргает

скетч для mega8(передатчик)
Спойлер#include <VirtualWire.h>
void setup()
{
pinMode(13, OUTPUT);
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Устанавливаем скорость передачи (бит/с)
}

void loop()
{
if(digitalRead(14)==HIGH)//если кнопка нажата ...
{
digitalWrite(13,HIGH);
String strMsg = "30041989_01_1";
char msg[14];

strMsg.toCharArray(msg, 14);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Ждем пока передача будет окончена

digitalWrite(13,LOW);//инвертируем состояние пина
delay(50);//небольшая защита от "дребезга" контактов кнопки
}
}
скетч для arduino(приёмник)
Спойлер#include <VirtualWire.h>

void setup()
{
Serial.begin(9600);
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Задаем скорость приема
vw_rx_start(); // Начинаем мониторинг эфира
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Длина буфера

if (vw_get_message(buf, &buflen)) // Если принято сообщение
{
int i = 0;
char Msg;
String strMsg ;
while (i!= 13)
{
Msg= buf;
strMsg+=Msg;
i++;
}
Serial.println(strMsg);
}


бутлоадер mega8(для внешнего кварца)
Спойлер##############################################################
#
# ATmega8 16MHz external clock
#
atmega8_16mhz.name=ATmega8 16MHz standalone no-bootloader
atmega8_16mhz.upload.protocol=arduino
atmega8_16mhz.upload.maximum_size=7680
atmega8_16mhz.upload.speed=9600

atmega8_16mhz.bootloader.low_fuses=0xff
atmega8_16mhz.bootloader.high_fuses=0xc9
atmega8_16mhz.bootloader.path=atmega8
atmega8_16mhz.bootloader.file=ATmegaBOOT.hex
atmega8_16mhz.bootloader.unlock_bits=0x3F
atmega8_16mhz.bootloader.lock_bits=0x0F

atmega8_16mhz.build.mcu=atmega8
atmega8_16mhz.build.f_cpu=16000000L
atmega8_16mhz.build.core=arduino
atmega8_16mhz.build.variant=standard
#
##############################################################


ATmega8 - Распиновка и соответсвие выводам Arduino
СпойлерИзображение


Cхема подключения mega8
СпойлерИзображение
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 70
Зарегистрирован: Сб окт 22, 2011 20:30:26

Сообщение icedev »

Тоже не так давно колупал эту штуку
Вот может поможет:
http://radiokot.ru/forum/viewtopic.php?f=28&t=105689
Реклама
Родился
Сообщения: 5
Зарегистрирован: Чт авг 07, 2014 14:28:00

Сообщение skript »

уже весь инет перерыл((
Встал на лапы
Сообщения: 147
Зарегистрирован: Пт ноя 27, 2009 18:24:25
Откуда: Харьков

Сообщение koteika »

радио модули редкостное говно, простите конечно. пока передатчик спит приемник такую херню принимает из шумов что просто ппц.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

пользуюсь более года, расстояния до 50 м в условиях небольшого города. БП в схеме - импульсное
Всё работает. Замечаний нет
Просто вы их готовить не можете: протоколы обмега, контрольные суммы и прочее ;)

http://ugolok-mastera.ru/proekt/billiard/billiard.htm
фото внизу страницы
Реклама
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Вот так
IAR_RXTX.rar
(118.22 КБ) 461 скачивание
реализовал прием/передачу на подобном устройстве (AT86RF211)за основу брал Arduino.
Контактная информация:
Реклама
ks0
Прорезались зубы
Аватара пользователя
Сообщения: 238
Зарегистрирован: Чт фев 28, 2013 14:16:10

Сообщение ks0 »

koteika писал(а):радио модули редкостное говно, простите конечно. пока передатчик спит приемник такую херню принимает из шумов что просто ппц.
Это сверхрегенерат, так и должно быть. Нужно кодирование и контрольная сумма.
За городом на 200 с лишним метров от кроны работает.
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Сообщение dandan »

ks0 писал(а):
koteika писал(а):радио модули редкостное говно, простите конечно. пока передатчик спит приемник такую херню принимает из шумов что просто ппц.
Это сверхрегенерат, так и должно быть. Нужно кодирование и контрольная сумма.
За городом на 200 с лишним метров от кроны работает.
Подскажите, можно приемник организовать на аппаратном UART? Не могу понять, как оно будет работать если когда нет сигнала едет хаос на входе UART, после которого будет передаваться реальный байт информации.
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

ну, вероятно, приклеивать к массиву данных контрольную сумму
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Сообщение dandan »

А как начать пакет данных, он же будет идти после мусора?
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Начать передавать? или начать принимать?
Передавайте с crc, а приёмник примет и подсчитает, crc - верно, массив принят, нет...ну на "нет" и суда нет
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

Ковырялся тоже с подобными модулями, там же все просто, пиши протокол или бери готовый и вперед, 4 байта пробовал передавать, по комнате ловило хорошо, зависит от питания. Ловил на сколько я помню в прерывании. Короче дрыгай ногами и передавай 0 или 1. Мусора кстати небыло, вот только crc не делал и иногда получал некорректные данные.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Я для подобных целей написал библиотечку http://asis-kbr.ru/forum/viewtopic.php? ... p=750#p750
Друг Кота
Сообщения: 9396
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

dandan писал(а):А как начать пакет данных, он же будет идти после мусора?
Рекомендую почитать как работают заводские радиомодули...

-Перед передачей пакетов, сначало обычно передают преамбулу -10101010.. один или больше байт... По ней приёмник определяет что началась передача данных...
-Для борьбы с шумами, заводские радиомодули используют цифровые фильтры...
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

О... roman.com... а куда сочинение исчезло, такое интересное? )))))
Друг Кота
Сообщения: 9396
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Это всё ещё ктото читает...))) Да что там интересного... всё придумано до нас))

RF 433mhz - обычный радиомодуль на сверхрегенераторе. Все сверхрегенераторы работают одинаково. Подключите осциллограф и посмотрите сигнал сверхрегенератора...
Вот пример работы сверхрегенератора, на примере Радиоуправляемых моделей (Сделано в КНР):
http://radiokot.ru/forum/viewtopic.php? ... &start=240
Так же работает сверхрегенератор в радиомодуле RF 433mhz.

В заводских радиомодулях ставят цифровые фильтры, которые уменьшают уровень шума (помех) на выходе приёмника и повышают достоверность принятых данных.
Вот для примера простой радиомодуль MRF49XA:
Изображение
Обычный цифровой фильтр низких частот, убирает высокочастотные шумы из сигнала.. В более современных радиомодулях используют АЦП.

В простых аналоговых радиомодулях (типа RF 433mhz и др.) нет цифровых фильтров... Поэтому я использую разные программные фильтры в ATmega8...
Передаём обычным манчестером... с фильтром манчестера - |10|10|10|10|10|10|10|10|
Пакеты разделены синхропаузой... с байт-синхронизацией - 11110000
Верификатор - простая проверка на совпадение несколько байтов на каждую команду... Примерно как в пульте телевизора))
http://radioparty.ru/datasheet/213-irco ... l=&start=2
Только байты не подряд, в одном пакете, а в общем потоке данных...

При передачи 3-х байт на команду и при любых помехах, некорректных данных не зафиксировал... (на самом деле корректность данных зависит от избыточности кода - количество байт на каждую команду).

Аппаратный UART так же работает по принципу цифрового ФНЧ... Вопрос только в его эффективности))

Приёмникик на прерываниях хорошо работают только для ИК пультов и по проводам)))
http://radioparty.ru/datasheet/213-irco ... l=&start=3

Для передачи по радиоканалу, использовать прерывания можно... но не эффективно (из-за высокого уровня шума).
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Сообщение dandan »

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

И еще вопрос. Принимаю сигнал ATMega8 аппаратным UART, какую скорость передачи лучше выбрать по опыту? А проверку достоверности делаю сравнением двух одинаковых байт (команд) переданных друг за другом, этого достаточно или надо усложнять?
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Сообщение dandan »

Подскажите, приемник отлично работает от 5В, но если питаю от лития то при снижении напряжения чувствительность резко падает и при 3,5 расстояние приема сокращается до нуля. Схема приемника примерно как на картинке. Как его заставить нормально работать от 3,5-4В?
Вложения
komplekt-rf-moduley-433-mhz.jpg
(39.12 КБ) 490 скачиваний
Друг Кота
Сообщения: 9396
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

dandan писал(а):делаю сравнением двух одинаковых байт (команд) переданных друг за другом, этого достаточно или надо усложнять?
Зависит от требуемого количества ошибок... Обычно простое сравнение двух байтов мало... Я сравниваю три.))
Количество ошибок определяет тестовая программа:
-общее количество переданных байт...
-количество принятых байт без ошибок...
-количество принятых байт с ошибками...
...
dandan писал(а):Как его заставить нормально работать от 3,5-4В?
Изменить номиналы элементов. Например подкрутить резисторы в сверхрегенераторе (установить точно рабочую точку).

В радиоуправляемых моделях такие приёмники (сверхрегенераторы) работают нормально от 3В (от стабилизатора 3В).
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Сообщение dandan »

roman.com писал(а): Изменить номиналы элементов. Например подкрутить резисторы в сверхрегенераторе (установить точно рабочую точку).

В радиоуправляемых моделях такие приёмники (сверхрегенераторы) работают нормально от 3В (от стабилизатора 3В).
Спасибо, а не подскажите что крутить, или где почитать про расчет такой схемы?
Ответить

Вернуться в «AVR»