Сканер диапазона 2,4ГГц из готовых модулей
Поиграться интересно.
Оказалось, что есть проблема в скорости приёма компом информации по USART. Опытным путём добился максимальной скорости 40 байт/сек и то при смене приоритета…
Здесь я чего-то не врубился. 115200 бит/сек = 10 кбайт/сек, 19200 = 2 килобайта/сек. Проблема может возникнуть разве что при передаче байтов по одному, да и то наверное только при использовании очень плохого переходника USB ->COM. Суть проблемы непонятна.
Странно.
У меня отрисовка 2 каналов(10 бит разрешение) при 200 точках около 1 секунды.
Скорость не максимальная, 57600, без всякой оптимизации.
Странно.
У меня отрисовка 2 каналов(10 бит разрешение) при 200 точках около 1 секунды.
Скорость не максимальная, 57600, без всякой оптимизации.
Я, честно говоря, уже не в первый раз натыкаюсь на невозможность обмена данными с компом на нормальной скорости. Одиночные байты пролетают без проблем(пробовал скорости до 2МБит.сек), но стоит запустить пакеты данных - тут же возникают тормоза или вовсе виснет комп. Причём я пробовал по крайней мере два варианта переходников: один на USB/USART на FS-ке, другой - BlueTooth модуль. К компам тоже подключал разным(по меньшей мере 3 варианта), но результат тот же.
Консультировался на Cyberforum.ru, там мне всяко-разно советовали, но существенного улучшения добиться так и не удалось.
Может проблема в алгоритме отрисовки? Я пытаюсь каждый канал отрисовывать в реальном времени(по приходу каждого значения RSSI с приёмника). Может нужно засовывать весь спектр в буфер, а потом отрисовывать из буфера? Или метод какой-то другой на форме использовать?
Я рисую в реальном времени.
Оптимально - передавать по строкам. Между строками желательно маркеры (конец строки). Строка принимается в буфер порта, быстро считывается в память, и начинает отрисовываться, в это время в буфере порта накапливается следующая строка. Отрисовка должна происходить быстрее чем период между строками - иначе буфер будет переполняться. Com порт работает автономно и процессор не грузит.
Оптимально - передавать по строкам.
А какие параметры строки(длина, кол-во стоп-битов)?
Строка принимается в буфер порта, быстро считывается в память, и начинает отрисовываться
Если я правильно понял, отрисовка спектра будет производится кусками размером определяемом кол-вом символов в строке?
P.S. Вы WinFormApplicatin используете?
To MPetrovich.
Длина строки определяется сканером. В этой теме 160 или 204 байта, плюс маркер.
В качестве маркера можно, например, использовать 0x00 а сигналы каналов сделать в диапазоне 1 - 255. Можно использовать комбинацию байт, но в данном случае не стоит.
Отрисовка построчно. Алгоритм например такой: Проверяется число байт в буфере COM порта. Если больше длины строки - считываем до маркера (включительно) и рисуем строку. Если количество байт в буфере меньше длины строки - ожидаем, когда накопится. Далее все это в цикле. (На самом деле не все так просто. В этом алгоритме нет времени на опрос событий формы (окна), поэтому все заткнется. Скорее всего придется использовать таймер. (Или переходить к многопоточности 😉 ). Главное - отрисовка должна быть быстрее, чем период прихода строк.
P.S. Вы WinFormApplicatin используете?
Не понял вопроса. Я обычно использую VB2008 (а если удается - то и VB6). Другие языки для меня “не родные” (хотя случается…). При выборе типа проекта выбираю WinFormApplication. Или здесь о другом?
P.S. Что понимается под “отрисовка строки” ? IMHO достаточно наглядно представление в виде “водопада” (термин из радиолюбительской практики. SDR приемники).
не 2.4 правда…
Сергей, поделитесь более подробной информацией об этом проекте?
Переделал приложение на основе идеи Buranov_P, за что ему большое спасибо!
Теперь периодичность вывода спектра на экран порядка 200мкСек * 164канала = 33 мСек, видно как циклически бегает по диапазону частота какого-то устройства (вероятно мышь на 2,4ГГц). Есть постоянно торчащие палки примерно одного уровня мощности сигнала. Вобщем - картинка стала вполне информативной и теперь не требуется никаких доп. настроек.
Давно хотел сделать вывод на экран компа в реальном времени. Наконец дошли руки. Выводятся 200 (не 100 как написано на картинке) строк по 206 байт в строке. Изображение в режиме “водопада”, строки смещаются вверх.
При скорости порта 19200 теоретически можно достичь 10 строк/сек, т.е. строка пройдет экран за 20 сек. Реально получилось 25 сек. В качестве датчика использован мелкий аналог сс2500 (см пост #1). Скетч из #12 поста переделан - убрано все что касается вывода на дисплей и добавлен вывод на USART 19200 baud. Так же добавлены маркеры строки (0х00), а уровень сигнала в пределах 1 - 255. На видео виден мой WiFi в режиме, когда нет активного обмена, и в режиме просмотра фильма на планшете. Канал WiFi установлен 7.
Вот бы этот проект но от 400 до 2400 мгц, технически сложно? или достаточно выбрать подходящий модуль?
Именно в выборе модуля вся сложность и заключается.
Мне неизвестен недорогой автономный модуль, работающий в безразрывном диапазоне 400-2400.
Прежде всего, при такой разности частот это уже очень разные антенны и параметры цепей согласования и антенных фильтров.
Соответственно, в идеале должны быть коммутируемые антенные цепи.
В итоге это составит 90% конструкции дорогого профессионального сканера, что лишает затею всякого смысла.
Еще один момент, который я всегда особо подчеркиваю: модуль должен уметь выдавать наружу измеренное значение уровня сигнала (RSSI) на любой рабочей частоте диапазона, и независимо от того, установлена связь с другим модулем или нет. Некоторые модули допускают измерение RSSI только после того, как установлена связь на заданном канале с другим таким же модулем. Разумеется, нам это совершенно не подходит.
Вот бы этот проект но от 400 до 2400 мгц
RTL SDR
Since a typical R820T/2 RTL-SDR’s maximum frequency limit is about 1.7 GHz, an external downconverter circuit is required.
Это уже концептуально иная штуковина получается))
Хотя… с нынешними контроллерами можно, пожалуй, взять даунковертер за $5, обычный SDR донгл за $18, и замутить эмуляцию USB хоста с дисплейчиком на каком-нибудь модном контроллере, но это получится, как говорится, “well frankensteined device” 😁
не будет простоты конструкции выходного дня за 5 копеек. Опять же, мой любительский уровень программирования не для таких задач.
Вот например gaastech.blogspot.com/2008/10/blog-post.html
взять даунковертер за $5, обычный SDR донгл за $18, и замутить эмуляцию USB хоста с дисплейчиком на каком-нибудь модном контроллере
Проще воткнуть в планшет на Win8.1/Win10. Сейчас их много появилось. Ссылку на даунковертер за $5 можно ?
Повторю, что RTL SDR воткнутый в разъем OTG андроидного или Win- гаджета это принципиально иная концепция устройства. Тут паять-то нечего, воткнул одно в другое, софт поставил и работает. Это не будет конструкция выходного дна для тех, кто хочет попаять и поковырять ардуинку.
Упоминание даунконвертера за $5 я встречал в статье на одном из зарубежных сайтов, где приводился перечень компонентов с расчетом стоимости.
Мне это не нужно, поэтому ссылку не сохранил и привести не могу. Погуглите по запросу “RTL SDR Android”, наверняка вам она попадется.
Здравствуйте, Валерий!
Собрал Ваше устройство. Заработало сразу, спасибо за подробные комментарии.
В процессе испытаний появились вопросы. Устройство никак не реагирует на
подключение антенны. Уровень шума должен был увеличиться при подключении антенны и на экране данные
изменяются относительно какого то уровня, а не от нуля. В какую строну копать?
Заранее спасибо.
Не, это еще не совсем заработало… Конечно, некоторый уровень шума на входе будет всегда, это правильно.
Но этот уровень должен быть меньше, чем у вас. И конечно, не должен быть настолько ровный по всему спектру.
При подключении антенны должны сразу появляться пики от ближайших соседских вайфаев.
Картинка выглядит так, будто приемный модуль не получает команды настройки от контроллера,
а просто стоит на одной частоте и ловит шум. Прежде всего, надо проверить правильность подключения
приемника по шине SPI.