いよいよフェーズ4。ボタンやつまみでTanaRadio Piを操作する第一歩を踏み出します。まずはボタン1つから。
4. ステップ1:Raspberry Piをシャットダウンする
配線前に、必ずシャットダウンします。
ターミナルで次を実行します。
sudo shutdown -h now
Raspberry Piの動作が止まったら、USB-C電源を抜きます。
ここで焦らないでください。
電源が入ったままGPIOを触るのは、初心者段階では避けた方がよいです。
5. ステップ2:ブレイクアウト基板を接続する
接続はこうです。
Raspberry Pi GPIO
↓
リボンケーブル
↓
ブレイクアウト基板
↓
ブレッドボード
注意点は、1番ピンの向きです。
ブレイクアウト基板には、たいてい次のような表示があります。
3V3
5V
GND
GPIO17
GPIO27
GPIO22
最初に確認するのはこの3つです。
GPIO17
GND
5Vの位置
5Vは使いません。
「どこが5Vか」を確認するのは、使うためではなく、避けるためです。
6. ステップ3:GPIO17の1ボタンだけ配線する
最初は1個だけです。
GPIO17 ─ 1kΩ抵抗 ─ ボタン ─ GND
ブレッドボード上では、次のような考え方です。
ブレイクアウト上のGPIO17
↓
ジャンパー線
↓
1kΩ抵抗
↓
ボタンの片側
↓
ボタンの反対側
↓
GND
タクトスイッチは、ブレッドボードの中央の溝をまたぐように挿します。
ここは大事です。向きを間違えると、押していないのに常時ONのようになることがあります。
7. ステップ4:Pythonで1ボタンをテストする
Raspberry Piの電源を入れます。
ターミナルを開いて、作業用フォルダを作ります。
mkdir -p ~/tanaradio
cd ~/tanaradio
必要なものを入れます。
sudo apt update
sudo apt install -y python3-gpiozero
1ボタンテスト用スクリプトを作ります。
nano ~/tanaradio/button17_test.py
中身はこれです。
from gpiozero import Button
from signal import pause
button = Button(17, pull_up=True, bounce_time=0.08)
def pressed():
print("GPIO17 button pressed")
button.when_pressed = pressed
print("GPIO17 button test is ready.")
pause()
保存して実行します。
python3 ~/tanaradio/button17_test.py
ボタンを押して、次のように表示されれば成功です。
GPIO17 button pressed
終了するときは、
Ctrl + C
です。
8. このスクリプトがしていること
この1ボタンテストは、こういう意味です。
GPIO17をボタン入力として使う
↓
ボタンが押されたら
↓
画面に文字を表示する
↓
プログラムは終了せず待ち続ける
重要なのはこの行です。
button = Button(17, pull_up=True, bounce_time=0.08)
これは、
GPIO17にボタンがつながっている
内部プルアップを使う
チャタリングを少し無視する
という意味です。
bounce_time は、物理ボタンの接点が細かく震えて1回の押下が複数回として読まれる現象を抑えるための指定です。gpiozero の Button には bounce_time などの引数が用意されています。
サマリー
TanaRadio Piプロジェクトのフェーズ4が開始され、Raspberry Piをスイッチで制御する実験が始まりました。まず、aspberry Piをシャットダウンし、ブレイクアウト基板を接続。次に、1つのボタンと1kΩの抵抗をGPIO17に配線しました。その後、ラズベリーパイを起動し、Pythonスクリプトを作成・実行。ボタンを押すと画面に「GPIO17 button pressed」と表示され、1ボタンのテストは成功裏に終了しました。
フェーズ4開始とラズベリーパイのシャットダウン
TanaRadio Piを作るシリーズですが、フェーズ3まで終わりまして、今回からフェーズ4に入っていきたいと思います。
フェーズ3というのは、Raspberry Piを使いまして、電源を入れるとLISTENのTanaRadioのページが自動的に開くというところまでやるというものでした。
今度フェーズの4に行きますと、いよいよ様々なスイッチやつまみを使ってこのRaspberry Piをコントロールするということで、TanaRadio Piがラジオ受信機ですね、ラジオっぽくなっていく第一歩のところとなります。
例によりまして、ChatGPTにマニュアルを作ってもらいましたので、その指示に従って進めていきたいのですが、まずステップ1です。
今フェーズ3の段階で実現しました、このLinuxマシンにしたものを既に組み立てというか周辺機器を接続しまして、OSを立ち上げているところですが、
フェーズ4のステップ1はRaspberry Piをシャットダウンするというものですので、これをシャットダウンしたいと思います。
簡単にメニューのログアウトからシャットダウンを選んでシャットダウンをします。
そうしますとRaspberry Piのランプが緑から赤に変わりました。
そうしましたらUSB-C電源を抜きますと書いてあるので抜いてみます。
基板からUSB-Cのケーブルを抜くんですが、
今基板が剥き出しになっていますのでなかなか抜きにくいですが、はい抜けました。
赤いランプも消えたということになります。
ブレイクアウト基板の接続
では次にステップ2、ブレイクアウト基板を接続するということで、
このブレイクアウト基板というのは、このRaspberry Piに40ピンの端子がついていまして、これがGPIOという名前だそうですが、
ここにいろんなものをつなげるといろんなことができるんですが、
いろいろと実験しやすいようにそこからブレイクアウト、つまり引き出すんですね。
線をつないで引き出して実験しやすいようなブレッドボードという実験用の基板に接続するんです。
どんな感じになっているかというと、
40本のケーブルというか電線がくっついた板状の帯状になったものがありまして、その先に40ピンに刺さるソケットがついていますので、
これを40ピンのところに差し込んでつなぎます。
はい、つなぎました。
その40本のケーブルはT型の基板につながっていまして、これは最初から作ってあるんですが、
そのT型の横棒の部分がケーブルがつながっていて、
横棒に、垂直に出ている細長い基板が左右に20本ずつのピンが並んでいて、これをブレッドボードという基板に差し込めるんですね。
これはあらかじめ差し込んでおいたので、
Raspberry Piの基板とブレッドボードが40本のケーブルでつながった状態になりました。
これが向きがおかしいと問題が起こるということなんですけれども、
一応このブレイクアウト基板の製品についていた説明書、これもネット上にあるものですけれども、
GitHubからダウンロードしたPDFの図を見て、こうだろうというふうにしていますので、
大丈夫だと思うんですが、その通りにやったつもりですが、
Chappyのマニュアルによると、注意点は1番ピンの向きですって書いてあるんですが、
どう言われてもどういう向きなのかがちょっとここではよくわかりません。
大丈夫だろうということで先に進みたいと思います。
1ボタンの配線
ステップ3はGPIO17の1ボタンだけ配線するということで、
ボタンを1個だけ取り付けて実験するということのようです。
つなぎ方ですが、ボタンを10個買いましたので、
送ってきたときは5個かなと思ったんですけど、
後からよく見たら10個入ってましたので、
前回の配信はちょっと間違った認識で語っていますけれども、
その10個の中から1個を袋から取り出すところです。
これはだいたい1cm角、1cm四方ぐらいの正方形の形をしたところに、
真ん中に押すことのできるボタンのスイッチが付いている形のもので、
足は4本出ています。カニのように。
左右に2本ずつ合計4本の足が出ていますが、
これをブレッドボードの真ん中に溝があるんですけど、
左右を分けているところの両側にかかるように今足を差し込みました。
ちょうどこの2本の足がブレッドボードの穴の3個分の距離のところにあるんですね。
3個分だから、3個のうちの両サイドに1本ずつ足が刺さって真ん中が空いているという形です。
まずボタンを固定して、ここに1kΩの抵抗をつないで、
それをさらにGPIO端子、ピンの17番につなげるということで、
つなぐのはこのジャンパー線という短い電線の両端に電極というか針金が付いているものがあります。
これが今束になっているのをちょっと紐を切ってばらしましたけれども、今使います。
それで抵抗をつながなければいけないんですが、
抵抗は3種類買いましたが、そのうちの1つの1kΩのもので、
袋に入っていますが、100本入っているということなので、
100本のうちの1本、間違えないように1kΩであることを確認して1本取り出しましたが、
これをどうやってブレッドボードに刺すか、一応ラジオペンチを持ってきましたので、
これで抵抗の左右に出ている電線をちょっと曲げまして、
1本をスイッチの足の1本に、もう1本を適当なところに刺しました。
そのもう1本の足のところにジャンパー線というのを刺しまして、
それをGPIOの17番に足しました。
これを間違えるといけないんですが、
なんせ基板に書いてあるピンの番号はむちゃくちゃ小さい1ミリぐらいの大きさなので、
老眼には大変厳しいものがあります。
これは蒸し眼鏡か何かを用意してみながらやらないと間違えそうですが、
大丈夫でしょう。
スイッチのもう1本の足はグラウンドに刺すということなので、
これをグラウンドと書いてあるにとりあえず刺しました。
これで一応接続はできたつもりです。
プログラムの作成と準備
スイッチと抵抗とそれからジャンパー線2本をつないだだけで、非常に単純な回路ですけれども、
ステップ3これで終わりということで、次はプログラムですね。
Raspberry Piの電源を入れてプログラムを書くということです。
電源を入れるために先ほど抜いたUSB-Cの電源ケーブルを基板に出します。
出しました。
今、起動中です。
今、TanaRadioの画面が出てきました。
一旦ブラウザーを閉じまして、ターミナルを開きます。
ブラウザー閉じなくてもよかったですね。
ここにChatGPTの画面を出したほうがよかったですかね。
ChatGPTはいちいちログインするのが大変なんですね。
といってプログラムを全部手打ちするのはしんどいので、
ChatGPTにログインしたほうがいいですかね。
2段階なので毎回どうですがしょうがないですね。
出てきました。
ChatGPTも最近は宣伝が多くなりましたね。
宣伝的なものがよく出てきます。
それで、ステップの4。
ステップの4。
やっと出てきました。
では、ステップの4でプログラムをこれから入れていきますが、
Raspberry Piのターミナルを開いたところまでやりました。
それで、まずは作業用フォルダを作る。
今、tanaradioというディレクトリをルート(正確にはユーザーのホームディレクトリ)に作りまして、そこに移動しました。
ここにインストールをするんですね。
python3-gpiozeroというプログラムなのかな。
以下のパッケージが自動でインストールされましたが、もう必要とされていません。
などと書いてありますが、ちょっとこれは放っておきましょう。
次に、ちょっと手打ちはもう疲れるので、
ChatGPTのやつをただ貼り付けることにします。
今、button17_test.pyというファイルを先ほどのtanaradioというフォルダに入れて開いたところですね。
ここにプログラムを入れるわけです。
中身はこれですと書いてあるのを、またコピー&ペーストでこっちに持ってきます。
保存すればよかった。
こういう単純なことがわからないんだな。
これからChatGPTに聞きます。
ファイルをコピーするにはどうすれば。
Ctrl-O、Enter、Ctrl-X、これでいいのかな。
ファイルは閉じたのですが、確認できますか。
catで中身を確認できました。
保存はできているみたいですね。
Ctrl-O,Enter,Ctrl-Xは覚えておかなきゃ。
ここまで来たらどうすれば。
4を今やっているんですね。
1ボタンでテストするということで。
それで実行だ。
こうするにはさっきのファイルをpython3というのの後に入れれば。
ボタンテストの成功と実験の終了
コピー&ペーストで貼り付けましたのでこれを実行してみましょう。
そうしたらばGPIO17 button test is readyと出る。
ここでボタンを押します。
そうするとGPIO17 button pressedという表示が出る。
出れば成功ということですが、今出ましたので成功です。
もう一回押してみましょう。
何度押しても出ますね。
ではこれでテストは終わりということでCtrl-Cで終了。
Ctrl-Cで終了。
またターミナルが元の状態に戻りましたね。
このスクリプトがしていることは何かというと、
GPIO17をボタン入力として使う。
ボタンを押されたら画面に文字を表示する。
プログラムは終了せず待ち続ける。
ということでCtrl-Cで強制的に終了したわけですね。
1ボタンはこれで成功したので、
次はボタンを3つに増やす実験をしますが、
だいぶ長くなりましたので、
今日のところはこれで終わりたいと思います。
それではまた。
32:21
コメント
スクロール