5 сообщений в этой теме

Доброго времени суток.

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

Прмемо/передача осуществляется через UART. Радиус передачи должен быть от тридцати метров, частота 433мГц. Передатчик должен передавать приемнику команды размером 128 бит 10 раз подряд. Приемник должен принимать эти команды, обрабатывать их и отправлять обратно.

post-164558-0-10082800-1352138812_thumb.jpg

Пока вот, что я накопал:

Передатчик на MAX1472, приемник на MAX1473.

Мне ставить их на одну антенну или каждому своя?

Нужно ли подключать микросхемы к разным кварцам? И каким?

Питающее напряжение у всех МК вроде бы одно 3,6V... ну это не так важно.

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

Пожалуйста помогите, кто чем может.

Datasheet на AТxmega128 ATXmega.pdf

Datasheet на MAX1473 www.farnell.com/datasheets/74480.pdf

Datasheet на MAX1472 www.datasheetcatalog.org/datasheet/maxim/MAX1472EVKIT.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://bascomavr.3bb.ru/viewtopic.php?id=741

купил несколько радио-модулей 433 мгц FS1000A (это передатчик)

http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=130732507561

5 приемников и 5 передатчиков

антенна - проводок около 17 см (300/433), а лучше 34 (половина длины волны)

нюансы:

1. когда нет полезного сигнала приемник принимает мусор, надо делать преамбулу.

2. передатчик надо после подачи питания "разбудить". Для этого подать 1 на вход, пауза 3-5 ms, ноль, пауза 3-5 мс

Проверял со сторостями 600-2400 б\с, дальше про лез. Себе сделал на 1200 б/с

Изменено пользователем Александр Д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://bascomavr.3bb...opic.php?id=741

купил несколько радио-модулей 433 мгц FS1000A (это передатчик)

http://cgi.ebay.com/...em=130732507561

Здесь на картинке две платы - это приемник и передатчик? И цена 10$ за 5 штук?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: brtv-z
      Ребяты, доброго!!   На днях решил вспомнить детство и собрал детекторный радиоприемник)))
      И почему то захотелось повысить кго работоспособность ... (хочу запустить его в охотничей избе из-за этого и заморочелся ))))))
      1) по трансформатору .. каком можно использовать, понятно что перематывать .. я так понимаю входной каскад должен быть высокоомным ... какой именно корпус(от чего ) транза можно использовать....
      2) Возможна ли такая схема...  если я нааапример использую несколько идентичных колебательных контуров ??  например 3( есть переменник 3х конденсаторный)
       
      Понимаю, что настройка катушек, это гемор, но все-таки ...
       
    • Гость Андрей
      Автор: Гость Андрей
      Всем привет! Дали на ремонт магнитолу steracord kr650. Очень нужна схема. В интернете поисковик выдаёт либо схему других устройств, либо совершенно непонятную схему. Может кто-нибудь скинуть схему в нормальном качестве чтобы разобрать можно было что там написано? Заранее спасибо!
    • Автор: Alexey104
      Всем привет!
      Возникла следующая проблема:
       
      Есть две ардуины 'Mega2560'. По несчастливому стечению обстоятельств данные платы попали в руки одному чуваку, который, вернув их, заявил, что они перестали работать после того, как он "чисто ради интереса" поковырял на обеих некоторые фьюзы. Есть у меня такой китайский usbasp v2 программатор:
      Подключив данный девайс к ICSP-пинам первой платы, удалось без проблем восстановить на ней загрузчик через стандартную Arduino-IDE, после чего работоспособность платы полностью восстановилась. Но вот при попытке сделать то же самое со второй платой, получаю это:
      Такое же сообщение получаю при попытке зашить загрузчик в неподключенную к программатору ардуину, то есть программатор вообще не видит МК. Плата прекрасно работала до того, как вышеупомянутый товарищ покрутил настройки фьюзов.
       
      Что я пытался предпринять:
      Замыкал пины JP3 программатора, отвечающие за понижение скорости, подключал к ардуине 5V от внешнего источника при прошивке загрузчика, - не помогло.
       
      Поиском пользоваться умею, аналогичную тему тут находил, но там проблема была в том, что парень неверно подключал программатор к контроллеру. В моём же случае всё подключено верно, повторюсь, что загрузчик первой платы этим же программатором был восстановлен успешно.
      Буду рад любым советам касательно того, как восстановить работоспособность платы.
       
       
       
    • Автор: Ru_s
      Здравствуйте. Подскажите пожалуйста, возможно ли на attiny13 реализовать такую штуку. Мне в процессе работы программы нужно поменять режим работы таймера/счетчика с fast PWM на обычный счёт, отсчитать длительный промежуток времени и опять вернутся в режим ШИМ. Т.е. я подаю на ногу сигнал ШИМ и когда он в максимальном значении, я его отключаю, и тупо подаю на ногу высокий лог. уровень. В это время Т/С по идее свободен, и мне надо посчитать время работы выхода на максимальном лог. уровне, при достижении какого-то значения времени нужно перевести т/с обратно в ШИМ. Возможно ли это? И как приблизительно это реализовать
    • Автор: ShimkoMax
      Здравствуйте. Требуется вывести данные температуры и влажности на экран. С LCD дисплеем разобрался, осталось разобраться с SHT21. Постоянно выводит 0 на дисплей:
      Main.c:
      #define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include "globals.h" #include "LCD_lib.h" #include "twi.h" // I2C #include "sht21.h" int main(void) { I2C_Init(); _delay_ms(100); LCD_init(); char buffer[20]; roomAdrInit(); SHT21_reset(); while(1) { SHT21_reset(); LCD_sendString(itoa((int)get_temperature(), buffer, 10), 4, 0, 0); _delay_ms(1000); } } twi.c:
      #include <avr/io.h> #include "twi.h" void I2C_Init(void) { TWSR = 0; TWBR = 0x20; TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); } void I2C_StartCondition(void) { TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); while(!(TWCR & (1<<TWINT))); } void I2C_StopCondition(void) { TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN); } void I2C_SendByte(uint8_t data) { TWDR = data; TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); } unsigned char I2C_ReadByteAck(void) { TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA); while(!(TWCR & (1<<TWINT))); return TWDR; } unsigned char I2C_ReadByteNak(void) { TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); return TWDR; } sht21.c:
      #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include "twi.h" #include "sht21.h" void SHT21_reset() { unsigned char reg[1]; reg[0]=SHT21_reset_cmd; I2C_StartCondition(); I2C_SendByte(SHT21_i2c_write); I2C_SendByte(*reg); I2C_StopCondition(); _delay_ms(100); } uint16_t checksum(unsigned char data[],uint8_t byte, uint8_t check) { uint8_t crc=0; uint8_t bytectr,bit; for (bytectr=0; bytectr<byte;bytectr++) { crc^=(data[bytectr]); for (bit=8;bit>0;bit--) { if(crc&0x80) { crc=(crc<<1)^polynomial; } else { crc=crc<<1; } } } if (crc!=check) { return 0; } else { return data; } } void write_user_register() { unsigned char reg[3]; reg[0]=user_register_write; reg[1]=0x44; I2C_StartCondition(); I2C_SendByte(SHT21_i2c_write); I2C_SendByte(*reg); I2C_StopCondition(); } uint16_t read_value(uint8_t reg) { char data[4],crc; uint16_t result; data[0]=reg; I2C_StartCondition(); I2C_SendByte(SHT21_i2c_write); I2C_SendByte(reg); I2C_StartCondition(); I2C_SendByte(SHT21_i2c_read); data[1] = I2C_ReadByteAck(); data[2] = I2C_ReadByteAck(); crc=I2C_ReadByteNak(); I2C_StopCondition(); result=(data[1]<<8) | data[2]; checksum(result,4,crc); result &= 0xFFFC; return result; } float get_humidity() { //char buffer2[4]; uint16_t hum_value = read_value(humidity_hold_mode); return -6 + 125.0 / 65536.0 * hum_value; //dtostrf(rh,5,2,buffer2); _delay_ms(100); } float get_temperature() { //char buffer1[4]; uint16_t temp_value = read_value(temperature_hold_mode); return -46.85 + 175.72 / 65536.0 * temp_value; //dtostrf(tc,5,2,buffer1); _delay_ms(100); }