• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

TB-03F TLSR8253 - кто-нибудь пробовал "звуковые" возможности?

pvvx

Активный участник сообщества
результаты тестирования задержки в BLE-Mesh при малом числе прыжков и малом пакете
..
Как видим задержка более 30 msec.
У WiFi типичная в 102.4 ms и что? А для спящих устройств надо помножить на N (обычно от 2-х до 5).
Для MESH там ещё хуже.
А для автономного, в режиме deepsleep - от 2-х до 20 сек (пока он там проснется и соединиться с AP WiFi, согласует соединение и шифрацию с cloud)
По данным тестирования сетей с разными протоколами ведущих фирм-производителей чипов, самая медленная сеть на основе протокола BLE.
Пропускная способность BLE-Mesh практически не зависит от числа узлов и составляет примерно 2-3 кб/с.
Для одного каскада датчиков (включенных в шеренгу устройств BLE) не требуется передача более 10 байт в сек.
Датчик активации, например геркон на двери, передает пачку реклам (часто 16..32 шт) с периодом в 10..20 мs, а прием первой происходит через 2..4 ms после переключения геркона.
 

aloika

Active member
Из идей: надо бы попробовать несжатый звук передать (но хватит ли пропуской способности, не знаю) - проверить, не сжатие ли это влияет.
Попробовал. Несжатый звук передается (16 кбит / сек), пропускной способности хватает. Белый шум, про который я писал - присутствует. Так что не в сжатии дело.

В Audacity есть такая штука - удаление шума. Нужно указать кусочек шума (шумной тишины) и шум вычтется из сигнала. Довольно качественно получается. Вот бы такое сделать в реальном времени. Интересно, есть что-нить готовое, написанное на эту тему? Чтобы просто применить. (Я когда-то очень давно писал что-то такое, там были вейвлеты, работало неплохо. Но я уже ниче не помню оттуда, хочется готовое найти.)
 

pvvx

Активный участник сообщества
В Audacity есть такая штука - удаление шума. Нужно указать кусочек шума (шумной тишины) и шум вычтется из сигнала. Довольно качественно получается. Вот бы такое сделать в реальном времени. Интересно, есть что-нить готовое, написанное на эту тему? Чтобы просто применить. (Я когда-то очень давно писал что-то такое, там были вейвлеты, работало неплохо. Но я уже ниче не помню оттуда, хочется готовое найти.)
Так-же уже давно, последний раз наверно более 15 лет как, занимался этими "звуковыми" и прочей обработкой ADC...
Расширение/сжатие по дин.диапазону типа Dolby sound наверно спасет :)
 

pvvx

Активный участник сообщества
Попробовал. Несжатый звук передается (16 кбит / сек), пропускной способности хватает. Белый шум, про который я писал - присутствует. Так что не в сжатии дело.
А передискретизацию на входе и цифровую фильтрацию с децимацией которая есть в чипе аппаратная не пробовали?
 

aloika

Active member
А передискретизацию на входе и цифровую фильтрацию с децимацией которая есть в чипе аппаратная не пробовали?
Функция инициализации микрофона:

C:
void audio_dmic_init(AudioRate_Typedef Audio_Rate)
{
    //alc mode select digital mode
    reg_aud_alc_cfg &= ~FLD_AUD_ALC_ANALOG_MODE_EN;

    //alc left channel select manual regulate, and set volume 0x28
    reg_aud_alc_vol_l_chn = MASK_VAL( FLD_AUD_ALC_MIN_VOLUME_IN_DIGITAL_MODE,  0x028, \
                                      FLD_AUD_ALC_DIGITAL_MODE_AUTO_REGULATE_EN, 0);

    //1. Dfifo setting
    reg_clk_en2 |= FLD_CLK2_DFIFO_EN; //enable dfifo clock, this will be initialed in cpu_wakeup_int()
    reg_dfifo_mode = FLD_AUD_DFIFO0_IN | FLD_AUD_DFIFO0_L_INT;

    //2. dmic input, dmic_0_data rising edge, mono mode, enable decimation filter
    reg_dfifo_ain =       MASK_VAL( FLD_AUD_DMIC0_DATA_IN_RISING_EDGE,    AUDIO_DMIC_DATA_IN_RISING_EDGE,\
                                    FLD_AUD_INPUT_SELECT,                 AUDIO_INPUT_DMIC, \
                                    FLD_AUD_INPUT_MONO_MODE,             1, \
                                    FLD_AUD_DECIMATION_FILTER_BYPASS,     0, \
                                    FLD_AUD_DMIC_RISING_EDGE_BYPASS  ,    0, \
                                    FLD_AUD_DMIC_FALLING_EDGE_BYPASS ,    1);

    reg_dfifo_dec_ratio = DMIC_CIC_Rate[Audio_Rate];//by minghai.duan 2019.7.24

    ////////////////////////////// ALC HPF LPF setting /////////////////////////////////
    //enable hpf, enable lpf, anable alc, disable double_down_sampling
    reg_aud_alc_hpf_lpf_ctrl = MASK_VAL( FLD_AUD_IN_HPF_SFT,  0x0f,   //different pcb may set different value.
                                           FLD_AUD_IN_HPF_BYPASS, 0, \
                                           FLD_AUD_IN_ALC_BYPASS, 1, \
                                           FLD_AUD_IN_LPF_BYPASS, 0, \
                                           FLD_DOUBLE_DOWN_SAMPLING_ON, 1);
    /*******1.Dmic setting for audio input**************************/
    reg_audio_ctrl = AUDIO_OUTPUT_OFF;


    audio_set_dmic_clk(0x89,0xD3);     //48M * 0x09 / 0xD3 = 2.047393M
//    audio_set_dmic_clk(0x0f,0xD3);     //48M * 0x09 / 0xD3 = 2.047393M
}

Я там почти всё "покрутил"... не особо лучше стало по сравнению с тем, что и так в SDK было. Так вот оставил.
 

nikolz

Well-known member
посмотрите про свертку частот и поставьте аналоговый фильтр.
 

nikolz

Well-known member
Я там почти всё "покрутил"... не особо лучше стало по сравнению с тем, что и так в SDK было. Так вот оставил.
Чтобы определить источник "белого" шума
надо сделать два эксперимента:
1) В исходнике TLSR вместо сигнала с микрофона подать нулевые данные. Если шум не изменится , то аналог-цифра TLSR не есть источник шума.
2) Сигнал на выходе аналога приемной части посмотреть на осциллографе с полосой много больше частоты дискретизации звука.
Если Вы не увидите ступеньки с частотой дискретизации звука, то источник не цифра-аналог приемной части.
---------------
В зависимости от результатов экспериментов можно определить способ устранения шума
 

nikolz

Well-known member
если есть осциллограф с широкой полосой, то посмотрите длительность импульсов шума.
Если они меньше кванта дискретизации звука, то этот шум не связан с преобразованием звука а вызван исключительно шумом окружения
Бороться с ним можно лишь аналоговыми методами, т е установка фильтров перед наушниками, в импульсных блоках питания,
либо сменой модулей приемной (передающей) части на более качественные
либо выкидыванием протокола BLE.
 

aloika

Active member
1) В исходнике TLSR вместо сигнала с микрофона подать нулевые данные. Если шум не изменится , то аналог-цифра TLSR не есть источник шума.
Подавал нулевые данные, также пробовал пилу и треугольник (как синусоиду запрограммировать, с ходу не сообразил). Никаких шумов, всё идеально передается.
 

nikolz

Well-known member
Подавал нулевые данные, также пробовал пилу и треугольник (как синусоиду запрограммировать, с ходу не сообразил). Никаких шумов, всё идеально передается.
тогда надо сделать тест с к.з. на входе микрофона и минимальным коэффициентом усиления PGA.
если шум уменьшится, то тест с кз и максимальным усилением PGA
 

nikolz

Well-known member
можете картинку сигнала подробнее показать.
предположу, что у Вас ошибка ввода данных
т е это не шум, а сбой в данных.
 

aloika

Active member
тогда надо сделать тест с к.з. на входе микрофона и минимальным коэффициентом усиления PGA.
если шум уменьшится, то тест с кз и максимальным усилением PGA
Это PDM-микрофон, не аналоговый. Тут КЗ делать не очень-то сподручно. Равно, как и некуда ставить аналоговый фильтр.
 

aloika

Active member

nikolz

Well-known member
Да, с таким микрофоном и пробовал. Потом с другим такого же принципа. Там некуда ставить аналоговый фильтр, как предлагает nikolz.
аналоговый фильтр я предлагал не на входе, а на выходе.
можете показать картинку с выводов микрофона.
----------------
У TLSR есть режим управления фронтом по которому считываются данные.
Возможно там ошибка.
------------------------------
Полагаю что у Вас просто сбой ввода данных и это не шум а импульсы пропуска данных.
Надо смотреть параметры этих импульсов.
 

nikolz

Well-known member
вот здесь есть картинка сигнала. посмотрите качество и сравните с Вашим.
1644037434413.png
 

nikolz

Well-known member
вот здесь можете ознакомится с фильтрацией шума после цифрового микрофона.
 

pvvx

Активный участник сообщества
вот здесь есть картинка сигнала. посмотрите качество и сравните с Вашим.
Как в бочке и с присвистывыванием.
 
Сверху Снизу