- PVSM.RU - https://www.pvsm.ru -

Мир глазами WiFi роутера

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

N-лет назад, группой молодых исследователей из Германии был описан концепт тепловизора [1], базирующийся всего-навсего на одном датчике. Суть работы устройства сводилась к следующему: с помощью конструкции из двух сервоприводов ИК-датчик последовательно наводился по вертикали и горизонтали на нужную область, постепенно сканируя изображение. Такое интересное решение позволяло резко сократить цену устройства, и получать занятные картинки распределения температуры, вроде этих:
Мир глазами WiFi роутера - 2
Система механической развертки изображения — а именно этим конструкция из сервоприводов и является, оказалась крайне интересной вещью. Сразу же после постройки подобного устройства возникает вопрос — а почему бы не заменить ИК-датчик чем либо еще, что позволит используя тот же принцип, визуализировать например радиоволны?
Глаз человека, хоть и довольно сложный, но весьма ограниченный инструмент. Диапазон видимого нами света представляет собой ну очень маленькую часть спектра электромагнитного излучения.
Мир глазами WiFi роутера - 3
Оцените масштаб трагедии — большая часть информации об окружающем мире, просто-напросто скрыта от нас. Разумеется, было бы очень здорово расширить природные рамки и обрести способность видеть за пределами, очерченными природой. Потому и и были осуществлены нижеприведенные эксперименты с использованием системы механической развертки.

Для отработки технологии я сделал простую «однопиксельную» камеру, которая работает в уже привычном нам видимом диапазоне. В качестве датчика использовал солнечную батарею от китайской игрушечной машинки:
Мир глазами WiFi роутера - 4
Конечно, площадь такого фотоэлемента очень большая, а значит надо как-то обеспечить узкое поле зрения, потому добавим к ней линзу от фонарика. Поставим на сервоприводы и подключим к Arduino.
Мир глазами WiFi роутера - 5
Солнечная батарея поворачивается к необходимому участку будущего изображения, после чего контроллер считывает сигнал, который пропорционален количеству света, падающего на батарею. Конечно такая камера в итоге выдаст черно-белое изображение.
Чтобы обрабатывать результаты сканирования, с помощью QT была реализована программка с простеньким интерфейсом. (Уроки по тому, как реализовать общение Arduino и Qt можно легко раздобыть на youtube [2]). Программа состоит из пары кнопок для ручного управления сервоприводами и поля QGraphicsScene, где рисуются квадратики-пиксели, цвет которых зависит от величины сигнала в конкретной точке. Использование простое — сначала вручную приводы наводятся в левую верхнюю точку будущего изображения, после чего производится автоматическое сканирование области, во время которого строится картинка. Вот что из всего этого получилось в итоге:
Мир глазами WiFi роутера - 6
Что-же изображено на данной визуализации? Конечно, это самый очевидный объект для съемки в случае, если ваша камера представляет собой солнечную батарею — это солнце.

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

Схема подключения

Мир глазами WiFi роутера - 7

Мир глазами WiFi роутера - 8
Это творение оказалось более удачным, и уже появилась возможность делать более-менее узнаваемые фотографии:
Люстра
Мир глазами WiFi роутера - 9
Машина на дороге
Мир глазами WiFi роутера - 10
Вид из окна
Мир глазами WiFi роутера - 11
И даже облака на небе
Мир глазами WiFi роутера - 12
Удовлетворившись таким результатом, я решил, что пора наконец сделать полноценный радиовизор, заменив фоторезистор на направленную антенну. Самый подходящий диапазон для этого — это СВЧ, так как направленная антенна не занимает много места, да и в нашей жизни сегодня есть много устройств, заботливо излучающих в этом диапазоне.

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

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

схема подключения

Мир глазами WiFi роутера - 14

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

конечная версия программы

Мир глазами WiFi роутера - 16

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

Ну и наконец, поставив устройство в разные части своего жилища, я получил следующие изображения. К счастью в моем доме довольно много сетей wifi, а с подобной направленной антенной можно поймать даже весьма удаленные.
Мир глазами WiFi роутера - 17
Диван и часть ковра. Если обратите внимание, очень качественное изображение по сравнению с остальными получается у точки «SkyNet» — это мой домашний роутер. Он находится ближе всех к месту съемок, что видимо играет не последнюю роль в процессе.
Мир глазами WiFi роутера - 18
Снова люстра. Сигналы некоторых сетей не отражаются от потолка, либо от люстры. Скорей всего по этим признакам можно попытаться определить физическое расположение передатчика.
Мир глазами WiFi роутера - 19
Ванна, наполненная водой. Как всем известно, радиоволны под водой передаются плохо.

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

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

Автор: Astrei

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/116906

Ссылки в тексте:

[1] тепловизора: https://geektimes.ru/post/257850/

[2] youtube: http://www.youtube.com/watch?v=1PNn63P793Y

[3] RSSI : https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F_%D0%BF%D1%80%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%B5%D0%BC%D0%BE%D0%B3%D0%BE_%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%B0

[4] Исходные коды, включая скетч для Arduino: https://github.com/Astrei/WiFiVision

[5] Источник: https://geektimes.ru/post/273762/