smartio編集部のナガシマです。普段はバックエンドを担当しています。
第5話でも伝えておきます。超絶苦手な記事執筆を行います。もう1度言いますが、超絶苦手ですので、読みにくくてもご容赦ください。
第3、第4話でラズベリーパイの初期設定は完了です。なので、第5話ではラズベリーパイの仕組みを知るためにラズベリーパイとLEDを使ったテストをしていきます。
ロボットプロジェクトの図解
下記画像はロボットの音声操作ができるようになるまでのステップを簡潔にまとめた図解となります。
今日は上記図解の「3:ラズベリーパイ」を使ってLED点滅の仕組みを作ります。なぜLED点滅をすることになったかと言うと、ラズベリーパイからリレーボードを動作させる仕組みをつくる上でどのような流れで処理が行われているのかを知るためです。LED点滅の応用でリレーボードを動かすことになると思うので、前準備的な事になります。
これまでのプロジェクトに関する記事は、下記リンクから見れますのでどうぞご覧ください。
- ロボットの音声操作開発プロジェクト
この記事の目次クリックすると該当箇所へ飛べます。
1.ラズベリーパイとLEDの配線
まずは下準備です!ラズベリーパイとLEDの配線からやっていきます。
配線の作業をするときは必ず電源をOFFにしてから行いましょう。電源を完全OFFにするため物理的に電源を抜いてから作業するのが安全です。
ラズベリーパイでLEDを点灯させるのに必要な材料は、以下のものになります。
- Raspberry Pi 3 Model B(※初期設定済み)
- ジャンパー オスーメス 赤と黒
- 小型ブレッドボードパーツセット(LED点滅回路)
- 抵抗 100Ω (茶黒茶金) ※パーツセットに含まれているモノ
- LED ※パーツセットに含まれているモノ
ラズベリーパイとLEDの配線作業に入る前に、各パーツについて簡単に説明をしておきます。
- ジャンパー:回路をつなげるための導線
- 小型ブレッドボード:はんだ付けなしで回路を繋げられるボード
- 抵抗 100Ω (茶黒茶金):電流を抑える役目のモノ
小型ブレッドボードの注意点
ブレッドボードの縦穴(中央の溝を挟んで、縦に並んでいる5つの穴)は、内部でつながっています。回路をつなげるときは注意してください。
配線のつなぎ方は、先駆者さんの情報を頼りにつなげていきました。検証して動作確認済みです。(間違っていたら、すみません。)
それでは、配線のつなぎ方を説明します。
まず、ラズベリーパイの基盤から見ていきます。どこを使うかというと基盤の縦方向に2列で並んでいるピンです。いくつもあるピンのことを「GPIOピン」と呼びます。
次に、小型ブレッドボードなんですが、使う場所は青い数字や英語の枠内です。ジャンパーを指す場所は青枠内であれば大丈夫そうです。
今からやることは、ラズベリーパイのGPIOピンにジャンパーを指して、ブレッドボードにLEDと抵抗とジャンパーを指していきます。配線は以下の5つのステップで出来ます。
- LED の短い足、ジャンパワイヤ(黒)を、ブレッドボード上の同じ列に差す
- LED の長い足、抵抗の片側を、ブレッドボード上の同じ列に差す
- 抵抗の片側、ジャンパワイヤ(赤)を、ブレッドボード上の同じ列に差す
- 1のジャンパワイヤをラズベリーパイの22番ピン(GPIO25)に差す
- 2のジャンパワイヤをラズベリーパイの39番ピン(GND)に差す
ラズベリーパイのGPIOピンには、1つ1つで役割が異なるので、差す場所には気を付けてください。
配線後は以下の画像のようになります。ちょっと見にくくて、すみません。
以上で配線の作業は終わりです。ラズベリーパイの電源を入れておきます。次は、ラズベリーパイでLEDを光らせる方法です。
2.ラズベリーパイでLEDの点灯
ラズベリーパイを使ってLEDを光らせる準備はできたので、どうやってLEDを光らせるのか調べたところ、2つの方法で出来るそうです。
1つは「コマンド入力」を使ったやり方で、もう1つは「コード(プログラミング)」を使う方法でした。どちらもそんなに難しくなさそうだったので、2パターンやってみます。
コマンドでLEDを点灯
ラズベリーパイを起動して、コマンド入力画面(ターミナル)を開きます。最初は、ラズベリーパイでSSH接続です。以下のコマンドを入力して「ENTER」です。
「接続しますか」と質問されるので「yes」と入力し「ENTER」です。
接続が出来るとパスワードを入力するように促されるので、「pi」ユーザーのパスワードを入力し「ENTER」を押します。問題なく接続できれば以下の画面になります。
次に、以下2つのコマンドを実行します。各コマンドを入力後は「ENTER」です。
1つめのコマンドはGPIO25の初期化です。2つめのコマンドはGPIO25を出力モードに切り替えです。
次はLEDを光らせるコマンドです。以下のコマンドを入力し「ENTER」です。
問題なくコマンドが実行されればLEDは光ります。
LEDの点灯が出来たので次に消灯のコマンドを実行します。コマンド内容は以下です。
最後に、GPIO25の無効化コマンドを忘れないようにしてください。以下のコマンドで出来ます。
以上でコマンド入力でのLEDの点灯と消灯は終わりです。今度は、コード(プログラミング)でLEDを光らせるようにします。
コード(プログラミング)でLEDを点灯
LEDをコード(プログラミング)で光らせるのですが、何の言語で操作するかというと「Python(パイソン)」です。多くの先駆者たちがPythonでやっていたので、Pythonにしました。
※Python で「GPIO」を制御するためのライブラリ「RPi.GPIO」が必要なので、ライブラリをインストールです。RPi.GPIO は Raspbian(OS) に標準インストールされているので、基本的には、以下の2つのコマンドを実行するだけでOKです。各コマンドを入力後、「ENTER」で大丈夫です。
※「RPi.GPIO」をインストールする場合は下記コマンドを入力して「ENTER」です。
以上で、ライブラリの設定は完了です。次は、パイソンを実行するコード(プログラミング)を作っていきます。
ここからは、コードの作り方の話です。コードは2つの方法で作ることが出来ます。1つはコマンド(ターミナル)を使って作る方法で、2つ目はラズベリーパイ上でテキストエディタを使いファイル作る方法です。今回は、2つ目の方法で進めていきます。
まずは実行するファイルを作成して、作成したファイルのコードが実行できるかチェックします。手順は以下です。
ラズベリーパイを起動です。ファイルマネージャを開き、「pi」フォルダの中に「python_test」フォルダを作成します。作り方は、windowsと同じように右クリックを押してフォルダを作成しました。
次はテキストエディタを開き、「print("hello Light")」と入力です。保存するときは、ファイルの拡張子を「.py」にすること。保存場所は、先ほど作った「python_test」フォルダです。ファイル名は「light-python.py」にしました。
以上でファイルとコードの準備は完了です。ここからはコマンドを使いますので、コマンド入力画面(ターミナル)を開き、以下のコマンドを入力します。
実行後、コードに記述した内容「hello Light」が表示されれば成功です。ここまでくれば、あと少しです頑張ります!
次に、先ほど作成したファイル「light-python.py」を使って、LEDを光らせるコードを作っていきます。
まずはコード(プログラミング)を見てもらいましょう。まずいコードであればご指摘、お願いします。
コードの説明は上記の画像内コメントに記述していますので、割愛させていただきます。
上記のコードをファイル「light-python.py」に書き込み、保存です。これで、LEDを点灯させるコードの準備は完了なので、コマンド(ターミナル)に実行コマンドを入力して点灯するか確かめます!
さきほど同じコマンドを入力して、LEDが点灯するか確認です。
ラズベリーパイを使ってLEDの点灯が出来ました^ ^
— ながちゃん@Smartio😊 (@nagasmartio88) 2018年10月16日
まずは、ラズベリーパイのコマンド入力で点灯させてみました。
よし!この調子でコード(パイソン)からも点灯できるようにするぞ。
着々とロボット音声に近づいてきてる😁 pic.twitter.com/VPCBVeQqOp
コマンド実行後、問題なくLEDが点灯できれば成功です。以上で、コードでのLED点灯は終わりです。
おおお!コードでのLED点灯もうまくできた!この調子でLED点滅もやってみます。
次は、今作ったLEDの点灯コード(プログラミング)をちょっと改良して点滅パターンを作ります。
2.ラズベリーパイでLEDの点滅
ここからはLEDを扱ったプログラミングで登竜門と呼ばれるLEDチカチカ(点滅)、通称「Lチカ」のコード作成です。こちらもまずは、コード(プログラミング)を見てもらいましょう。まずいコードであればご指摘、お願いします。
点滅に関してもコードの説明は上記の画像内コメントに記述していますので、割愛させていただきます。
上記のコードをファイル「light-python.py」に書き込み、保存です。これで、LEDを点滅させるコードの準備は完了です。さっきと同じようにコマンド(ターミナル)で実行コマンドを入力して点灯するかやってみます。
ラズベリーパイでLチカ(LEDの点滅)ができた^ ^
— ながちゃん@Smartio😊 (@nagasmartio88) 2018年10月16日
プログラムはパイソンで書きました。
ここからだんだん難しくなりそうな予感。よし!次のアレクサとラズベリーパイの接続もやるぞ。 pic.twitter.com/h401i8Vrad
こちらも問題なくできました!LEDがチカチカと光ったときはとても嬉しかったです!
以上で、コードでのLED点滅は完成です。
今日はここまでにしておきます。これで、ラズベリーパイからの信号を基盤へ送る方法はわかったので、今度はアマゾンエコー(アレクサ)からラズベリーパイへの通信部分について作っていきます。
3.あとがき
ラズベリーパイを使ってLEDを光らせる方法は意外と簡単にできたので良かったです。所々で変なタイピングミスをしてコマンドが実行されないときがありましたね。その時は、ちょっと自分にイラっとしましたwww
今のところいい感じでやるべきことが出来ているのでこのまま順調に進んで欲しいです。
よし!これからが頑張りどころだと思うので良く食べて良く寝ますw
- ロボットの音声操作開発プロジェクト