<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Урок 10. Радиосвязь на 433 MHz. Охранная система]]></title><description><![CDATA[<h2>Цель урока</h2>
<p dir="auto">Привет! Сегодня мы сделаем несложную охранную систему с использованием пары радиомодулей (FS1000A и MX-JS-05V), которая работает на частоте 433 МГц (в зависимости от вашего региона частоты могут несколько отличаться) (рис. 1 - 1.1). Научимся делать своими руками беспроводной датчик проникновения на базе модуля HC-SR501.</p>
<p dir="auto"><img src="https://sun1-2.userapi.com/c840530/v840530719/72579/YqRK24emTIY.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 1.</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2ca59/BA-w70647to.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 1.1</p>
<p dir="auto">В качестве центра системы будет выступать M5STACK с подключенным радиоприемником и красным световым маячком.</p>
<p dir="auto">Беспроводной датчик проникновения сделаем своими руками.  Датчик будет подключен к цепи постоянного тока напряжением 5 В. При отключении датчика от цепи питания или при удалении за радиус действия беспроводной сети центральное устройство начнёт сигнализировать миганием маячка и подачей звукового сигнала.</p>
<p dir="auto">Также будет возможность приостановки охраны с помощью центральной кнопки на заданный интервал.</p>
<h2><strong>Перечень компонентов для урока</strong></h2>
<ul>
<li>M5STACK;</li>
<li>кабель USB-C из стандартного набора;</li>
<li>цветные провода из стандартного набора (тип розетка-вилка);</li>
<li>цветные провода не из стандартного набора (тип розетка-розетка);</li>
<li>радиоприёмник MX-JS-05V;</li>
<li>световой маячок. Напряжение питания: 5 В;</li>
<li>радиопередатчик FS1000A;</li>
<li>телескопическая антенна. Длинна: 17.3 см;</li>
<li>модуль датчика движения HC-SR501;</li>
<li>Arduino Nano;</li>
<li>вилка штырьевая PLS-10;</li>
<li>светодиод оранжевый. Напряжение питания: 3.3 В;</li>
<li>резистор: 220 Ом;</li>
<li>термоклей;</li>
<li>паяльник и припой;</li>
<li>дрель;</li>
<li>сверло. Диаметр: 2 мм;</li>
<li>сверло. Диаметр: 3.5 мм;</li>
<li>сверло. Диаметр: 5 мм;</li>
<li>сверло перьевое. Диаметр: 23 мм;</li>
<li>маркер или фломастер;</li>
<li>линейка;</li>
<li>штангенциркуль.</li>
</ul>
<h2>Немного теории</h2>
<p dir="auto">Сегодня мы не представляем себе жизни без радиосвязи. Когда мы подъезжаем к своему дому мы используем пульт дистанционного управления для того, чтобы открыть гаражные ворота. Когда к нам приходят гости они нажимают на беспроводную кнопку для того, чтобы подать звонок. Когда мы гуляем по торговому центру мы спокойны за наш автомобиль. И это всего лишь нечтожная доля примеров. Главное то, что это объединяет - дециметровый диапазон (в нашем случаее 433 МГц). Благодаря трудам замечательных инженернов и программистов мы можем с легкостью использовать такую радиосвязь в наших проектах (рис. 2).</p>
<p dir="auto"><img src="https://sun1-1.userapi.com/c840530/v840530243/7708c/gazXA0L5d0c.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 2. Передатчик - слева, приёмник - справа</p>
<p dir="auto">Давайте ознакомимся с техническими характеристиками данной пары:</p>
<ul>
<li>напряжение питания передатчика: 3 – 12 В;</li>
<li>напряжение питания приемника: 5 В;</li>
<li>несущая частота: 433 МГц;</li>
<li>потребляемый ток передатчиков: 8 мА;</li>
<li>потребляемый ток приемником: 4.5 мА;</li>
<li>чувствительность приемника: от −106 до -110 дБм;</li>
<li>выходная мощность передатчика: 32 мВт;</li>
<li>максимальная пропускная способность передатчика: 8 кб/с;</li>
<li>максимальная пропускная способность приемника: 5 кб/с;</li>
<li>диапазон рабочих температур: от −20 до 80 °C.</li>
</ul>
<p dir="auto">Теперь давайте рассмотрим модуль датчика движения HC-SR501 (рис. 2.1).</p>
<p dir="auto"><img src="https://pp.userapi.com/c830708/v830708607/cf242/eiPqlN83J0c.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 2.1. Модуль датчика движения HC-SR501</p>
<p dir="auto">Принцип работы модуля HC-SR501 заключается в регистрации инфракрасного излучения от подвижного объекта. Чувствительный элемент – пироэлектрический датчик 500BP. Он состоит из двух элементов заключенных в одном корпусе. Чувствительный элемент закрыт белым куполом – линзой Френеля. Особенности линзы Френеля таковы, что инфракрасное излучение от подвижного объекта попадает сначала на один элемент датчика 500BP, затем на другой. Микросхема отслеживает изменение сигнала от датчика и формирует логический сигнал на выходе согласно параметрам заданным переменными резисторами и перемычкой (рис. 2.2).</p>
<p dir="auto"><img src="https://pp.userapi.com/c845123/v845123607/2dc0f/oNfq8QpRkos.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 2.2.</p>
<p dir="auto">В режиме L на выходе устанавливается высокий уровень при первичной регистрации движения. Высокий уровень на выходе остается во время работы таймера, которое установлено подстроечным резистором "Time adjust". В это время датчик не реагирует на другие события.<br />
В режиме H каждый перемещающийся объект перезапускает таймер. Это означает, что при первом зафиксированном объекте на выходе датчика присутствия HC-SR501 формируется высокий уровень и поддерживается, пока регистрируется наличие движений в зоне обнаружения.<br />
С помощью подстроечного резистора "Sensitivity" вы можете изменять чувствительность модуля, тем самым изменять радиус охвата.</p>
<h2>Начнём!</h2>
<h3>Шаг 1. Нарисуем схему беспроводного датчика движения</h3>
<p dir="auto">Мозгом датчика сделаем недорогую плату Arduino Nano, она удобна прежде всего доступностью на рынке сегодня. К ней мы подключим светодиод на контакт D3, радиопередатчик FS1000A на контакт D4 и модуль движения HC-SR501 на контакт D5. Питание всех модулей будем производить от Arduino Nano с контакта 5V. Саму плату Arduino мы будем питать от цепи постоянного тока напряжением 5 В на контакт VIN. Земля для всех устройств общая, подтянута на контакт GND. Таким образом получим следующую схему включения (рис. 3).</p>
<p dir="auto"><img src="https://pp.userapi.com/c831108/v831108295/c8e40/nA5r_KNOn34.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 3. Схема включения модулей беспроводного датчика движения</p>
<h3>Шаг 2. Выберем подходящий корпус</h3>
<p dir="auto">В качестве корпуса Вы можете использовать, например: пластмассовую распределительную коробку от сети электропитания (можно найти в магазине электротоваров) (рис. 4). В нашем случае размеры корпуса 70 x 70 x 29 мм.</p>
<p dir="auto"><img src="https://pp.userapi.com/c831108/v831108836/ca2a9/mB5x2ldwJzY.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 4.</p>
<p dir="auto">Будущее расположение модулей хорошо отображено на рисунке 3. Более подробно поговорим об этом на следующих шагах данного урока.</p>
<h3>Шаг 3. Подготовка к работе</h3>
<p dir="auto">Прежде всего необходимо сделать отверстия в корпусе с помощью дрели. Подготовьте рабочее место: уберите все лишнее, подложите деревянную доску под корпус устройства, чтобы не повредить стол или используйте специальный верстак.</p>
<blockquote>
<p dir="auto">Внимание! Производите действия под наблюдением взрослых и соблюдайте технику безопасности.</p>
</blockquote>
<p dir="auto">Ознакомьтесь с чертежом, отображающий расположение отверстий в корпусе нашего будущего устройства на рисунке 5.</p>
<p dir="auto"><img src="https://pp.userapi.com/c845120/v845120975/30352/lzC9lOjWLCc.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 5. Чертёж</p>
<h3>Шаг 4. Монтаж модуля датчика движения</h3>
<p dir="auto">С помощью линейки отмерьте необходимое расстояние и нанесите точку с помощью маркера, возьмите дрель, установите сверло диаметром 3.5 мм и сделайте отверстите (рис. 6).</p>
<p dir="auto"><img src="https://sun1-4.userapi.com/c840528/v840528975/77c4b/P5OwpkLTkR8.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6. Сверление отверстия диаметром 3.5 мм</p>
<p dir="auto">Теперь установите перьевое сверло диаметром 23 мм и поверх рассверлите большее отверстие (рис. 6.1).</p>
<p dir="auto"><img src="https://sun1-2.userapi.com/c840528/v840528975/77c68/FioFwwvD9IM.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.1. Сверление отверстия диаметром 23 мм</p>
<p dir="auto">После того, как отверстие будет рассвелено очистите корпус от пластмассовой стружки (рис. 6.2 - 6.3).</p>
<p dir="auto"><img src="https://sun9-2.userapi.com/c840528/v840528975/77c72/wk8MexB0Ip0.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.2.</p>
<p dir="auto"><img src="https://sun1-1.userapi.com/c840528/v840528975/77c55/XD77AUJLf1A.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.3. Модуль готов к установке</p>
<p dir="auto">Переверните корпус установите ровно модуль и зафиксируйте его с помощью термоклея (рис. 6.4 - 6.5).</p>
<p dir="auto"><img src="https://pp.userapi.com/c830400/v830400595/d83ab/SMkqCf4nf-0.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.4</p>
<p dir="auto"><img src="https://pp.userapi.com/c830400/v830400595/d83c9/XJP_GsdaMQM.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.5</p>
<p dir="auto">На этом монтаж модуля датчика движения завершён.</p>
<h3>Шаг 5. Монтаж модуля радиопередатчика и антенны</h3>
<p dir="auto">Аналогичным образом с помощью линейки отмерьте необходимое расстояние и нанесите точку с помощью маркера, возьмите дрель, установите сверло диаметром 2 мм и сделайте отверстите (рис. 7 - 7.1).</p>
<p dir="auto"><img src="https://sun1-4.userapi.com/c840528/v840528975/77c94/_GN59VYM4xo.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 7. Сверление отверстия диаметром 2 мм</p>
<p dir="auto"><img src="https://sun1-4.userapi.com/c840528/v840528975/77c9e/jPwYJexCFvE.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 7.1</p>
<p dir="auto">Припаяйте проводник с кольцом на конце к отверстию на модуле с надписью ANT (рис. 7.2).</p>
<p dir="auto"><img src="https://pp.userapi.com/c834102/v834102975/117727/mLRhQ1B8yFE.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 7.2</p>
<p dir="auto">Прикрутите винт и шайбу на проводник (рис. 7.3).</p>
<p dir="auto"><img src="https://pp.userapi.com/c834102/v834102975/117739/bxOVjPHXDiQ.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 7.3</p>
<p dir="auto">Установите модуль в корпус и зафиксируйте с помощью термоклея (рис. 7.4). С обратной стороны корпуса удерживайте телескопическую антенну.</p>
<p dir="auto"><img src="https://pp.userapi.com/c834102/v834102595/1171d9/lJOR0wEEyAE.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 7.4</p>
<p dir="auto">На этом установка радиопередатчика и антенны завершена.</p>
<h3>Шаг 6. Отверстия в боковой стенке</h3>
<p dir="auto">Сделайте отверстия в боковой стенке и установите в них кабель типа (розетка-вилка) (рис. 8 - 8.1) и светодиод.</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421595/2c8e7/1wV3zRJRSP4.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 8. Сверление отверстия диаметром 3.5 мм</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421595/2c8f1/QJB5qVEeFxk.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 8.1. Сверление отверстия диаметром 5 мм</p>
<p dir="auto">Укоротите одну из ножек (+) светодиода и припаяйте резистор номиналом 220 Ом. Используйте термоусадку для изоляции (рис. 8.2).</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2c8d6/dLHFwEbdLfE.jpg" alt="" class=" img-fluid img-markdown" /><br />
Рисунок 8.2.</p>
<p dir="auto">Далее установите светодиод в корпус (рис. 8.3).</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2c8e0/8YCqMXgiuYk.jpg" alt="" class=" img-fluid img-markdown" /><br />
Рисунок 8.3.</p>
<p dir="auto">На этом монтаж светодиода и проводов питания завершён.</p>
<h3>Шаг 7. Делаем ответвители проводов</h3>
<p dir="auto">Возьмите и откусите с помощью кусачиков вилку типа PLS-10 напополам. С помощью отрезанных ножек от ненужных радиокомпонентов припаяйте перемычки, чтобы все контакты стали замкнуты (рис. 9). Должно получиться два множителя.</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2c8f4/-uU0Od_FaoY.jpg" alt="" class=" img-fluid img-markdown" /><br />
Рисунок 9.</p>
<h3>Шаг 8. Монтаж Arduino Nano и проводов</h3>
<p dir="auto">Завершающим моментом является установка ардуино и монтаж всех проводников. Используйте множители для цепи питания и земли. Чтобы провода не занимали много места - накрутите их на маркер (рис. 10).</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2c920/G3aJ1dieIHE.jpg" alt="" class=" img-fluid img-markdown" /><br />
Рисунок 10.</p>
<p dir="auto">Выполните соединение всех проводников (рис. 10.1) согласно схеме включения на рисунке 3.</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2c933/t_mTFym8fDc.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 10.1</p>
<p dir="auto">На этом монтаж полностью завершён (рис. 10.2).</p>
<p dir="auto"><img src="https://pp.userapi.com/c845421/v845421970/2c93d/Vm1L-2AbgoI.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 10.2</p>
<h3>Шаг 9. Пишем скетч для беспроводного датчика</h3>
<p dir="auto">Для работы с FS1000A на просторах интернета существует множество различных вариантов библиотек. Я предлагаю использовать библиотеку, написанную замечательными ребятами с сайта <strong><a href="http://iarduino.ru" target="_blank" rel="noopener noreferrer nofollow ugc">iarduino.ru</a></strong>. Сложного в использовании ничего особо нет. Инициализируем экземпляр класса, передав ему номер контакта, на который подключён радиоприёмник <em>iarduino_RF433_Transmitter radioTX(radio);</em> С помощью метода <em>radioTX.begin(1000);</em> устанавливаете скорость передачи в бит/с. Ещё разработчик добавил возможность организации "труб", как бы каналов, по которым будут передаваться данные не мешая друг-другу. Число труб можно изменять в любом месте кода от 0 до 7. <em>radioTX.openWritingPipe(0);</em></p>
<pre><code>#include &lt;iarduino_RF433_Transmitter.h&gt; 

int led = 3;                 
int radio = 4;
int pir = 5;    
String sensorId = "ir-1";
unsigned long prevTime = 0;
iarduino_RF433_Transmitter radioTX(radio);              

void sendString(String str) {
  int len = str.length() + 1;
  char bfr[len];  
  str.toCharArray(bfr, len);
  int n = 24 / str.length();
  for (int i = 0; i &lt; n; i++)
  {
    radioTX.write(&amp;bfr, sizeof(bfr)); 
  }
}

void setup() {
  pinMode(led, OUTPUT);    
  pinMode(pir, INPUT);
  prevTime = 0;  
  radioTX.begin(1000);
  radioTX.openWritingPipe(0);    
}
 
void loop() {
  if (digitalRead(pir) == LOW)
  {
    if ((millis() - prevTime) &gt;= 3000)
    {
      prevTime = millis();
      sendString(sensorId + String((char)0x1d) + "LOW");
      digitalWrite(led, HIGH);
      delay(70);
      digitalWrite(led, LOW);
      delay(30);
    }
  }
  else
  {
    sendString(sensorId + String((char)0x1d) + "HIGH");
    digitalWrite(led, HIGH);
    delay(25);
    digitalWrite(led, LOW);
    delay(25);
  } 
}
</code></pre>
<p dir="auto">Я написал простенькую функцию для отправки строки до 24 символов. Если строка несколько короче, то она будет передаваться неоднократно. Это сделано с целью некоторой помехозащищенности.<br />
Принцип работы заключается в том, что датчик каждые 3000 мс отправляет свой <em>sensorId</em> + значение, полученное от модуля движения - <em>LOW</em> и мигает светодиодом. Если поступит сигнал HIGH, то датчик моментально начнёт рассылать соответствующий уровень и мигать светодимодом чаще.</p>
<p dir="auto">Можете подключить Arduino Nano и загрузить данный скетч.</p>
<p dir="auto">После чего крышку датчика можно закрывать.</p>
<h3>Шаг 10. Пишем скетч для беспроводного охранного центра</h3>
<p dir="auto">Обратите внимание на различие между именами заголовочных файлов. Действия подготовки приёмника к работе похожи на действия подготовки передатчика. Поступление данных от одной из труб можно отследить с помощью метода <em>radioRX.available(&amp;k)</em>, где <em>k</em> - номер трубы. Чтение производится с помощью вызова метода <em>radioRX.read(&amp;j, sizeof(j));</em>, где <em>j</em> - массив символов размером 24.</p>
<pre><code>#include &lt;M5Stack.h&gt;
#include &lt;iarduino_RF433_Receiver.h&gt;

int radio = 5;
int beacon = 22;
uint8_t k;
char j[24];
unsigned long currentTime;
unsigned long prevTime = 0;
extern unsigned char beacon_logo[];
iarduino_RF433_Receiver radioRX(radio);

void alaram() {
  while (true)
  {
    if (m5.BtnB.wasPressed()) break; 
    digitalWrite(beacon, HIGH);
    m5.Speaker.tone(800);
    delay(150);
    digitalWrite(beacon, LOW);
    m5.Speaker.mute();
    delay(150);
    m5.update();
  }
  digitalWrite(beacon, LOW);
  m5.Speaker.mute();
  m5.update();
  int suspendTime = 15;
  for ( ; suspendTime &gt; 0; suspendTime--)
  {
    message("protection suspended " + String(suspendTime) + "s");
    delay(1000);
  } 
  message("At protecting...");
}

String parseString(int idSeparator, char separator, String str) { // like a split JS
  String output = "";
  int separatorCout = 0;
  for (int i = 0; i &lt; str.length(); i++)
  {
    if ((char)str[i] == separator)
    {
      separatorCout++;
    }
    else
    {
      if (separatorCout == idSeparator)
      {
        output += (char)str[i];
      }
      else if (separatorCout &gt; idSeparator)
      {
        break;
      }
    }
  }
  return output;
}

void message(String text) {
  M5.Lcd.fillRect(0, 160, 320, 30, 0x7bef);
  M5.Lcd.setCursor(10, 167);
  M5.Lcd.setTextColor(0xffff);
  M5.Lcd.print(text);
  M5.Lcd.setTextColor(0x7bef);
}

void setup() {
  m5.begin();
  M5.Lcd.fillRoundRect(0, 0, 320, 240, 7, 0xffff);
  M5.Lcd.setTextColor(0x7bef);
  M5.Lcd.setTextSize(2);
  M5.Lcd.drawBitmap(35, 70, 59, 59, (uint16_t *)beacon_logo);  
  M5.Lcd.setCursor(120, 70);
  M5.Lcd.print("RADIO 433 MHz");
  M5.Lcd.setCursor(120, 90);
  M5.Lcd.print("ALRAM SYSTEM");
  M5.Lcd.setCursor(120, 110);
  M5.Lcd.print("ON M5STACK");
  message("radio is starting");
  pinMode(beacon, OUTPUT);
  radioRX.begin(1000);              
  radioRX.openReadingPipe(0);
  radioRX.startListening();
}

void loop() { 
  if (radioRX.available(&amp;k))
  {
    radioRX.read(&amp;j, sizeof(j));
    delay(1);
    String sensorInfo = parseString(0, (char)0x1d, j);
    String sensorType = parseString(0, '-', sensorInfo);
    String sensorId = parseString(1, '-', sensorInfo);
    if (sensorType == "ir")
    {
      prevTime = millis();
      String data = parseString(1, (char)0x1d, j);
      if (data == "HIGH")
      {
        message("Attention for " + sensorInfo);
        alaram();
        prevTime = millis();
      }
      else
      {
        message("At protecting...");
      }
    }
  }
  
  if ((millis() - prevTime) &gt;= 10000)
  {
    message("Sensor unavailable.");
    alaram();
    prevTime = millis();
  }
}
</code></pre>
<p dir="auto">Принцип работы центра заключается в ожидании данных от датчика. Если данные не придут вовремя (в течении 10 с), то сработает сирена и маячок. Для приостановки охраны на 15 с используется нажатие кнопки B (центральной).</p>
<p dir="auto">Можете подключить M5STACK и загрузить данный скетч.</p>
<p dir="auto">После чего не забудьте подключить радиоприёмник и маячок к соответствующим контактам.</p>
<h3>Шаг 11. Запуск!</h3>
<p dir="auto">В разделе <strong>"Download"</strong> прилагаются видео с демонстрацией работы. На этом урок завершён.</p>
<h3>ДОМАШНЕЕ ЗАДАНИЕ</h3>
<ul>
<li>Задание 1 уровня сложности: сделайте дополнительные отверстия под отвертку для регулировки резисторов на модуле датчика движения;</li>
<li>Задание 2 уровня сложности: сделайте различный звуковой и световой сигнал для разных типов тревоги: когда датчик не выходит на связь и когда датчик зафиксировал движение;</li>
<li>Задание 3 уровня сложности: добавьте дополнительный синий светодиод на датчик, сигнализирующий о недавнем движении (5 минут спустя, например);</li>
<li>Задание 4 уровня сложности: сделайте автоматическую генерацию уникальных адресов датчиков и автоматическую регистрацию их в охранном центре.</li>
</ul>
<h2>Download</h2>
<ul>
<li>Изображения (Yandex Disk): <a href="https://yadi.sk/d/ayUhlbUq3UX9dF" title="https://yadi.sk/d/ayUhlbUq3UX9dF" target="_blank" rel="noopener noreferrer nofollow ugc">https://yadi.sk/d/ayUhlbUq3UX9dF</a></li>
<li>Приложения (Yandex Disk): <a href="https://yadi.sk/d/P-c8Mchr3UX9tb" title="https://yadi.sk/d/P-c8Mchr3UX9tb" target="_blank" rel="noopener noreferrer nofollow ugc">https://yadi.sk/d/P-c8Mchr3UX9tb</a></li>
<li>Скетчи (GitHub): <a href="https://github.com/dsiberia9s/Lesson-10.-Radio-433-MHz.-Alram-system" title="https://github.com/dsiberia9s/Lesson-10.-Radio-433-MHz.-Alram-system" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/dsiberia9s/Lesson-10.-Radio-433-MHz.-Alram-system</a></li>
<li>Библиотеки (Yandex Disk): <a href="https://yadi.sk/d/1sqpIGOD3UXCbQ" title="https://yadi.sk/d/1sqpIGOD3UXCbQ" target="_blank" rel="noopener noreferrer nofollow ugc">https://yadi.sk/d/1sqpIGOD3UXCbQ</a></li>
<li>Видео с демонстрацией работы (YouTube): <a href="https://youtu.be/r90Ivr68PCU" title="https://youtu.be/r90Ivr68PCU" target="_blank" rel="noopener noreferrer nofollow ugc">https://youtu.be/r90Ivr68PCU</a></li>
</ul>
]]></description><link>https://community.m5stack.com/topic/178/урок-10-радиосвязь-на-433-mhz-охранная-система</link><generator>RSS for Node</generator><lastBuildDate>Sat, 27 Jun 2026 19:27:44 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/178.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Apr 2018 10:25:39 GMT</pubDate><ttl>60</ttl></channel></rss>