Pierwszym istotnym zastosowaniem, które się nasuwa jest wykorzystanie mikrofonów w smartfonach. Wspomniane już małe wymiary i niska cena powodują, że idealnie nadają się do urządzeń konsumenckich, w których istotna jest mała wysokość obudowy. Przyjęło się , że im cieńszy smartfon, tym lepszy. Dzięki miniaturowym wymiarom można też 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ć też w innych urządzeniach: tabletach, inteligentnych zegarkach (smartwatch) i urządzeniach sterowanych głosem.
Mikrofon MP34DT01-M
Układ MP34DT01-M jest mikrofonem wykonanym w technologii MEMS przez firmę STM i pracuje w paśmie akustycznym. Użyta technologia powoduje, że ma subminiaturowe wymiary i jest energooszczędny. Najważniejsze parametry to:
- Pojedyncze napięcie zasilania.
- Mały pobór mocy.
- Charakterystyka dookólna.
- Dynamika (stosunek sygnał/szum) S/N: 61 dB.
- Czułość: 26 dbFS.
- Maksymalny poziom sygnału akustycznego: 120 dBSPL.
- Interfejs cyfrowy: PDM.
- Obudowa SMD typu HCLGA (rysunek 1).
Szybkie przetestowanie działania mikrofonu umożliwia zestaw ewaluacyjny składający się z trzech elementów (fotografia 2):
- Płytki ewaluacyjnej X-NUCLEO-CCA02M1. Ta płytka ma również wyprowadzenia w standardzie Arduino UNO i można jej użyć w połączeniu modułem mikrokontrolera sprzętowo zgodnym z tym standardem.
- Płytki ewaluacyjnej z mikrokontrolerem. Możliwe jest użycie jednego z trzech typów płytek z różnymi mikrokontrolerami: NUCLEO-F401RE, NUCLEO-F072RB i NUCLEO-L075R8.
- Bezpłatnego oprogramowanie testowego X-CUBE-MEMSMIC1.
Zestaw X-NUCLEO-CCA02M1 ma zamontowane na stałe 2 mikrofony MP34DT01-M, ale istnieje możliwość dołączenia kolejnych mikrofonów za pomocą odpowiednich złącz zamontowanych na płytce. Przez te złącza można doprowadzić do układu mikrofony umieszczone na płytkach ewaluacyjnych STEVAL-MKI155 lub STEVAL-MKI129 (rysunek 3). Ponieważ nie dysponowałem płytkami rozszerzeń, to w trakcie testów nie były używane.
Oprogramowanie testowe X-CUBE-MEMSMIC1 można pobrać ze strony STM (rysunek 4). 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.
X-CUBE-MEMSMIC1 zawiera trzy oddzielne aplikacje: Acoustic_ BF, Acoustic_SL i Microphones_Straming. Dwie pierwsze wykorzystują zaawansowane algorytmy przetwarzania cyfrowych sygnałów reprezentujących sygnały audio z mikrofonów MEMS, a trzecia jest implementacją cyfrowego mikrofonu stereofonicznego. 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. Na rysunku 5 pokazano przykładowa charakterystyka wirtualnego mikrofonu kierunkowego i rozmieszczenie mikrofonów MEMS.
Niebieski obszar to przybliżenie typowej kierunkowej charakterystyki kardioidalnej. Ta charakterystyka jest kształtowana na drodze programowej. Cyfrowy sygnał akustyczny z jednego z mikrofonów jest opóźniany i potem sumowany z nieopóźnionym sygnałem z drugiego mikrofonu (rysunek 6). Wartość tego opóźnienia zależy do odległości pomiędzy mikrofonami i jest wyliczana z zależności opóźnienie=d/v, gdzie „d” to odległość pomiędzy mikrofonami, a „v” prędkość dźwięku w powietrzu. Więcej informacji na temat działania biblioteki implementacji mikrofonu kierunkowego o charakterystyce kardioidalnej z cyfrowych sygnałów pochodzących z dwóch mikrofonów MEMS typu MP34DT01-M można znaleźć w dokumencie UM2214 „Getting started with AcousticBF real-time beam forming middleware”.
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 korelacji krzyżowej XCORR. Jest wykonywany 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. Jest wykonywany w domenie częstotliwości, używa stosunkowo dużych zasobów mikrokontrolera, ma wysoką rozdzielczość.
- Algorytm BMPH. Jest wykonywany 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 zostało pokazane na rysunku 7. W wypadku algorytmu XCORR odległość pomiędzy mikrofonami musi umożliwiać wykonanie opóźnienia równego czasowi odpowiadającemu okresowi próbkowania. W algorytmie GCC-PATH teoretycznie nie ma ograniczeń odległości. Więcej informacji na temat aplikacji AcousticSL można znaleźć w dokumencie UM2212 „Getting Started With Acousticsl Real-Time Sound Source Localization Middleware”.
Aplikacja Microphones_Straming jest przeznaczona do szybkiego testowania działania modułu ewaluacyjnego X-NUCLEO-CCA02M1 w połączeniu z jedną z dedykowanych płytek NUCLEO. W naszym wypadku będzie to NUCLEO-F401RE. Po wgraniu oprogramowania do pamięci mikrokontrolera zestaw będzie można połączyć z komputerem przez złącze USB. Będzie on wtedy pracował jak 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 (fotografia 8). Jeżeli mikrokontroler został prawidłowo zaprogramowany, to po podłączeniu do komputera moduł zostanie wykryty jako stereofoniczny mikrofon cyfrowy. System Windows pobierze przez Internet potrzebne sterowniki i w Menadżerze Urządzeń, w zakładce „Kontrolery dźwięku, wideo i gier” zostanie wyświetlone urządzenie STM32 AUDIO Streaming in FS Mode, jak to zostało pokazane na rysunku 9.
Jak już wspomniałem, do dalszych testów wykorzystamy Audacity. Ten pakiet programowy można pobrać w wersji instalacyjnej i w wersji przenośnej (portable), działającej bez instalacji. Po uruchomieniu programu musi on znaleźć (wykryć) nasz mikrofon. Wykonujemy polecenie Transportuj à Skanuj ponownie urządzenie dźwiękowe (rysunek 10).
Wykryty mikrofon powinien zostać wyświetlony na liście MME jako Mikrofon (STM32 AUDIO Streaming (rysunek 11).
W trakcie nagrywania trzeba ustawić poziom sygnału z mikrofonu na wartość zapobiegającą przesterowaniu toru i powstawaniu zniekształceń, jak na rysunku 12. Wyregulowany tor pozwala na nagrywanie stereofonicznego dźwięku dobrej jakości. Pokazany tu tor audio jest przykładem na łatwą i tanią implementację mikrofonu cyfrowego z interfejsem USB.
Tomasz Jabłoński, EP