にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

Raspberry Pi Zero Wのセットアップ(Raspbian Stretch Lite)をして超A&G+音声再生機にする

(2021-06-02追記: この記事の内容はすでに古くなっています。2021年5~6月に確認した次の記事を参照してください: Raspberry Pi Zero Wを超A&G+音声再生機にする(2021年5月版) - にせねこメモ )


Raspberry Pi Zero Wを買ったが、ディスプレイ接続端子がMini HDMIということで接続ケーブルがなかった。
ディスプレイを繋がない状態(headless)でセットアップしようとしたが、上手くいかなかったのでMini HDMI-HDMI変換アダプタを買い、キーボードもUSB Micro-Bオス-Aメス変換アダプタを利用して接続して調べたところ、headlessセットアップのやり方がわかったのでメモ。

また、ついでに超A&G+(AGQR)音声再生機にしてしまう。


なお、セキュリティ関係の設定は省いているのでセキュリティ的には微妙なはずなので注意。

環境

  • 母艦: Windows 10 64-bit
  • Raspberry Pi Zero W
    • インストールするOS: Raspbian Stretch Lite (Version: September 2017)

手順

Micro SDへのイメージ書き込み

上のダウンロードページからRaspbian Stretch Liteのzipファイルをダウンロードしてくる。
解凍した中身の“2017-09-07-raspbian-stretch-lite.img”をWin32 Disk Imagerなどを利用してMicro SDカードに書き込む。

SSH有効化

sshを有効にするため、イメージを書き込んだSDカード(bootという名前になっている)を開いて、"ssh"という空ファイルを作成する。

Wifi接続設定

Wifiの設定を行う。

If a wpa_supplicant.conf file is placed into the /boot/ directory, this will be moved to the /etc/wpa_supplicant/ directory the next time the system is booted, overwriting the network settings; this allows a Wifi configuration to be preloaded onto a card from a Windows or other machine that can only see the boot partition.

https://www.raspberrypi.org/blog/another-update-raspbian/

とのことで、Windowsから開けるbootのパーティションに設定ファイルであるwpa_supplicant.confを突っ込んでおくと自動で適切な場所にコピーしてくれるらしい。

次のような内容でwpa_supplicant.confを作成しSDカードに突っ込む。一行目がないと接続されないので気を付ける。

ctrl_interface=/var/run/wpa_supplicant
network={
    ssid="xxxxxxxxxxxxxxxxxxxx"
    psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    key_mgmt=WPA-PSK
}

起動

USBで電源に接続すると起動する。USB端子は2つあるが、端の方にある方は電源供給専用らしい。
起動すると自動的にWifiに接続される。IPアドレスRaspberry Pi Zero Wにディスプレイを繋げていればそこに表示されるが、分からない場合はAdvanced IP Scannerなどを利用して調べる。

SSH接続

sshで接続する。
この環境ではCygwinにOpenSSHのsshクライアントをインストールしてあるので、Cygwin端末を開き、Raspberry Pi Zero WのIPアドレス(例では192.168.11.10)を指定して次のように実行する。(Cygwinを入れてない場合はTera Termなどを利用して接続する)

ssh pi@192.168.11.10

パスワードを求められるので、Raspbianの初期パスワードraspberryを入力するとログインできる。(ついでに、rootパスワードはadminであるらしい)

あとはCLIでやりたい放題。Debianなので楽。

ソフトウェアを最新版にしておく:

sudo apt update
sudo apt upgrade

ラジオにする

pHAT DACセットアップ

まず、Raspberry Pi Zero W側にピンヘッダ(別売り)を、pHAT DAC側にピンソケットをはんだ付けし、それらを接続する。
また、pHAT DACのミニジャックにスピーカーなどを接続しておく。ヘッドフォンを繋ぐ場合、音量が結構大きいので注意。音量コントロールのついているものを接続するのがよいと思う。

次にソフトウェアのインストールを行う。次のコマンドを実行:

curl https://get.pimoroni.com/phatdac | bash

その後、再起動する。

ストリーミング受信に必要なソフトウェアのインストール

sudo apt install rtmpdump ffmpeg

超A&G+ (AGQR)音声の再生


↑を参考に、次のコマンドを実行するとpHAT DACから音声が流れる。

rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg22 --live -o - | ffmpeg -i - -vn -f s16le -ar 48k -ac 2 - | aplay -f dat

起動時に自動再生する様に設定

再生用シェルスクリプトの用意
nano playagqr.sh

playagqr.shを次の内容で作成:

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg22 --live -o - | ffmpeg -i - -vn -f s16le -ar 48k -ac 2 - | aplay -f dat

実行属性をつけて/opt/にコピー。

chmod +x playagqr.sh
sudo cp playagqr.sh /opt/
systemdを利用した自動起動

systemdを利用して起動時に自動実行されるようにする。

sudo nano /etc/systemd/system/playagqr.service

playagqr.serviceを次のような内容で作成する:

[Unit]
Description = Play AGQR radio

[Service]
ExecStart=/opt/playagqr.sh
Restart=always
Type=simple
User=pi
Group=audio

[Install]
WantedBy=multi-user.target

自動起動を設定する:

sudo systemctl enable playagqr

これで、電源を繋いでしばらくするとAGQRの音が再生されるようになる。