先日購入したラズベリーパイ4Bで、今後色々電子工作をやってみようかと思います。
手始めに、LEDを点灯させる「Lチカ」から始めてみました。
準備するものは下記の通りです。
・ラズパイ4B
・ブレッドボード
・可変抵抗(150Ω抵抗の代わり)
・ジャンピングワイヤー(オス-メス×2)
・LED
至ってシンプルな構成ですが、今回はこれだけの材料でLチカしたいと思います。
初めに
ラズパイのブロック図
ラズパイの回路について触れておきます。
電源はmicro USB TypeCの5Vで、直後に降圧のレギュレーターがあります。そこで3.3Vに降圧された電源がCPU(SoC)に供給されます。
つまり、CPUは5Vではなく、3.3Vで駆動しています。
当たり前ですが、青色の矢印は、データラインになります。GPIOやI2Cなどは、CPUからの指示で動いています。(書いてないけどストレージとメモリも同じくです。)
ちなみにGPIOの出力は3.3Vであり、流せる電流は基本「8mA前後」とされているので、大きな負荷は動かす事ができません。別途電源が必要になったりします。
GPIOのピン一覧
GPIOの配列は表のとおりで、GPIOを使用する場合は任意のポートを自由に使う事ができます。
色々ありますが、今回はLチカのみなので、GPIOポート1つとGNDのみを使います。
Lチカ
回路図の作成
LEDにそのまま電源をつなげば大きな電流がながれて故障してしまいます。
そこで、LEDの前(後でもOK)に抵抗をつけることで、流れる電流を制御します。
抵抗値を決めるには、使用するLEDのデータシートから「標準電流」と「VF(順方向電圧)」を調べます。
それを元に、抵抗値で消費する「電圧降下」を割り出します。(GPIOの3.3VからVfの値を引いた値)
後はそれを標準電流で割ってやると、最低値の抵抗値が割り出せます。
だいたい、割り出した値より大きめの抵抗を使うので、今回は150Ωを使用します。(可変抵抗)
ブレッドボードに回路作成
ブレッドボードに、回路図の通り部材を取り付けていきます。
今回は「GPIO4」を使います。ジャンパーピンでブレッドボードとつないで、そこから抵抗を通り、LEDを通ってGPIOのGNDに帰ります。
至って簡単です。
Lチカプログラムの作成
Python
PythonでLチカさせるプログラムを作成します。
Raspberry Pi4では、デフォルトで「Thonny」という開発環境があるので、それを使います。
ラズパイの待ち受け画面左上にあるプログラミングから「Thonny」を起動します。
下記のようにPythonで記述していきます。
1 2 3 4 5 6 7 8 9 10 11 |
inport RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.OUT) while True: GPIO.output(4,GPIO.HIGH) sleep(0.5) GPIO.output(4.GPIO.LOW) sleep(0.5) |
順に説明していくと、1.2行目は「import文」と呼ばれる記述になります。
1行目は、GPIOの機能を使う為に、このプログラムでは「GPIO」と、そのままの名前を使いますよと宣言しています。
2行目は「sleep」という命令を使いますよと宣言しています。これはプログラム実行時間の間隔を空けたりする場合に使います。今回の場合は後述する「点滅」に利用するためです。
4.5行目は「初期化処理」になります。
4行目でいうと、このプログラムでは「任意のGPIOポートをつかいますよ」と宣言しています。これによって、この後任意のGPIOを番号で命令することが可能になります。
5行目は、「GPIO4」を出力として使いますよと宣言しています。
のこりの記述は、プログラムを動かす本体となります。
While Trueは、ループの記述です。この記述後は、「字下げ」となり、4つスペースが空くことになります。その字下げされた部分が「ループされる範囲」になります。
初期化で宣言した通り、GPIO4の出力が使えるので、まず出力を「HIGH」にしています。つまり、3.3V出力です。LEDが点灯。
その後点灯したまま0.5秒スリープ(状態保持)これも2行目で宣言しているから使えるんですね。
その後GPIO4の出力を「LOW」に。LED消灯。
それを保持したまま0.5秒経過させる。
この後は字下げの先頭に戻り、同じ動作をループします。
終わりの無い記述なので、延々に続きます。終了させるときは、Thonnyで強制停止させます。
こんな感じになります↓
以上です、次回はタクトスイッチを利用したLチカをやってみます。