Детектор СВЧ жучков / Индикатор поля

negavoid
Offline
Зарегистрирован: 09.07.2016

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

negavoid
Offline
Зарегистрирован: 09.07.2016

Индикатор поля - это нехитрый прибор, определяющий наличие электромагнитного поля в данной точке пространства. ФМ-жучки, схемами которых пестрит интернет, остались в 90х, современные же жучки продвинулись, научились собирать информацию и изредка пакетно отправлять её, ну и сильно уехали вверх по частоте. С помощью Arduino и всего одной микросхемы мы можем на скорую руку собрать устройство для их поиска и попробовать немного пригасить (или подкормить) свою паранойю. Данное устройство не сгодится для профессионального применения, но на обывательском или развлекательном уровне будет в самый раз.

Итак, нам потребуется китайский OLED дисплей 128х64 (3$) и микросхема AD8314, которую можно заказать на али всего за доллар, или же оригинал на маузере за десятку. К ней нужно иметь платку переходника ssop - dip (10 центов), так как эта микросхема очень маленькая.

Итак, запаиваем микросхему на адаптер (это была самая сложная часть, так как у меня в наличии только советский 60-ваттный монстр-паяльник) и получаем, так сказать, модуль для ардуины.

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

 

Затем подключаем I2C OLED дисплей к scl/sda/питанию, и заливаем следующий примитивный скетч:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

int vals[128];

void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);      // гасим встроенный светодиод ардуины
}


void loop()
{
  for ( int i = 0; i < 128; i++ )
  {
    vals[i] = analogRead(0);
  }

  display.clearDisplay();
  for ( int i = 0; i < 128; i++ )
  {
    display.drawPixel(i, map(vals[i], 0, 240, 0, 64), WHITE );  // микросхема отдаёт до 1.2В
  }
  display.display();
}

Теперь можно походить по комнате и поискать излучения. Вполне надёжно и достаточно далеко (30-50 см) определяются мобильники в 2g и 3g, bluetooth, вайфай роутеры с метра-полутора.

Желтая полоса показывает фоновый уровень шума в помещении (плюс всякие внутренние шумы). Синяя полоска справа на дисплее - как раз пакеты от моего роутера. Около самого роутера уровень поля значительно подрастает. Маленькие синенькие точечки слева - мои bluetooth клавиатура и мышка. Передачи от мобилы будут выглядеть как довольно высоко подпрыгнувшие синие точки. На рацию с выставленной мощностью 1Вт в одном метре от антенны девайс реагирует сплошной синей полосой на самом верху. Работающая микроволновка также зашкаливает на расстоянии с пары метров. Диапазон рабочих частот микросхемы - от 300 до 3000 МГц, но на сильные поля замечательно реагирует и ниже, например, на 144 МГц, и даже на фм-модулятор на 87 МГц.

Прототип можно и нужно доработать (жду корпус и антенну), определять фоновый уровень шумов в комнате, сохранять и выводить максимальные уровни задетектированного сигнала, сразу в dBm. Можно прикрутить к девайсу направленную антенну (например, двойной квадрат на 2.4 ГГц) и уже целенаправленно искать источники излучений. Хотя устройство весьма неплохо работает даже с суррогатной антенной из 10-сантиметрового тонкого макетного провода.

man_200
Offline
Зарегистрирован: 29.04.2016

Я так понял, что весь спектр выводится? Неужели реутер такую широкую полосу излучает?

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

negavoid
Offline
Зарегистрирован: 09.07.2016

Это не спектр, это max detected power/time domain. AD измеряет напряжённость поля, и как бы усиливая её, выдаёт на выход напряжение в определённом диапазоне. Так что на картинке роутер излучает не широкую полосу, а долгую, аналогридов() на 30. Хоть у роутеров и правда весьма широкая полоса, 20 или 40 МГц - здесь мы этого не увидим.

Замутить можно под любой LCD, было бы желание. Несколько рядом расположенных передатчиков, полагаю, будут в виде высокой синей полосы. Проект же развивать смысла мало, он получился демонстрационный, показать новичкам, как просто можно взять и приделать современную микросхему к ардуино. А так - для поиграться на али продаются готовые модули на тех же AD, ещё и разных серий, есть и что меряют до 25 ГГц, ну а для коммерческого применения существует пиранья.

man_200
Offline
Зарегистрирован: 29.04.2016

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

 А я понял, почему такая картика! За определенный кусок времени количесво колебаний низкочастотных и высокочастотных сигналов разное, что коррелируется с их изображением (местоположением) на картинке

Может не прав, поправь

ПыСы А проект все-таки интересен

negavoid
Offline
Зарегистрирован: 09.07.2016

Это не частотно-временное разделение, а "мощностно-временное".

Слева направо идёт время, 128 отсчётов каждые 110 мксек. Первые пару отсчётов AD ничего не намерила, поставила жёлтые точки на уровне шумов. Потом в течение следующих 110 мксек что-то излучнуло в эфир, AD получила уровень поля с антенны, прикинула его на -70 dB, поставила точку повыше. Если подойти с девайсом поближе к передатчику, или повысить мощность передатчика - точка была бы поставлена ещё выше. На какой частоте излучали - неважно, лишь бы попало в диапазон этой AD 300 МГц-3 ГГц (но понятно, что если мы врубим рядышком хотя бы 1 Вт на 27 МГц, бедолагу AD тоже зашкалит). Ну и, так ситуация повторяется до полоски роутера, на глаз она длиной пикселей 30, значит он излучал в течение 30 * 110 = 3,3 миллисекунд. Подносим девайс к роутеру - полоска рисуется выше, она такой же длины, но может быть в разных местах по временной оси (левее, правее, или обрезана). Потом картинка держится на экране некоторое время, ардуино снова читает с AD 128 отсчётов и весь процесс повторяется.

man_200
Offline
Зарегистрирован: 29.04.2016

Разжевал, спасибо, попробую

man_200
Offline
Зарегистрирован: 29.04.2016

И все таки negavoid, вынужден просить затратить на меня твое время и познания. Своими мозгами не дойду.

К каким портам ардуино подключить LCD дисплей 1.44" SPI 128x128, нужно ли включать гасящие резисторы и изменить программу под него? 

denisok606
Offline
Зарегистрирован: 27.02.2019

Эту тему, судя по всему, я искал дааавно!!! По идее, можно с помощью этого девайса найти в лесу beacon, или любой маяк вещающий на всем диапозоне частот, что AD поддерживает? Можно ли с помощью направленной антенны поймать сигнал блютуза на расстоянии метров в 10? И можно ли с помощью ОУ чуть усилить входной сигнал, чтоб видель мелкие шумы на дисплее лучше?

negavoid
Offline
Зарегистрирован: 09.07.2016

denisok606

Да, можно и поохотиться на лис. Можно и попробовать поймать сигнал блютуза направленной антенной, и даже больше, чем с 10 метров. Внутри AD уже и так несколько каскадов ОУ, более того, указанная в теме микросхема подустарела, есть более чувствительные чипы с гораздо большим диапазоном. Если таки соберётесь охотиться на лис, то ещё понадобится фильтр на входе на нужную частоту.

mogins
Offline
Зарегистрирован: 11.12.2019

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

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Только что проверил - собралось даже для esp8266. Приводите ошибку, которая выдаётся.

mogins
Offline
Зарегистрирован: 11.12.2019
 
Arduino: 1.8.13 (Windows 10), Плата:"Arduino Nano, ATmega328P"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\surdi\OneDrive\Документы\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -vid-pid=1A86_7523 -ide-version=10813 -build-path C:\Users\surdi\AppData\Local\Temp\arduino_build_507903 -warnings=none -build-cache C:\Users\surdi\AppData\Local\Temp\arduino_cache_792370 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\surdi\OneDrive\Рабочий стол\sketch_jul14a\sketch_jul14a.ino
 
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\surdi\OneDrive\Документы\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -vid-pid=1A86_7523 -ide-version=10813 -build-path C:\Users\surdi\AppData\Local\Temp\arduino_build_507903 -warnings=none -build-cache C:\Users\surdi\AppData\Local\Temp\arduino_cache_792370 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\surdi\OneDrive\Рабочий стол\sketch_jul14a\sketch_jul14a.ino
 
Using board 'nano' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
 
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
 
Detecting libraries used...
 
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\Users\\surdi\\AppData\\Local\\Temp\\arduino_build_507903\\sketch\\sketch_jul14a.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
 
Alternatives for SPI.h: [SPI@1.0]
 
ResolveLibrary(SPI.h)
 
  -> candidates: [SPI@1.0]
 
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "C:\\Users\\surdi\\AppData\\Local\\Temp\\arduino_build_507903\\sketch\\sketch_jul14a.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
 
Alternatives for Wire.h: [Wire@1.0]
 
ResolveLibrary(Wire.h)
 
  -> candidates: [Wire@1.0]
 
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\surdi\\AppData\\Local\\Temp\\arduino_build_507903\\sketch\\sketch_jul14a.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE
 
Alternatives for Adafruit_GFX.h: []sketch_jul14a:3:10: fatal error: Adafruit_GFX.h: No such file or directory
 
 
 
ResolveLibrary(Adafruit_GFX.h)
 
 
 
  -> candidates: []
 
Используем библиотеку SPI версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
 
Используем библиотеку Wire версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
 
exit status 1
 
Adafruit_GFX.h: No such file or directory
 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот в этой фразе

mogins пишет:

exit status 1

Adafruit_GFX.h: No such file or directory
что непонятного?

 

mogins
Offline
Зарегистрирован: 11.12.2019

Я только начинаю изучать, мне это пока ничем неговорит

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

mogins пишет:
Я только начинаю изучать

Начинай тогда изучать с английского. 

mogins
Offline
Зарегистрирован: 11.12.2019

Спасибо за ёмкий и мудрый совет

mogins
Offline
Зарегистрирован: 11.12.2019

Друзья подскажите что это за ошибка и как исправить

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

В сообщении № 12 все написано.

b707
Offline
Зарегистрирован: 26.05.2017

mogins пишет:
Друзья подскажите что это за ошибка и как исправить

в переводчик гугля вставь - все узнаешь.

И вообще совет учить английский - верный. в программировании все на английском.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Tools -> manage libraries, установить требуемую библиотеку adafruit gfx.

А совет абсолютно верный, без английского нечего делать ни в программировании, ни вообще в IT.

denisok606
Offline
Зарегистрирован: 27.02.2019

Тебеж написал компилятор - нет файла хидера. Установи библиотеку адафрут и пробуй компилировать и собирать заново. А вообще учиться на вот таких вот примерах...такое себе. Начни хотя бы с прочтения самоучителя по С/С++, а не пытайся втупую скетч лить в дуню, надеясь на правильную работу программы. И английский язык, даже на примитивном уровне...ну не возможно без него никак.

man_200
Offline
Зарегистрирован: 29.04.2016

Всю жизнь пытался английский выучить, но не идет он мне, хотя сыновья и внуки с ним на ТЫ

Не хочу лезть в скетч, поэтому попрошу накидать схему с подключением дисплея

Спасибо

denisok606
Offline
Зарегистрирован: 27.02.2019

Гугли подключение интерфейса i2c, если дисплей такой же, как у топикстартера.
Вкраце - 2 сигнальных провода и питание, сложного ничего.
Цитирую один из сайтов на всяк случай: "Всего у дисплея 4 пина – VCC, GND, SDA, SCL. VCC и GND подключаются к VCC и GND Arduino соответственно (чтобы перестраховаться, лучше питать дисплей от пина 3.3В – не на всех модулях стоят понижающие преобразователи), а линии данных находятся у каждой версии Arduino на разных пинах. У Uno (Nano, Pro Mini и других платах на ATMega328/168) SDA – A4, SCL – A5. У Mega – SDA – 20, SCL – 21."

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

man_200
Offline
Зарегистрирован: 29.04.2016

И не пытаюсь программировать.

В топике есть только подключение AD8314 к дуинке, а SDA, SCL дисплея в скетче не нашел (может плохо искал) отсюда вопрос и возник куда их сувать.

denisok606
Offline
Зарегистрирован: 27.02.2019

В скетче же откуда это возьмется?? Там и нет про подключение ИС, в скетче обьявлено использование библиотек дисплея и интерфейсов, а потом уже работа с чтением с порта и вставкой результата на дисплей. Яж сказал выше - пинауты ардуины гуглите. Или если уж совсем режим дуба - как подключить oled i2c к arduino

renoshnik
Offline
Зарегистрирован: 11.04.2013

Что-то делаю не так....

#include <S65Display.h> 
S65Display lcd; 
int vals[175];

void setup()  {
  lcd.init(2);  lcd.clear(0); 
	} 

void loop()  {
 for ( int i = 0; i < 175; i++ ) { vals[i] = analogRead(4); }
lcd.clear(0); 
  for ( int i = 0; i < 175; i++ )  { lcd.drawPixel(i, map(vals[i], 0, 1023, 132, 0), 65535 ); }		
	}

 

https://vimeo.com/581471141

 

Звонок с мобильного телефона у самой антены, на экране не отображается...

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Попробуйте переключить телефон в режим "только 2G".

rkit
Offline
Зарегистрирован: 23.11.2016

negavoid2 пишет:

"только 2G".

Хохотнул от такого СВЧ.

renoshnik
Offline
Зарегистрирован: 11.04.2013

negavoid2 пишет:

Попробуйте переключить телефон в режим "только 2G".

СПАСИБО !

Действительно появились всплески при звонке на сервисный номер...

Если на вход поставить контур на 2600МГц это улучшит ситуацию ?

 

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Вряд ли, лучше уж тогда LNA. Дело не в частоте, дело в чувствительности мс. 2G выставили только для повышения мощности передатчика мобилки, при открытии канала и обмене служебкой она максимальная, потом уменьшается вплоть до 5 мВт, а то бы циркающий звук из колонок был на протяжении всего разговора в 2G. :) У GSM900 - максимум 2 Вт, 1800 - 1 Вт, 3G вроде 200 мВт, не помню, и 4G уже 20 мВт максимум, поэтому их и не видно. Роутеры же выдают по полватта для служебных беконов, вот их и видно в standby на вашем видео.

PS и map свой проверьте, поидее должно быть map(vals[i], 0, 240, 132, 0), микросхема всё равно не отдаст больше 1.2 вольт, а график рисоваться станет почувствительней. И можно ещё его заполненным рисовать, всё равно одноцветный, через lineto(coord,y,0,y).

renoshnik
Offline
Зарегистрирован: 11.04.2013

Да, я уже откорректировал на 1.2 Вольта.