もりねずみーのやつ

インターネット上でしか生きられません

Raspberry Piでカーオーディオ(IQaudIO PiDAC+)

すみません…間に合いませんでした…。

RaspberryPi Advent Calendar 2017 23日目の記事です。

adventar.org

まだ作業途中なので、出来てる部分だけ公開して、年内目標に改めて更新します!

車でラズパイにやらせたいこと

オーディオ

  • Bluetoothオーディオレシーバー(自動接続)
    • ペアリング済みのデバイスを検索して自動接続
    • ボリューム調整は可変抵抗器で調整可能
  • 音量自動調整(カロッツェリアの上位モデルに付いている機能)
  • イコライザー調整 (alsa-equalですら10バンドいじれる)

バックカメラ

  • 田舎なので夜間バックで駐車する時真っ暗でほとんど見えないのです…。

ハードウェアは以下を使用

memo

http://www.iqaudio.com/downloads/IQaudIO.pdf https://blog.bnikka.com/raspberrypi/raspberrypibluetooth.html http://nw-electric.way-nifty.com/blog/2016/10/raspberrypi-169.html https://www.allied-telesis.co.jp/products/list/wireless/knowl.html http://www.soumu.go.jp/main_content/000152595.pdf bとgは屋外使用可能

やったこと

  • raspbian-liteをダウンロード&SDカードにイメージ焼き
  • SSHでログイン出来るように/boot/sshを作成
  • Elecrow 7inch ディスプレイを使うために/boot/config.txtに追記
  • IQaudIO PiDAC+を使うために/boot/config.txtを編集
  • とりあえずpiユーザでログインし、必要なユーザを作成しpiユーザを削除
ssh pi@192.168.xxx.xxx
pi@raspberry $ sudo useradd -m -g users -s /bin/bash morinezumiiii
pi@raspberry $ sudo gpasswd -a morinezumiiii audio
pi@raspberry $ sudo passwd morinezumiiii
pi@raspberry $ sudo passwd root

pi@raspberry $ visudo  <-- viではなくnanoが開く。超嘘つき。
pi@raspberry $ exit
ssh morinezumiiii@192.168.xxx.xxx
morinezumiiii@raspberry $ sudo userdel -r pi
  • パッケージを最新版にアップデートし、欲しいパッケージをインストール
$ sudo apt update
$ sudo apt dist-upgrade
$ sudo rpi-update
$ sudo reboot

$ sudo apt install git lightdm xserver-xorg raspberrypi-ui-mods
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build
$ gpio -v
$ sudo raspi-config  <-- お好みで
  • 参考にしたもの

https://www.raspberrypi.org/documentation/raspbian/updating.md http://wiringpi.com/download-and-install/ https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=166806

PiDAC+

  • PiDAC+設定

alsamixerを見てみると、PiDAC+が認識されてる。しかもデフォルトで選択状態になっていて、そのままspeaker-test -c 2でRCA出力から音が出た。

ただなぜか音量調整が0か100しか選べない。

謎だけど、とりあえずロータリーエンコーダーを使って音量調整したいので、 GitHubで公開されているIQaudIOのツールを落として動かしてみる。

この時、IQ_rotを動かそうとすると「wiringPiのライブラリがねーんだけど💢」って言われるので、wiringPiをインストールしておくこと。

$ cd
$ git clone https://github.com/iqaudio/tools.git
cd tools

と、色んな合間にロータリーエンコーダーとPiDAC+をつなぐためのハーネスを作っておいてつなぐ。

f:id:aburos:20171219211507j:plain

sudo ./IQ_rot &
alsamixer

で、ノブを動かしてみる…。

動くかな…?

f:id:aburos:20171223234155p:plain うおぉ、動いた!(画像じゃ伝わらない)

でも何故かAnalogueチャンネルじゃなくDigitalチャンネルのボリュームが動く。(一応音量は調整はされる)

更にalsa-equalプラグインを入れて10バンドイコライザー機能も追加! f:id:aburos:20171223235720p:plain

$ speaker-test -c 2

ちゃんと音も出て音量が上がったり下がったり調整出来てるようなので良しとする。

ラズパイをBluetoothレシーバー化

Setup Raspberry Pi 3 as bluetooth speaker https://raspberrypi.stackexchange.com/questions/47708/setup-raspberry-pi-3-as-bluetooth-speaker

素晴らしき先人の知恵をお借りしましょう。

変えたのは/usr/lib/udev/bluetoothのUSER="pi"を自分のユーザ名に変えただけです。

  1. Pair and Connect the audioの手順で、自分のスマホとペアリングする際に、ラズパイ側でyes/noを問われるので、yesと入力してからペアリングし、trust [スマホのデバイスアドレス]をして、毎回ペアリングキーを入力するのを省略できるようにします。

せっかくなので、

$ pulseaudio -D

している所を、Systemdユニット化して、自動起動するようにします。

$ sudo nano /etc/systemd/system/pulseaudio.service
[Unit]
Description=Pulse Audio

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/pulseaudio

[Install]
WantedBy=multi-user.target

更についでなので、PiDAC+のロータリーエンコーダのプログラムもSystemdユニットにしちゃいます。

$ sudo nano /etc/systemd/system/pidac-rotenc.service
[Unit]
Description=IQaudIO PiDAC Rotary encoder application

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/IQ_rot

[Install]
WantedBy=multi-user.target
$ sudo systemctl daemon-reload
$ sudo systemctl enable pulseaudio.service
$ sudo systemctl enable pidac-rotenc.service

とまぁ、こんな感じで進めてはいたのですが、記事を書きながらデスクトップ環境を整えようと思い、raspberrypi-ui-modsとlightdmを入れたら、上記の内容でBluetooth経由で音が出なくなりました…。

調べていると、RaspberryPi公式のブログで、Raspbian StretchでのBluetoothオーディオについて気になることが書いてあった。

https://www.raspberrypi.org/blog/raspbian-stretch/

「Pulse Audio使わないでしょ?bluez-alsa入れといたやで。」

オーマイガー…なんということでしょう…。

で、そんなこんなで普段Arch使いの僕がRaspbianにデビューしたらハマりまくったので、今日は間に合いませんでした。 年内完成を目標に、続けて行きたいと思いまうす。

以下車のオーディオ環境どうにかした時の作業風景

f:id:aburos:20170728172721j:plain f:id:aburos:20170930093609j:plain f:id:aburos:20170930093631j:plain

社内全部引っ剥がしてロードノイズを遮音したりドアに音が漏れないようにデッドニングしたり余計な反響をしないように吸音スポンジを入れたり…。

f:id:aburos:20170830211218j:plain f:id:aburos:20170830220227j:plain f:id:aburos:20170830212614j:plain

ついでに掃除もして綺麗になりました。車のカーペットの下は意外とダニがいっぱいいました…。