Рассказ о попытках увидеть окружающий мир в совершенно ином свете и как это в итоге привело к созданию устройства, позволяющего «видеть» WiFi. В процессе будет использован популярный модуль ESP8266. Без Arduino, к сожалению, тоже не обойдется.


N-лет назад, группой молодых исследователей из Германии был описан концепт тепловизора, базирующийся всего-навсего на одном датчике. Суть работы устройства сводилась к следующему: с помощью конструкции из двух сервоприводов ИК-датчик последовательно наводился по вертикали и горизонтали на нужную область, постепенно сканируя изображение. Такое интересное решение позволяло резко сократить цену устройства, и получать занятные картинки распределения температуры, вроде этих:

Система механической развертки изображения — а именно этим конструкция из сервоприводов и является, оказалась крайне интересной вещью. Сразу же после постройки подобного устройства возникает вопрос — а почему бы не заменить ИК-датчик чем либо еще, что позволит используя тот же принцип, визуализировать например радиоволны?
Глаз человека, хоть и довольно сложный, но весьма ограниченный инструмент. Диапазон видимого нами света представляет собой ну очень маленькую часть спектра электромагнитного излучения.

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

Для отработки технологии я сделал простую «однопиксельную» камеру, которая работает в уже привычном нам видимом диапазоне. В качестве датчика использовал солнечную батарею от китайской игрушечной машинки:

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

Солнечная батарея поворачивается к необходимому участку будущего изображения, после чего контроллер считывает сигнал, который пропорционален количеству света, падающего на батарею. Конечно такая камера в итоге выдаст черно-белое изображение.
Чтобы обрабатывать результаты сканирования, с помощью QT была реализована программка с простеньким интерфейсом. (Уроки по тому, как реализовать общение Arduino и Qt можно легко раздобыть на youtube). Программа состоит из пары кнопок для ручного управления сервоприводами и поля QGraphicsScene, где рисуются квадратики-пиксели, цвет которых зависит от величины сигнала в конкретной точке. Использование простое — сначала вручную приводы наводятся в левую верхнюю точку будущего изображения, после чего производится автоматическое сканирование области, во время которого строится картинка. Вот что из всего этого получилось в итоге:

Что-же изображено на данной визуализации? Конечно, это самый очевидный объект для съемки в случае, если ваша камера представляет собой солнечную батарею — это солнце.

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



Это творение оказалось более удачным, и уже появилась возможность делать более-менее узнаваемые фотографии:
Люстра

Машина на дороге

Вид из окна

И даже облака на небе

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

Сначала задумал использовать рупорную антенну, которая есть в автомобильных радар-детекторах (они как правило работают в диапазоне 10,525 Ггц или 24,15 Ггц). Попытки вычленить из схемы такого детектора аналоговый сигнал, пропорциональный величине регистрируемого излучения не увенчались успехом, возможно из-за недостатка моих познаний, а возможно потому что такового там нет вовсе, так как он работает по принципу сравнения. (привет китайским братьям, собравшим это чудо). Хотелось конечно вытащить саму антенну и соорудить что-то свое, но ломать хороший прибор ради этого я не стал.
Второе, что пришло мне в голову — соорудить детектор поля по одной из схем, которые в изобилии водятся на радиолюбительских порталах и прицепить к нему самодельную направленную антенну, например очень популярный и довольно простой в изготовлении биквадрат Харченко. Но как оказалось, самый главный элемент — детекторный СВЧ-диод очень трудно найти, легко потерять и вообще он стоит дороговато, потому пришлось долго и упорно искать нужную детальку.
Через какое-то время, мне удалось раздобыть германиевый детекторный диод еще советских времен и собрать следующую схему:

Полученное устройство уверенно работало, но на очень маленьком расстоянии, где-то 5-10 см от мобильного телефона, выступающего в роли источника излучения. Этого разумеется было недостаточно для поставленной задачи.

После всех этих мытарств, в итоге ко мне попал модуль ESP8266, который умеет отображать RSSI (Показатель уровня принимаемого WiFi сигнала) найденных точек доступа. Для этого используется команда AT+CWLAP в стандартной прошивке модуля. Я решил применить эту функцию вкупе с самодельной направленной WiFi антенной-биквадратом, упомянутой ранее. Таким образом и появилось сие чудо техники:
схема подключения


Сам ESP8266 закреплен на обратной стороне антенны и хорошенько экранирован медными листами. Светящиеся циферки показывают напряжение на выходе импульсного DC-DC преобразователя, который понижает 12В от блока питания до 3.3В, необходимых для работы модуля (он очень прожорливый, поэтому запитывать его от Arduino чревато нестабильной работой).
Arduino как и раньше управляет сервоприводами и кроме того посылает AT команды ESP8266 с применением библиотеки SoftwareSerial. Один из сложных моментов — вместо стандартных библиотек SoftwareSerial и Servo пришлось перейти на их аналоги, так как оригинальные конфликтуют при одновременном использовании.
Конечно, можно услышать упреки, что Arduino здесь вовсе является лишним элементом, так как ESP8266 и сам может справиться с таким функционалом. Но так уж исторически сложилось, что по ходу создания устройства я изначально ориентировался на Arduino как центральное звено итогового устройства, а ESP8266 играет роль своеобразного датчика.
Программа на QT, написанная еще для «солнечной камеры» подверглась значительной доработке.
конечная версия программы


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

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

Диван и часть ковра. Если обратите внимание, очень качественное изображение по сравнению с остальными получается у точки «SkyNet» — это мой домашний роутер. Он находится ближе всех к месту съемок, что видимо играет не последнюю роль в процессе.

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

Ванна, наполненная водой. Как всем известно, радиоволны под водой передаются плохо.

Стоит отметить, что фото в видимом диапазоне лишь примерно соответствуют отсканированной области. Также необходимо учесть, что при работе антенна как-бы описывает полусферу, а это тоже влияет на результат. Разрешение в принципе ограничено только ходом антенны и временем, которое нужно чтобы обвести всю область. При этом получение данных для каждого пикселя требует 4-5 сек. Хотелось бы получить менее размытые изображения, но для этого нужна антенна с более узкой диаграммой направленности.

Исходные коды, включая скетч для Arduino

Комментарии (45)


  1. Jamato
    04.04.2016 01:34
    +5

    А нет фото роутера? Или оно просто засветит всё?


    1. Astrei
      04.04.2016 14:12
      +3

      Ну да, примерно вот так получается:


  1. Meklon
    04.04.2016 02:27
    +6

    Полный восторг) А нельзя диаграмму приема еще сильнее сузить?


    1. Rumlin
      04.04.2016 13:19

      Можно было бы баночную попробовать применить.
      А для биквадрата такую диаграмму рисуют
      image


    1. telhin
      04.04.2016 14:07

      Сделать съемку с синтезированной апертурой это может улучшить разрешающую способность в 10 раз и выше. Однако придется добавить еще сервоприводов и математики к сигнальной обработке.


  1. rPman
    04.04.2016 02:27

    4 секунды на пиксель это особенность работы ESP8266?
    Нет никакой возможности ускорить этот процесс?

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


    1. rechmp
      04.04.2016 21:54

      Разрешение зависит от того, насколько остро направлен основной лепесток ДН антенны, а не от того, сколько крутит :)
      Для хорошего "разрешения" нужна параболическая тарелка, или как минимум яги.


  1. Mii
    04.04.2016 03:17

    Интересно, а если вместо механической развертки подвести пару моделированных в слышимый диапазон к наушникам и походить так пару дней, то можно будет «слышать» объекты подсвеченные вайфаем через стену?..



    1. timofas
      04.04.2016 14:08
      +1

      чтобы потом принести туда излучатель из микровлновки! :)


  1. walker
    04.04.2016 03:39
    +7

    Вот это я понимаю! True Пост для ГТ!


  1. engine9
    04.04.2016 04:35

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


    1. Heavis
      04.04.2016 14:08
      +2

      Или фасад многоэтажки «сфотографировать». Было бы интересно посмотреть.


      1. artyums
        04.04.2016 19:12

        Тоже об этом подумал! Автор, порадуйте нас еще материальчиком :)


  1. Oigen
    04.04.2016 06:07

    Очень интересно и познавательно! А что нужно, чтобы сделать картинку радиосигналов как в фильме "Люси", например, или это нереально?


    1. Norno
      04.04.2016 10:31
      +1

      Если вы про тот момент когда она «видела» уходящие сигналы от мобильников в… космос?.. то нет, так не получится, просто потому что оно так не «выглядит в жизни». Можно визуализировать (но не видеть) процесс распространения радиоволн, но это будет что-то типа волн на воде, либо именно видеть радиоволны, но тут будет как у автора — вы определяете интенсивность излучения приходящего с разных направлений (как и со светом).


  1. RusikR2D2
    04.04.2016 07:10
    +1

    А такой штуковине можно найти практическое применение:
    Автонастройка "дальнобойного" wi-fi канала, или выбор, куда точно направить антенну 3G\4G за городом, или, даже в городе — какое-нибудь отражение может оказаться лучше.
    А еще можно подобие радиотелескопа сделать.
    А для более точного совмещения видимой картинки и "радио" можно одновременно (или по очереди) сканировать радиодатчиком и оптическим.


  1. owniumo
    04.04.2016 07:36
    +8

    А вот здесь товарищ катая ESP на координатном станке построил 3D карту, вокселями:
    https://www.youtube.com/watch?v=aqqEYz38ens
    Говорит, расстояния между экстремумами соответствуют полуволне 2,4 ГГц


  1. thelongrunsmoke
    04.04.2016 07:37
    +1

    Только идея гораздо старше, гуглите — сканирующий тепловизор "Сова". У него один болометрический датчик и механическая развёртка, первые изделия относятся к 50хх годам.


  1. Yogami
    04.04.2016 09:50

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


    1. IMnEpaTOP
      04.04.2016 10:11
      +1

      Это? Кажется, было что-то ещё, более подробное. Но сходу не находится.


      1. Yogami
        12.04.2016 07:44

        Да, оно, спасибо.


  1. Beholder
    04.04.2016 10:01
    +1

  1. Konachan700
    04.04.2016 10:15
    +3

    А почему на шкале электромагнитного излучения, там где ДВ должны быть - внезапно ультразвук?
    image


    1. kaiveland
      04.04.2016 10:58
      +2

      Вероятно, составитель шкалы "слышит" ЭМ-волны.


    1. dead_undead
      04.04.2016 11:08

      вот это поворот!


    1. Alexeyslav
      04.04.2016 14:14

      Ультразвук это просто альтернативное обозначение диапазона частот, там поидее должны быть длинные и сверхдлинные волны, просто обывателю ближе «звуковые частоты» которые вполне можно себе представить и соотнести другие частоты шкалы.
      К тому же частота и длина волны не имеет никакого отношения к способу передачи энергии и среде в которой происходят колебания. С таким же успехом практикуются электромагнитные волны частотой в 1...20Гц и механические упругие колебания частотой в 2...10Мгц(ультразвук) порождающие соответствующие волны.


  1. Alexeyslav
    04.04.2016 13:01
    +1

    Перед диодом надо было поставить СВЧ-усилитель. Хотя конечно с этим возникает очень много проблем, т.к. СВЧ схемы очень чувствительны к разводке.
    У вас получился в принципе обыкновенный детекторный приёмник с соответствующей чувствительностью — напряжение на антенне должно быть больше 0.1В чтобы схема что-то почувствовала… а это соответствует очень сильному сигналу.
    Есть кстати готовые RGB-оптические «однопиксельные» приёмники с выходом в виде ШИМ, который легко сопрягается с контроллерами и получаются данные практически сразу в цифре.
    Можно кстати срисовать схему с распространённого «SAT Finder» и дополнить её схемой СВЧ-конвертора.

    RSSI информация имеет довольно грубую шкалу и притом еще логарифмическая, не очень удобная для построения картинок(больше из-за грубости шкалы).
    Кстати, можно использовать шаг сканирования меньше угла ДН антенны и применить методы восстановления размытых изображений, на хабре проскакивал подобный алгоритм. Поидее, такой алгоритм должен иметь математическое решение.


  1. StrangerPin
    04.04.2016 14:08

    А не пробовали совместить полученные снимки?) Что из этого вышло?


    1. Astrei
      04.04.2016 14:28

      Я думал над этим, но пока не реализовал практически. Наверное можно попробовать каждой точке доступа выдавать свой цвет, и смешать все в одном.


  1. Seven-ov
    04.04.2016 14:08

    Интересно поставить на улице и просветить многоквартирный дом, при этом для каждой точки использовать свой цвет =)


  1. mortimoro
    04.04.2016 14:08
    -1

    Бомба! Очень круто!


  1. GBenG
    04.04.2016 14:08

    «Сигналы некоторых сетей не отражаются от потолка, либо от люстры» — А если к твоему роутеру тоже подключить направленную антенну и установить его рядом с приемником, возможно, получится полноценный радар) И картинка не будет такой размытой…


  1. DiBog
    04.04.2016 14:09

    У Вас SSID сетей не замылены. Не боитесь что их найдут на wigle.net?


    1. Astrei
      04.04.2016 14:36
      +1

      Там их еще нет, т.к. живу в глубинке. (надо добавить :))


    1. u010602
      04.04.2016 17:36

      Даже если и найдут, чего тут боятся?


  1. sweetbrick
    04.04.2016 14:09

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


  1. yadimon91
    04.04.2016 14:09

    GADSTVO :)


  1. SquareIronBox
    05.04.2016 07:41
    +1

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


  1. Game_Rate_Com
    06.04.2016 23:38

    Теоретически воспринимая сигнала wi-fi можно видеть сквозь стены или например человека насквозь в духе ренгена, вопрос с-но только в чувствительности датчиков и обработке результата.
    Интересно было бы еще из сканов с разных точек, сделать например что-бы робот еще перемещался, реконструировать 3д модель того что он видит.


    1. u010602
      07.04.2016 06:36

      Видеть сквозь стены можно очень условно, т.к. волны на частоте 2.4ГГЦ сильно рассеиваются, стены и человек будут как очень матовое мутное стекло. Различить детали будет не проще чем увидеть кости кисти подставив мощный фонарик к кисти. Можно посмотреть по спектру поглощения и отражения материалов, те что хорошо поглощают на этой частоте будут черными, те что хорошо отражают — белыми. Остальное будет размытой серой массой. Кроме того на этих частотах можно легко попасть в экстремумы волновой функции, т.е. яркость излучения будет сильно меняться от вашего положения в комнате, представьте вы идете по направлению к объекту а он то ярче, то темнее, то какой-то артефакт прилетел откуда-то. Я это представляю как зрение Фродо с надетым кольцом Всевластия.
      Мне кажется более интересно для зрения в закрытом пространстве уходить в сторону более высоких частот, а не более низких.


      1. Rumlin
        07.04.2016 08:03

        www.radioscanner.ru/info/article504

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

        image


        1. u010602
          07.04.2016 12:00

          Это я и имел в виду под «очень условно», это скорее будет датчик движения за стеной, с примерным направлением. И работать будет далеко не со всеми стенами. Кстати там есть видео работы, кляксы непонятной формы у них, по которым можно примерно рассчитать где есть подвижные объекты. Кроме того, думаю заглушить их не составит труда, они в радиодиапазоне, а в случае захвата заложников и так нужно глушить радиочастоты, что-бы исключить утечку данных. Думаю что можно настроить глушилку так, что поймать фазовые и частотные сдвиги от объектов будет сложно или не возможно.


          1. Game_Rate_Com
            09.04.2016 06:09

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


            1. u010602
              11.04.2016 13:23
              +1

              Выходит что гипотетических бандитов будем ловить сотнями датчиков и соответственно большим штатом силовиков, но сами бандиты при этом придут технически не подготовленными, без глушилок и систем оповещения. Мне кажется что такой вариант не жизнеспособный т.к. из пушки по воробьям. А там где это реально будет подходить по калибру, бандиты принесут с собой глушилки ценой 20 баксов, в большом количестве и расставят по периметру. Выход из строя будет выдавать расположение силовиков. И может служить поводом для автоматического излучения ЭМИ большой энергии. Я это вижу в виде «гранаты», жмешь кнопку и бросаешь в углы помещения, 20 секунд и защита установлена от всех видов беспроводной связи, прослушки, и «подглядки».

              От рентгеновских лучей уже так просто не защититься и можно в деталях увидеть у кого есть оружие у кого нет. Может часть бандитов притворится заложниками.