【ラズパイ入門】LEDライトの点滅、光量制御【Python】

「Raspberry Pi」はLinuxOS相当のOS上でブラウザ操作やプログラミングが直接可能でありながら、汎用入出力(GPIO)ピンを標準搭載しているため「センサー系」「駆動系」との接続、制御が容易に可能なコンピュータです。

そのため、プログラミング言語や、組み込み制御プログラミングを学習する目的や、IOTデバイスを自作する目的で購入する方が多いと思います。

この記事では、Pythonスクリプトから汎用入出力(GPIO)ピンを制御する方法を理解することを目的に、簡単な例としてLEDライトを点滅させる、LEDライトの光量を制御する方法を紹介します。

 

「Raspberry Pi」は以下の記事をもとに、OSのインストールと環境設定されていることを前提としています。
関連記事

この記事では、Raspberry Piの購入後に実施する以下の2点について、書いています。 1. OS(Raspbian)インストール 2. 初期セットアップ この記事は以下のような方向けのものになります。 Raspberr[…]

raspberry-pi-initial-set-up
関連記事

この記事では、Raspberry Pi 3 MODEL Bを対象に、ロボット製作に適した開発環境のセットアップ手順を紹介します。 このセットアップ手順を実行することで、以下の記事で紹介したようなロボット用のプログラミングが可能になりま[…]

make-jupyter-notebook
※「3. 主要なパッケージのインストール」までで、本記事に必要な「Python」「RPi.GPIO」がインストールされます。その他の設定は必須ではない認識ですが、省略した上で本記事で紹介するスクリプトが正常に動作するかは未検証です。
広告

 

動作確認済み環境


開発マシン: Raspberry Pi 3 MODEL B
OS: Raspbian Buster with desktop(Release date: 2019-09-26)
プログラミング言語: python2(version=2.7.16) or python3(version=3.7.3)

 

用意するもの


・Raspberry Pi本体 × 1個
・ブレッドボード × 1個
・LED素子 × 1~3個
・抵抗器 × 1~3個
・ジャンパワイヤ(+側、オスーメス) × 1~3本
・ジャンパワイヤ(-側、オスーオス) × 1~3本
・ジャンパワイヤ(-側、オスーメス) × 1本
※この記事で紹介する方法では、「Raspberry Pi本体」と「ブレッドボード 」以外は、「Kuman 35個 電子工作入門キット ラズベリーパイ」という商品に同梱されているものを使用しています。
抵抗器の抵抗値は、GPIOピンの出力電圧(3.3V)と、LED素子の最大定格電流から、オームの法則(電圧(V)=電流(I)×抵抗値(R))をもとに決定してください。最大定格電流を超える電流を流すとLED素子が故障する可能性があります。
「Kuman 35個 電子工作入門キット ラズベリーパイ」に同梱されているLED素子を使用する場合は付属の「CDチュートリアル」を参考に、抵抗値は220Ωのものを使用します。
ジャンパワイヤ(オスーメス)は、ジャンパワイヤ(オスーオス)とジャンパワイヤ(オスーメス)を組み合わせて作成します。

 

配線方法


  1. 「Raspberry Pi」のGPIOピン(g16, g20, g21)を、抵抗器(220Ω)を挟んで、「LED素子」のプラス側に接続する。
  2. 「Raspberry Pi」のグラウンド(GND)を、「LED素子」のマイナス側に接続する。
「LED素子」は、基本的に足が長い方がプラス側、短い方がマイナス側になります。
GPIOピンは16、20、21を使用していますが、任意に変更可能です。ただし、後ほど紹介するPythonスクリプトで指定するピン番号は使用したピン番号に対応させる必要があります。

(設計図)

led_blink

(実際の配線イメージ)

circuit_image

 

(Raspberry Pi 3のピン配置)

GPIO

※UART、I2C、SPI用のピンも使用可能です。

 

プログラミング


①LED素子の点滅

(Pythonスクリプト)

(実行コマンド)

・「RPi.GPIO.setmode」メソッドに「GPIO.BCM」を指定するとGPIO番号を指定するモード、「GPIO.BOARD」を指定するとRaspberry Piのピン番号を指定するモードになります。
・「RPi.GPIO.setup」メソッドの第一引数にGPIO番号、第二引数に「GPIO.OUT」を指定することで、指定したGPIOピンを出力モードに変更できます。
・「RPi.GPIO.output」メソッドの第二引数に「GPIO.HIGH」を指定することで電源ON(3.3V供給)、「GPIO.LOW」を指定することで電源OFFとなります。一定間隔ごとに電源ON/OFを繰り返すことで、LED素子を点滅させることができます。

(点滅イメージ)

led_blinking_image

広告

 

②LED素子の光量制御

(Pythonスクリプト)

(実行コマンド)

・「RPi.GPIO.PWMの第一引数にGPIO番号、第二引数に周波数を指定することで、GPIOピンからの出力電圧のPWM制御が可能になります。
(PWM制御とは、単位時間当たりに電源をON、OFFとする割合(デューティー比)を調整することで出力電圧を制御する方法です。出力電圧は電源の電圧値×デューティー比となります。
・「RPi.GPIO.PWM」で生成したオブジェクトの「start」メソッドでデューティー比の初期値を指定し、「ChangeDutyCycle」メソッドでデューティー比を変化させることで、LED素子の光量を制御できます。
(デューティー比には0~100の値を設定します。

(動作確認の様子)

led_intensity_control

 

関連記事


Raspberry Pi と市販のデバイスを組み合わせて、遠隔操作ロボットを作成した際の記事も以前に投稿しています。興味のある方はこちらもご覧ください。
関連記事

先日公開した記事ではロボット本体の組み立て方法について紹介しました。 この記事では組み立てたロボットを動作させるソフトウェアのプログラミング方法について紹介します。 開発環境は以下の通りです。 開発・制御用コンピュータ[…]

develop-robot-apps-env
広告