第11回: GPIOでLチカ

GPIOと呼ばれるピンヘッダを備えているのがラズパイの特長で、UARTやI2Cなどのインターフェースを通じて様々な者を接続してコントロールできます。

今更ながらの感がありますが、まずはLEDを光らせることに挑戦してみます。通称Lチカ。

 

1. WiringPiのインストール

本完全ガイドですが、ラズパイ3にRaspbian Streatch Liteをインストールするところから始まりました。Liteは最低限のプログラムしかインストールしないため、GPIOコントロールの定番ライブラリWiringPiすら入っていません。

そんなときはインストール。

 

2. GPIOピンマップとファンクション

インストールするとgpioというコマンドを使えるようになります。

GPIOのピンマップとファンクションを見るコマンドgpio readallを実行してみます。

 

中央のカラムPhysicalは、ラズパイのピンヘッダの番号で、見た目通りの順番に、左上が1,右下が40です。ややこしいのは、Physicalの番号の他に、WiringPiの番号であるwPiと、CPUのピン番号であるBCMの3通りあってバラバラ。何の何番なのか混同しないように注意しましょう。

特別な機能を持ったピンがいくつかあります。例えば、Physicalの8と10は、それぞれTxD及びRxDに割り当てられています。これはGPIOでUARTを使うときに使用します。また、Physicalの3と5は、SDA及びSCLに割り当てられています。これはI2Cという通信規格のデバイスを接続するために使用するピンです。

Modeはピンの入出力設定です。

3. LEDの配線

LEDと適当なGPIOピンを接続します。今回は、Physicalの11、BCMの17を使います。

配線は次のとおりです。

ラズパイのGPIOは1本当たり最大16mAの電流しか流すことが出来ません。よって、電流を制限する抵抗をLEDと直列に入れる必要があります。LEDを3.3Vの電圧で駆動するならば、抵抗値をざっくりと次式で計算できます。

抵抗値 = (3.3 - 2.0) * 100 = 130 [Ω]

2.0はLEDの順方向電圧[V]で、LEDの色や型式で異なり、正確にはLEDのデータシート等を読む必要がありますが、一般的なLEDなら、2.0ぐらいで良いかと思います。

この式で抵抗値を決定すると、LEDに流れる電流が10mA程度になります。なお、130Ωなんて都合の良い抵抗は無いので、それより大きめの抵抗、例えば220Ωとか300Ωなどを選べばOKです。抵抗を大きくすると流れる電流がより小さくなり、ラズパイの電流制限を超過する心配がありません。なお、電流制限によりLEDの光量が低下しますが、少々電流を絞ったところで、見た目はさほど変わりません。私は300Ωで実験しました。

 

4. WiringPiでLチカ

GPIOポートの入出力の設定や、出力ピンの状態を1(3.3V)や0(0V)に設定できます。

LEDを接続したピンを、出力に設定してみます。
番号指定は2通りあります。-gオプションありでBCM番号、なしでwPi番号です。

 

ピンの状態を確認すると、Physicalの11のModeがOutになりました。

 

1(3.3V)を出力してLEDを点灯させるコマンドです。

黄色いの光った!

 

0(0V)を出力してLEDを消灯させるコマンドです。

 

ちなみに、入力ピンの状態を取得するのは、次のコマンドです。

 

LEDはAmazonでお安くいっぱい買えます。

 

ラズパイのピンヘッダとブレッドボードを繋ぐのは、一方がオス、もう一方がメスのジャンパ線で。
束なって連結していますが、1本1本を簡単に切り離せます。


目次

第1回: セットアップに必要なもの
第2回: SDカードにRaspbianをインストールする
第3回: 起動!
第4回: リモートログインするための設定
第5回: リモートログインして設定を続行する
第6回: パッケージ管理システムapt
第7回: RSA公開鍵認証でリモートログインする
第8回: Pythonの仮想環境を整える
第9回: MJPG-streamerを導入する
第10回: GPIOを汎用UARTとして使用する方法
第11回: GPIOでLチカ
第12回: I2CデバイスBME280で温湿度と気圧をモニタする

第13回: (未定)


2019/06/20: 初版

Leave a Comment

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください