お父にゃんの電子工作 -22ページ目

お父にゃんの電子工作

暇なおじさんが、電子工作(主にラジオ製作)をして勝手な感想を書く

引き続き今回もRaspberry Pi Zero 2 Wをいじって、基本的な使い方を調べたい。

で、今回のテーマは

PCM5102を繋いで、MP3ファイルの再生

を試してみたい

 

いつものようにChatGPTに、PCM5102を繋いでmp3音源を再生するにはどうすれば良いか、聞いてみた。

 

まず接続を、このようにするよう、指示があった

BCK    GPIO18 (ピン12) - I2S BCLK
DIN    GPIO21 (ピン40) - I2S DIN
LRCK    GPIO19 (ピン35) - I2S LRCLK
SCK    未接続でOK (PCM5102内部で生成)

 

で、回路図はこちら

 

今回はロータリーエンコーダーとカラー液晶は使わないけど、いずれ使うので繋いでおく。

ブレッドボードでこんな感じ

とりあえず、イヤホンを挿して動作確認する。

 

次にI2Sドライバを有効化

テキストエディタで編集
sudo nano /boot/firmware/config.txt
 
ファイルを開いたら以下を追加: 
# PCM5102 用 I2S 設定
dtparam=i2s=on
dtoverlay=hifiberry-dac
 
保存してリブート
 
再生用の適当なファイルが無かったので、ここ↓からフリー音源をダウンロード

pastel_house.mp3と言う名前で保存。

 

リモート接続のRealVNCでは、ファイルの転送も出来るので、PCからRspberry Piのpythonファイルを収めている所に転送しておく。

 

ChatGPTによると、MP3再生にはpygame が安定していて軽量なのでおすすめです、ということなので、簡単なコードを書いてもらった

import pygame
import time
 
# 初期化
pygame.mixer.init()
 
#音量の制御
pygame.mixer.music.set_volume(0.3)  # 0.0〜1.0
 
# 音楽ファイルを読み込み (MP3 / AAC / WAV)
pygame.mixer.music.load("pastel_house.mp3")
 
# 再生 (ループ1回なら -1 にすると無限ループ)
pygame.mixer.music.play(-1)
 
# 再生時間分スリープ
while pygame.mixer.music.get_busy():
    time.sleep(1)
 
Thonnyにコピペして実行
 
最初、配線間違いで焦ったが、繋ぎなおしたらちゃんと動作した・・・・
と思ったら、再生速度が遅い!
え、なんで、と思ってChatGPTに訊いて色々試してみたが、全然治らない。
 
ネットで調べたら以下の記事があった。↓

 

どうやらPCMと前回試したpigpiodと競合が起きているらしい。

pigpioが、ヘッドフォンジャック出力との競合を避けるために、PWM用タイマーを使わずにPCM用タイマーを使ってPWM機能を提供しているので、今度はPCMと競合が起きているらしいのだ。しかもpigpioは常駐サービスなので、使っている意識がないときでも使ってる。

 

ああ、これを修正すれば解決できると思ったが、記事の中で編集する以下のファイル↓
/etc/systemd/system/pigpiod.service.d/public.conf
が現在のOSには無いのである。
記事は3年以上前で、今のOSとは異なるようなのである。
 
今度はChatGPTに、上記記事に有るように、ヘッドホンジャック出力は使わないので、pigpioがPWMタイマーを使う設定での起動とするには、どうすれば良いか訊いた。
 
試行錯誤の結果、オーバーライド設定ファイルを直接作る 以下の方法で上手く動作した。
sudo mkdir -p /etc/systemd/system/pigpiod.service.d
sudo nano /etc/systemd/system/pigpiod.service.d/override.conf
 
エディタが開いたら以下を記入
[Service]
ExecStart=
ExecStart=/usr/bin/pigpiod -t 0 -l

再起動して以下を実行
ps aux | grep pigpiod
 
出力に以下が含まれていればOK
/usr/bin/pigpiod -t 0 -l
 
今度は再生速度が正常になり、軽快な音楽が聞こえるようになった
 
まったく・・・何か動かそうとするたびに問題が起こる
素人にはなかなか厳しいものが有るのである。
 
だが、ようやくこれで、Webラジオを作るための下準備は出来た。
次回からようやくWebラジオを作っていきたいのである。
こんな調子で大丈夫だろうか?
 
 
「そんなことより、おいらを撫でたらどうニャ?」