Mikrofon MEMS i STM32 w praktyce

W artykule przedstawiamy mikrofon MEMS MP34DT01 produkowany przez STMicroelectronics oraz sposób jego dołączenia do mikrokontrolera z rodziny STM32.

Akronim MEMS, czyli mikro-układ elektromechaniczny jest kojarzony z technologią wytwarzania mikroukładów z elementami o wymiarach rzędy kilkudziesięciu mikrometrów. Układy MEMS to głównie czujniki wielkości nie elektrycznych: ciśnienia, przyspieszenia, położenia. Są to również miniaturowe pompy i sensory używane w medycynie do celów diagnostycznych, ale też generatory drgań. Jednym z urządzeń MEMS, które zyskały sobie sporą popularność są mikrofony akustyczne. Mikrofony wykonane w tej technologii maja małe wymiary (istotnie mniejsze niż elektretowe odpowiedniki), są tanie i niezawodne.

Pierwszym istotnym zastosowaniem jakie się nasuwa jest stosowanie mikrofonów w smartfonach. Wspomniane już małe wymiary mikrofonów i ich niska cena powodują, że idealnie nadają się do urządzeń, których istotną cechą jest mała wysokość obudowy. Przyjęło się , że im cieńszy smartfon tym lepszy. Można umieścić kilka mikrofonów w różnych miejscach obudowy i za pomocą algorytmów przetwarzania DSP poprawić jakość odbieranego sygnału akustycznego.

Mikrofony MEMS można spotkać tez w innych urządzeniach: tabletach, inteligentnych zegarkach (smartwatch) i urządzeniach sterowanych głosem.

Mikrofon MEMS MP34DT01-M

Mikrofon MEMS MP34DT01-M wykonano w technologii MEMS przez firmę STMicroelectronics, pracuje pn w paśmie akustycznym. Użyta technologia powoduje, że jest ultrakompaktowy i energooszczędny. Najważniejsze cechy charakterystyczne to:

  • Pojedyncze napięcie zasilania
  • Niski pobór mocy
  • Charakterystyka dookólna
  • Dynamika (stosunek sygnał/szum) S/N 61dB
  • Czułość – 26dbFS
  • Maksymalny poziom sygnału akustycznego 120dBSPL
  • Cyfrowy interfejs PDM
  • Obudowa SMD typu HCLGA (fotografia 1)

Fot. 1. Mikrofon MEMS MP34DT01-M

Rys. 2. Połączenie mikrofonu MEMS MP34DT01-M z kodekiem

Sprzęt do testów

Szybkie przetestowanie działania mikrofonu umożliwia zestaw ewaluacyjny składający się z trzech elementów:

Na fotografii 3 pokazano zestaw testowy składający się z połączonych modułów NUCLEO-F401RE i X-NUCLEO-CCA02M1. Połączenie jest wykonywane za pomocą złącz standardu ST Morpho. X-NUCLEO-CCA02M1 ma również wyprowadzenia w standardzie Arduino UNO i można go wykorzystać w połączeniu modułem mikrokontrolera sprzętowo zgodnym z tym standardem.

Fot. 3. Moduł X-NUCLEO-CCA02M1 połączony z NUCLEO-F401RE

X-NUCLEO-CCA02M1 ma na stałe zamontowane 2 mikrofony MP34DT01-M, ale istnieje możliwość dołączenia kolejnych mikrofonów za pomocą dedykowanych złącz zamontowanych na płytce. Przez te złącza można podłączyć do układu mikrofony umieszczone na płytkach ewaluacyjnych STEVAL-MKI155 lub STEVAL-MKI129 (fotografia 4).

Fot. 4. Płytka rozszerzeń z 4 mikrofonami

Oprogramowanie do testów

Oprogramowanie testowe X-CUBE-MEMSMIC1 można pobrać ze strony STMicroelectronics (rysunek 5). Zawiera projekty dla IDE: KEIL, IAR i SW4STM32 i modułów mikrokontrolerów NUCLEO-F401RE, NUCLEO -F072RB lub NUCLEO-L053R8. Projekty zawierają kompletne pliki źródłowe w języku C i można je modyfikować zależnie od potrzeb. W pakiecie X-CUBE-MEMSMIC1 zawarto też skompilowane pliki wynikowe dla każdej z wyżej wymienionych płytek NUCLEO.

Rys. 5. Pobieranie przykładowych projektów

X-CUBE-MEMSMIC1 zawiera trzy oddzielne aplikacje: Acoustic_BF, Acoustic_SL i Microphones_Streaming. Dwie pierwsze wykorzystują zaawansowane algorytmy przetwarzania cyfrowych sygnałów reprezentujących sygnały audio z mikrofonów MEMS, a trzecia jest implementacją cyfrowego mikrofonu stereo. Zamieszczone w X-CUBE-MEMSMIC1 projekty zawierają gotowe (prekompilowane) i konfigurowalne biblioteki przetwarzania sygnałów.

Aplikacja Acoustic_BF jest implementacją algorytmu adaptacyjnego przetwarzania w czasie rzeczywistym sygnałów w formacie PCM, lub PDM uzyskanych z dwóch lub czterech mikrofonów MEMS. W wyniku przetwarzania tych sygnałów jest tworzony wirtualny mikrofon kierunkowy wskazujący w określonym kierunku w przestrzeni. Możliwość konfiguracji działania algorytmów pozwala na znalezienie najbardziej odpowiedniego kompromisu pomiędzy jakością uzyskanego sygnału audio, a potrzebnymi zasobami użytego mikrokontrolera. Musi być znana odległość pomiędzy mikrofonami. Ze względu na wymagania algorytmów aplikację Acoustic_BF można uruchomić tylko na module NUCLEO-F401RE z mikrokontrolerem mającym wbudowaną jednostką FPU.

Programowe kształtowanie charakterystyki

Na rysunku 6 została pokazana przykładowa charakterystyka wirtualnego mikrofonu kierunkowego i rozmieszczenie mikrofonów MEMS.

Rys. 6. Charakterystyka wirtualnego mikrofonu kierunkowego

Niebieski obszar to przybliżenie typowej kierunkowej charakterystyki kardioidalnej. Ta charakterystyka kształtuje się na drodze programowej. Cyfrowy sygnał akustyczny z jednego z mikrofonów opóźnia się i potem sumuje z nie opóźnionym sygnałem z drugiego mikrofonu – rysunek 7. Wartość tego opóźnienia zależy do odległości pomiędzy mikrofonami i jest wyliczany z zależności opóźnienie=d/c. gdzie d= odległość pomiędzy mikrofonami, a c prędkość dźwięku w powietrzu.

Rys. 7. Cyfrowe kształtowanie charakterystyki kardioidalnej

Aplikacje

Aplikacja AcousticSL zawiera implementację algorytmu lokalizacji źródła dźwięku w czasie rzeczywistym. Są tu wykorzystywane sygnały cyfrowe z dwóch lub czterech mikrofonów MEMS po to by oszacować położenie w przestrzeni głównego źródła dźwięku. Wykrywanie położenia opiera się on na trzech różnych algorytmach DOA (Direction Of Arrival):

  • Algorytm krzyżowej korelcji XCORR. Wykonuje się on w dziedzinie czasu, używa mniejszych zasobów mikrokontrolera, ma niższą rozdzielczość i wymaga umieszczenia mikrofonów w większych odległościach od siebie.
  • Algorytm GCC-PHAT. Wykonuje się w domenie częstotliwości, używa stosunkowo dużych zasobów mikrokontrolera, ma wysoką rozdzielczość
  • Algorytm BMPH. Wykonuje się w domenie częstotliwości, zapotrzebowanie na zasoby mikrokontrolera mieszczą się pomiędzy wymaganiami algorytmów XCORR i GCC-PATH

Rozmieszczenie mikrofonów dla aplikacji Acoustic SL pokazano na rysunku 8.

Rys. 8. Rozmieszczenie mikrofonów

W przypadku algorytmu XCORR odległość pomiędzy mikrofonami musi umożliwiać wykonanie opóźnienia równego czasowi odpowiadającemu okresowi próbkowania. Dla algorytmu GCC-PATH teoretycznie nie ma ograniczeń odległości.

Trzecią, najprostszą aplikację Microphones_Straming, przeznaczono do szybkiego testowania działania modułu ewaluacyjnego X-NUCLEO-CCA02M1 W połączeniu z jedną z dedykowanych płytek NUCLEO. W naszym przypadku będzie to NUCLEO-F401RE. Po wgraniu do pamięci mikrokontrolera oprogramowania zestaw będzie można połączyć z komputerem przez złącze USB i będzie pracował jako standardowy wielokanałowy mikrofon USB. Do testów prawidłowego działania mikrofonu wykorzystamy popularny bezpłatny program Audacity.

Zaczynamy od wgrania do modułu mikrokontrolera piku z rozszerzeniem .hex skompilowanego projektu zawartego w katalogu STM32CubeExpansion_MEMSMIC1_V3.0.0/Projects/Multi/Applications/Microphone_Streaming/Binary/STM32F401RE-Nucleo. Po zaprogramowaniu mikrokontrolera łączymy zestaw z komputerem przez złącze USB zamontowane na module X-NUCLEO-CCA02M1 – rysunek 9.

Rys. 9. Podłączenie Kabla USB Do Złącza Modułu X-NUCLEO-CCA02M1

Działanie zestawu

Jeżeli mikrokontroler został prawidłowo zaprogramowany, to po podłączeniu do komputera moduł zostanie wykryty jako stereofoniczny mikrofon cyfrowy. System Windows pobierze sobie przez Internet potrzebne sterowniki i w menadżerze urządzeń w zakładce „Kontrolery dźwięku, wideo i gier” pojawi się urządzenie STM32 AUDIO Streaming in FS Mode, tak jak to zostało pokazane na rysunku 10 .

Rys. 10. Urządzenie STM32 AUDIO Streaming in FS Mode

Jak już wspomniałem do dalszych testów wykorzystamy Audacity. Ten pakiet programowy można pobrać w wersji instalacyjnej i wersji portable (działa bez instalacji). Po uruchomieniu programu musi on znaleźć (wykryć) nasz mikrofon. Wykonujemy polecenie Transportuj -> Skanuj ponownie urządzenie dźwiękowe – rysunek 11.

Rys. 11. Wykrywanie mikrofonów MEMS

Wykryty mikrofon MEMS powinien się pojawić na liście MME jako Mikrofon (STM32 AUDIO Streaming – rysunek 12.

Rys. 12. Wykrycie mikrofonu MEMS

W trakcie nagrywania trzeba ustawić poziom sygnału z mikrofon MEMS na wartość zapobiegającą przesterowaniu toru i powstawaniu zniekształceń – rysunek 13.

Rys. 13. Nagrywanie sygnału i regulacja poziomu sygnału z mikrofonów MEMS

Wyregulowany tor pozwala na nagrywanie stereofonicznego dźwięku dobrej jakości. Pokazany tu tor audio jest przykładem prostej i taniej implementacji cyfrowego mikrofonu MEMS.

O autorze