Радиомодули на 433 мгц – RF РАДИОМОДУЛИ НА 433 МГЦ

Радиомодули HopeRF HM-R433 и HM-T433. Тест на дальность

Такс, в порядке работы над коммерческим проектом (и не спрашивайте о каком — не скажу), который сожрал все мое свободное время огромной зазубренной ложкой, раскурил до самого пепла радиомодули HopeRF HM-R433/HM-T433. Сегодня собрал полудуплексную схему на четырех модулях и провел сеанс дальнобойной приемо-передачи.

Итак, что из себя представляла установка:

Блок А:

  • Передатчик: HM-T433
  • Приемник: HM-R433
  • Антенна передатчика: Кусок провода МГТФ длинной 17см (1/4 от длины волны 433Мгц сигнала) загнутый абы как.
  • Антенна приемника: та же херня.
  • Расположение модулей: параллельно друг другу, на расстоянии 2см, усики антенн разбросаны в разные стороны, на манер тараканьих.
  • Расположение блока: 5 этаж, на столе. У северной стены.
  • Питание: 5 вольт.
  • Скорость передачи: 4800 бод.
  • Длина пакета данных: 10 байт.

Блок Б:

  • Передатчик: HM-T433
  • Приемник: HM-R433
  • Антенна передатчика: Кусок провода МГТФ длинной 17см (1/4 от длины волны 433Мгц сигнала) загнутый абы как.
  • Антенна приемника: та же херня.
  • Расположение модулей: параллельно друг другу, на расстоянии 2см, усики антенн разбросаны в разные стороны, на манер тараканьих.
  • Расположение блока: У меня в руках, на земле. С южной стороны дома (смотри схему)
  • Питание: 5 вольт.
  • Скорость передачи: 4800 бод.
  • Длина пакета данных: 10 байт.

Условие передачи:
 Блок Б дает десятибайтный пакет блоку А, тот, убедившись, что пакет принят без искажений, шлет подтверждение обратно на блок Б, те же десять байт. Блок Б, получив подтверждение зажигает зеленый диод. Передача идет с обрывом несущей. Т.е. после отправки пакета передатчик вырубается полностью.Проведение опыта:
 Щелкая кнопкой передачи и фтыкая в зеленую лампочку, я начал спускаться по лестнице. К моей радости, даже когда я спустился на первый этаж зеленая лампочка бодро сигнализировала о том, что передача идет без помех, несмотря на то, что меня от другого блока отделяло как минимум 5 бетонных плит перекрытий, не считая кирпичных стен. После я вышел из подъезда и подорвался к противоположному углу дома. Примерно на 50 метрах от подъезда связь прервалась и ответа не было. Тогда я начал возвращаться обратно. Связь восстановилась лишь когда я подошел почти вплотную к своему подъезду. Поначалу мне казалось, что наверху тупо зависла софтина, оказалось все ок. В чем была причина не знаю. Возможно, стоящее в тот момент возле подъезда, такси имело у себя на борту 433МГц передатчик и насрало мне в эфир. Так как следующий отход на другой конец здания подтвердил дальность и качество приема. Это при том, что на прямой видимости, между мной и другим концом был практически весь кирпичный дом, продольно.

Алгоритм работы с двумя приемниками и двумя передатчиками:
Итак, что мы имеем:

  • У нас два приемника и два передатчика.
  • Приемник можно заглушить выходом Enable, так что он не будет принимать.
  • А вот передатчик передает всегда когда на входе есть активность. Засыпает он спустя 70ms бездействия.
  • А еще мы знаем, что два передатчика одновременно фурычить не могут — несущие у них разные, а значит приемники посылают в пешее эротическое путешествие обоих. Ну или того чей сигнал слабее.

 Чтобы организовать в таких мерзких условиях дуплекс приходится извращаться.
Для передачи нужно во-первых инициализировать несущую. Проблема в том, что когда несущей нет, то приемник ловит всякую муть, а входящая линия UART принимающего контроллера захлебывается от дерьма. Так что тут, в целях экономии ресурсов проца, имеет смысл выставить минимальную скорость приема 600бод, чтобы его реже дергало прерыванием от UART RX. Сразу слать байт нельзя — так как у нас на входе мусор, а протокол RS232 отличается тем, что конец байта практически не отличим от середины, то если тупо взять и послать, то с вероятностью в 90% у нас произойдет смешение части байта из окружающего мусора и нахлынувшими данными из вдруг образовавшегося канала. Получится рассинхронизация и на выходе будет полная ахинея.
 Так что вначале надо поднять несущую и синхронизировать протокол. Несущая у нас встает как только меняется состояние линии DATA, а вот с протоколом хитрее. Вспомним пост про UART — видите, спокойное состояние UART’a — высокий уровень. Так что после подъема несущей нужно выставить DATA в High, дольше чем на один байт по текущей скорости протокола, но не дольше чем на 70ms — иначе у нас передатчик опять заснет. При этом на выходе DATA приемника тоже выставится High и UART, спокойно прожевав очередную порцию дерьма из эфира, успокоится и приготовится к приему нормального корма. Дальше можно слать данные.
Чтобы не заморачиваться с дрыганьем ножкой и вычислением задержек ,можно просто послать раза три число 255 — это фактически сплошной высокий уровень, с небольшим провалом в виде старт бита. Но на одном из байтов таки произойдет синхронизация и дальше можно слать данные. И повышать скорость передачи (помните я чуть выше говорил про понижение до минимума), после взаимной договоренности сторон.

 На прием тоже есть пара хитростей. Сразу же после передачи нам нужно дождаться А) Когда байт таки отправится до конца Б) когда наш собственный передатчик заснет от бездействия. Т.е. это 70ms + время на передачу байта. Чтобы не словить сигнал от своего же передатчика. Как только наш передатчик отвалится можно врубать приемник и начинать ждать несущей от вражеской станции. Отличить полезный сигнал от дерьма очень просто — достаточно за начало передачи взять 10 одинаковых байт. Как только пришло 10 одинаковых байт — опа, есть коннект. Вероятность появления 10 одинаковых байт в мусоре эфира микроскопическая. Особенно если это байты численно близкие к нулю. (в среднем, шум, по значениям, колеблется от 50 до 255, крайне редко проваливаясь ниже 20)

Организация сети:
А если нам нужно не два, а больше приемо передатчиков? Как быть? А тут рулит эстафета aka Token Ring — когда передатчик по очереди передает служебный байт-эстафетную палочку. Получив этот пакет передатчик имеет право вещать. Если же ему вещать нечего, то он отсылает это право другому и так по кругу. Разумеется делается это все программно.

Приколы с контроллером:
При отладке этого девайса у меня сдохли три (!!!) ATTiny2313. В первой убился порт PB4 — там висела кнопка и она стала самопроизвольно срабатывать. Замеряю напряжение подтяжки (внутренней) — 0.5 вольта вместо положенных 4.5. Вот засада :/ Заменил (точнее перепаял, т.к. была в SOIC — фен рулит! 🙂 ). Это к вопросу о внешней подтяжке резисторами. Внешняя подтяжка рулит, что бы там не бубнили любители минимализма на плате! Зажал я пару резисторов и, в итоге, просрал три контроллера, а так, может быть, даже и не заметил бы пробоя ноги.

Потом опять сдохла ножка PB4, попутно унеся в могилу еще и ногу RXD. Да что за засада??? Неужели статика? Сколько десятков ATTiny2313 пустил в оборот — ни одна от статики не сдохла, а тут уже вторая. Что то тут нечисто. Ладно, хрен с ней, у меня еще в палке этих ATTiny2313 штук 70 лежит. Перепаял. Фен воистину рулит!!!

Когда на третьей микросхеме сдохла нога PB4 я стал искать где же собака порылась… Статика… не статика это как авиабомба — дважды в одну и ту же воронку не падает. Схемотехника? Да не, откуда там пробои — пассивка одна вокруг… И тут я вспомнил когда пробивало ногу — когда я антенну передатчика сворачивал в этакое колечко вокруг платы и закрывал в коробочку, а после жал на передачу… Гляжу — точка запайки антенны передатчика в аккурат над ногой процессора, а потом антенна идет с другой стороны платы вдоль дорожки от этой злосчастной ноги. Дорожка длинная, сантиметра три-четыре. Вот сижу и чешу репу — неужели наводка с антенны модуля столь мощная была, что пробивала нафиг транзистор в МК? На всякий случай между антенной и платой проложил кусок фольгированного текстолита и заземлил его на массу. Выглядит как броня, зато теперь ножки не дохнут. От так!

З.Ы.
На этом тему модулей HopeRF HM-R433/HM-T433 считаю закрытой.
Разве что библиотечку кода под обработку этого барахла потом предоставлю, когда отлажу и вычищу все баги. Вопросы в комменты.

easyelectronics.ru

Радиомодули на 433Мгц HC-11/HC-12 c UART интерфейсом. Обзор

Обзор радиомодулей на 433Мгц построенных на однокристальных трансиверах CC1101 (HC-11) и SI4463 (HC-12) и микроконтроллере STM8 который реализует UART интерфейс.

Ниже код, АТ команды и схема подключения из видео

Подключено было так:


Купить модули:

в магазине: gearbest.com:
SI4463 (HC-12)
CC1101 (HC-11)

или на али:
SI4463 (HC-12)
CC1101 (HC-11)


Инструкции на модули:

HC-12
HC-11


Описание АТ команд модулей:

Для настройки модуля необходимо перевести его в командный режим, для этого необходимо притянуть контакт «SET» к массе и подождать ~40ms. Контакт «SET» имеет подтягивающий резистор на 10к. В командном режиме последовательный порт сконфигурирован на 9600bps. Если параметры модуля были изменены, после выхода из командного режима, они будут применены через ~80ms.

AT —  Возвращает “OK”.

AT+Bxxxx — Скорость передачи (1,200bps, 2,400bps, 4,800bps, 9,600bps, 19,200bps, 38,400bps, 57,600bps, 115,200bps) По умолчанию — 9,600bps. Пример: “AT+B9600”.

AT+Cxxxx — Изменение канала беспроводной связи, от 001 до 100 (или 127).
По умолчанию — 001, что равно частоте 433.4MHz, шаг канала 400kHz, частота канала 100 473.0MHz. В LPD диапазон попадают с 001 по 004 канал (433.4, 433.8, 434.2, 434.6MHz). Пример: «AT+C021«, возвращает «OK+C021» что соответствует 441.4MHz.

AT+FUx — Изменение режима передачи через последовательный порт модуля. Доступны четыре режима, а именно FU1, FU2, FU3 и FU4.  Пример: «AT+FU1» возвращает «OK+FU1«

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

Режим FU2. Режим максимального энергосбережения,  В этом режиме модули поддерживают скорость 1200bps, 2400bps и 4800bps, с неизменной скоростью передачи данных по воздуху. Если текущая скорость передачи превышает 4800bps, она будет автоматически уменьшена до 4800bps. В режиме FU2 требуется большой интервал между передачей пакетов, более одной секунды для HC12 и 400мс для HC11, в противном случае данные могут быть потеряны.

Режим FU3. В этом режиме модули автоматически регулирует скорость беспроводной передачи данных, в соответствии со скоростью передачи последовательного порта. Для того, чтобы получить максимальную дальность связи, скорость последовательной передачи данных должна быть минимальна, (1200bps или 2400bps). Соответственно на более высоких скоростях дальность связи уменьшится.

Режим FU4, У HC12 режим для максимальной дальности связи, до 1,8 км. Поддерживается только одна скорость передачи данных, 1200bps, скорость передачи данных по воздуху снижается до 500bps. В режиме FU4 требуется очень большей интервал между передачей пакетов, более двух секунд, каждый пакет должен быть менее 60 байт, в противном случае данные могут быть потеряны. У HC11 этот режим также для максимальной дальности связи, но максимальная скорость ограничена 9600bps (может быть меньше) и заметно меньший интервал между передачей пакетов, задержка ~300ms.

 
AT+Px — Мощность передатчика, от 1 до 8, что соответствует:

для HC12:

12345678
-1 dBm2 dBm5 dBm8 dBm11 dBm14 dBm17 dBm20 dBm
(0.8mW)(1.6mW)(3.2mW)(6.3mW)(12mW)(25mW)(50mW)(100mW)

для HC11:

12345678
-30dBm-20dBm-15dBm-10 dBm0 dBm5 dBm7 dBm10 dBm
(0.001 mW)(0.01 mW)(1mW)(0.1 mW)(1 mW)(3 mW)(5mW)(10mW)

Значение по умолчанию 8, чем выше мощность передатчика, тем дальше
возможное расстояние связи и выше энергопотребление. Пример: «AT+P5« возвращает «OK+P5«.

AT+Rx — Возвращает значение параметра, B — скорость, C — канал и тд. Пример, “AT+RB” вернет значение скорости: “OK+B9600”. «AT+RX» вернет все параметры модуля.

AT+Udps — Настройки последовательного порта (бит данных, четность, стоп-биты) за подробностями в даташит.

AT+V — Вернет версию ПО.

AT+SLEEP — Спящий режим, после этой команды и выхода из командного режима, модуль переходит в режим ожидания, Выход из спящего режима автоматический.

AT+DEFAULT — установка всех параметров по умолчанию.

AT+UPDATE — Переводит модуль в состояния ожидания обновления программного обеспечения.


Код из видео:

TX

#include <SoftwareSerial.h>

SoftwareSerial radio(6, 7); // RX, TX

char val = 0;

void setup() {
    Serial.begin(9600); 
    radio.begin(9600);
    pinMode(13, OUTPUT);
}

void loop() {
   radio.print(val);
   delay(500);
   val = 'A';
   radio.print(val);
   delay(500);
   val = 'B';
}


RX

#include <SoftwareSerial.h>

SoftwareSerial radio(6, 7); // RX, TX

void setup() {
    Serial.begin(9600); 
    radio.begin(9600);
    pinMode(13, OUTPUT);
}

void loop() {
   char val = radio.read();
   switch (val) {
   case 'A':
      digitalWrite(13, LOW);
      break;
   case 'B':
      digitalWrite(13, HIGH);
      break;
   }
}


Код который использовался для тестирования модулей на дальность работы

 
#include <OLED_I2C.h>
#include <SoftwareSerial.h>

SoftwareSerial radio(6, 7); // RX, TX
OLED  myOLED(SDA, SCL, 8);

extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

unsigned int err = 0;
unsigned int ok = 0;

#define dl 200 // задержка

void setup()
{
  radio.begin(9600);
  myOLED.begin();
  myOLED.setFont(SmallFont);

  randomSeed(analogRead(0));
}

void loop()
{
  myOLED.clrScr();
  
  char val = random(127);         // генерим случайное часло
  char echo = -1;
   
  radio.write(val);               // отправляем в сериал
  delay(dl);                     // ждем ответ  
  echo = radio.read();            // читаем ответ
  
  if (val != echo) err++;         // если ответ не совпадает
  else ok++;
                         // вывод переменных на экран         
    myOLED.setFont(SmallFont);     
    myOLED.printNumI(val, LEFT, 0);
    myOLED.printNumI(echo, LEFT, 8);    
    myOLED.printNumI(ok+err, LEFT, 20);  
    myOLED.printNumI(ok, LEFT, 30);  
    myOLED.printNumI(err, LEFT, 40); 
    myOLED.setFont(BigNumbers);
    myOLED.printNumI(err, CENTER, 40);
    myOLED.update();
   
  
}




Для настройки AT командами.

 
#include <SoftwareSerial.h>

SoftwareSerial mySerial(6, 7); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
 
  mySerial.begin(9600);
 
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}



 

arduinolab.pw

HC-11 — UART Радиомодуль на 433Мгц на базе CC1101

КомандаПараметрыОписание
ATТестовая команда
AT+A000—255Изменение адреса модуля, от 000 до 255. Значение по умолчанию 000.
AT+B1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200Изменение скорости передачи данных последовательного порта. Скорость передачи данных может быть установлена 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200. Значение по умолчанию 9600.
AT+C001—127Изменить канала связи, от 001 до 127, значение по умолчанию 001. 0 не может быть задействован. Если это значение слишком высоко, данные не могут быть потеряны, около 20 каналов фактически доступны, а именно, от 001 до 020.
AT+FUx1—4Изменение режима передачи модуля, доступны 4 режимы, а именно, FU1, FU2, FU3 и FU4. Только тогда, когда оба модуля установлены в один и тот же режим, может быть нормальная связь между ними. Режим по умолчанию FU3
Эта команда доступна с V1.8.
AT+Px1—8Настройка мощность сигнала модуля, х может получить значения с 1 по 8, соответственно, представляющий -30dBm, -20dBm, -15dBm, -10dBm, 0dBm, 5dBm, 7dBm и 10dBm;
По умолчанию 8 (а именно, 10dBm).
AT+RyB, A, C, PПолучение параметры модуля, у может получить значения B, A, C и P, соответственно, представляющий: скорость передачи данных, адрес, канал и мощности передачи.
AT+RXПолучение всех параметров модуля: режим порта, скорость передачи данных, канал, адрес, и мощность передачи в порядке.
AT+Uxyx — N, E, O

y — 1, 2, 3

 Настройка бита четности [x] и стоп-бита [y]:
N: (No parity) — без бита четности; E: (Even parity) — с битом проверки на четность, O: (Odd parity) — с битом проверки на нечетность.
1: 1 стоп-бит; 2: два стоп-бита; 3: 1.5 стоп-бита
AT+VВозвращает информацию о версии.
AT+SLEEPПереходит в режим сна после выхода из AT, не позволяет передачу данных. После входа в режиме AT снова, модуль выходит из спящего режима автоматически. Ток потребления в спящем режиме 20мкА.
Эта команда доступна с V1.8.
AT+RESETУстановка значение порта, канала и адреса по умолчанию.
AT+IVВозвращает версию внутреннего кода обновления модуля. Эта команда доступна из версии 1.9.
AT+UPDATEМодуль переходит в режиме ожидания обновления программного обеспечения.
После отправки команды, модуль не будет отвечать на команд больше, пока не будет снова подано напряжение.
После отправки команды, пожалуйста, закройте последовательный порт помощника, и включите HC-1X чтобы обновить программное обеспечение.

micro-pi.ru

Увеличиваем радиус действия радиомодуля NRF24LO1 / Песочница / Хабр

На Хабре уже неоднократно осуждались модули NRF24LO1. Недорогие, несложные в управлении, легко купить. Прочитав комментарии к статье, решил сравнить «дальнобойность» в условиях своего жилья. Нужно выбрать- на чем же разворачивать радиосеть для «Умного дома».

Вот эти два подопытных:

Радиомодули 433 МГц использовались с антеннами в виде кусочка жесткого провода длиной 17 см.

Питание обоих типов радиомодулей- 3,3 вольт.

Тестовая программа для управляющей платы Arduino была проста- в эфир отправлялась строка из 5 цифр с паузой 5 секунд.

Хождение с ноутбуком по квартире показало- там, где пропадал прием в диапазоне 2,4 ГГц, диапазон 433 МГц еще частично позволял принимать пакеты. Пробуем увеличить эффективность антенной системы на 433 МГц- к общей шине приемника и передатчика подключаем противовес длиной 17 см и получаем диполь. Сразу ощущается качество приема пакетов. Но в самой дальнем месте, на балконе, пакеты по прежнему принимаются нестабильно.

Тут возникает мысль- а почему бы не поставить радиомодули в одинаковые «антенные» условия? Берем канцелярский нож и отрезаем штатную антенну NRF24LO1 прямо под корень. Изготовителем там предусмотрительно оставлены контактные площадки, видимо, для внешней антенны. Вот туда и припаиваем диполь- два кусочка провода по 25 мм.

Снова берем ноутбук и бродим по квартире. Терминал везде показывает стабильный прием пакетов. Даже там, где модуль 433 МГц с диполем показывал нестабильный прием. Тут маленькая оговорка- стабильный прием пакетов был только при вертикальном расположении диполя 2,4 ГГц.

Теперь проводим тест на дальность. Ставим передающим модуль 2,4 ГГц у окна (9-ый этаж) и выходим на улицу. Терминал показывает стабильный прием пакетов на удалении 70 метров в прямой видимости. Дальше уйти не смог-двор закончился.

Для себя я выбор сделал- это однозначно NRF24LO1. Внешние антенны 5 см вполне можно уместить внутри корпусов исполнительных устройств.

P.S. Прошу сильно не пинать, мой первый топик на Хабре.

habr.com

XD-RF-5V/FS1000A/XD-FST Радио приемник/передатчик на 433Mhz

Регенеративный приемник (XD-RF-5V) и передатчик (FS1000A/XD-FST) на 433МГц. Подходит для дистанционного управления устройствами, или общения между двумя Arduino роботами.

Модуль передатчика XD-RF-5V 433Mhz

Если вам нужно отправить данные без ошибок, тогда забудьте о XD-RF-5V/FS1000A/XD-FST, а пользуйтесь UART Радиомодуль TB387 20dBm 2.4GHz — передатчик/приёмник или более дешевым UART Радиомодуль HC-11 433МГц — передатчик/приемник. Да, XD-RF стоит копейки, но работает ПЛОХО.

Спецификации XD-RF-5V

  • Рабочее напряжение: 3V ~ 12V
  • Рабочий ток: 20 мА ~ 28mA
  • Резервное течение: 0mA
  • Рабочая частота: 433MHz
  • Расстояние передатчика: >500 м (чувствительность может быть выше-103dBm если в широком поле)
  • Выходная мощность: 16dBm (40 мВт)
  • Скорость Передатчик: <10kBps
  • Режим модуляции: ООК (AM)
  • Рабочая температура: -10 ° C ~ +70 ° C
  • Размер: 19 х 19 х 8 мм

Характеристики

Стабильность работы
Широкий диапазон рабочих напряжений

Выводы

PIN1 DATA
PIN2 VCC
PIN3 GND

Область применения

Беспроводная система вызова, сигнализация, беспроводная передача данных, автоматизированная система сбора данных.

Модуль приемника FS1000A/XD-FST 433Mhz

Спецификации

  • Рабочее напряжение: DC 5V
  • Рабочий ток: 4 мА
  • Режим модуляции: ООК (AM)
  • Рабочая температура: -10 ° C ~ +70 ° C
  • Получать чувствительность:-110dB
  • Рабочая частота: 433MHz
  • Размер: 30 х 14 х 7 мм

Характеристики

Использование колебательный контур LC, включать в себя усиление
Сигнал данных Выход уровень ТТЛ
Подключение к декодер непосредственно

Выводы

PIN1 VCC
PIN2/3 DATA
PIN5 GND

Схема подключения  XD-RF-5V и FS1000A к Arduino

Область применения

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

Примечание

Антенна имеет большое влияние на прием модулем, лучше длина волны антенны 1/4, и обычно используют один провод 50 Ом, длина антенны 433M один составляет около 17см.
Также положение антенны влияет на прием модуля, держать антенну растягивается и от щита, высокое давление, и источника помех, насколько это возможно.

Купить XD-RF-5V и FS1000A/XD-FST на AliExpress

micro-pi.ru

Подключение радиомодулей к микроконтроллеру | RadioLaba.ru

              #include <P16F628A.INC>

              LIST        p=16F628A    

              __CONFIG    H’3F18′           ;внутренний тактовый генератор 4Мгц    

                                    

            

flag          equ         20h               ;дополнительный регистр флагов

vremya        equ         21h               ;регистр хранения фактического времени

kolbyte       equ         22h               ;регистр кол-ва принятых байт

reg           equ         23h               ;регистр приема данных от приемника

shets         equ         24h               ;регистр кол-ва принятых бит

FSR_osn       equ         25h               ;регистры для временного хранения значений

FSR_prer      equ         26h               ;во время прерываний

W_TEMP        equ         7Eh               ;

STATUS_TEMP   equ         7Fh               ;

 

data1         equ         60h               ;первый регистр хранения принятых команд

 

#DEFINE       dat     PORTB,4           ;присвоение названий линиям ввода-вывода

#DEFINE       led     PORTB,0

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

              org         0000h             ;начать выполнение программы с адреса 0000h

              goto        Start             ;переход на метку Start

          

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Подпрограмма обработки прерываний

 

              org         0004h             ;начать выполнение подпрограммы с адреса 0004h

      

              movwf       W_TEMP            ;сохранение значений ключевых регистров

              swapf       STATUS,W          ;

              clrf        STATUS            ;

              movwf       STATUS_TEMP       ;

                

              movf        TMR0,W            ;сохранение значения счетчика TMR0

              movwf       vremya            ;в регистр vremya

              movlw       .0                ;запись числа 0 в счетчик TMR0

              movwf       TMR0

 

              movf        FSR,W             ;запись содержимого регистра FSR в

              movwf       FSR_osn           ;регистр FSR_osn

              movf        FSR_prer,W        ;запись содержимого регистра FSR_prer в

              movwf       FSR               ;регистр FSR

 

              btfsc       INTCON,T0IF       ;опрос флага прерывания по переполнению TMR0

              goto        outshet           ;переполнение TMR0:переход в подпрограмму outshet

 

              btfss       dat               ;нет переполнения TMR0:сохранение состояния линии

              bcf         flag,0            ;dat в 0-й бит регистра flag1

              btfsc       dat

              bsf         flag,0

          

              movlw       .37               ;проверка длительности между

              subwf       vremya,W          ;прерываниями:больше-меньше 150мкс

              btfss       STATUS,C          ;

              goto        eror              ;длительность меньше 150мкс:переход на метку eror

              movlw       .87               ;длительность больше 150мкс:проверка длительности:

              subwf       vremya,W          ;больше-меньше 350мкс

              btfsc       STATUS,C          ;

              goto        int1              ;длительность больше 350мкс:переход на метку int1

              bcf         flag,1            ;длительность меньше 350мкс:сброс 1-го бита регистра flag:

                                            ;приравниваем длительность к 250мкс

              goto        opred             ;переход на метку opred

int1          movlw       .100              ;проверка длительности: больше-меньше 400мкс

              subwf       vremya,W          ;

              btfss       STATUS,C          ;

              goto        eror              ;длительность меньше 400мкс:переход на метку eror

              movlw       .150              ;длительность больше 400мкс:проверка длительности:

              subwf       vremya,W          ;больше-меньше 600мкс

              btfsc       STATUS,C          ;

              goto        eror              ;длительность больше 600мкс:переход на метку eror

              bsf         flag,1            ;длительность меньше 600мкс:устанавливаем 1-й бит регистра

                                            ;flag:приравниваем длительность к 500мкс

opred         btfss       flag,0            ;опрос ранее сохраненного состояния линии dat

              goto        int2              ;низкий уровень линии dat:переход на метку int2

              btfsc       flag,1            ;высокий уровень линии dat(произведено измерение длительности-

                                            ;-сигнала низкого уровня):проверка длительности импульса

              bsf         flag,2            ;устанавливаем 2-й бит регистра flag:зафиксирован низкий

              btfss       flag,1            ;уровень сигнала длительностью 500мкс

              bcf         flag,2            ;сбрасываем 2-й бит регистра flag:зафиксирован низкий

                                            ;уровень сигнала длительностью 250мкс

              bsf         flag,7            ;устанавливаем 7-й бит регистра flag:зафиксирован

                                            ;низкий уровень сигнала с правильной длительностью-

                                            ;-разрешаем прием сигнала высокого уровня

              goto        vihod             ;переход на метку vihod

 

int2          btfss       flag,7            ;низкий уровень линии dat:(произведено измерение длительности-

                                            ;-сигнала высокого уровня):проверка разрешение приема сигнала

                                            ;высокого уровня

              goto        vihod             ;нет разрешение приема сигнала высокого уровня:переход на

                                            ;метку vihod

              btfsc       flag,2            ;есть разрешение приема сигнала высокого уровня:проверка-

                                            ;-длительности предыдущего сигнала низкого уровня

              goto        int3              ;низкий уровень сигнала равен 500мкс:переход на метку int3

              btfss       flag,1            ;низкий уровень сигнала равен 250мкс:проверка длительности

                                            ;сигнала высокого уровня

              goto        eror              ;высокий уровень равен 250мкс(предыдущий низкий равен 250мкс)-

                                            ;-неверная последовательность:переход на метку eror

              bsf         flag,3            ;высокий уровень равен 500мкс(предыдущий низкий 250мкс)-

                                            ;-принят бит единица (лог.1)

              goto        intpriem          ;переход на метку intpriem

 

int3          btfsc       flag,1            ;низкий уровень сигнала равен 500мкс:проверка длительности

                                            ;сигнала высокого уровня

              goto        eror              ;высокий уровень равен 500мкс(предыдущий низкий равен 500мкс)-

                                            ;-неверная последовательность:переход на метку eror

              bcf         flag,3            ;высокий уровень равен 250мкс(предыдущий низкий 500мкс)-

                                            ;-принят бит ноль (лог.0)

 

intpriem      btfsc       flag,3            ;опрос значения принятого бита и запись в 0-й бит-

              bsf         reg,0             ;-регистра reg

              btfss       flag,3            ;

              bcf         reg,0             ;

              incf        shets,F           ;инкремент счетчика (shets) принятых битов

              movlw       .8                ;проверка счетчика (shets) принятых битов на совпадение

              xorwf       shets,W           ;с числом 8

              btfsc       STATUS,Z          ;

              goto        srav              ;есть совпадение,приняты 8 бит(1 байт):переход на метку srav

              rlf         reg,F             ;нет совпадения:смещение регистра reg на один бит влево

                                            ;для приема следующего бита

              goto        vihod             ;переход на метку vihod

 

srav          movf        reg,W             ;сохранение значения принятого байта-

              movwf       INDF              ;-в регистры хранения

              incf        FSR,F             ;инкремент регистра FSR:подготовка следующего регистра

                                            ;хранения

              clrf        shets             ;очистка счетчика бит

              incf        kolbyte,F         ;инкремент счетчика кол-ва принятых байт

              movlw       .2                ;проверка счетчика (shets) принятых битов на совпадение

              xorwf       kolbyte,W         ;с числом 2

              btfss       STATUS,Z          ;

              goto        vihod             ;нет совпадения:переход на метку vihod

              bsf         flag,4            ;есть совпадение,приняты 2 байта:установка флага получения-

                                            ;-команды!

              goto        eror              ;переход на метку eror

 

outshet       bcf         INTCON,T0IF       ;сброс флага прерывания по переплнению TMR0

eror          clrf        shets             ;очистка счетчика бит

              clrf        kolbyte           ;очистка счетчика байт

              bcf         flag,7            ;сброс флага разрешения приема высокой лог. уровня

              movlw       data1             ;запись адреса первого регистра хранения принятых

              movwf       FSR               ;команд в регистр FSR

vihod         movf        PORTB,W           ;чтение регистра PORTB для устранения несоответствия

              bcf         INTCON,RBIF       ;сброс флага прерывания по изменению уровня сигнала

                                            ;на выводах RB4-RB7

            

kon1          movf        FSR,W             ;запись содержимого регистра FSR в

              movwf       FSR_prer          ;регистр FSR_prer

              movf        FSR_osn,W         ;запись содержимого регистра FSR_osn в

              movwf       FSR               ;регистр FSR

 

              swapf       STATUS_TEMP,W     ;восстановление содержимого ключевых регистров

              movwf       STATUS            ;

              swapf       W_TEMP,F          ;

              swapf       W_TEMP,W          ;

                                            ;

              retfie                        ;выход из подпрограммы обработки прерывания

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Основная программа

                                            

Start         clrf        PORTB             ;очистка выходных защелок портов A и B

              clrf        PORTA             ;

              

              movlw       b’00000111′       ;выключение компараторов

              movwf       CMCON

 

              bsf         STATUS,RP0        ;выбрать 1-й банк    

              movlw       b’00011110′       ;настройка линий ввода\вывода порта B      

              movwf       TRISB             ;RB0,RB5-RB7 на выход,остальные на вход

 

              movlw       b’10000001′       ;коэффициент предделителя TMR0 1:4, внутрен.

              movwf       OPTION_REG        ;тактовый сигнал

              bcf         STATUS,RP0

          

              bcf         flag,5            ;сброс флага состояния светодиода led

              bcf         flag,7            ;сброс флага разрешения приема высокой лог.уровня

              bcf         flag,4            ;сброс флага приема пакета данных

              clrf        shets             ;очистка счетчика бит

              clrf        kolbyte           ;очистка счетчика байт

              movlw       data1             ;запись адреса первого регистра хранения команд

              movwf       FSR_prer          ;в регистр FSR_prer

              

              bcf         INTCON,T0IF       ;сброс флага прерывания по переполнению TMR0

              movlw       .0                ;запись 0 в TMR0

              movwf       TMR0              ;

              bsf         INTCON,T0IE       ;разрешение прерываний по переполнению TMR0

 

              movf        PORTB,W           ;чтение регистра PORTB для устранения несоответствия

              bcf         INTCON,RBIF       ;сброс флага прерывания по изменению уровня сигнала RB4:RB7

              bsf         INTCON,RBIE       ;разрешение прерываний по изменению уровня сигнала RB4:RB7

              bsf         INTCON,GIE        ;глобальное разрешение прерываний

 

opros         btfss       flag,4            ;опрос флага получения команды

              goto        opros             ;команда не получена:переход на метку opros

              bcf         flag,4            ;команда получена:сброс флага полуения команды

 

              movlw       data1             ;проверка первого и второго байта команды на соответствие

              movwf       FSR               ;с командой, отправленной с передатчика

              movf        INDF,W

              xorlw       .196

              btfss       STATUS,Z

              goto        opros             ;первый байт команды неверный:переход на метку opros

              incf        FSR,F

            

              movf        INDF,W

              xorlw       .46

              btfss       STATUS,Z

              goto        opros             ;второй байт команда неверный:переход на метку opros

 

int4          btfsc       flag,5            ;поочередное включение и выключение светодиода led-

              goto        pro21             ;-при получении правильной команды

              bsf         led

              bsf         flag,5

              goto        opros

 

pro21         bcf         led

              bcf         flag,5

              goto        opros

 

              end                         ;конец всей программы

radiolaba.ru

Радиомодули 433 Мгц


Про простые и рабочие модули на 433МГц с OOK\ASK модуляцией Модули на али: передатчик wlc-tx1 433MHz 500mW — http://got.by/1q0fr2…


Подключение радиомодулей на 433МГц к Ардуино. Библиотека, скетчи, схемы тут http://forklg.ru/viewtopic.php?f=98&t=1246.


В этом видео представлен краткий обзор комплекта приемника ( RX) и передатчика (TX) с несущей частотой 433 МГц…


https://www.youtube.com/channel/UCzXyhl3NTAc-5Uy4yViCIdg — канал интернет магазина TIXER.RU.


Всем привет! Сегодня мы попробуем соединить две Ардуино при помощи радиомодулей 433 МГц. Это очень просто…


00:03:11 Работа с приемником 00:05:20 Работаем с передатчиком Радио модуль Arduino http://got.by/2en1h7 Купить Arduino UNO …


Купить модули передатчика и приёмника: …


https://alitems.com/g/1e8d114494a243ba637e16525dc3e8/?ulp=https%3A%2F%2Fru.aliexpress.com%2Fitem%2F1Lot-1-pair-2pcs-Best-prices-433Mhz-RF- …


Обзор китайских беспроводных модулей на 433mhz для arduino // купить модули на али http://goo.gl/7N1EJp // библиотека http://www.a…


Обзор радио модулей для Arduino работающих на частоте 433MHz Купить товар можно на aliexpress 433MHz Radio Module: http://goo.gl/Favcn7…


В обзоре радиопередатчики : FS1000A ,h53A,Syn115,TX-1,ZF-4,GW-T10a, (WL-102 хорошо модулирует входной ВЧ сигнал имеет при этом…


http://fas.st/ukQoPd — ссылка на блок управления с пультом https://vk.com/clubautogadjets — МОЯ группа Вконтакте.


Первый взгляд на радиомодули E07-868MS10, на трансиверах CC1101 на 868Mhz Продаются на али: http://got.by/27rnau HC-11: http://got.by/27robs…


Показан наиболее простой способ проверки работоспособности модулей передатчика и приемника для Arduino.


020 Радио комплект 433 МГц передатчик + приемник Разверни описание Дополнительные тэги: посылки из Китая,…


приемник поддерживает кодировку только 1527, пульт(брелок) поддерживает большинство фиксированных кодов…


Пульт радиоуправления на 4 канала Qiachip 433 мГц.


Из видео вы узнаете как дистанционно управлять arduino с помощью радиопульта на 433 МГц от беспроводного контро…


Обзор радиомодулей на 433Мгц построенных на однокристальных трансиверах CC1101 (HC-11) и SI4463 (HC-12). и микроконтролл…


или беспроводные датчики температуры и влажности на ардуино // купить модули на али http://goo.gl/7N1EJp // код http://ardui…


Простая проверка радио модулей 433 мгц на работаспособность, небольшое моргание светодиода означает улавли…


Комплект радио модулей SRX882+STX882(433.92мГц):($2.29) http://ali.pub/1blku9 Комплект радио модулей WL101-341+WL102-341(433.92мГц):($1.25) …


Открытие шлагбаума Nice с помощью Arduino Uno и радио модуля 433 Мгц путем перебора всех возможных вариантов кодов….


Рассказываю как легко и быстро переделать китайский модуль fs1000a для передачи с частотной модуляцией. Так…


Извиняюсь за прошлое видео, почему-то половину видео вырезало) Ссылочка на датчики 433MHz: http://ali.ski/Oxer_ Датчик…


Ардуино,дистанционное управление реле через радио модули 433 мгц ▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱…


Итак, голосуем какой приемник победит! Голосуем тут http://forklg.ru/viewtopic.php?f=98&t=1247.


Arduino — Связь по радиоканалу 433мгц Обзор радиомодуля FS1000a и XY-MK-5V смотрите здесь: …


Продолжаем строить антенны, на этот раз сборка двух направленных антенн, Уда-Яги или волновой канал и логоп…


433mhz, #arduino, #умныйдом, #управлениенагрузкой, #smarthouse УРОК №4 Считываем коды с пультов (брелков) на 433Мгц с помощ…


Программируемые 433МГц приемники с 3 режимами работы. нажать 1 раз: Inching mode (Режим Кратковременного включения)…


Собираем «J антенну» и «антенну паук» для радиомодулей на 433мгц, вроде SI4432, SI4463, CC1101? радиомодемов HC11, HC12 и им…


Простой и быстрый способ проверить модули на работоспособность. Также на основе этих прошивок можно постр…


Используем простые радиомодули для связи двух микроконтроллеров Ардуино (посылаем текстовые сообщения)….


Подключение и настройка HC-11 Купить товар можно на aliexpress HC-11: https://goo.gl/Akcebu HC-12: https://goo.gl/PnhmZ4 (лега…


Для желающих поддержать автора: Яндекс.Кошелек https://money.yandex.ru/to/410014727869520 Использование модулей приема и…


Передача структурированных данных, датчика температуры и влажности DHT12 по радиоканалу 433 МГц используя…


Обзор приемника и передатчика на 433 мГц RX480E 4 и TX118SA 4 Ссылки на используемые компоненты: Приемник и передатч…


В этом видео я немного расскажу как своими руками можно сделать Цифровой радиопередатчик на MAX1472 Это очен…


Модуль с пультом ДУ, для управления 12 вольтовой нагрузкой по радиоканалу. Обзор и пример использования…



zephhyre texture pack 1.8
como ficar rico no minimundos
5zig mod 1.7.2
huawei y340 falha na criptografia
pb launcher parou de funcionar 2016
minecraft pirata anjo caido
numero da larissa manoela 2016
consiga assinantes apk
como instalar cwm no galaxy win
como adicionar contatos no bluestacks


debojj.net