Pull to refresh

Comments 47

Под катом я расскажу… как за 8 баксов сделать приёмник… китайской управляемой розетки

А пока (в следующей статье) будем довольствоваться приёмом команд от пульта к розетке из китайского набора на 433 МГц

image
Я уже молчу про то, что у соседа может и не быть Z-Wave вообще, и тем более — про "поиздеваться".

ps. расскажу всем желающим, как слушать/управлять китайскими розетками за $2,5.
Для "поиздеваться" нужно иметь HackRF One или аналог (у меня Rad1o Badge). Можно и за 2.5 бакса, но здесь о методе, а не о цене.

С китайскими розетками будем развлекаться в следующей части — там протокол сильно проще, чем Z-Wave и аналоги. Там простая модуляция и примитивная адресация.
Я на самом деле о том, что ломать чужие лампочки — мягко, говоря, не слишком высокая честь. Впрочем, дело ваше.
Да я и не собирался ;) Ведь не ради этого всё делается, а ради понимания, что и как работает. Поверьте, будучи разработчиком Z-Wave устройств, я могу слушать эфир и фабриковать пакеты и без всех этих понтов с GNURadio. Удовольствие не в том, чтобы взломать, а в том, чтобы уметь и понимать степень угрозы.
Делай раз

Делай два

Делай три

Делай четыре

Принцип простой: подключаем приемник и передатчик к Arduino (приемник нужен, чтобы прочитать команды имеющихся пультов и больше ни для чего) и пользуемся библиотекой RC-Switch для чтения/передачи команд. Во многих случаях больше ничего не нужно, поскольку китайцы в простейших розетках, выключателях света, датчиках ОПС и реле используют одни и те же кодировщики сигнала (SC/PT2260/2262 и подобные) и одну и ту же амплитудную модуляцию.

Также есть библиотеки для специфических вариантов розеток, библиотека для радиовыключателей Livolo (китайцы извратились — сделали похоже на распространенную систему SC/PT2260/2262, но со своей загогулиной), плюс с помощью элементарной схемы, Audactiy и собственной головы можно эмулировать множество других протоколов с амплитудной модуляцией.
Ну, это не интересно. Можно и готовый пульт купить. Интересно же в радио разобраться, а не готовую библиотеку подключить. Весь фан прямо выкинули… ;)
У меня, если честно, такое ощущение, что вы читаете, но до конца не дочитываете ) Но уж раз так, то: с радио на 433 МГц с амплитудной модуляцией никакого фана. Либо есть несущая — либо ее нет. А дальше либо руками (ага, Audacity), либо с помощью анализатора протоколов, либо с помощью библиотек.


И вот:

Фан раз

Фан два
Согласен, согласен, фан есть. Просто я хочу сделать руками то, что в этой RCSwitch запрограммировано.

Я из тех, кто пока сам ручками не пройдёт весь путь, не прочувствует, как оно устроено.
Не так часто, читая GT возникает желание сорваться с места, цапнуть что то в руки и реализовать написанное — дабы почувствовать как оно "устроено".
Данная статья — редкое исключение!
Спасибо!
С нетерпением будем ждать вторую часть:)
Еще можно беспроводным дверным звонком управлять, чтобы уж совсем...

image
Можно, но не любым. Я тут столкнулся с тем, что:

а) китайцы приспособились их делать просто на сдвиге частоты, без кодировки вообще
б) местные совместно-китайские бренды периодически клепают варианты на 315 МГц, что подразумевает лишнюю пару приемник-передатчик, или же действительно SDR.
https://github.com/andersesbensen/rtl-zwave — набор утилит для прослушивания траффика z-wave, как раз для rtl sdr
https://github.com/AFITWiSec/EZ-Wave — а тут с возможность посылать команды, но нужно уже что-то типа HackRF. Зато в комплекте идут слайды с их презентации, которая была в этом году.
О! спасибо за ссылки. Второй проект новый, ещё не видел. Первый тестили, работает.

Но мне хочется сделать всё на GNURadio для более глубокого понимания — проще блоки двигать, понимая, что к чему, чем зарыться в C++. И другим проще анализировать.
Про децимацию вы не совсем верно написали.
Суть не в том, что пропускаются какие-то из значений, а в том, что при простом прореживании произойдёт наложение спектров. А при использовании нескольких последних значений как бы применяется фильтр нижних частот с АЧХ вида sinc(f).
Мне кажется, тут оба объяснения верны: усреднение позволяет убрать альясинг от более высокой частоты (у меня в примере "на пальцах" 0 5 10 имеет в 3 раза выше частоту), т.е. наложение более высокой частоты на частоту моего прореживания. Усреднение и есть фильтр нижних частот.

Ваше объяснение более точно звучит, но совсем не очевидно "на пальцах". Если подскажете, как более корректно описать без влезания в дебри, поправлю текст.
в диапазоне > 20 МГц нет станций с AM модуляцией
Авиадиапазон 118-138 МГц АМ-модуляция.
Из дома не слышу их, далеко до а/п, а самолёты над городом не летают. Я хотел найти что-то такое, что все смогут увидеть и поизучать. АМ, конечно, проще сделать из базовых блоков GNURadio (имею в виду не из готовых блоков, а из базовых математических).
Самолеты на авиадиапазоне с земли слышны за много сотен километров. И притом на "резинку" портативной радиостанции или "сканера".
Я так понимаю, передача идёт не очень часто. Особенно сейчас, ночью, когда самолёты не очень-то и летают. Надо утром попробовать будет.
Сидя в 10км от Внуково, я слышу всю МВЗ, про расстояние врать не буду, но пересечение госграницы я слышал однажды.
А еще именно при помощи SDR-свистка я слушал наземные службы Внуково, очень забавные там были иногда разговоры.
Поделитесь, какие частоты. От меня 30 км через бетон златоглавой, т.е. без шансов. Но у друзей в Новопеределкино прямая видимость, можно будет попробовать.
Бетон ничего не значит, диспетчеры всего кроме старта/посадки сидят и вещают из Постниково. Самолёты слышно за 200км устойчиво на крысий хвост, идущий в комплекте со свистком.

Частоты авиадиапазона смотрите на радиосканнере, 108-118МГц, а вот частоты наземных служб я не помню, то ли 900 с чем-то, то ли 600. Вообще, передачи все на waterfall очень хорошо видно.
Одно время пытался поймать переговоры, ставил метровую телевизионную антенну — ни земли, ни самолетов. А ADBS координаты свисток дешифровывает.
У меня свисток с вырезанным куском, так что ADS-B мне не доступен, увы…
К телевизионной антенне смысла цепляться нет, в ней внутри могут стоять фильтры на диапазон.
Найдите частоту подхода ближайшего к вам аэродрома, и попробуйте послушать её на хвост, который идёт с свистком.
Кроме согласующий цепей внутри ничего фильтрующего "диапазоны" нет. Может быть усилитель, если антенна активная. А вот диаграмма направленности теле антенны достаточно узкая, по этому нужно достаточно точно знать направление на источник сигнала. Отсюда и тишина в эфире — пока они вещают, ваша антенна в другую сторону смотрит. Повернули в нужную, а там уже замолчали

Тупой диполь из комплекта ТВ. FM слушать на ней замечательно — лучше, чем на комплектную антенну свистка. Может и направление, искал хоть поймать аэропорт, если самолеты не ловятся — нашел радиосвязь железнодорожного узла.
А карты погоды со спутников на частоте 137 МГц не пробовали принимать таким образом? У меня прям мечта детства, с тех времен, когда интернет был еще не у всех.
Увы, я не вижу, слабый сигнал, видимо, а антенна у меня совсем не на 2 метровые волны. А резать эту не хочется. Надо разъем такой найти и сделать за окном. Тогда и самолёты будут слышны.
Принимается без проблем на квадрифолярную антену вынесенную на балкон. Правда при таком расположении связь пропадает, когда спутник экранируется домом. При установке на крыше было бы дольше-лучше-дальше.
Если принимать на растяжку или на два полуволновых вибратора, то тик-так со спутника слышен и на подоконнике — но картинку нормальную не получить.
Для GNURadio есть скрипт позволяющий принимать LRPT (цифровой поток 137мгц) с Метеора М2 на RTL-SDR. Правда я давно не интересовался его здоровьем и не уверен вещает ли он сейчас в этом формате

Статья неплохая, но содержит множество технических неточностей.



Описание неточностей
Важно помнить, что физически значимый сигнал — это действительная часть Re нашего комплексного представления.

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

Итак, получив последовательность значений I и Q

Комплексный сигнал, то есть.

SDR (Software Defined Radio) позволяет программно перестраивать приёмник и передатчик для работы на различных частотах от 20 до 2000 МГц, после чего произвести обработку сигнала на компьютере с помощью цифровых методов. Это существенно отличает SDR от аналоговых схем радиопрёмников и передатчиков, позволяя легко менять алгоритм обработки полученного сигнала.

Существенное отличие технологии SDR в том, что SDR-приемники дают доступ к квадратурным составляющим сигнала. Почти все современные приемники (Wi-Fi, Bluetooth, чипы вроде nRFxxxx) производят обработку сигнала именно в квадратуре, но не все дают к ней доступ извне.

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

Скорее способ переноса спектра сигнала в область несущей.

Понятно, что оцифровывать сигнал на такой частоте даже современным компьютерам не под силу — для надёжной оцифровки потребуется запускать АЦП примерно каждые 8000 раз в секунду (если мы считаем 10 отсчётов на период достаточным шагом по времени).

Скорее 869 МГц*10 = 8.7 GSPS.

Те, кто помнят устройство старых радиоприёмников, увидят здесь аналогию с гетеродином.

Это и есть гетеродинирование.

Работа SDR состоит в том, чтобы сгенерировать синтетический сигнал на нужной частоте, перемножить его с отфильтрованным входным сигналом с антенны, пропустить через фильтр низких частота, убрав высокочастотную компоненту, и подать на АЦП.

В этом состоит работа аналоговых входных цепей (analog front-end). Само по себе SDR — принцип прямого доступа к квадратурным составляющим с программного уровня.

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

Не буду врать, я не знаком с конкретной реализацией GNU Radio, но классический цифровой фильтр — это свертка сигнала с соответствующим ядром. Все это происходит во временнОй области, без перехода в частотную.

Теперь становится понятно, что для анализа полосы от -200 до 200 кГц нам нужно иметь sample rate не менее 400 000.

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

К слову, это одно из преимуществ квадратурной обработки — каждый канал (I/Q) требует только половину полосы сигнала.

Ё-мое, эта большая портянка должна была быть спойлером...
Со многим согласен, хотя в некоторых местах вы явно перфекционизмом занялись — цель была сделать чтиво попроще и понятным хотя бы автору ;)

Поправлю текст для будущих поколений. Или не трогать и оставить этот коммент здесь в качестве уточнения? Как тут принято?
Я, разумеется, не оспариваю необходимость упрощения материала, но, по-моему, в случае технических статей упрощение никогда не должно означать перехода к размытым, а то и явно ошибочным формулировкам. Полуправда здесь иногда бывает хуже явной лжи, ибо еще сильнее запутывает человека, пытающегося разобраться.

Об упрощении
Я бы вообще не стал вдаваться в природу синфазной и квадратурной компонент (I/Q) — это материал для отдельной статьи. Просто не грузить этим читателя, если мы предполагаем, что он изначально мало знаком с темой. Далее, формулировка "способ преобразовать низкочастотный сигнал в высокочастотный" наводит на мысли об умножении частоты, в то время как имеется в виду перенос информации с одной несущей на другую. И так далее...


Не знаю, честно говоря, как тут принято, я все же не завсегдатай этого ресурса. Пускай кто-нибудь более знающий укажет, как следует поступить. Сама-то статья несомненно интересная, ибо, насколько я могу судить, про GNU Radio на русском написано не так много.
Что еще почитать:
www.rtl-sdr.com — все о RTL2832U включая ссылки на необходимый софт
www.flightradar24.com/build-your-own — собираем adb-s приемник для flightradar24
play.google.com/store/apps/details?id=marto.androsdr2&hl=en — при наличии root и OTG можно подцепить к android-смартфону
На базе SDR можно сделать осциллограф?
Как нибудь попроще, для чайника?

(гугл, яндекс отвечают односложно, в виде 3 вариаций одного и того же на 50+ страницах).
Для низких частот осциллограф "делается" из звуковой карты.
Не нужно так делать.
Обыкновенный осциллограф умеет работать с сигналами частотой 0 Гц, т.е. от постоянного тока и выше.
У DVB-свистков минимальная частота сигнала — мегагерцы (HackRF обещают от 1 МГц, у китайцев наверняка больше на порядок).
Т.к. "в быту" наиболее интересны сигналы от 0 и до сотен килогерц, подобные железяки не помогут никак...

Из дешёвых решений поищите слово "saleae" и "usbee".
Seleae — насколько я знаю, логический анализатор. Это как бы не совсем осциллограф. Usbee — да, может и осциллографом и генератором и анализатором спектра работать
Из них прямо "из коробки" получаются анализаторы спектра :)
Прочитал статью «как поставить GNU Radio под виндовс». Грусть-тоска: куча зависимостей, всё из исходников, чуть другая версия — и ничего не собирается. И это в официальной документации!
Есть у кого опыт, донглы эти нормально в виртуалку пробрасываются? Там трафик-то немаленький, и к задержкам критичный…
Оно и на Ubuntu не на всех версиях нормально работает. Сейчас специально поставил виртуалку для GNURadio, чтоб её не трогать и не ломать. Нормально всё пробрасывается. У меня VirtualBox, всё ок.
Не переодически юзал gnuradio с 13 по 15 ubuntu, из явных траблов было то что скрипты иногда хотят релизы питона отличные от системного. Или из репозитория качается версия одна, а скрипт написан под другой релиз с отличными библиотеками.
Статья отличная!
Теперь вопрос: какая средняя погрешность в фазосдвигающем сплиттере (90 град.)?
Sign up to leave a comment.