キャリテク!マガジン
- TOP
- キャリテク!マガジン
- ラズパイで電子工作! 〜LEDの制御色々をやってみる〜(ラズパイで作ってみたコラム)
ラズパイで電子工作! 〜LEDの制御色々をやってみる〜(ラズパイで作ってみたコラム)
こんにちは、穂苅と申します。
ラズベリーパイ(ラズパイ)を使って電子工作やガジェットを作っていく、「ラズパイで作ってみたコラム」の4回目です。私自身は今までラズパイを触ったことがない初学者ですが、ラズパイにはとても興味がありましたので、この機会に自分の学習とともにお読みいただいている皆様にもお役に立てる情報を出していけたらと思っています。
『やさしくはじめるラズベリー・パイ 改訂2版』という書籍をベースに学習を進めます。
今回は、ブレッドボードを使ってLEDの制御をいくつか試してみました。今まではラズパイのソフトウェア上のテーマでしたが、この回からは実際の電子工作の方に進んでいきます。
ラズパイを使ってLEDの制御をするには?
まず、今回使う部品ですが以下のものです。
【今回使う電子部品】
- ブレッドボード
- 赤色LED
- カーボン抵抗器
- ジャンパワイヤ(オス – メス)2つ
私も初めてだったのですが、LEDの制御をする際にはラズパイの基盤とブレッドボードをうまく繋げることが必要です。ブレッドボードは、部品を差し込むことができる穴(ソケット)が沢山ある板で、電子回路の試作用の基板になります。ブレッドボードの穴はそれぞれ縦横に繋がっており、この繋がりを利用して部品同士を接続させて動かすということになります。
また、ジャンパワイヤというものでつなげのですが、これはブレッドボードに差し込むことができ、ラズパイの基盤とブレッドボードをつなげる際に使うものです。
その他、LEDライトは馴染みがあるものですが、足の部分がプラス(長い方)とマイナス(短い方)で異なるのでここを間違えないようにしたいです。
更に、抵抗器も使うのですが、これは電子部品を正しい電圧や電流で動かすためのものです。
電気の流れを抑えて一定の電気抵抗を得るために使われます。抵抗器を使わないと、LEDが壊れてしまうこともあるようなので忘れずに取り付ける必要があります。
そして、ラズパイのGPIOを使います。General Purpose Input/Output の略で、ラズパイ基盤の端にある剣山のようなものです。GPIOで面白いのは、それぞれのピンで機能が異なっており、とりあえず適当に繋げばよいということではない点です。英語のドキュメントしかなかったのですが、Raspberry Pi Foundationのページに説明がありました。
(参考:PIO pins – Raspberry Pi Foundation)
さて、これらを繋げてみると、写真のようになりました。分かりづらいのですがこれでラズパイの電源を入れるとLEDが光りました。
写真左側のラズパイの基盤の右上にある、ジャンパワイヤがつながっているものがGPIOです。そして写真右側がブレッドボードです。
もう1つやってみたのが、PythonでプログラムをしてLEDを制御するというものです。LEDを点滅させる、ラズパイの電子工作の一番シンプルなものです。
WiringPiというライブラリをインストールして進めるのですが、書籍のやり方だとうまく進められなかったので、ラズパイのターミナルから、git cloneをして進めました。
# WiringPiのダウンロード git clone https://github.com/WiringPi/WiringPi.git # WiringPiのディレクトリに移動 cd WiringPi # ソースコードをビルド ./build |
更に、ターミナルからGPIOを操作できるように設定します。
# GPIOのポート4を出力専用に設定 $ gpio -g mode 4 out # GPIOのポート4の値を1(HIGH)に設定 $ gpio -g write 4 1 # GPIOのポート4の値を0(LOW)に設定 $ gpio -g write 4 0 |
これをすると、ターミナルへの指示でLEDを入れたり消したりすることができます。HIGHに設定するコマンドを実行するとLEDが光り、LOWに設定するコマンドを実行するとLEDが消えるのです。
次に自動的にプログラムでLEDを操作してみました。ラズパイのテキストエディタを使ってPythonを書いていきます。私はラズパイにインストールしたVSCodeを使いました。また、ファイル名はLEDなので、led.py としました。
# LEDをチカチカするプログラム # GPIO等必要なモジュールを宣言(①) import RPi.GPIO as GPIO # GPIOを利用する import time # sleepを利用する PNO = 4 # 対象のGPIOポート番号 # GPIOの初期化(②) GPIO.setmode(GPIO.BCM) # BCMモードに設定 GPIO.setup(PNO, GPIO.OUT) # 指定ポートをoutに設定 # 10回繰り返す(③) for i in range(10): print("i=", i) GPIO.output(PNO, GPIO.HIGH) # 点灯(④) time.sleep(0.3) # 0.3秒待つ GPIO.output(PNO, GPIO.LOW) # 消灯 time.sleep(0.3) # 0.3秒待つ # クリーンアップ(⑤) GPIO.cleanup() |
このプログラムをターミナルから実行させると、LEDの制御ができるようになります。
# 上記のプログラムを保存した場所に移動 $ cd (上記のプログラムを保存した場所) # Pythonファイル実行 $ python3 led.py |
実行してみると、問題なくLEDの制御ができました。また、今回書いたプログラムを修正すれば様々なパターンを試してみることができます。
例えば、LEDの点滅のタイミングをもう少し遅くしたい場合は、
time.sleep(0.3) # 0.3秒待つ
の部分を0.3から変更すればよいわけです。
例えば1秒間隔にしたいならば、time.sleep(1.0) ですね。
その他繰り返す回数を10から変更してもいですし、いくつかやってみると面白いと思いました。
今回のまとめ
今回は、電子工作としてブレッドボードを使ってLEDの制御を行ってみました。これはラズパイの最初の最初だと思います。
次回からは、もう少し踏み込んだ電子工作とプログラミングを進めていきます。
ものづくりが好きな方や新しいことが好きな方はラズパイを手に取るととても楽しいです。こんなに小さい基盤にOSを入れて自分のPC経由で楽しんで学ぶことができると思いますのでおすすめです。
次回もお楽しみに。