Считывание пульта 433 ардуино

RF Sniffer на 433 МГц с Arduino

В наши дни радиочастотные передатчики / приемники с частотой 433 МГц очень популярны среди любителей электроники и возиться с электроникой. Эти дешевые радиомодули ближнего радиуса действия могут использоваться практически для всех микроконтроллеро в для широкого спектра приложений, для которых требуется беспроволочное радиоуправление, хотя в этом случае мы будем использовать его как радиочастотный снифер.

Удивительно, но широко не отмечалось, что полоса ISM (промышленная, научная и медицинская), сосредоточенная на 433,92 МГц, на самом деле охватывает колоссальную 1,7 МГц между 433,05 МГц и 434,79 МГц. Еще одна неприятная вещь заключается в том, что когда отсутствует доступность сигнала, схема AGC приемника растет, и все, что вы получаете, — это нежелательный шум на выводе данных. Это затрудняет фактическое захват «слишком быстрых» данных от шума с помощью самодельного логического анализатора звуковых карт или обычного осциллографа для целей аналитического обзора / обратного проектирования. На самом деле, около 100 миллисекунд радиомолчания после приема данных до того, как АРУ возобновит резервное копирование, позволяет вам искать радиомолчание, а затем мгновенно ищет данные, чтобы вынюхать сигнал. Это действительно неуклюжий процесс проб и ошибок!

Настройка

Позвольте мне показать вам, как вы можете легко обрабатывать упакованные данные радиосигналов без использования дорогостоящих тестовых устройств (эта идея на самом деле более удобна, чем использование чего-то чрезвычайно дорогого). Ниже представлен простой и дешевый 433-Mz RF Sniffer, идеально подходящий для тестирования / реконструирования большинства беспроводных устройств с частотой 433 МГц. Как вы можете видеть, установка находится на земле Arduino с приемным модулем 433 МГц и интерфейсом USB.

Код для захвата радиочастотных сигналов 433 МГц на самом деле является слегка измененной частью известной библиотеки «RCSwitch» ( https://github.com/sui77/rc-switch ). Ниже приведены снимки моей начальной настройки эксперимента и окна последовательного монитора моего ноутбука. В дополнение к Arduino Serial Monitor, я попробовал такую ​​же настройку позже с PuTTY.

Я использовал простой двухканальный пульт дистанционного управления 433 МГц для отправки кодов снифферу для выполнения большинства экспериментов, выполненных в моей лаборатории. Здесь вы можете увидеть слежение за тем же пультом дистанционного управления:

-Arduino 433MHz RF Sniffer

-Based on an example from the RCSwitch Library

-Hardware: Arduino Nano & Generic 433MHz RF Receiver

RCSwitch mySwitch = RCSwitch();

mySwitch.enableReceive(0); // Receiver input on interrupt 0 (D2)

pinMode(13, OUTPUT); // D13 as output- Optional

digitalWrite(13, HIGH); // Toggle the onboard LED if serial is available — Optional

Если у вас есть телефон Android / планшет с USB-OTG, вы можете играть с сниффером без рабочего стола / портативного компьютера. Просто установите «DroidTerm (v7.2)» и запустите его «USB-виртуальный последовательный порт» (Baud Rate 9600). Смотрите снимок экрана с моего телефона. Процедура проста: откройте «Serial Monitor» и установите скорость передачи в бодах до 9600. Когда вы нажимаете кнопки на пульте дистанционного управления с частотой 433 МГц, принятые 433 МГц радиочастотные коды затем должны быть напечатаны в «Десятичное число / бит / Протокол «. Первый результат — от кнопки «А» моего пульта дистанционного управления — «Десятичный (24 бит): 2220642 и протокол 1.« Примечание: десятичный (24 бит) 2220642 = двоичный: 001000011110001001100010.

Кстати, протокол радиочастотных устройств с частотой 433 МГц довольно интересен. Ниже приведен снимок формы сигнала радиосигнала, захваченного моим надежным DSO. В основном, когда вы нажимаете кнопку, одна и та же последовательность передается несколько раз, и перед повторением одной и той же последовательности происходит небольшая задержка (в миллисекундах). Каждая последовательность состоит из двух типов прямоугольных волн: длинный, затем короткий, который представляет собой «1», а короткий, за которым следует длинный, который представляет «0.». Я понял, что длинный или длинная длина примерно в три раза превышает ширину короткого замыкания или короткого замыкания. Имея это в виду, я удержал полную последовательность включения-выключения (OOK), соответствующую кнопке «А», как и ожидалось. Конечно, кнопка «A» моей пульта дистанционного управления выводит 24-битный код «001000011110001001100010» (2220642 в десятичной форме), как это было показано в точности по установке Arduino, но с ложным «0» в конце (что может быть незначительным Значение «конец сообщения»).

Там у вас есть — вот как я захватил и проанализировал сигналы радиочастотного пульта 433 МГц. Я планирую продолжить эту статью с помощью нескольких руководств по обратному проектированию в будущем. Отсюда вы можете начать эксперименты, чтобы сделать ваши собственные радиопередатчики с помощью частей, расположенных вокруг, для передачи «реплицированных» кодов, чтобы возиться с вашими (или вашими соседями — хаха!) Существующими 433-МГц радиочастотными бытовыми приборами или аналогичные вещицы. Конечно, сложная часть — это выяснить, как кодируются данные. Если вы можете захватывать и декодировать сигналы с устройства, вы можете воспроизвести его с помощью микроконтроллера и передатчика с частотой 433 МГц и взять его под контроль (радиочастотный передатчик имеет один вывод данных, который может быть подключен к любому выводу микроконтроллера ввода / вывода) ,

В каждой стране есть регулирующий орган, ответственный за радиосвязь. Крайне важно, чтобы вы знали о законах, касающихся использования нелицензированных радиопередатчиков. Если вы не соблюдаете эти правила, вы можете столкнуться с большими неприятностями.

Источник

Управление шлагбаумом с помощью Arduino UNO и радиопередатчика 433 МГц

Всем привет! У меня на работе есть автомобильная парковка. Конечно, цель данной статьи не хвастовство, учитывая тяжелую ситуацию на дорогах с парковочными местами, и не пиар моего руководства о том, что они заботятся о своих сотрудниках (не буду даже упоминать о месте свой работы!), дело совершено не в этом. Суть в том, что мешает любому другому человеку, не имеющему отношения к месту моей работы, припарковаться на этой парковке? А это шлагбаум, ограничивающий въезд и выезд с этой парковки.

И как во многих организациях, вход на мое предприятие осуществляется по обыкновенным пропускам, дабы контролировать меня и всех остальных. Ну и въезд на парковку сделали также, по этим же пропускам. То есть подъезжаешь к парковке, подносишь пропуск к считывателю, он срабатывает, шлагбаум открывается (закрывается автоматически), заезжаешь и все. Так думали они. Но мое увлечение электроникой и природная лень (это ведь каждый раз подъезжать, открывать окно, вытаскивать руку, закрывать окно, а если дождь, а если холодно) пошли против системы.

Итак, ближе к делу. Прежде всего, узнал, что шлагбаум оказался довольно-таки популярной фирмы Nice и начал искать о нем информацию. Однако, несмотря на популярность фирмы производителя, информации о его форматах кодов было очень мало. Выяснилось, что существуют 12-битные и 24-битные форматы кодов. 12-битные более древние, 24-битные – посовременней. Так как я знаю, что шлагбаум на работе стоит давно, решил начать с 12-битных кодов (впоследствии угадал). И так пакет данных состоит из 12 бит. Перед 12-битным кодом идет, так называемый, «пилотный период» и «стартовый импульс». «Пилотный период» состоит из 36 интервалов низкого уровня, «стартовый импульс» состоит из 1 интервала высокого уровня. Один пакет данных состоит из «пилотного периода», за ним «стартовый импульс» и за ним 12-битный код (для каждого шлагбаума свой). Пульты шлагбаумов передают сразу по 4 пакета данных, но я поставил больше, так как очень много устройств работают на данной частоте (в частности автомобильные сигнализации) и возможны помехи. Длительности импульсов для шлагбаумов Nice:

  • Логическая «1» – 1400 мкс низкого уровня (два интервала) и 700 мкс высокого (один интервал)
  • Логический «0» – это 700 мкс низкого уровня (один интервал) и 1400 мкс высокого (один интервал)
  • «Пилотный период» – 25200 мкс (36 интервалов)
  • «Стартовый импульс» – 700 мкс (1 интервал)

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

С помощью чего, вообще, все это можно реализовать? Недавнее мое увлечение платформами Arduino, не дали мне долго размышлять над этим вопросом.

2. Радиопередатчик 433Мгц, самодельная антенна к нему,

3. Батарейка 9 вольт, в народе «Крона».

Данные радиопередатчики в известных китайских магазинах продаются очень дешево (порядка 50 руб.), совместно с радиоприемниками. Они очень простые, три контакта: питание, земля и сигнальный контакт. Питания от 5 до 12 вольт, чем выше напряжение питания, тем лучше дальнобойность. Собственно по этой причине была выбрана 9 вольтовая батарейка. Рекомендованное напряжения питания Arduino Uno от 7 до 12 вольт (контакт Vin), так что «Крона» вполне подходит. Также дальнобойность радиопередатчика зависит от наличия антенны (без нее дальность будет около 1 метра). Весь комплект обошелся порядка 300 руб.

Вот, собственно, и сам скетч для Arduino Uno:

Перебор всех возможных вариантов занял около 1 недели, с учетом одного выхода в день к шлагбауму. Методика быстрого выбора правильного кода была очень простой. С помощью команды micros() определил время передачи одного кода. Он составил примерно 0,25 сек. Общее перебора всех вариантов около 17 мин. Перед шлагбаумом запустил Arduino и засек время. Где-то на 12,5 минуте открылся шлагбаум. Исходя из этого, я отбросил сразу первые 2800 вариантов. И так далее. Когда вариантов осталось около 30, после каждой передачи данных ставил задержку в 1 секунду. Так как контакт передачи данных я установил 13-ым (со светодиодом), было видно каждый момент передачи, подсчитал и определил точный код.

Вот и все! В качестве демо — видео вскрытия:

Источник

Arduino.ru

Имитация пульта на 433 МГц

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

Имеется устройство: пульт на 433МГц с тремя кнопками. Мне нужно имитировать нажатия этих кнопок при помощи передатчика, подключенного к ардуине. Сам пульт я разобрать не могу, т.к. боюсь его повредить (он довольно-таки плотно собран), поэтому не могу посмотреть какой там чип установлен.

Что было сделано: собрал простую схемку из Ардуино Про Мини и приемника mx-rm-5v (подал питание на приемник, а контакт DATA подключил к пину D2 ардуинки). Попробовал несколько разных библиотек типа rc-switch, заливал в ардуинку пробные скетчи из них — толку никакого, похоже протокол нестандартный, библиотеки его не распознают никак. При этом сигнал от приемника при нажатии кнопок поступает в ардуинку, проверил это простеньким осцилографом и выводом digitalRead(2) в плоттер последовательного порта. Причем коды с пульта всегда одинаковые (для каждой кнопки), то есть статические.

Прошу у опытных товарищей помощи: как не разбирая пульта наиболее простым способом повторить его сигналы? Может библиотеку какую-нибудь посоветуете или простую методу?

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

как не разбирая пульта наиболее простым способом повторить его сигналы?

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

Единственный способ — подобрать такую библиотеку. чтобы читала сигналы с пульта. Или написать ее самому. Тем более, если вы сигналы уже принимаете и можете выводить в сериал

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

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

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

А Вы бы сказали поподробнее задачу. Что за пульт? Какого характера сигналы? Если сигналы всегда одинаковые для каждой кнопки, то один разговор, если всегда разные, то свосем другой.

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

Пульт от рулонных штор, фирма Mosel.
Коды всегда одинаковые (по крайней мере похожи). Выглядят примерно так: сначала серия коротких импульсов, затем один длинный и снова небольшая серия коротких. Похоже на передачу кода устройства (пульт привязывается к конкретному приводу), затем разделитель (длинный импульс) и после этого код кнопки (вверх, вниз или стоп). Скриншоты я ещё не научился делать на осциллографе, поэтому картинку выложить не могу.

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

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

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

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

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

Я бы, для начала, попробовал также точно дёргать за ногу data передатчика FS1000A. Один раз у меня такое прокатило. Я дёргал, он передавал, а незнакомый мне приёмник это скушал.

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

Спасибо, попробую, возможно тоже прокатит.

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

Отпишусь о результатах, может кому-нибудь пригодится:

1. Для считывания сигналов с пульта взял отсюда скетч:

С его помощью получил набор цифр — длительность промежутков между высоким и низким уровнем сигнала.

2. Проанализировал полученный набор, нашел в нем повторяющиеся куски. Выяснил, что сначала подается сигнал о начале передачи. Он отличается по длительности от всех остальных: примерно 4775 мс подается высокий уровень сигнала, пауза примерно 1532 мс. После стартового сигнала идет серия коротких импульсов. Единица кодируется импульсом примерно 700мс и паузой 400 мс, ноль — импульс 350 мс и паузой 750 мс. (это все конечно условно, можно и наоборот их назвать). Последний импульс характерен длительностью примерно 700мс и паузой примерно 10064мс.

3. Модифицировал исходный скетч, чтобы получить код нажатой кнопки, состоящий из нулей и единиц. Как оказалось — каждый код передается по 4 раза. При нажатии кнопки «вверх» передается два разных кода (скорей всего это сделано для привязки пульта к приводу). В итоге получил двоичные коды каждой кнопки пульта.

4. Имея на руках коды кнопок — написал простенький скетч для дерганья ноги передатчика (на delayMicroseconds()) в соответствии со строкой из нолей и единиц (ну и добавив начальный и конечный импульсы). В итоге все заработало.

Очень хорошо в этом деле мне помог осцилограф. Без осцилографа или логического анализатора совершенно непонятно работает ли модуль, передает ли что-то в эфир. На модулях нет никакой индикации, нет ни светодиода ни чего-то еще.

Источник

Adblock
detector