「Raspberry Pi」はLinuxOS相当のOS上でブラウザ操作やプログラミングが直接可能でありながら、汎用入出力(GPIO)ピンを標準搭載しているため「センサー系」「駆動系」との接続、制御が容易に可能なコンピュータです。
そのため、プログラミング言語や、組み込み制御プログラミングを学習する目的や、IOTデバイスを自作する目的で購入する方が多いと思います。
この記事では、Pythonスクリプトから汎用入出力(GPIO)ピンを制御する方法を理解することを目的に、簡単な例としてLEDライトを点滅させる、LEDライトの光量を制御する方法を紹介します。
この記事では、Raspberry Piの購入後に実施する以下の2点について、書いています。 1. OS(Raspbian)インストール 2. 初期セットアップ この記事は以下のような方向けのものになります。 Raspberr[…]
この記事では、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)
用意するもの
・ブレッドボード × 1個
・LED素子 × 1~3個
・抵抗器 × 1~3個
・ジャンパワイヤ(+側、オスーメス) × 1~3本
・ジャンパワイヤ(-側、オスーオス) × 1~3本
・ジャンパワイヤ(-側、オスーメス) × 1本
※この記事で紹介する方法では、「Raspberry Pi本体」と「ブレッドボード 」以外は、「Kuman 35個 電子工作入門キット ラズベリーパイ」という商品に同梱されているものを使用しています。
「Kuman 35個 電子工作入門キット ラズベリーパイ」に同梱されているLED素子を使用する場合は付属の「CDチュートリアル」を参考に、抵抗値は220Ωのものを使用します。
ジャンパワイヤ(オスーメス)は、ジャンパワイヤ(オスーオス)とジャンパワイヤ(オスーメス)を組み合わせて作成します。
配線方法
- 「Raspberry Pi」のGPIOピン(g16, g20, g21)を、抵抗器(220Ω)を挟んで、「LED素子」のプラス側に接続する。
- 「Raspberry Pi」のグラウンド(GND)を、「LED素子」のマイナス側に接続する。
GPIOピンは16、20、21を使用していますが、任意に変更可能です。ただし、後ほど紹介するPythonスクリプトで指定するピン番号は使用したピン番号に対応させる必要があります。
(設計図)
(実際の配線イメージ)
(Raspberry Pi 3のピン配置)
※UART、I2C、SPI用のピンも使用可能です。
プログラミング
①LED素子の点滅
(Pythonスクリプト)
(実行コマンド)
・「RPi.GPIO.setup」メソッドの第一引数にGPIO番号、第二引数に「GPIO.OUT」を指定することで、指定したGPIOピンを出力モードに変更できます。
・「RPi.GPIO.output」メソッドの第二引数に「GPIO.HIGH」を指定することで電源ON(3.3V供給)、「GPIO.LOW」を指定することで電源OFFとなります。一定間隔ごとに電源ON/OFを繰り返すことで、LED素子を点滅させることができます。
(点滅イメージ)
②LED素子の光量制御
(Pythonスクリプト)
(実行コマンド)
(PWM制御とは、単位時間当たりに電源をON、OFFとする割合(デューティー比)を調整することで出力電圧を制御する方法です。出力電圧は電源の電圧値×デューティー比となります。
・「RPi.GPIO.PWM」で生成したオブジェクトの「start」メソッドでデューティー比の初期値を指定し、「ChangeDutyCycle」メソッドでデューティー比を変化させることで、LED素子の光量を制御できます。
(デューティー比には0~100の値を設定します。
(動作確認の様子)
関連記事
先日公開した記事ではロボット本体の組み立て方法について紹介しました。 この記事では組み立てたロボットを動作させるソフトウェアのプログラミング方法について紹介します。 開発環境は以下の通りです。 開発・制御用コンピュータ[…]