MP3プレーヤ試作

Raspberry PI zeroによるMP3プレーヤ試作。目標は今までに製作したMP3プレーヤと同等のユーザインターフェースを持つ、スタンドアロンで使える作品への道筋をつけること。

更新: 2018/10/08, 2018/10/15, 2018/11/03, 2018/12/09


Raspbian Stretch

  • インストールしたバージョン:2018-06-27-raspbian-stretch
  • SDカード書き込み:Etcher-1.4.4-x64
  • 参考サイト
    adafruitのSetting up your SD card
    Raspberry Pi ZeroをUSBケーブル1本で遊べるようにする
    (2018/12/09追記) OSイメージの書き込みについては主として前者を、書き込んだ後の設定については後者を参照した。
    後者によればOSの設定は要するにconfig.txtとcmdline.txtの編集である。ただ、これだけではSSHが繋がらない(2018-11-13-raspbian-stretch-lite)。追加の参考サイトとして
    Raspberry Pi Zero(W)のセットアップ では、bootディレクトリに ssh ファイルが必要とある。sshファイルの作成は単にWindowsのexplorerで右クリック−新規作成−テキストファイルを実行し、ファイル名をssh(拡張子を消す)とした。
  • Windows10側ドライバ
    上記参考サイトではフランス語のページが紹介されているが今はアクセス不能のようだ。 また、サイトによってはマイクロソフトのダウンロードファイルの直リンクが貼ってあることがあるが、それもアクセス不能だったりする。
    次のやり方で入手した。Microsoft Update カタログで「USB Ethernet/RNDIS Gadget」を検索する。今現在、9件みつかるので該当するもの(Acer Incorporated. - Other hardware - USB Ethernet/RNDIS Gadget)の右端のダウンロードボタンをクリック。(Chromeなら)小ウインドウが開くので、表示されているリンクをクリックするとcabファイルが落ちてくる。
  • Bonjour Print Services (Windows)

オーディオ出力回路

DACはいずれ検討するとして、差し当たって簡易的な方法でオーディオを出力する。
  • 参考サイト
    adafruitのPi Zero PWM Audio。Option 1. Use Device Tree Overlay の 1 (config.txtに追記するやり方)でできた。
    Raspberry Pi Zero PWMオーディオを試してみる。 
  • ありあわせの部品だけを使って左の図のようになった。
  • aplayerで再生してイヤホンで聞いてみるとほとんどノイズを感じなかった。このまま実用になるかもしれない。

オーディオ設定

aplayやomxplayerはすぐに使えたが、MP3専用のmadplayをインストールしました。
  • wiringPi-8d188fa.tar.gz
  • libid3tag-0.15.1b.tar.gz
    make中、ワーニングが出るが無視した。
  • libmad-0.15.1b.tar.gz
    makeがエラーになる。configureが作るMakefileの -fforce-mem を単純に削除した。
  • alsa-lib-1.1.6.tar.bz2
    下の --with-alsaオプションのために必要。
  • madplay-0.15.2b.tar.gz
    ./configure --with-alsa
    このスイッチをつけないでmadplayをコンパイルして実行すると、
    ERROR : audio: /dev/dsp no such file or directory
    のようなエラーになる。
  • madplayでMP3ファイルを再生できるようになりました。
    nohup madplay mp3ファイル名 &
    再生中にalsamixerで音量変更できる。

今後の課題(2018/10/08)

  • SDカードへのMP3ファイル転送手段の調査
  • SDカードの効率利用のため、サイズの小さいLinuxディストリビューション調査
  • Raspberry PIのプログラミング手法の調査
  • Raspberry PIのGPIOプログラミング調査
  • ユーザインターフェース制御プログラムからオーディオプレーヤプログラム(madplay)の制御方法
  • 電源スイッチ回路の検討
  • DACの検討

追加インストール

  • Ext2Fsd-0.69.exe (2018/10/14, windows10)
    大量のMP3ファイルをLinuxのパーティションにコピーするため。
    だが不具合あり? Windows10がSDカード(今回のraspbianのカードだけでなく、FAT32だけのカードも)を認識しなくなった。Windows10の復旧作業をするはめに。raspbianのSDカードを破損はしていないようだ。
  • WinSCP-5.13.4-Setup.exe (2018/10/15, windows10)
    これならMP3ファイルをSDカードに転送できる。難点はMP3プレーヤとしてまとめるときもRaspberry PI zero のUSBポートを(物理的に)開けておく必要があること。
    SSH(TeraTerm)を接続したままの状態でファイルの交換ができることを確認した。
  • WSL(Windows Subsystem for Linux / Windows10) (2018/10/22)
  • Debian GNU/Linux (Windows10) (2018/10/22, Windows Storeから)
  • 上記Debianにgccをインストール
    sudo apt-get update
    sudo apt install build-essential
    "Hello World"プログラムを試した。 Raspberry PI に依存しないLinuxのテストなどはこれでできる。

Raspbian Stretch Lite (2018/11/03, 2018/12/09)

  • インストールしたバージョン:2018-10-09-raspbian-stretch-lite
    (2018/12/09)2018-11-13-raspbian-stretch-lite を再インストール
  • Raspbianと同じ手順でオーディオ再生のセットアップができるはず、と思っていたらそうではなかった。
    libid3tag と libmad が /usr/arm-linux-gnueabilhf にインストールされないため madplayの実行時に"error while loading shared libraries..."となってしまうのだ。
    手作業でlibid3tag.so.0.3.0とlibmad.so.0.2.1とを/usr/arm-linux-gnueabilhfにコピーし、それぞれをlibid3tag.so.0とlibmad.so.0にシンボリックリンクした。
  • madplayでmp3ファイルを再生し、alsamixerで音量変更できることを確認
  • Lite版はRaspbian Full版の4分の1ぐらいのSDカード使用量ですむので、Lite版の線で進めてみる。

Raspbian Stretch Lite の軽量化 (2018/12/09)

起動の高速化をこのサイトを参考にして進めた。
  • 固定IP化:/etc/dhcpcd.confに以下を追記(ここの参考サイトはこちら)
    interface usb0
    static ip_address=192.168.0.9/24
  • dhcpcdサービス停止 - sudo systemctl disable dhcpcd SSHログインできなくなる
  • sudo systemctl disable keyboard-setup
  • sudo systemctl disable dphys-swapfile
  • sudo systemctl disable triggerhappy
  • sudo systemctl disable bluetooth
  • ここまで設定しても起動に1分30秒ぐらいかかる。

Raspbian Jessie Lite (2018/12/09)

  • Stretchでは起動時間が大きいので旧バージョンを試してみる。
  • 旧バージョンのRaspbianのダウンロードはこちら
  • インストールしたバージョン:2017-03-02-raspbian-jessie-lite
  • インストール手順はRaspbian Stretchと同じ。参考サイト:Raspberry Pi ZeroをUSBケーブル1本で遊べるようにする
    要点は、・config.txtとcmdline.txtを編集する。・bootディレクトリにsshファイルを作成する、です。
  • この時点で起動時間は25秒だった

Raspbian Jessie Lite の軽量化 (2018/12/09)

参考サイト:
Raspberry Pi Zeroを10秒以内で高速起動する最も簡単な方法
Raspbian stretch でIPアドレスを固定する方法
  • 固定IP化:/etc/network/interfaces に以下を追記
    allow-hotplug usb0
    iface usb0 inet static
    address 169.254.90.9
    netmask 255.255.0.0
    (gatewayの記述なし)
  • sudo systemctl disable dhcpcd
  • sudo systemctl disable dphys-swapfile
  • sudo systemctl disable keyboard-setup
  • sudo systemctl disable kbd
  • sudo systemctl disable triggerhappy
  • sudo systemctl disable plymouth
  • sudo systemctl disable plymouth-start (実行してもなにも効果ない?)
  • sudo systemctl disable ntp
  • /boot/cmdline.txt の行末に quiet を追加
  • /boot/config.txt に force_turbo=1 を追加
  • 起動時間は8.6秒ぐらいになった。

Raspbian Jessie Lite の設定 (2018/12/10)

Raspbian Jessieに改めて各種ソフトウエアのインストールと設定を行う。
  • wiringPi-8d188fa.tar.gz
MP3プレーヤのページに戻る トップページに戻る