PythonでLEDを点滅させる ~その1~
前準備が完了したら、ここから電子工作に取り掛かります。
まずはLEDを点滅させるという非常にシンプルなものを作成します。
osoyooの「Raspberry Pi Starter Kit V1」を教材に進めていきます。詳細を知りたい方は下記ページにアクセスしてください↓
http://osoyoo.com/2017/10/09/raspberry-pi-starter-kit-v1-introduction/
ページにアクセスして下にスクロールすると様々な電子工作が紹介されています。ここではその中のLesson4に沿って解説していきます。
Lesson4では以下の流れで解説しています。
①RPi.GPIOライブラリがインストールされているかの確認
②IDLE(Development and Learning Environment)ツールの紹介
③LEDの配線方法
④IDLEを使ったプログラムの編集・実行
⓹コマンドライン(Terminal)を使ったプログラムの編集・実行
ここで、IDLEはRaspberry Piに最初からインストールされているPython用のツールで、コードの管理やデバグ(プログラムの不具合の発見と修正)をする上で大変便利です。ただ、osoyooのその他のLessonの内容を見ると、コマンドラインを使って解説を進めているのでここでは使用しません。よって、
① → ③ → ⓹
の順番で解説を進めていきます。
【RPi.GPIOライブラリがインストールされているか確認】
ひとつ前の記事で、C言語を使って電子工作をする場合は素子を制御するためにWiringPiというソフトウェアをインストールする必要がある、と述べました。RPi.GPIOはそのPython版と言えます。幸いなことに、2015-05-27以降にリリースされたRaspberry PiのOSであればこのRPi.GPIOのライブラリが既にインストールされています。まずはインストールが完了しているか、コマンドラインで確認しましょう。コマンドラインはトップ画面の左上のアイコンを左クリックすることで立ち上がります。
コマンドラインが立ち上がったら下記を入力します。
import RPi.GPIO
上記入力後、エラーが発生しなければPRi.GPIOは問題なくインストールされています。さらにバージョンを確認したい場合は下記を入力します。
RPi.GPIO.VERSION
以上でPRi.GPIOの確認は終了です。
【LEDの配線方法】
次はPython本体へのLEDの配線方法についてです。各素子はGPIOピンに配線していきます。GPIOはGeneral Purpose Input/Outputの略とのことで、言わばコンピュータが外部の電子機器とデジタル信号のやりとりをするための出入り口のようなものみたいです、、、。いまいち私も理解が及んでいませんが、とにかくコンピュータごとに出入り口となるピンの数と各ピンの名前が決まっていて、名前を指定することによってそのピンから信号を出力したり、信号を入力したりすることができます。私の説明よりも下記のサイトを参考にしたほうがいいかもしれません。
~参考URL~
http://denshikousaku.net/raspberry-pi-gpio-layout
Raspberry PiのGPIOは40ピンで構成されており、各ピンの名称は下の写真の通りです。例えば上から数えて12番目のピンの名前はGPIO18です。
補足を加えると、写真に書かれた番号はBCMというネーミングシステムで管理されているそうで、PythonはこのBCMに対応しています。C言語はWiringPiに対応しているので、使用する言語によってGPIOの各ピンの名前も変わることに注意してください。各ピンの対応関係は下記コードをコマンドラインで入力することで確認できるので、興味がある方は試してください。
gpio readall
ところで「こんなピンがたくさんあったら目的のピンを見つけるのも大変だし間違えそう!!」と思うかもしれませんが、安心してください。「Raspberry Pi Starter Kit V1」にはRaspberry Pi専用の拡張ボードが付属しており、この拡張ボードを使用すればひとめでピンの位置がわかります。
だいぶ前置きが長くなりましたが、LEDの配線に移ります。
簡易的な回路図は下記のとおりです。B17はRaspberry Piの11番目のピン、すなわち「GPIO 17」です。ここからデジタル信号が出力され、LEDが光ります。LEDは十分に電圧がかかった状態だと電気抵抗が0に近づくため、B17とGND(接地)が直接つながったような状態になり危険です(最悪Raspberry Piが壊れます)。なので、必ず200Ωの抵抗を入れましょう。また、LEDは一方向にしか電流が流れないのでB17に+側が繋がっていることも確認しましょう(足の長いほうが+側です)。
配線した様子は以下のとおりです。
以上で配線は完了です。
【コマンドライン(Terminal)を使ったプログラムの編集・実行】
ここからが最後のステップです。Pythonでプログラムを作成し、LEDを点滅させます。親切なことに、osoyooでは各LessonごとにPythonのコードを配布しています。下記コードをコマンドラインで入力することによりコードのダウンロードが可能です。
wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_4/pythontest.py
補足を加えると、wgetはwebからファイルをダウンロードするときに使われるコマンドで、後ろにURLを付け加えて使用します。
ダウンロードが完了したら、下記コマンドを入力してダウンロードしたコードを実行しましょう。
sudo python ./pythontest.py
sudoは管理者としてコマンドを実行するときに頭に付けます。pythonのコマンドラインでのプログラム実行は「python ファイル名.py」と入力します。
配線に問題がなく、プログラムが不具合なく動いていれば下の動画のようにLEDが点滅するはずです。
Raspberry PiにLEDを配線してPythonでLEDを点滅させるとこまでを解説しました。基本的に他のLessonもここで紹介したような手順で進むので簡単だと思います。しかし、一方でプログラムを作成する作業がまったくなかったので、「自分の手でLEDを点滅させた!」という実感もいまいち湧かなかったと思います。次回は、osoyooからダウンロードしたコードを読み解きながらPythonによるGPIOの制御について理解を深めていきたいと思います。
p.s.
毎年、恐竜博物館のすぐ近くで行われるというラリー選手権に行ってきました。今年はなんとTOYOTA現社長のモリゾウこと豊田章男さんも参加されていました。冬も行われるみたいでまた見に行きたいです(向かう途中の雪道で事故らなければいいですが)。