動け!M5StickVのマイク

これはM5StickVのマイクと格闘した日本の熱心なファンたちによる記録である…!
4

エンドユーザーがRISC-Vマイコンを手軽に扱えるということで2019年7月上旬に華々しくデビューしたM5StickV
人気も高く、日本に入荷してはすぐに売り切れ。という品薄状態が続いている。

上述のRISC-Vマイコンは「K210」で、ニューラルネットワークアクセラレーター(KPU)も積んでいる優れもの。

さっそく日本の熱心なファンによるHackが始まり、画像認識機能の素晴らしさを垣間見せている。
その一方、音声認識機能を試し始めたところ…

※以下、英語ツイートの訳は適当ですw

ミクミンP/Kazuhiro Sasao @ksasao

@M5Stack Do you have any code to initialize M5StickV's mic?

2019-08-07 23:57:51

M5StickVのマイクを使いたいんだけど、初期化の(サンプル)コードはあるかい?

解説

■initialize
デバイスの初期化処理のこと

まずは「Brownie」作者ミクミンさん(初音ミクアイコン)のツイート。
「mic」は初音ミクのことではなくてmicrophoneの略。
(言うまでも無いけれど、念のためw)

HanxiaoMeow @HanxiaoM

@ksasao @M5Stack It's a I2S mic, you don’t need to init, just mux the corresponding pins to I2S channel. You can check Sipeed’s demo for now.

2019-08-08 02:05:38

I2Sマイクだから、特にイニシャル処理(デバイスの初期設定処理)はいらないよ
ただ、SoCのMUX機能を使って必要なピンをI2S用のピンにしてね。
Sipeedのサンプルコードも確認してみて。

解説

■I2Sマイク
音声はアナログデータなので、コンピューターが理解できるようにデジタルに変換する必要がある。
I2Sはそのデジタルデータの規格。
通常3本の信号線(LRCLK(WDCLK)、BLCK(SCLK)、SDATA)を使う。
※アナログステレオマイクだとL、R、GNDという信号線が出ているイメージ…かな?w

■MUX機能
SoC(CPU)から、剣山のようにたくさん出ているピンの役割をプログラムから決められる機能。
イマドキのCPUでは当たり前の機能ですが、昔はピンの役割は固定だったりしたので
基板のレイアウトが本当に大変だったようです(^_^;

■Sipeed
M5StickVに使われているSoCであるK210を積んだ開発ボード(Maixシリーズ)をこの世に送り込んだ、深センのメイカー。M5StickVはこのSipeed社のMaixシリーズのノウハウからの流用が多い

こういうサンプルコードを(M5StickVで)書いてみたんだけど動かないなあ…他に何かした方がいいかな

仕事が早いw

ミクミンP/Kazuhiro Sasao @ksasao

@HanxiaoM @M5Stack Does this SD mean LRCLK? Or should I set a GPIO pin for this? pic.twitter.com/lVa2oNhaYt

2019-08-08 09:53:26
拡大

そうそう。この図の「SD」って「LRCLK」信号の意味かな? それともこういう名前のピンを割り当てるということ?


信号線名がメーカーによって違うことがあるので、ときどきややこしいことが起こるのはあるあるですねw

たしかに図を見ると「DAT」と「SD」というのがあって、どちらがデータビットの信号なのかわかりづらいですね…

しかし、このあと少し空白期間。

そして再び挑戦者が現れる。

nnn @nnn112358

M5StickV のI2S MIC動かそうと思って沼にはまる twitter.com/ksasao/status/…

2019-08-22 06:35:52
nnn @nnn112358

I2SのIO名がマニュアルとソースで違う M5StickV manual SD:10 DAT:12 CLK:13 maixpy_m5stickv Board_Info.MIC_LRCLK=10 Board_Info.MIC_DAT=12 Board_Info.MIC_CLK=13 github.com/sipeed/MaixPy/…

2019-08-22 06:39:30
nnn @nnn112358

M5StickVとMaixduinoでMEMS MICのは一緒 MSM261のSD端子は、MaxduinoはDAT端子と繋がっている。 dl.sipeed.com/MAIX/HDK/Maixd… pic.twitter.com/Oy3tl4aKoc

2019-08-22 06:45:11
拡大
nnn @nnn112358

Maixduinoでは Maix M1 IO18->MIC_BCK -> MSM261S SCK Maix M1 IO19-> MIC_WS -> MSM261S WS Maix M1 IO20-> MIC_DAT3 -> MSM261S SD M5StickVはなぜSD端子とDAT端子が分かれているのか? M5StickV回路図欲しいなぁ。 pic.twitter.com/D5VJOPHSJg

2019-08-22 06:56:05
拡大
nnn @nnn112358

@ksasao @HanxiaoM @M5Stack I want to use a microphone. Maybe, there is an error in the M5StickV Manual. MaixDuino is this one. MaixDuino IO18-> MIC_BCK -> MSM261S SCK MaixDuino IO19-> MIC_WS -> MSM261S WS MaixDuino IO20-> MIC_DAT3 -> MSM261S SD What about M5StickV? pic.twitter.com/AvchbLoWcu

2019-08-22 07:02:37
拡大
nnn @nnn112358

M5StickVのMIC、だめだ、わからんので本家に投げてしまった。マニュアルからだとWS端子がないことになる。まさか、ハード的に繋がってないということは。。。

2019-08-22 07:07:32

まさかのデータ信号2本疑惑。
なにやら不穏な雰囲気が…w

robo8080 @robo8080

いよいよ #M5StickV の内蔵マイクの解析が始まったようだ😄 #M5Stack

2019-08-22 07:17:43
M5Stack @M5Stack

@ksasao @nnn112358 @HanxiaoM can u try this? WS->IO10,SD->IO12,SCK->IO13 maybe some mistake of the sch. thanks pic.twitter.com/XOcMY95vv8

2019-08-22 10:51:04
拡大

図の「SD」は「WS」の間違いかもしれないね…(^^;

…ああ、やっぱり…

ミクミンP/Kazuhiro Sasao @ksasao

@M5Stack @nnn112358 @HanxiaoM It has been tested with the code above, but it doesn’t work..

2019-08-22 12:31:32
nnn @nnn112358

@ksasao @M5Stack @HanxiaoM I tried it but it doesn't work, too. I want other advice.

2019-08-23 12:24:39

ん〜、やっぱり動かない!