Добавить в корзинуПозвонить
Найти в Дзене
БоряЭлектрик

Самодельный wifi микрофон stm32 esp8266

STM32 esp8266 самодельный wifi микрофон. Применен микроконтроллер stm32f103c8t6 и wifi модуль esp8266. Модуль esp8266 управляется AT командами. Для захвата звука применен микрофонный модуль MAX9814. Вкратце по работе проекта. Задействовано два канала ДМА один работает на передачу из периферии в память другой наоборот. Первый канал ДМА работает с АЦП забирает из него данные и собирает в буфер. Захват данных АЦП работает с частотой 8 килогерц(есть тесты с частотой 48 kHz), по триггеру обновления таймера 3. Четвертый канал ДМА передает кодированные данные в USART. Кодирование данных буфера из 512 значений захваченных АЦП кодеком G711 , занимает не более 1 ms. Работает это все в следующей последовательности. Таймер запускает преобразование АЦП с частотой 8 килогерц , по окончанию каждого преобразования АЦП отправляет запрос ДМА на передачу данных. Когда ДМА заполнит половину буфера данными с АЦП, мы попадем в прерывание, т.к. будет передана половина данных, на которые м

STM32 esp8266 самодельный wifi микрофон. Применен микроконтроллер stm32f103c8t6 и wifi модуль esp8266. Модуль esp8266 управляется AT командами. Для захвата звука применен микрофонный модуль MAX9814. Вкратце по работе проекта. Задействовано два канала ДМА один работает на передачу из периферии в память другой наоборот. Первый канал ДМА работает с АЦП забирает из него данные и собирает в буфер. Захват данных АЦП работает с частотой 8 килогерц(есть тесты с частотой 48 kHz), по триггеру обновления таймера 3. Четвертый канал ДМА передает кодированные данные в USART. Кодирование данных буфера из 512 значений захваченных АЦП кодеком G711 , занимает не более 1 ms. Работает это все в следующей последовательности. Таймер запускает преобразование АЦП с частотой 8 килогерц , по окончанию каждого преобразования АЦП отправляет запрос ДМА на передачу данных. Когда ДМА заполнит половину буфера данными с АЦП, мы попадем в прерывание, т.к. будет передана половина данных, на которые мы настраивали ДМА. Далее выставляем флаг, что половина буфера уже готова и очищаем флаг прерывания. Дальше в основном цикле проверяем, если буфер еще не обработан, обрабатываем его, т.е. кодируем и запускаем 4 канал ДМА на передачу этих данных, далее у нас будет заполнена вторая часть буфера значениями с АЦП и все повторяется. Для захвата звука был применен микрофонный модуль на базе max9814,на выходе которого, присутствует постоянное смещение относительно нуля, около 1.5В. Которое можно было очень легко убрать используй я инжектированный канал . У них есть следующая фишка, т.е можно указать значение, которое будет вычитаться из измеренного и сразу получить положительные и отрицательные значения, но лень матушка берет свое.

00:00 тест 8 и 16 kHz.

01:54 первый тест и неудача 8 kHz. Настройка cubemx stm32 :

02:40 тактирование.

02:50 настройка таймера.

03:12 stm32 настройка АЦП и ДМА.

03:35 настройка stm32 USART DMA .

04:07 опция сборки под HAL_LL.

04:12 тест записи звука, при частоте дискретизации 16 kHz. Разбираю сгенерированные функции(низкоуровневые драйвера периферии):

04:12 настройка GPIO.

05:08 ковыряю HAL_LL разбираюсь, как работает.

07:23 функция настройки таймера. 08:00 тест записи звука, при частоте дискретизации 36 kHz.

08.30 функция настройки USART и DMA.

09:20 stm32 инициализация DMA.

09:35 настройка АЦП и DMA.

10:10 окончательная настройка DMA, то что пришлось настраивать самому!!!

11:54 wifi микрофон как он работает?.

12:40 микрофонный модуль MAX9814.

12.52 почему лучше использовать было инжектированный канал АЦП.

13:04 тест записи звука, при частоте дискретизации 48 kHz.

13:25 настройка stm32 esp8266 at команды режим моста

13:42 серверная в часть для записи в .wav формат на python

13:57 кодирование данных с АЦП кодек G711.

17:08 тест записи звука, при частоте дискретизации 48 kHz.

17:18 самодельный wi-fi микрофон в разобранном виде!!!