MBot mluvící – 1. díl
Není daleko doba, kdy budou roboti rovnocennými partnery nás lidí. Budeme si moci u kávy poklábosit a něco nového se třeba od svého robotího parťáka i dozvědět. Při troše šikovnosti si ale s mBotem můžeme popovídat již dnes. Umožní nám to zvukový modul, který si můžete ke svému mBůtkovi pořídit – ME Audio Player zvukový modul.
Minule jsme tu měli mBota a čáry a dnes přidáme do naší mbotí série další článek právě o zvukovém modulu!
Modulem, kterým můžete to jak váš mBot funguje posunout téměř do říše sci-fi je modul, který naleznete v nabídce firmy makeblock pod názvem ME Audio Player. Jedná se o modul schopný z paměťové SD karty přehrávat zvukové soubory. S tímto modulem umí ale mBot zvuky nejen přehrávat, ale také i nahrávat (modul obsahuje i malý mikrofon).
Obsah článku:
ME Zvukový modul – popis
Podíváme-li se na modul z předního, tedy čelního pohledu, všimneme si nejprve reproduktorku ve středové části destičky modulu. Reproduktor má výkon pouze 1W, což není mnoho. Z praxe mám ověřeno, že v tiché místnosti s jedním dítětem je hlasitost použitelná, ovšem v klubovně s několika normálně hovořícími malými robotiky nemá modul šanci se prosadit.
Na pravé straně destičky (z čelního pohledu) nalezneme ještě dvě součástky, které si zaslouží naši pozornost. Kulatý kovový váleček je mikrofon, díky kterému je modul schopný nahrávat zvuky na kartu. Pokud si se součástkou o které je řeč nejste jistí, je to součástka pod kterou je na desce nápis MIC. Opět, stejně jako u reproduktoru, zde nehledejme profesionální kvalitu (celý modul je myšlen jako dětská edukační hračka). Citlivost mikrofonu je velice nízká, mluvenou řeč jakž-takž zachycuje do vzdálenosti půl metru, takže na špionážní hrátky si naštěstí moji svěřenci mohli nechat zajít chuť. Ovšem zkusit si naprogramovat mBota se zvukovým modulem jako poslíčka, je s mikrofonem na ME zvukovém modulu realizovatelná záležitost.
Velice šikovným udělátkem je modře svítící LED dioda umístěná přímo nad mikrofonem. Díky této LED snadno získáme zpětnou vazbu o tom, co že to náš zvukový modul zrovna provádí. Modul je schopný poslat celkem tři druhy signálu. Dvě krátké bliknutí se objeví, je-li modul připojen k desce, která byla zrovna spínačem aktivována. Krátké blikání po jedné sekundě znamená, že je modul právě v režimu nahrávání z mikrofonu a plné nepřerušované svícení znamená, že modul zrovna přehrává zvuk na reproduktorku. Někdy je záznam tak tichý, že při testování oceníte informaci, když vám modul z karty právě přehrává nahrávku obsahující „ticho“.
Tip: shlédněte doprovodné video, kde jsou všechny druhy signalizace modulu prakticky předvedeny.
Pohlédneme-li na zadní stranu modulu spatříme ve středu charakteristickou kostičku portu RJ-25 s nálepkou bílé barvy, kterou je možné modul připojit k řídící desce mBota (port na desce by měl mít také bílé označení). Bílé označení nám signalizuje, že je modul s deskou mBota propojen sběrnicí typu I2C (I2C – wiki).
Po pravé straně nalezneme slot pro vložení paměťové karty. Funguje to zcela jednoduše – kartu vložíme a stiskem domáčkneme. Chceme-li kartu vyjmout opakujeme postup pozpátku – kartu stiskneme, ta se trošku vysune a pak ji lze bez problémů vyjmout. Jako úložné médium je používána SDHC karta (paměťové karty – wiki) o velikosti mikro. Tyto karty jsou běžně k sehnání o různé úložné kapacitě. Modul využívá klasického systému souborů, jak jej známe z počítače. Bohužel však neumí pracovat se složkami, byť firma Makeblock deklaruje použití systému FAT32 pro práci se soubory. Modul tedy reálně je schopen využívat pouze soubory uložené přímo na kořeni karty. Modul umí pracovat se třemi nejčastějšími formáty zvuku – MP3, WMA a WAV.
Za zmínku stojí ještě USB port (USB – wiki), který je na levé straně při pohledu na modul zezadu. Tímto portem je možné přímo editovat obsah vložené karty z počítače, propojíme-li jej kabelem s modulem. Varianta portu, která je použitá pro modul je micro USB typu B (USB 2.0) (ve videu jsem chybně uvedl verzi A).
Programujeme s ME Audio Player
Chceme-li mBota používat spolu s připojeným ME zvukovým modulem je třeba do nástroje, kterým jej budeme programovat doinstalovat rozšíření, které nám to umožní. Já používám rozšíření od Makeblocku – MeAudioPlayer (psáno takto dohromady, rozšíření je verze 1.0).
Po nainstalování tohoto rozšíření dostaneme v sekci „Robot“ modré barvy k dispozici nové widgety. Popíši ty nejzásadnější
Pokud chcete v programu použít příkazy, které pracují s modulem audioplayeru je třeba na začátku programové sekvence vložit inicializační blok, kterým mBotovi dodáte patřičné obslužné programové vybavení. Inicializační blok stačí použít v programu jen jednou na začátku. Nevkládáme jej tudíž například do nekonečné smyčky, které nám může obhospodařovat zbytek programu.
play music by index – přehrání zvukového souboru dle indexu. Nenalezl jsem nikde přesně specifikováno o jaký konkrétní index se jedná. Výrobce doporučuje vkládat celé číslo. Pokusy jsem zjistil, že by se mohlo jednat o index pořadí souborů, které jsme aktivně mikrofonem nahráli na kartu. Nejnižší číslo 0 je pravděpodobně pořadí naposledy nahraného souboru.
play music by file name – přehrání souboru podle názvu souboru. Modul by měl podle dokumentace umět přehrávat soubory ve formátu mp3, vma a wmv. Funkčnost mám vyzkoušenu pouze se soubory typu mp3 a tam vše fungovalo dobře. Do pole název souboru nezadávejte i koncovku souboru (to pak nefunguje). Nefunguje ani zadávání cesty k souboru na kartě, fungovalo mi to pouze při přehrávání z kořenu karty. V případě souborů se stejným názvem, ale odlišným formátem zdá se modul upřednostňuje formát mp3.
set music play mode – nastavení režimu přehrávání – single – soubor se přehraje pouze jednou, single repeat – soubor se neustále přehrává kolem dokola, all repeat – mbot projede všechny soubory na sd kartě a postupně je přehraje (možná pak znovu vše bude opakovat, neměl jsem nervy na to to vyzkoušet) a konečně režim shuffle, který vám přehraje soubory z karty v náhodném pořadí. Blok funguje stejně, když jej umístíte před blokem s příkazem na přehrání souboru, ale i za ním.
play previous music – přehraje zvukový soubor dle indexu, který je na kartě před posledním přehraným souborem.
play next music – přehraje zvukový soubor dle indexu, který je na kartě za posledním přehraným souborem.
Tip: Dáte-li více příkazů play previous a play next music za sebou nepřehraje se řada zvukových souborů, ale pouze jeden výsledný soubor, který z této programové sekvence vzejde.
pause/play music – dvoutlačítková volba, která umí pausnout přehrávaný soubor a znovu ho spustit. V tomto případě je třeba aktivní vstup uživatele, takže tento příkaz je využitelný pouze s dálkovým ovládáním.
stop music – zastavení přehrávání souboru, opět vhodné použít jen s dálkovým ovládáním.
set volume to – příkaz pro nastavování úrovně hlasitosti. Bez nastavení mBot hraje na úrovni cca 50–70%. V praxi je univerzálně použitelná úroveň nastavení na 100 (a to ještě modul při trochu vyšší úrovni hluku je špatně slyšet). Příkaz je třeba vložit před inicializační blok (viz. příklad použití na grafice). Program pak zinicializuje zvuk s nastavením, které jsme zadali. Použitelná úroveň je v rozsahu 0-100%, při zadání vyšších hodnot je nadále počítáno s úrovní 100%. Pro případnou změnu hlasitosti je při použití příkazového bloku „set volume to“ vždy zapotřebí znovu inicializovat nastavení modulu, aby se změny projevily (viz. příklad na grafice).
volume up, volume down – příkazy využitelné při použití dálkového ovládání – snížení, nebo zvýšení hlasitosti.
ME Audio Player: start recording to file – tento příkaz zahájí aktivní nahrávání zvuku na kartu do souboru jehož název uvedete v poli (pokud v poli není uveden název souboru, příkaz se neprovede). Název uveďte bez mezer a diakritiky. Pozor, k tomuto bloku je vhodné uvést i následující příkazový blok, kterým ukončíte jeho činnost.
ME Audio Player: stop recording to file – konec nahrávání do souboru.
Programy
Předtím, než si vyzkoušíte programy, které jsem vám na konci článku přichystal, je ještě třeba provést jisté přípravy. Všechny zkušební programy totiž počítají s jistými mp3 soubory, které budou nahrány na vložené kartě. Tyto soubory naleznete hned v prvém zip souboru ke stažení v komprimované podobě. Tyto soubory prosím přesuňte na SD kartu vloženou ve zvukovém modulu.
Program Test of sound
Tímto programem můžete jednoduše vyzkoušet, jestli vám zvukový modul funguje. Po přetažení programu do mBota a aktivaci program svítí červenou LED a čeká na stisk hřbetního tlačítka. Ještě předtím ovšem inicializuje (softwarově zprovozní) zvukový modul.
Po stisku tlačítka (je třeba jen krátce stisknout) se rozsvítí LED zeleně a mBot přehraje zvukový soubor test.mp3. Pokud neprovedete nějaké změny na zvukových souborech v SD kartě, měl by vám zvukový modul přehrát slovo „test“. Tělo programu je vloženo do nekonečné smyčky, čili si výsledek tohoto demonstračního programu můžete klidně několikrát vyzkoušet.
Program Sound blocks 1 2 3
V tomto programu jsem vám chtěl ukázat další specifikum při práci se zvukovým modulem ME Audio Player. Při rozsáhlejších programech (o kterých bude řeč v dalším dílu) je běžné skládat k sobě více hlášek z různých souborů.
Program klasicky začíná inicializací zvukového modulu, načež se jeho činnost překlopí do nekonečné smyčky. Rozsvítí se červené světlo a po stisku hřbetního tlačítka (a rozsvícení zelené LED) se přehrají hlášky „jedna – dva – tři“, pak se opět rozsvítí červená LED. V podstatě je tento program rozvinutější verzí předchozího programu. Jediným rozdílem je, že tento program přehrává a spojuje zvukový výstup ze tří různých souborů.
Pro funkčnost tohoto programu jsou klíčové vložené časové intervaly (blok čekej). Pokud tam tyto časové intervaly nebudou, celá sekvence se vám přehraje s chybami, nebo vůbec. Blok play music totiž nijak nemá ošetřené zjištění délky potřebné pro přehrání zvukového souboru a nastavení tomu odpovídající časové prodlevy v chodu programu. Bez časových intervalů na činnost se vám přehraje první zvukový soubor, program mezitím plyne dál a než se soubor dohraje na konec stopy, plní již program jiné příkazy a nemůže přehrát zvukové soubory vložené do programu bezprostředně za prvním zvukovým souborem.
Tento problém lze vyřešit časovým intervalem zařazeným za každý přehrávaný zvukový soubor, který dokáže pozastavit chod programu, než se zvuk přehraje. Pochopitelně je třeba odladit a nastavit délky intervalů podle délky zvukové stopy na jednotlivých souborech.
Program Save in File
Ukázali jsme si jak přehrát zvukový soubor a nyní je na řadě předvést si i jak do souboru nějaký ten zvuk nahrát.
Po úvodní inicializaci dál tento program pokračuje třemi postupnými kroky, které jsou vždy odstartovány stiskem tlačítka na hřbetě mBota. Po prvém stisku se červená signalizační LED změní na zelenou (kontrolka na zvukovém modulu začne poblikávat) a modul zaznamenává do souboru zvuk přijímaný mikrofonem (je lepší mluvit hodně zblízka). Dalším stiskem ukončíte nahrávání. Třetím stiskem se nahraný soubor spustí a vy si můžete záznam pro kontrolu poslechnout.
Tento program můžete také využít podobně i jako já pro zaznamenání své vlastní kolekce hlášek. Změníte-li jméno souboru (na obou místech v programu) a nahrajete-li co potřebujete – program to uloží do nového souboru, i když na kartě soubor s tímto jménem nebyl. Modul prostě vytvoří nový soubor pod zadaným názvem.
Těším se na setkání s vámi v dalším díle, kde si zkusíme nějaké složitější prográmky ve spojení s modulem zvuku.
mBot programy ke stažení
Zvukové soubory pro testování na SD kartu ke stažení
Program pro demonstraci přehrání zvuku ze souboru test.mp3
Program pro demonstraci přehrání více zvukových souborů za sebou.
Odkazy na produkty HW Kitchen použité v článku:
- Výukový robot mBot2 – ultrasonic - 7.11.2023
- Výukový robot mBot2 – krása pohybu - 23.5.2023
- Výukový robot mBot2 – programujeme základní rutiny se CyberPi - 29.12.2022
One Comment on “MBot mluvící – 1. díl”
Napsat komentář
Pro přidávání komentářů se musíte nejdříve přihlásit.
MBOT MLUVÍCÍ – 2. DÍL – ondranauci.cz
9.1.2021 at 13:49[…] článek navazuje na předchozí díl o použití zvukového modulu, ve kterém popisuji principy používání tohoto modulu. V tomto článku budu popisovat dvě […]