Raspberry Pi Zero Wが発売された時に購入しましたが全く使用せず、最近引き出しに入っているのを発見したので何かに使用できないかとRaspberry Pi OSを書き込みました。
が、最近のRaspberry Pi OSを使用するとブラウザも起動できず、さらに処理が激重になっているので使い物にならず。
ただ、GUIを使用せずsshで接続していると特に問題なく使用できるし、発熱も少ないため常時起動させておくようなものに使用できるのでは?と思いました。
そこで、遅いとは言えWi-FiとBluetoothが使用できるため何か使い道がないかと調べていると、Radikoなどのネットラジオを再生・録音するスクリプトradish/radish-playを公開している方がいました。
ラジオを使用するか分かりませんが、OLEDとタクトスイッチを接続し、Wi-FiとBluetoothのスピーカーでラジオを再生・録音(最低限)できるアプリを作成しました。
再起動やシャットダウンもアプリから行うことができ、電源のUSBの接続だけで使用できるので思っていたより便利です。
部品 | 説明 |
---|---|
Raspberry Pi ※Wi-Fi+Bluetoothありモデル |
Raspberry Pi Zero WとRaspberry Pi3で動作することを確認。 |
Raspberry Pi OS (Legacy) Lite |
Legacy(Bullseye)でない方(Bookworm)の最新で動作することは確認しましたが、起動時間や処理が遅いし何か不安定なのでLegacyを使用しました。 ※今回使用したものは以下 2024-03-12-raspios-bullseye-armhf-lite.img.xz Release date: March 12th 2024 System: 32-bit |
OLED(128x64) | SSD1306を使用したI2C接続のOLED。 秋月で購入した0.96インチ 128×64ドット有機ELディスプレイ(OLED) 白色を使用。 |
タクトスイッチx4 | 緑・青・黄・赤色のタクトスイッチ。 なぜか手元にあったものでいつ購入したのか不明、たぶん秋月で購入したと思う。 |
Raspberry Pi ZERO用 ユニバーサル基板 |
OLEDとタクトスイッチx4を乗せるのにちょうど良いサイズのユニバーサル基板が秋月で売られていたため購入しました。 |
Bluetoothスピーカー | Raspberry Piで接続・再生ができるもの。 手持ちの良くわからないスピーカーとイヤホンで再生できることを確認。 |
以下は、HDMIとUSBキーボードを接続したRaspberry PiでWi-Fiの設定までを行い、その後はWindows PCからTera Termでログインして設定を行う。
また、IPv6はサポートしていない。
-> Other -> Japanese -> Japanese - Japanese (OADG 109)
$ sudo raspi-config 1 System Options -> S4 Hostname ← ホスト名を変更する時のみ選択 -> <OK> -> **** ← ホスト名 3 Interface Options -> I2 SSH ← SSH 有効、Windows PCからログインするのに使用 -> <YES> -> <OK> 3 Interface Options -> I5 I2C ← I2C 有効 -> <YES> -> <OK> 5 Locations Options -> L1 Locale -> [*] ja_JP.UTF-8.UTF-8 -> ja_JP.UTF-8 5 Locations Options -> L2 Timezone -> Asia -> Tokyo 5 Locations Options -> L4 WLAN Country -> JP Japan -> <OK> 6 Advanced Options ← Raspberry Pi OS (Legacy) Lite時のみ選択 -> AA Network Config -> 2 NetworkManager -> <OK> ※ESC キー押下で抜ける
$ sudo nmtui
$ sudo nmcli con up "profile name" ※profile nameは、nmtuiで追加した名前
$ ip a
$ sudo reboot
$ sudo vi /etc/apt/sources.list deb https://pkg.ltec.ch/public/ buster main ← この文字列を行末へ追加 $ sudo apt-key adv --fetch-keys https://pkg.ltec.ch/public/conf/ltec-ag.gpg.key
# アップデート関連 $ sudo apt update $ sudo apt upgrade -y # 再生・録音関連に必要なアプリ類 $ sudo apt install -y ffmpeg $ sudo apt install -y libxml2-utils $ sudo apt install -y pulseaudio-module-bluetooth # ラジオアプリビルド時に必要なライブラリ $ sudo apt install -y libasound2-dev $ sudo apt install -y libbluetooth-dev $ sudo apt install -y libgpiod-dev # ツール類(vimは必要に応じて) $ sudo apt install -y vim $ sudo apt install -y git $ sudo apt install -y samba $ sudo apt install -y wsdd
$ sudo vi /etc/samba/smb.conf : [homes] comment = Home Directories browseable = no # By default, the home directories are exported read-only. Change the # next parameter to 'no' if you want to be able to write to them. read only = no # File creation mask is set to 0700 for security reasons. If you want to # create files with group=rw permissions, set next parameter to 0775. create mask = 0664 # Directory creation mask is set to 0700 for security reasons. If you want to # create dirs. with group=rw permissions, set next parameter to 0775. directory mask = 0775 :
$ sudo service smbd restart
$ sudo pdbedit -a ユーザー名
# Raspberry Pi OS (Legacy) Lite時 $ sudo vi /boot/config.txt # 上記以外 $ sudo vi /boot/firmware/config.txt dtparam=i2c_baudrate=400000 # 再起動 $ sudo reboot
Raspberry PiとBluetoothスピーカーの接続を行います。
$ bluetoothctl
[bluetooth]# scan on # Bluetoothスピーカーをペアリングモードにしデバイスが表示されるのを確認、その時にBDアドレスを記憶 [NEW] Device xx:xx:xx:xx:xx:xx デバイス名 ← xx:xx:xx:xx:xx:xx 箇所がBDアドレス
[bluetooth]# pair xx:xx:xx:xx:xx:xx # 以下のメッセージが表示されるのを確認 Attempting to pair with xx:xx:xx:xx:xx:xx : Pairing successful
[bluetooth]# trust xx:xx:xx:xx:xx:xx # 以下のメッセージが表示されるのを確認 Changing xx:xx:xx:xx:xx:xx trust succeeded
[bluetooth]# connect xx:xx:xx:xx:xx:xx # 以下のメッセージが表示されるのを確認 Attempting to connect to xx:xx:xx:xx:xx:xx : Connection successful ※詳細は不明ですが、上記失敗してもtrustまで成功しているならRaspberry Piの再起動で接続できるようです
[デバイス名]# exit
$ cd ~ $ tar -jxvf 圧縮ファイル $ cd ~/btradio $ make
$ cd ~/btradioscript $ git clone https://github.com/uru2/radish.git $ git clone https://github.com/jg1uaa/radish-play
Windows PC、またはRaspberry Piからbtradio/setup.iniファイルを開き、以下個所を使用するBDアドレスへ変更する。
bdaddr = xx:xx:xx:xx:xx:xx ; Bluetooth デバイスアドレス
radikoは地域により聞ける局が決まっているのため、地域の設定へ変更が必須となる。
[station]セクション以下にある内容を編集する。
[station] ; type id image commenct radiko = TBS, 0, TBSラジオ radiko = QRR, 1, 文化放送
type列へ種類を指定する。
指定できる種類は以下コマンドで確認する。
$ ~/btradio/script/radish/radi.sh Usage: radi.sh [options] Options: -t TYPE Record type nhk: NHK Radidu radiko: radiko lisradi: ListenRadio shiburadi: Shibuya no Radio :
id列へステーションIDを指定する
指定する文字列は、以下コマンドで確認する。
$ ~/btradio/script/radish/radi.sh -l : Record type: radiko HBC: HBCラジオ STV: STVラジオ AIR-G: AIR-G'(FM北海道) :
image列は、~/btradio/data/station.bmpファイル中の画像インデックスを指定する。
station.bmpは256色のビットマップで白色ドットのみOLEDへ表示する。
画像形式は、128x40を1つのラジオ局の画像とし縦に並べたもの(先頭の画像がインデックス0)。
comment列はコメントで特に参照しない。
OLED+タクトスイッチで動作させる前に、テキストで動作確を行う。
操作ですが、緑・後ボタンで選択、黄で決定(メニュー非表示時再生)、赤で戻る(メニュー非表示時停止)。
最初に起動したときに音量が最大になっている可能性があるため、誤操作防止のためMaster音量をalsamixerで調整する。
$ alsamixer
また、アプリ起動後にVolumeメニューも一応確認した方が安全。
テキストで動作確認を行う場合、テキストの表示範囲を128x64以上にする必要がある。
そのため、Windows PCからTera Termからログインして実行する。
実行する前に、Tera Termのウィンドウサイズを調整後、以下コマンドを実行する。
操作方法はキーボードから、z(緑)/x(青)/c(黄)/v(赤)で、btradioの終了は「Ctrl+C」。
$ ~/btradio/btradio -t
メニューからBluetoothスピーカーの接続・切断、ラジオの再生ができることを確認。
初回起動時、接続できているのに音が出ない時は、Bluetoothスピーカーの切断→切断を行うと音が出るかも。
タクトスイッチは、Raspberry Piが持つプルアップ設定を使用。
また、gpioはbtradio/setup.iniで指定可能。
起動時にアプリを起動する方法がいくつかあるようですが、crontabのrebootを使用しました。
以下コマンドを実行し、アプリを自動起動に設定します。
※sleep 3しているのは、起動直後だとi2cのドライバがinsmodされていない時があるため安全な時間待っています
$ crontab -e @reboot sleep 3; pulseaudio --start; ~/btradio/btradio ← この行を追加
また、crontabを使用することでアプリとは別に録音できる。
例)毎週日曜の11:59-13:00の文化放送を録音(1分前にしているのは録音開始するまで時間が掛かるため)
$ crontab -e 59 23 * * 0 cd ~/btradio/record; ~/btradio/script/radish/radi.sh -t radiko -s QRR -d 61