0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 31

Получение данных из сигнала в GNU Radio

04.06.2021, 23:37. Показов 2608. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте. В рамках проекта к звуковой карте ПК подключен фототранзистор, который фиксирует мерцание светодиода, задаваемые через плату ESP32. Форма сигнала на прикрепленном изображении. Со стороны ESP используется ОnОffКeying. В качестве преамбулы 4 длинных колебания, период каждого из которых равен 3 периодам малого колебания, затем некоторое количество коротких колебаний.
Подскажите, пожалуйста, каким образом встроенными методами GNU Radio или с помощью embedded python block посчитать количество коротких колебаний? Например, чтобы при 10 коротких колебаниях после 4 длинных в консоль выводилась цифра 1, при 15 - 2, а без сигнала в консоли был постоянный 0?
Кликните здесь для просмотра всего текста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2021, 23:37
Ответы с готовыми решениями:

Вывод комплексного сигнала в wav файл (GNU Radio)
У меня есть излучаемый сигнал, сохраняемый в последствие в аудиофайл. В виде float выводится все отлично. Но мне нужен комплексный....

GNU Radio генерация сигнала
Доброго времени! Прошу совета у тех, кто сталкивался, или имеет представление. Разбираюсь с программой GNU Radio. Нужно научиться...

GNU Radio и генерация ЛЧМ сигнала
Доброго времени! Прошу совета у тех, кто сталкивался, или имеет представление. Разбираюсь с программой GNU Radio. Нужно научиться...

5
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
05.06.2021, 08:12
Цитата Сообщение от DenDen46 Посмотреть сообщение
посчитать количество коротких колебаний
Если частота следования импульсов выше частоты пропускания аудио карты, т.е. выше сотни кГц?

Добавлено через 41 секунду
Цитата Сообщение от DenDen46 Посмотреть сообщение
коротких колебаний
А это что такое?
0
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 31
05.06.2021, 14:30  [ТС]
Цитата Сообщение от Nick07 Посмотреть сообщение
т.е. выше сотни кГц?
Частота следования импульсов задаётся на стороне esp32 и составляет на данном этапе 1000 Гц. После было бы круто увеличить эту частоту и научиться детектировать импульсы там, но для начала подойдёт и 1 кГц.
Цитата Сообщение от Nick07 Посмотреть сообщение
А это что такое?
Если взглянуть на скриншот из первого вложения, то можно увидеть 4 идущих подряд длинных импульса/колебания, период которых равен 3Т. после них идут 10 коротких колебаний, период которых равен Т.
0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
05.06.2021, 17:44
Какое соотношение частоты стробирования и частоты колебаний?
0
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 31
05.06.2021, 20:50  [ТС]
Цитата Сообщение от Nick07 Посмотреть сообщение
Какое соотношение частоты стробирования и частоты колебаний?
Тут вам, к сожалению, сказать не могу, ибо пока не особо в этом разбираюсь. Вообще предполагалось, что на стороне ЕСП передача будет на частоте 1000 Гц. Можно меньше, главное отработать принцип передачи сигнала и его приёма. Но тут возникла проблема с вызовом прерываний по таймеру, тк вроде задаю частоту в 30 Гц для примера, но получаю 2,67 кГц. Код, формирующий сигнал на стороне ЕСП, прикрепляю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//#include <ESP32Ticker.h>
 
#include <math.h>
 
hw_timer_t * timer1 = NULL;
 
const uint32_t numberOfPoints = 704;
 
unsigned char digitalSignal[numberOfPoints] = {0};
 
const float F = 30;
 
int iPoint = 0;
 
void LED1(){
  dacWrite(25, digitalSignal[iPoint]);
  iPoint = (iPoint+1) % numberOfPoints;
}
 
void setup()
{
  Serial.begin(115200);
  
  float S[numberOfPoints] = {0};
  float S1[numberOfPoints] = {0};
 
  uint32_t idx = 0, Nt = 8;
 
  for(uint32_t i = 0; i < 4; ++i){
    for(uint32_t i = 0; i < 3; ++i){
      for(uint32_t i = 0; i < 2; ++i){
        for(uint32_t i = 0; i < Nt; ++i){
          S[idx++] = sin(2 * PI / Nt * i);
        }
      }
    }
 
    for(uint32_t i = 0; i < 3; ++i){
      for(uint32_t i = 0; i < 2; ++i){
        for(uint32_t i = 0; i < Nt; ++i){
          S[idx++] = 0.0f;
        }
      }
    }
  }
 
  for(uint32_t i = 0; i < 10; ++i){
    for(uint32_t i = 0; i < 2; ++i){
      for(uint32_t i = 0; i < Nt; ++i){
        S[idx++] = sin(2 * PI / Nt * i);
      }
    }
    
    for(uint32_t i = 0; i < 2; ++i){
      for(uint32_t i = 0; i < Nt; ++i){
        S[idx++] = 0.0f;
      }
    }
  }
  
  Serial.println(idx);
  for(int i = 0; i < numberOfPoints; ++i){
    S1[i] = sin(3*2 * PI / Nt * i);
  }
  for(int i = 0; i < numberOfPoints; ++i){
    digitalSignal[i] = 205 + 50 * S[i];
  }
  
 
  timer1 = timerBegin(0, 8, true);
  timerAttachInterrupt(timer1, &LED1, true);
  timerAlarmWrite(timer1, 10000000 / numberOfPoints / F, true);
  timerAlarmEnable(timer1);
}
 
void loop()
{         
 
}
0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
05.06.2021, 22:04
Цитата Сообщение от DenDen46 Посмотреть сообщение
к сожалению, сказать не могу
О чем можно говорить далее?

Пардон, Вы веткой не ошиблись?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2021, 22:04
Помогаю со студенческими работами здесь

Получение данных из нескольких radio
Привет Появился вопрос как можно считать значения(а именно есть ли флажок и текст поля) ReactJS с RadioBox. Допустим у нас несколько...

AttributeError в GNU Radio
Доброго времени! Собрал схему в программе gnuradio. Возникало куча ошибок с синтаксисом и прочим, которые удалось решить (с питоном...

Raspberry Pi 3 и GNU RADIO
Здравствуйте, установил GNU Radio на Raspberry Pi3, все хорошо, но почему то выдает ошибку: ImportError:...

Linux mint GNU Radio error
Всем привет! Вот установил gnu radio на linux mint 18. Но при запуске: sudo gnuradio-companion выбивает ошибка

Получение данных из сигнала
Здравствуйте. В рамках проекта к звуковой карте ПК подключен фототранзистор, который фиксирует мерцание светодиода, задаваемые через плату...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru