フェーズ4の3ボタンの実験です。ボタンを押すことで,ブラウザのプレーヤーをコントロールできるところまでいきました。
9. ステップ5:3ボタンへ増やす
1ボタンが成功したら、いったんシャットダウンします。
sudo shutdown -h now
電源を抜いてから、3ボタンに増やします。
配線はこれです。
GPIO17 ─ 1kΩ抵抗 ─ ボタン ─ GND
GPIO27 ─ 1kΩ抵抗 ─ ボタン ─ GND
GPIO22 ─ 1kΩ抵抗 ─ ボタン ─ GND
GNDは共通でかまいません。
ブレッドボード上では、GNDレールを作って、各ボタンをそこへ戻すとわかりやすいです。
GPIO17 → 抵抗 → ボタン → GNDレール
GPIO27 → 抵抗 → ボタン → GNDレール
GPIO22 → 抵抗 → ボタン → GNDレール
GPIO23は、今回は配線しません。
10. ステップ6:Pythonで3ボタンをテストする
電源を入れ、ターミナルを開きます。
3ボタンテスト用スクリプトを作ります。
nano ~/tanaradio/buttons3_test.py
中身はこれです。
from gpiozero import Button
from signal import pause
play_pause = Button(17, pull_up=True, bounce_time=0.08)
back_10 = Button(27, pull_up=True, bounce_time=0.08)
forward_10 = Button(22, pull_up=True, bounce_time=0.08)
def play_pause_pressed():
print("PLAY / PAUSE button pressed")
def back_10_pressed():
print("BACK 10 seconds button pressed")
def forward_10_pressed():
print("FORWARD 10 seconds button pressed")
play_pause.when_pressed = play_pause_pressed
back_10.when_pressed = back_10_pressed
forward_10.when_pressed = forward_10_pressed
print("3 button test is ready.")
pause()
実行します。
python3 ~/tanaradio/buttons3_test.py
それぞれのボタンを押して、次のように別々の表示が出れば成功です。
PLAY / PAUSE button pressed
BACK 10 seconds button pressed
FORWARD 10 seconds button pressed
ここまでできれば、GPIO入力実験は成功です。
フェーズ4の核心はかなり越えています。
11. うまくいかないときの確認
何も表示されない場合
確認することはこれです。
GPIO番号を間違えていないか
GNDにつながっているか
ボタンの向きが合っているか
抵抗が同じ列に刺さっていてショートしていないか
ブレッドボードの列を勘違いしていないか
まずはGPIO17の1ボタンに戻って確認してください。
3つ同時に直そうとすると、原因が見えにくくなります。
1回押しただけなのに何回も表示される場合
bounce_time を少し大きくします。
bounce_time=0.15
たとえば、3か所すべてを 0.15 にして試します。
押していないのに反応する場合
タクトスイッチの向きが怪しいです。
ブレッドボードの中央の溝をまたいでいるかを確認してください。
12. ステップ7:playerctlでChromium再生を操作する
次に、Chromium上のTanaRadio再生をコマンドで操作できるか試します。
これは最終形ではありません。
Chromiumなしのmpv版へ行く前の足場です。
まずインストールします。
sudo apt install -y playerctl
playerctl はMPRIS対応メディアプレイヤーをコマンドラインから制御するツールで、再生、一時停止、停止、前後トラックなどの操作ができます。
ChromiumでTanaRadioを開き、音声を再生します。
その状態でターミナルから試します。
playerctl status
再生中なら、
Playing
のように表示されます。
次に、
playerctl play-pause
これで再生/一時停止が切り替われば成功です。
10秒戻る/進むは、環境によって効き方が違う場合があります。まず試します。
playerctl position 10-
playerctl position 10+
効けば、そのまま使えます。
効かなければ、フェーズ4前半では「再生/一時停止だけ成功」と考えてよいです。
13. ステップ8:3ボタンでChromium再生を操作する
3ボタン操作用スクリプトを作ります。
nano ~/tanaradio/buttons3_playerctl.py
中身はこれです。
#!/usr/bin/env python3
from gpiozero import Button
from signal import pause
import subprocess
def run(command):
print(">", " ".join(command))
subprocess.run(command, check=False)
play_pause = Button(17, pull_up=True, bounce_time=0.08)
back_10 = Button(27, pull_up=True, bounce_time=0.08)
forward_10 = Button(22, pull_up=True, bounce_time=0.08)
def play_pause_pressed():
run(["playerctl", "play-pause"])
def back_10_pressed():
run(["playerctl", "position", "10-"])
def forward_10_pressed():
run(["playerctl", "position", "10+"])
play_pause.when_pressed = play_pause_pressed
back_10.when_pressed = back_10_pressed
forward_10.when_pressed = forward_10_pressed
print("TanaRadio 3 physical buttons are ready.")
pause()
実行します。
python3 ~/tanaradio/buttons3_playerctl.py
この状態で、3つのボタンを押します。
期待する動作はこれです。
GPIO17:再生/一時停止
GPIO27:10秒戻る
GPIO22:10秒進む
ここまでできれば、フェーズ4前半は成功です。
サマリー
Raspberry Piで3ボタンの物理的な配線と接続を完了し、Pythonスクリプトを用いて各ボタンの動作を個別にテストすることに成功しました。次に、playerctlツールをインストールし、Chromiumブラウザで再生中のTanaRadioの音声をコマンドラインから一時停止、再生、10秒前後に移動できることを確認しました。最終的に、物理ボタンとplayerctlコマンドを連携させるPythonスクリプトを作成し、3つのボタンでChromium上のTanaRadio再生を直接操作できる状態を実現しました。これにより、フェーズ4の前半が成功裏に完了しました。
コメント
このエピソードのトピック
すべてのトピック →それぞれのトピックから、ほかの番組の会話も探せます。
似ているエピソード
タイトル・AI要約・文字起こしの話題をもとにおすすめしています。
-
368 日記 | TanaRadioの音声ファイル再生をボタンで制御
TanaRadio
共通する話題: TanaRadio · Raspberry Pi · GPT Image 2.5
本エピソードでは、TanaRadioの音声再生システムをChromiumブラウザからmpvアプリケーションへ移行し、3つの物理ボタンで制御す...
-
365 日記 | 1ボタンの実験
TanaRadio
共通する話題: TanaRadio Pi · TanaRadio · Raspberry Pi
TanaRadio Piプロジェクトのフェーズ4が開始され、Raspberry Piをスイッチで制御する実験が始まりました。まず、Raspberry Piを...
-
374 日記 | 物理ボタンでプレイリスト再生を制御
TanaRadio
共通する話題: TanaRadio Pi · TanaRadio · Raspberry Pi
TanaRadio Pi製作シリーズのフェーズ5Dでは、既存の3つの物理ボタンでRSSプレイリストを操作することを目指しました。まず作業環...
-
386 日記 | 押しボタンを3つに増やす
TanaRadio
共通する話題: TanaRadio Pi · TanaRadio · Raspberry Pi
TanaRadio Pi製作シリーズの今回は、基板にプレイリストの前後移動用タクトスイッチ2つと抵抗2つを追加する作業が行われました。...
-
387 日記 | 押しボタンを5つに増やす
TanaRadio
共通する話題: TanaRadio Pi · TanaRadio · Raspberry Pi
TanaRadio Pi製作シリーズでは、押しボタンのタクトスイッチを2つ追加し、合計5つにする作業が行われました。まず基板にスイッチ...
-
12分でわかるAnchorのポッドキャスト配信の魅力すべて!
ポッドキャスト機材庫
番組づくり・配信の工夫 · Google Chrome · Radiotalk · Spotify
-
【pywebview】Todo改善とJSコードの解説④
神経質やせ男チャンネル
pywebview
-
クドラジSHORT初回失敗の原因とやり忘れた実験
アニメとAIで人生を楽しむラジオ|クドラジ
クドラジ · iPhone
-
#602 MECHATROLINK-4、ついに動きました
高橋クリスのFA_RADIO:工場自動化ポッドキャスト
共通する話題: Raspberry Pi · GPT Image 2.5
高橋氏は約3か月の開発を経て、Raspberry PiをマスターとしてMECHATROLINK-4でサーボアンプ1軸を動作させることに成功しました。...
-
URLハック対策!メモ参照制限完成
神経質やせ男チャンネル
Flaskで作成しているメモアプリに「参照制限機能」を実装。URLを直接入力して他人のメモを覗く“URLハック”を防ぐ仕組みと、自作4...