433 МГц модули и их применение
ru0aog
-
- Сообщения: 386
- Зарегистрирован: 22 окт 2019, 16:06
- Позывной: R2AVB
- Город: Москва
- Имя: Олег
- Благодарил (а): 53 раза
- Поблагодарили: 117 раз
433 МГц модули и их применение
Сообщение Oleg » 10 июн 2022, 18:39
Спецификации и описание - в приложенном файле.
Для борьбы с ложными импульсами на выходе приемника при отсутствии сигнала с передатчика производитель рекомендует несколько способов (страница 16, раздел 14.5).
Один из вариантов - подобрать такой режим работы шумоподавителя, при котором компаратор не срабатывает от шумов. Режим задается подачей смещения от 20 до 30 мВ на вывод CTH. Причем указано, что можно подключить вывод CTH через резистор в несколько мегаом (примерно от 6.8 МОм до 10 МОм) на Vdd или Vss, в зависимости от требуемой полярности смещения.
Подробности - в приложенном документе.
- Synoxo-SYN470R.pdf
- (1.27 МБ) 134 скачивания
R2AVB
Oleg
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 13 июн 2022, 17:10
Написал простенький код, отсылающий 0010 1101
Код: Выделить всё
void setup(){
Serial.begin(75,SERIAL_8N1);
}
void loop(){
Serial.write(45);
delay(1000);
}
- 01.png
- (5.92 КБ) 0 скачиваний
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 13 июн 2022, 17:26
Надо научиться распознавать этот сигнал.
Пишу такой код - если приняли 45, то зажечь на 0,1 сек светодиод.
Посылки отправляются раз в секунду, поэтому можно распознать
Код: Выделить всё
void setup(){
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Serial.begin(75,SERIAL_8N1);
}
void loop(){
if (Serial.available() > 0) {
if (Serial.read()==45) {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
}
}
}
Но надёжный приём только в пределах полуметра. Со штатными спиральными антеннами.
Попробую разнести подальше.
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 13 июн 2022, 17:32
Очень удобно смотреть на плате:
- если есть активность на пине Rx, то мигает светодиод Rx.
- если байт принят, то мигает светодиод L.
В движении цепляются какие-то наводки и Rx начинает гореть чаще.
Остановившись можно найти такое положение, где приём будет уверенный.
Можно тупо умощнить передатчик и улучшить антенны.
Или попытаться как-то фильтровать поток данных на приёме.
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 15 июн 2022, 14:18
Например, передать заголовок, потом три байта, и под конец - завершающую комбинацию?
Пускай заголовок будет из двух байт.
Первый байт вообще не будем проверять - он, скорее всего пройдёт с ошибкой. И выглядеть он будет как-то так: 0000 1110 = 0x0E
Второй байт пускай будет 0010 0010 = 0х22
Итого, на передаче:
Код: Выделить всё
void setup(){
Serial.begin(1200,SERIAL_8N1);
//скорости 110, 150, 300, 600, 1200, 2400, 4800, 9600
}
void loop(){
Serial.write(0x0E);
Serial.write(0x22);
Serial.write(28);
Serial.write(45);
Serial.write(36);
Serial.write(0x0A); //LF
Serial.write(0x0D); //CR
delay(1000);
}
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 15 июн 2022, 14:45
Код: Выделить всё
volatile int Data[20]; // макссив принятых данных
volatile int DataCntr = 1; // счётчик массива
void setup(){
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Serial.begin(1200,SERIAL_8N1);
//скорости 110, 150, 300, 600, 1200, 2400, 4800, 9600
}
void loop(){
if (Serial.available() > 0) {
Data[DataCntr] = Serial.read();
Parse();
}
}
void Parse(){
// если счётчик переполнился
if (DataCntr >= 20) {
DataCntr = 1;
goto endofparse;
}
// если счётчик>=6, второй байт=0x22 и последние считанные байты 0x0A+0x0D, то завершить цикл приёма
if (DataCntr >= 6 && Data[DataCntr-5]==0x22 && Data[DataCntr-1]==0x0A && Data[DataCntr]==0x0D) {
// если содержимое посылки принято верно, то моргнуть светодиодом
if (Data[DataCntr-4]==28 && Data[DataCntr-3]==45 && Data[DataCntr-2]==36) {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
DataCntr = 1; // завершить цикл приёма
goto endofparse;
}
}
// если не произошло распознавания
DataCntr = DataCntr+1;
endofparse:
return;
}
Как только увидим, что принялись последовательно два завершающих байта - проверяем ранее принятый пакет.
Если начало этого пакета соответствует протоколу - берём содержимое передачи, между стартовыми и стоповыми байтами.
А так как у меня пока не прикручен к приёмнику дисплей, то при совпадении переданных байтов (я пока их строго зафиксировал), моргнём светодиодом.
Таким образом, если светик моргнул - то вся цепочка из шести байт (из семи) была передана верно.
Посмотрим
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 15 июн 2022, 15:21
- 2022-06-15.rar
- (1.66 КБ) 68 скачиваний
Вдруг переполнение массива разделит пакет?
Лучше просто сдвигать данные по массиву, как по стеку, по типу FIFO.
Код: Выделить всё
volatile int Data[8]; // макссив принятых данных
void setup(){
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Serial.begin(1200,SERIAL_8N1);
//скорости 110, 150, 300, 600, 1200, 2400, 4800, 9600
}
void loop(){
if (Serial.available() > 0) {
Data[8] = Serial.read();
Parse();
}
}
void Parse(){
// сдвинуть данные массива
Data[1] = Data[2];
Data[2] = Data[3];
Data[3] = Data[4];
Data[4] = Data[5];
Data[5] = Data[6];
Data[6] = Data[7];
Data[7] = Data[8];
// если второй байт=0x22 и последние считанные байты 0x0A+0x0D, то завершить цикл приёма
if (Data[2]==0x22 && Data[6]==0x0A && Data[7]==0x0D) {
// если принятые данные пакета совпадают с переданными, то мигнуть
if (Data[3]==28 && Data[4]==45 && Data[5]==36) {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
free(Data); // обнулить массив
}
}
}
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 15 июн 2022, 20:23
Отправляемый сигнал: Принимаемый такой же: Но иногда теряется начало передачи: P.S.
Кстати, контролер приёмника не программируется, если к пину RX подключен модуль приёмника.
Надо вытащить плату контроллера и прошивать отдельно от остальной схемы.
ru0aog
- ru0aog
- Сообщения: 1000
- Зарегистрирован: 30 сен 2021, 05:50
- Позывной: ru0aog
- Город: Красноярск
- Имя: Станислав
- Благодарил (а): 132 раза
- Поблагодарили: 145 раз
433 МГц модули и их применение
Сообщение ru0aog » 16 июн 2022, 18:15
Решил в качестве передатчика использовать не микросхемный модуль, работающий от +3,3В, а старый транзисторный FS1000A.
Запитал его от +5В и посмотрел, что покажет анализатор.
- совсем без антенны -40 dBm,
- со спиральной антенной -30 dBm,
- с проводком 22 см - 17 dBm.
А настроенная антенна была бы ещё лучше
На скорости 2400 бод связь есть по всей квартире, но попадаются места, где принимается две из трёх посылок. Что тоже неплохо.
На скорости 4800 связи вообще нет. Видимо приёмный модуль не тянет.
ru0aog
Вернуться в «Микроконтроллеры и программирование»
- Обязательно к прочтению
- Аналоговая схемотехника
- ↳ Супергетеродинные приемники и трансиверы
- ↳ Прямое преобразование
- ↳ Прямое усиление
- ↳ Регенераторы
- ↳ Узлы, блоки, модули
- ↳ Усилители мощности
- Цифровая техника
- ↳ SDR приемники
- ↳ SDR приставки
- ↳ SDR трансиверы
- ↳ Микроконтроллеры и программирование
- Теплая лампота
- ↳ Супергетеродины
- ↳ Регенераторы
- ↳ Прямого усиления
- ↳ УНЧ
- ↳ ВЧ усилители мощности
- Источники питания
- ↳ Трансформаторные и линейные
- ↳ Импульсные и преобразователи
- ↳ Гибриды
- ↳ Аккумуляторы и батареи
- ↳ Альтернативные источники
- Антенны
- ↳ Антенны КВ
- ↳ Антенны УКВ
- ↳ Фидеры кабели
- ↳ Антенные приборы и устройства
- ↳ Тюнеры
- Фирменная аппаратура
- ↳ Yaesu
- ↳ Icom
- ↳ Kenwood
- ↳ Прочие
- Мастерская
- ↳ Измерения, приборы и софт
- ↳ Паяльное оборудование
- ↳ Слесарка
- ↳ ЧПУ и 3D принтеры
- Разное
- ↳ Другие радио темы
- ↳ Полевой день
- ↳ Помогите опознать
- ↳ Куплю Продам Магазины Продавцы
- ↳ Флудильня и оффтоп
- Работа форума