オカンハック

母親目線での「便利!」を備忘録的に書き溜めていこうと思います。

IT系夫婦がRaspberry Piをかじってみた。②LED制御編

こんにちは。カーチャンです。

小さなコンピュータ「Raspberry Piラズベリーパイ、略してラズパイ)」を操作するシリーズ、
第2回は電子工作の基本であるLED制御を行います。

外部機器を操作する基本を学びましょう。

=>関連記事
IT系夫婦がRaspberry Piをかじってみた。①導入編 - オカンハック
IT系エンジニア夫婦2人でRaspberry Piをかじってみました。③センサー制御編 - オカンハック

使用するパーツ

電子部品セットとジャンパーピン、ブレッドボードを購入しました。

ちなみにブレッドボードとは、実験用の基盤です。

下図のように、縦の穴同士が電気的につながっていて、電子部品を穴に差し込むだけで配線ができます。

ハンダが不要なので、何度でもやり直せます。

電子部品を繋ぐにはGPIO端子を使う

導入編では、カメラモジュールをつないでセットアップをしただけで、簡単にカメラが使えるようになりました。
では、センサーやLEDなどを使って自作した電子部品を制御するにはどうすればよいでしょうか?

ラズパイにはGPIO(general-purpose input/output:標準入出力)端子がついています。

ゲジゲジみたいな足が端子となっており、ジャンパー線で電子回路と繋ぐことができます。
上の段は左から 2、4、6……
下の段は左から 1、3、5……
とピン番号が振られています。

ピンにはそれぞれ役割があります。

f:id:okan89-blog:20190519230847p:plain
Raspberry Pi A/B GPIO端子

https://www.raspberrypi.org/documentation/usage/gpio/README.md

黒がGND(マイナス極)、赤および番号がないオレンジ色の丸がプラス極です。
上図で番号が振られた端子はGPIOピンと呼ばれプログラムから電気のON・OFFを制御したり、信号を受け取ったりすることができます。
ピン番号とGPIO番号がごっちゃになりがちですが、
ピン番号が物理位置、GPIO番号が論理的なアドレスと考えると良さそうです。

LEDを光らせる

それでは、電子工作の基本のキである「Lパカ(LED点灯)」をやってみます。

LED、そして電圧調整のための抵抗器を階段のように刺します。
この時、LEDの短い方の端子がGND(マイナス極側)になるように挿してください。

これで、LEDと抵抗器が直列つなぎになりました。

LEDは色によって抵抗値や流せる最大電流・電圧が異なります。*1
電圧が強すぎるとLEDやラズパイが壊れる恐れがあるし、
電圧が弱すぎると光りません。
そのため抵抗器を使って電圧を調整します。
抵抗値の計算は、オームの法則「E = IR」で求めます。
ここを参照してね。

中学で習った記憶「だけ」ある……

赤いコードを3番ピン(GPIO2)に、黒いコードを6番ピン(GND)に刺します。
光りました!

LEDを点滅させてみる

次はLパカをプログラムで制御して「Lチカ(LED点滅)」をやってみます。
参考にしたのはこちら。
プログラミング初心者でも簡単!Raspberry Pi + PythonでLチカさせる方法 | Tech Blog | 株式会社INDETAIL - インディテール

参考サイトではGPIO18(12番ピン)を使っていたので、
GPIO2(3番ピン)に書き換えて実行しました。
動画を貼り付けられないのが残念ですが、ちゃんとピカピカ点滅させることができました!

流れとしては、
最初に使用するピンを出力用に初期化し(GPIO.setup(18, GPIO.OUT))
ピンの電流をOn / Offし(GPIO.output(18, True))
最後にピンの定義を解放する(GPIO.cleanup())
処理となります。

これをたくさん並べて、それぞれの点滅時間を制御すれば、駅や店先で見かける電光掲示板を作ることができます。

まとめ

普段は別ジャンルの仕事をしているので、制御系プログラムを初めて書きました。

以前お世話になった元制御系プログラマさんが、
「電子部品はハードウェア設計者とソフトウェア設計者のチームプレイだからね。」
と、言っていましたが、確かにハードウェアとソフトウェアは一体だわ。ここだけの話、バグの押し付け合いでHWチームとSWチームで喧嘩になることもあるそうな。

次は、センサーを使ったプログラミングをします。