stm32 esp8266 самодельный wifi микрофон. Применен микроконтроллер stm32f103c8t6 и wifi модуль esp8266.Модуль esp8266 управляется AT командами. Для захвата звука применен микрофонный модуль MAX9814. Вкратце по работе проекта. Задействовано два канала ДМА один работает на передачу из периферии в память другой наоборот. Первый канал ДМА работает с АЦП забирает из него данные и собирает в буфер. Захват данных АЦП работает с частотой 8 килогерц(есть тесты с частотой 48 kHz), по триггеру обновления таймера 3. Четвертый канал ДМА передает кодированные данные в USART.
Кодирование данных буфера из 512 значений захваченных АЦП , занимает не более 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 микрофон в разобранном виде!!!
Ссылка на проект и доп инструкции
https://drive.google.com/open?id=1kIhgnhAtyQicB-oRc79oCUtmyhm-NiFNДетали:
1. st_link программатор отладчик
http://ali.pub/312wfw2.плата с микроконтроллером stm32f103c8t6
http://ali.pub/2silgs3.микрофонный модуль
http://ali.pub/3mqe3a4.ESP8266 ESP01
http://ali.pub/2siko0Остальное можно купить на местном радио рынке.