ラズベリーパイ(Raspberry Pi Zero WH)のGUI上で、IDLE(アイドル)という開発環境を使って、Python3(パイソン3)のプログラミングをすることができます。
最初はPython3でLEDを点滅させることを目標に、ラズベリーパイ(Raspberry Pi Zero WH)で電子工作をする方法をみていきましょう。
じゃあ、いよいよLチカやってみよ~
Lチカってなぁに?
LEDをチカチカさせるの
みんなが最初にトライするんだって
やったー! わくわく
準備するもの
1 | ラズベリーパイ(Raspberry pi zero WH) 詳しくは、こちらです。 初期設定・環境設定が済んだものを使用します。 | |
2 | microSDカード 8~32GB 詳しくは、こちらです。 | |
3 | microUSB電源ケーブル スマホの充電ケーブルでOKです。 詳しくは、こちらです。 | |
4 | パソコン microSDに書き込めるもの。 詳しくは、こちらです。 | |
5 | ブレッドボード 詳しくは、こちらです。 | |
6 | ジャンパーワイヤー 詳しくは、こちらです。 | |
7 | 抵抗 詳しくは、こちらです。 | |
8 | LED(発光ダイオード) 何色でもOKです。 詳しくは、こちらです。 |
回路図
今から組むLチカの簡単な回路図はこちらです。
3.3Vの電源から、抵抗とLEDを直列につないで、最後にGNDに接続しています。
GNDは、グラウンドと読み、電位の基準になります。乾電池のマイナスにつなぐイメージです。
抵抗の計算方法
今回、330Ωの抵抗を使いましたが、その計算方法を説明します。
まず、使用するLEDのデータシートやホームページの情報から、Vf(順方向電圧)とIf(標準電流)の値を探します。
LEDは、電圧がほぼ一定になる特徴があります。この電圧がVf(順方向電圧)です。
今回使用する赤い3mmのLEDの場合は、
Vf = 2.1V (下図の①)
If = 30mA = 0.030Aです。
ラズベリーパイ(Raspberry Pi Zero WH)のGPIOピン1本に流していい電流は8mAまでなので、0.008A(下図の②)の電流が流れる回路を考えます。
電源 3.3V - Vf 2.1V(①) = 1.2V(下図の③)が、抵抗Rにかかることが分かります。
この ②③の値を使って計算します。
オームの法則 V(電圧) = I(電流) × R(抵抗) から
R(抵抗) = V(電圧) ÷ I(電流)
= ③ 1.2[V] ÷ ② 0.008[A]
= 150 [Ω]
なので、150Ωより大きい抵抗を使う必要があることが分かります。
今回は、手元に330Ωの抵抗しかなかったので、少し大きいですがこの抵抗を使うことにしました。
オームの法則?
中学校で習うんだよ。
今はさらっと見てね。
配線方法
では、実際どんなふうに配線するのか、簡単な図で説明します。
ラズベリーパイ(Raspberry Pi Zero WH)のGPIO23(ピン番号は16番)とブレッドボードの抵抗をつなぎます。
抵抗とLEDがつながって、ラズベリーパイ(Raspberry Pi Zero WH)のグラウンドGND(ピン番号は6番)につながります(LEDの向きに注意です)。
ラズベリーパイ(Raspberry Pi Zero WH)のGPIOについては、こちらを参照してください。
写真で見るとこんなかんじです。ラズベリーパイ(Raspberry Pi Zero WH)のGPIOにジャンパーワイヤのメス側を挿して、オス側をブレッドボードに挿してつなぎます。
Python 3でプログラム作成
次にラズベリーパイ(Raspberry Pi Zero WH)上でプログラムを作っていきます。
ラズベリーパイ(Raspberry Pi Zero WH)を起動します。
メニューから、[プログラミング]-[Python 3(IDLE)]を選択します。
「Python X.X.X Shell」ウィンドウが表示されます。
メニューから[File]-[New File]を選択します。
以下のプログラムをコピーして、Vnc VeiwerのNew File画面にペーストします。
コメント(#)で、処理内容の説明を入れています。
#モジュールを読み込む
import RPi.GPIO as GPIO
import time
#GPIO番号の指定モードを設定(BCM:役割ピン番号、BOARD:PIN番号)
GPIO.setmode(GPIO.BCM) #BCMの方がプログラムの互換性がある
#23番ピンを出力として使用するように設定
GPIO.setup(23, GPIO.OUT)
try:
while True: #無限ループ
#23番ピンにHIGHを出力(LEDをON)
GPIO.output(23, GPIO.HIGH)
time.sleep(0.5) #0.5秒スリープ
#23番ピンにLOWを出力(LEDをOFF)
GPIO.output(23, GPIO.LOW)
time.sleep(0.5) #0.5秒スリープ
#キーボードからCtrl+C割込みが入ったら
except KeyboardInterrupt:
pass #何もせずに次の行へ
#GPIOの設定をリセット
GPIO.cleanup()
プログラムって難しそうだね
こうしてねって書いてるだけだから
一つずつ見て行けば大丈夫だよ
エンコーディング宣言について
Pythonのファイルに日本語を入力する場合、「coding: utf-8」といったエンコーディング宣言をしていましたが、デフォルトの文字コード(Python 3はUTF-8)を使用する場合は、書かないほうがいいようです。
ASCII (Python 2) や UTF-8 (Python 3) を使用しているファイルにはエンコーディング宣言を入れるべきではありません。
引用元:はじめに — pep8-ja 1.0 ドキュメント
メニューから[File]-[Save As]を選択し、ファイル名をたとえば「led01.py」とつけて保存します。
Python 3でプログラム実行
プログラムをペーストしたウィンドウのメニューから[Run]-[Run Module]を選択します。
「Python X.X.X Shell」ウィンドウに「RESTART」と表示され、プログラムが動いて、LEDが点滅します!
キーボードの[ctrl]+[c]を押すと、プログラムの実行が終了してLEDが消えます。
こちらが、実際に動いている動画です。
すごーい 光ったぁ
やった! 感激だね
まとめ
いかがでしたか? LEDはうまくチカチカしてくれたでしょうか?
実際に動くとほんと嬉しいですよね。
しかも、GUIで簡単に実行できるので、手軽に試せます。
以前は、コマンドラインからsudoコマンドで実行したり、いろいろ手間がかかったそうですが、どんどん進化して簡単に使えるようになっているようです。
次は、もう少し進んでスマホからきれいなお花を光らせたいと思います。