Moduł SLN-LOCAL-IOT z mikrokontrolerem NXP i.MX RT106L do aplikacji sterowania głosowego

Sterowanie głosowe to technologia, która jest w stanie znacząco uprościć i uprzyjemnić sterowanie urządzeń i systemów elektronicznych. Kojarzone jest najczęściej ze smartfonami i innymi urządzeniami multimedialnymi dzięki takim narzędziom, jak asystent Google czy Siri. Jednak sterowanie głosem powoli przechodzi również do innych dziedzin życia, takich jak np. IoT czy systemy inteligentnych domów. Usługi takie jak Amazon Alexa czy Azure Speech Service umożliwiają implementację sterowania głosowego w szerokim zakresie aplikacji i bardzo prawdopodobne jest, że w niedalekiej przyszłości będziemy coraz częściej doświadczać ich działania.

Ze względu na to, że przetwarzanie i interpretacja komend głosowych wymaga pewnych zasobów obliczeniowych, tradycyjnie duża część przetwarzania danych jest wykonywana w chmurze. Tym niemniej rozwój mikrokontrolerów umożliwia już projektowanie asystentów głosowych. Istnieją sytuacje, gdy takie rozwiązanie jest bardzo wygodne, np. ze względu na szybkość, a także sytuacje, gdy jest to jedyne rozwiązanie, np. w przypadku braku szybkiego połączenia z siecią.

Jednym z najciekawszych zestawów rozwojowych opartych o mikrokontroler, przygotowanych specjalnie do implementacji lokalnych systemów sterowania głosem jest moduł SLN-LOCAL-IOT z oferty NXP Semiconductors.

Rys. 1. Zestaw NXP SLN-LOCAL-IOT

Sercem zestawu jest mikrokontroler NXP i.MX RT1060. Producent układu opisuje całą rodzinę jako procesory Crossover. W założeniu mają one łączyć zalety procesora aplikacyjnego (wysoka moc obliczeniowa), a także tradycyjnego mikrokontrolera (oszczędność energii, małe rozmiary, łatwość użycia). Układ zawiera rdzeń ARM Cortex-M7 o taktowaniu do 600 MHz. Jest w stanie osiągnąć wydajność na poziomie 3020 punktów CoreMark lub 1284 DMIPS (przy 600 MHz). Bardzo ważną cechą układów są bardzo krótki czas odpowiedzi rzędu 20 ns. Układ zawiera pamięć SRAM o pojemności 1 MB oraz szeroki zestaw interfejsów komunikacyjnych takich, jak UART, SPI, I2C, I2S, kontroler LCD, wejście kamery, czy interfejsy do podłączenia pamięci.

Rys. 2. Schemat blokowy mikrokontrolerów i.MX RT1060

Oprogramowanie do rozpoznawania głosu na i.MX RT106L

Wykorzystany w zestawie model i.MX RT106L został specjalnie przystosowany do lokalnej obsługi sterowania głosem. Jest w stanie obsługiwać specjalnie w tym celu zaprojektowane oprogramowanie firmy NXP. Program ten oferuje m.in.:

  • Automatyczne rozpoznawanie mowy,
  • Rozpoznawanie audio w warunkach dalekiego pola za pomocą algorytmów uczenia maszynowego,
  • Redukcja echa,
  • Redukcja szumu otoczenia,
  • Formowanie wiązki,
  • Odtwarzanie dźwięku,
  • Obsługę kodeków,
  • Obsługę MQTT, IwIP, TLS (opcjonalnie),
  • Sterowniki m.in. Wi-Fi i Bluetooth,
  • Kompatybilność z MCUXpresso SDK, IDE i narzędziami konfiguracyjnymi.

Rys. 3. Schemat blokowy oprogramowania do lokalnego rozpoznawania komend głosowych

Moduł SLN-LOCAL-IOT, oprócz mikrokontrolera RT106L zawiera wyjście audio w postaci głośnika oraz wzmacniacza klasy D TFA9894DUK, a także wejścia audio w postaci trzech mikrofonów MEMS i złącza z interfejsem SAI. Moduł zawiera także zewnętrzną pamięć NOR Flash o pojemności 32 MB oraz moduł Murata 1DX zapewniający komunikację Wi-Fi oraz Bluetooth. Zasilanie oraz komunikację z komputerem zapewnia złącze USB typu C. Niewielka płytka oferuje też kilka złącz rozszerzeniowych, na które wyprowadzono m.in. interfejsy UART, I2C, SPI, Ethernet.

Wraz z zestawem dostarczany jest przewód USB typ C na dwie wtyczki USB-A, a także kod do ściągnięcia oprogramowania na płytkę.

Rys. 4. Schemat blokowy zestawu SLN-LOCAL-IOT

Uruchomienie zestawu i przykład pracy

Po wyjęciu zestawu z pudełka należy podłączyć go do komputera PC za pomocą przewodu dołączonego do zestawu. Producent informuje, że należy podłączyć do komputera obie wtyczki USB typu A. Po podłączeniu urządzenia zaświeci się zielona dioda LED, natomiast druga, różnokolorowa, zacznie zmieniać kolor świecenia. W ten sposób sygnalizowane są różne etapy uruchamiania wgranego oprogramowania. Po ostatecznym zgaszeniu tej diody układ jest już gotowy do wykrywania głosu.

W pierwszej fazie moduł, podobnie jak inne systemy asystentów głosowych, asystent głosowy czeka na tzw. słowo-klucz. Tym słowem dla modułu SLN-LOCAL-IOT jest „Hey, NXP”. Wykrycie tego słowa jest sygnalizowane przez zapalenie kolorowej diody na niebiesko. W tym momencie można już podać właściwą komendę.

Oprogramowanie zawiera cztery zestawy komend do sterowania różnego rodzaju urządzeniami. Są to:

  • Audio do sterowania urządzeniami audio (Play, Pause, Start, Stop, Turn On, Turn Off, Previous Track, Next Track, Volume Up, Volume Down),
  • Iot do urządzeń IoT lub smart home (Temperature Up, Temperature Down, Windows Up, Windows Down, Turn On, Turn Off, Brighter, Darker),
  • Wash do sterowania pralki (Wash Normal, Wash Delicate, Wash Heavy Duty, Wash Whites, Cancel),
  • Misc (do innych zastosowań) (Alpha, Bravo, Charlie, Delta, Echo)

Jednocześnie może być aktywny tylko jeden zestaw komend. Domyślnie aktywne są komendy audio. Aktywny zestaw można zmienić za pomocą terminala szeregowego.

Na każdą rozpoznaną komendę moduł SLN-LOCAL-IOT odpowie frazą „Intent Detected” zagraną przez głośnik. Oprogramowanie można modyfikować w celu opisania własnej reakcji na poszczególne komendy, np. zmiana stanu portu GPIO, zagranie odpowiednich plików audio przez głośnik, lub zmiany koloru diody LED.

Konfiguracja programu przez port szeregowy

Po podłączeniu modułu SLN-LOCAL-IOT w komputerze zainstaluje się port szeregowy. Można się z nim połączyć za pomocą konsoli programowej takiej, jak PuTTY. Prędkość transmisji wynosi 115200 baud, dane 8-bitów, brak parzystości i 1 bit stopu.

Po połączeniu z portem szeregowym należy nacisnąć przycisk Enter i wtedy ukaże się napis SHELL>>, po którym można wpisać odpowiednią komendę. Komenda help pozwala zobaczyć dostępne w konsoli komendy.

Rys. 5. Lista komend dostępnych w konsoli SLN-LOCAL-IOT

Na przykład komenda volume z parametrem od 0 do 10 pozwala na ustawienie głośności dźwięku z głośnika. Natomiast komenda changeto pozwala na zmianę zestawu komend na pożądany. Ważne jest także polecenie commands, które pozwala na wyświetlenie wszystkich komend głosowych obsługiwanych aktualnie przez moduł sterowania głosowego.

Rys. 6. Przykład wykonywania komend w terminalu tekstowym

Gdy moduł wykryje komendę głosową również wysyła odpowiednią informację na port szeregowy. Dodatkowo głośność dźwięku z głośnika można regulować za pomocą przycisków na płytce. Za pomocą przycisku SW1 zwiększamy głośność, natomiast za pomocą SW2 – zmniejszamy.

Rys. 7. Informacje o wykryciu komendy głosowej w terminalu

Oprogramowanie do projektowania aplikacji na SLN-LOCAL-IOT

Producent modułu, firma NXP, udostępnia oczywiście także narzędzia do pisania aplikacji na platformę. Pierwszym z nich jest środowisko programistyczne MCUXpresso IDE. Środowisko umożliwia programowanie wielu różnych rodzajów układów z oferty NXP. Jest oparte o znaną platformę Eclipse.

Do obsługi debuggera i programatora na płytce producent poleca znane narzędzie Segger J-Link.

Producent przygotował również specjalny pakiet do obsługi płytki dostępny na stronie producenta. Aby uzyskać dostęp do pakietu należy wpisać kod aktywacyjny dostępny w pudełku z produktem. Pakiet zawiera m.in. narzędzia, sterowniki, skompilowane kody w postaci binarnej, ale przede wszystkim pakiet SDK służący do pisania własnych aplikacji asystenta głosowego opartych o moduł SLN-LOCAL-IOT. Pakiet w postaci zip można także włączyć i obsługiwać w środowisku MCUXpresso.

Podsumowanie

Moduł SLN-LOCAL-IOT to płytka rozwojowa prezentująca możliwości zaawansowanego mikrokontrolera NXP i.MX RT106L w zakresie rozpoznawania i sterowania głosem. Moduł oferuje dużą moc obliczeniową, wbudowane wszystkie komponenty niezbędne do implementacji systemu, a także komunikację Wi-Fi oraz Bluetooth. Płytka rozwojowa zawiera także wbudowane proste oprogramowanie do rozpoznawania komend głosowych. NXP oferuje także pełen pakiet oprogramowania umożliwiający implementację własnego systemu sterowania głosem.

O autorze