Raspberry Pi3のpigpio+音の再生は、そのままではできないっぽい
半日ハマりました
pigpioにそんな罠があるなんて…
pigpioとは何ぞや
raspberrypiのGPIO制御用ライブラリです。他ライブラリに比べて
諸々良いらしい!
超初心者な私は下記記事を参考に、正月休みにリモコンを実装したのですが、
この際にpigpioを使用してGPIOから赤外線通信回路を制御しています。
qiita.com
本題
そろそろ新しい機能が欲しいなぁと思い、酔った勢いでYahoo防災速報の通知をラズパイでしゃべらせる機能を実装しました。
yahoo防災速報を受信したら、その内容をラズパイでしゃべらせた!
— リベル (@Libe__R) 2019年3月9日
豪雨予報とかを自動で音声案内してくれるぜい
イイ感じでしゃべってくれるようにはなったのですが…翌朝、シーリングライトをONにするコマンドが全く動作しなくなってました。
ラズパイの再起動後は元通り使えます。
これはアヤシイ…と思い、前日に実装したプログラムを使用したとたん、リモコンが一切動作しなくなります。
ラズパイ、open-jtalkで発言させるとpigpioが動かなくなる件
— リベル (@Libe__R) 2019年3月10日
rebootで治る
あ~ちうがうな
— リベル (@Libe__R) 2019年3月10日
ラズパイ、aplayでwavファイル再生すると、pigpio側になんか知らの影響が出る
ってかスピーカーからデカい雑音が発生するようになる
ちなみに「動作しなくなる」と書いていますが、コンソール上エラー等は発生しません。
上記Tweetにも記載していますが、スピーカーから雑音が発生するようになります。
pigpioとaplay(wavファイルを再生する標準で搭載されているコマンド)の相性問題かな?と考えVLCコマンドを試してみるも改善せず。
vlcもダメだった
— リベル (@Libe__R) 2019年3月10日
多分これスピーカー側に行っちゃうようになっちゃうんだな
こまったなぁと思って調べてみるとこんな掲示板を発見しました
raspberrypi.stackexchange.com
After starting the daemon by sudo pigpiod, it works fine and outputs the signals to the IR leds. However, anytime after I play a wav file using aplay, the IR signals generated by the Python script gets outputted to audio out instead.
やっぱりスピーカー側に行っちゃってるようです。 まぁあの雑音は明らかにおかしい。
pigpioの仕様?
pigpioの「よくある質問」ページに気になる事が書いてあります
abyz.me.uk
pigpio uses at least one of these peripherals during normal operation (for timing DMA transfers). pigpio will use both peripherals if waves or the hardware PWM function is used.
要はオーディオ用に用意されているPWM,PCMを使っちゃってるよーってことらしいです。
解決方法
一度killallでpigpioを殺してから、-t 0を指定してサービスを起動してやると、一応リモコンは復活しました
※ただしこうすると、今度は音声出力のほうがダメになります。OS再起動が確実です。
※こんな掲示板もありましたが、現状未確認です。USB型サウンドカードって何だろうか。そのままUSBで刺すスピーカー?
github.com