приёмо-передача модулями 433 мгц (wl101-341) без библиотек с непосредственным управлением

serjo150rus
Offline
Зарегистрирован: 12.10.2019

Добрый день. 

   На пин ДАТА передатчика передаём модулированный сигнал, работает проблем нет. А вот с приёмом есть нюанс, при отсутствии сигнала приёмник многократно усиливает шум и его становится трудно отличить от сигнала. Пример если к выходу ДАТА приёмника подключить светодиод то он начнёт мерцать и светиться. В момент  начала передачи,  шум полностью давится передатчиком , но первый бит не различим с шумом.

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

   Пытался обрабатывать по длительности сигнала, фильтровать  при помощи PulseIn(pin , HIGH), загоняя  искомое значение в узкие рамки от 480 мкс до 520 мкс  и  от 980 мкс до 1020.  Не помогло частота шумов не стабильна и частенько попадает в эти рамки.

Скетч передатчика: (передатчик работает)

#define F_CPU  1000000
#include <avr/io.h>
#include <util/delay.h>
uint8_t a = 192;
uint8_t b = 168;
uint8_t c = 1;
uint8_t d = 255;
uint8_t stat;      //stat == 15 open       stat == 240 closed
 
 
void setup(){
DDRB = 0b00011100;
PORTB = 0b00000011;
 
}
void pereda4a (uint8_t x)
{
 
for(int i = 7; i >= 0;i--)
{
uint8_t v = (x&(1<<i))>>i;
if(v == 1)
{
PORTB|=(1<<2);
_delay_us(1000);
PORTB ^= (1<<2);
_delay_us(500);
}
else
{
PORTB|=(1<<2);
_delay_us(500);
PORTB^=(1<<2);
_delay_us(1000);
}
 
}
}
 
void posylka ()
{
pereda4a(a);
pereda4a(b);
pereda4a(c);
pereda4a(d);
pereda4a(stat);
_delay_ms(100);
}
 
 
int main(void)
{
setup();
    while(1)
    {
 
if (~PINB&(1<<0)) // open
{
stat= 15;
posylka ();
}
if (~PINB&(1<<1)) // closed
{
stat= 240;
posylka ();
}
 
      
}
}
 
сигнал на входе передатчика.
 
сигнал на выходе приёмника уже искажён 
 
появление шумов между сигналами, через 400 мс 
 
как выделить первый байт посылки из шума ?
 
Разного рода библиотеками пользоваться не хочу, так как это не спортивно и знаний по теме не даёт.
 
Может у кого есть наработки ?
И прошу прощения если повторил чью то тему , так как точно такого случия не нашёл.
-NMi-
Offline
Зарегистрирован: 20.08.2018

serjo150rus пишет:

Скетч передатчика: (передатчик работает)

как выделить первый байт посылки из шума ?
 
Разного рода библиотеками пользоваться не хочу, так как это не спортивно и знаний по теме не даёт.
 
Может у кого есть наработки ?

Канэшна пердачик буит работать, чоЖ ему не работать-то )))

Использовать синхрополе (посылка из нескольких бит), для синхронизации приемника с передатчиком.

Ну и младэц, пейши свою библиотэку )))

Есть, гугли советские книги по передаче цифры в аналоговом формате и буит те щасЪе )))

SLKH
Offline
Зарегистрирован: 17.08.2015

serjo150rus пишет:

 

 

 
сигнал на входе передатчика.
 
сигнал на выходе приёмника уже искажён 
 
появление шумов между сигналами, через 400 мс 
 
как выделить первый байт посылки из шума ?
 
Разного рода библиотеками пользоваться не хочу, так как это не спортивно и знаний по теме не даёт.
 
Может у кого есть наработки ?
И прошу прощения если повторил чью то тему , так как точно такого случия не нашёл.

ничто не ново.

1. "Всегда можно открыть существующую библиотеку и посмотреть как она устроена. Благо, код открыт. А потом уже его улучшить до идеального состояния. Ну, или как советовали выше, ничего не менять а просто скопипастить его в свою программу, тем самым избавившись от ненавистной библиотеки."

(см. http://forum.amperka.ru/threads/Передача-данных-на-433-МГц.9501/page-2)

2. "Максимальный размер сообщения, которое может быт отправленоVW_MAX_PAYLOAD (27) — 27 байт

Каждое сообщение передается как:

  • 36 бит преамбула состоящая из 0-1 битовых пар, т.е. информация о передающем сигнале для приемника
  • 12 бит(101100110110) начальный символ 0xb38
  • 1 байт — длина сообщения(4-30), это количество включает количество байтов и контрольную сумму
  • n — размер сообщения, максимум задается VW_MAX_PAYLOAD (27)
  • 2 байта контрольная сумма, посылается младший байт и старший байт"

(см. http://arduino.ru/forum/obshchii/opisanie-biblioteki-virtualwire)

===============

Я, когда заимел эти приемники/передатчики, тоже было сунулся передавать простой сигнал "без всяких библиотек". Но быстро успокоился, ибо без преамбулы и всяких контрольных сумм ничего путного не получится. 

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

 

DIVGENY
Offline
Зарегистрирован: 23.08.2016

serjo150rus пишет:

 1. так как это не спортивно и знаний по теме не даёт.

 2. Может у кого есть наработки ?
 
 3. точно такого случия 

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

2 да есть, находится в библиотеках.

3 для точно чего???

serjo150rus
Offline
Зарегистрирован: 12.10.2019

всем спасибо за ответы, натолкнули на идею. Буду пытаться воплотить.

Делаю сигналку на машину с автозапуском, управлением с телефона и тд(MQTT и Virtuino), но не хочу отказываться от брелока.  Если использовать готовую библиотеку, то нужно использовать динамически меняющийся код. Иначе любой "школьник" самодельным кодграббером  сможет меня ещё больше озадачить. И поскольку у аттини13а всего 1 килобайт  памяти с библиотеками особо не разгуляешься.

 

b707
Offline
Зарегистрирован: 26.05.2017

serjo150rus пишет:

Если использовать готовую библиотеку, то нужно использовать динамически меняющийся код. Иначе любой "школьник" самодельным кодграббером  сможет меня ещё больше озадачить.

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

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

serjo150rus пишет:

 И поскольку у аттини13а всего 1 килобайт

Родное сердце! Ты мазохист или образования на хватает?

ATtiny85 по ножкам ПОЛНОСТЬЮ совместим с 13 (паяется в то же место в ту же плату), только памяти хватит на всё. Ты зачем 13 хочешь использовать? Число нравится, как символ? ;))) Тогда я пас.

MaksVV
Offline
Зарегистрирован: 06.08.2015

wdrakula пишет:
ATtiny85 .... только памяти хватит на всё.

эмм. даже так это вряд ли. 

SLKH
Offline
Зарегистрирован: 17.08.2015

serjo150rus пишет:

всем спасибо за ответы, натолкнули на идею. Буду пытаться воплотить.

Делаю сигналку на машину с автозапуском, управлением с телефона и тд(MQTT и Virtuino), но не хочу отказываться от брелока.  Если использовать готовую библиотеку, то нужно использовать динамически меняющийся код. Иначе любой "школьник" самодельным кодграббером  сможет меня ещё больше озадачить. И поскольку у аттини13а всего 1 килобайт  памяти с библиотеками особо не разгуляешься.

 

Библиотеки для приема/передачи обеспечивают прием/передачу того, что им предписано передать/принять. Содержание передаваемого сообщения (в данном случае упомянутый меняющийся или же не меняющийся код) их совершенно не интересует.

serjo150rus
Offline
Зарегистрирован: 12.10.2019

b707 пишет:

serjo150rus пишет:

Если использовать готовую библиотеку, то нужно использовать динамически меняющийся код. Иначе любой "школьник" самодельным кодграббером  сможет меня ещё больше озадачить.

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

если изменить интервалы и изменить тип модуляции на выдуманные на ходу то да.

А по поводу нехватки образования товарищ попал в точку , я автомеханик по образованию(ПТУ).

Из всех образованных писавших  ответы(спасибо вам), никто не ответил как синхронизироваться по первому биту пакета , лишь порекомендовали почитать советские книжки, чем я собственно и занят.

-NMi-
Offline
Зарегистрирован: 20.08.2018

serjo150rus пишет:

А по поводу нехватки образования товарищ попал в точку , я автомеханик по образованию(ПТУ).

Из всех образованных писавших  ответы(спасибо вам), никто не ответил как синхронизироваться по первому биту пакета , лишь порекомендовали почитать советские книжки, чем я собственно и занят.

ПТУшники тоже грамотные есть, это не проблема.

Значицца так, синхронизировацца захотел... слухай алгоритм:

Значиццо измеряем длительность несущей, если длительность попадает в некий (заранее определённый) интервал - ждём следующую несущую и замеряем интервал так-же. Как только последовательность интервалов выбрана - у нас имеется некий "таймслот" , который = длине интервала, который мы уже вычислили. Русть это будет = 0. Интервал, который в 1.5 или в 2.0 раза ДЛИННЕЕ по времени, пусть = 1.

Вот и весь принцип кодирования аналоговых сигналов в цифру (оООочень упрощённо) так-сказать на "пальцах" .

Можно "прилепить" шаблон, например: синхра, стартовый бит, номер посылки, сами данные, стоповый бит + контролька. Это будет гоООораздо помехоустойчивее, чем просто "пачка" данных.

Вообще, здесь, только от фантазии всё зависит, развлекайся... так сказать :)))

-NMi-
Offline
Зарегистрирован: 20.08.2018

serjo150rus пишет:

если изменить интервалы и изменить тип модуляции на выдуманные на ходу то да.

Уотт с энтим ты погорячилсО, модуляццию ты никак не поменяшЪ   :)))

b707
Offline
Зарегистрирован: 26.05.2017

-NMi- пишет:

Уотт с энтим ты погорячилсО, модуляццию ты никак не поменяшЪ   :)))

а нестандартные интервалы любым граббером распознаются на раз

-NMi-
Offline
Зарегистрирован: 20.08.2018

Да, совершенно верно. Просто человек спросил, как с помощь амплитудной модуляции передать цифровые данные, я ему попытался всё по простому объяснить.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

serjo150rus пишет:

Из всех образованных писавших  ответы(спасибо вам), никто не ответил как синхронизироваться по первому биту пакета , лишь порекомендовали почитать советские книжки, чем я собственно и занят.

схему не смотрел, но с большой долей вероятности приёмник сверхрегенератор, то-есть - НИКАК, кроме как сменить тип приёмника

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

serjo150rus пишет:

Из всех образованных писавших  ответы(спасибо вам), никто не ответил как синхронизироваться по первому биту пакета , лишь порекомендовали почитать советские книжки, чем я собственно и занят.

схему не смотрел, но с большой долей вероятности приёмник сверхрегенератор, то-есть - НИКАК, кроме как сменить тип приёмника

Вроде бы супергетеродин. Но это не имеет никакого сексуального значения.

-NMi-
Offline
Зарегистрирован: 20.08.2018

SLKH пишет:

Вроде бы супергетеродин. Но это не имеет никакого сексуального значения.

ДатЫшО )))  ПуперГитирадин )))  Никогда не слышал...

SLKH
Offline
Зарегистрирован: 17.08.2015

-NMi- пишет:

SLKH пишет:

Вроде бы супергетеродин. Но это не имеет никакого сексуального значения.

ДатЫшО )))  ПуперГитирадин )))  Никогда не слышал...

Не кривляйся.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Ты гонишЪ???

Докажи!!!