##0.はじめに
前回の続きです。今回は、センサとLEDをブレッドボードでRaspberry Piに接続します。簡単な動作確認までを範囲とします。
1.必要なもの(今回準備したもの)
項目 | 数量 | メモ |
---|---|---|
ブレッドボード | 1個 | ブレッドボード BB-102 |
温度・湿度・気圧センサ | 1個 | BME280使用 温湿度・気圧センサ(AE-BME280) |
ハンダごて | 1個 | 電子工作用はんだこてセット(X-2000E) |
はんだ | 1個 | 高密度集積基板用はんだ |
フルカラーLED | 1個 | RGBフルカラーLED(OSTA5131A) |
ジャンパーワイヤ(固い) | 1セット | ジャンパーワイヤ(EIC-J-L) |
ジャンパーワイヤ(柔かい) | 1セット | ジャンパーワイヤ(オス-メス) |
抵抗 51Ω | 1セット | カーボン抵抗(炭素皮膜抵抗)1/2W 51Ω(100本入) |
抵抗 68Ω | 1セット | カーボン抵抗(炭素皮膜抵抗)1/2W 68Ω(100本入) |
抵抗 330Ω | 1セット | カーボン抵抗(炭素皮膜抵抗)1/2W 330Ω(100本入) |
##2.参考にさせていただいたところ
第39回「ラズベリーパイで温度・湿度・気圧をまとめて取得!AE-BME280でIC2通信」
https://github.com/karuru6225/bme280i2c(BME280 I2C用Node.jsソース)
[Raspberry Pi 2] フルカラーLチカ
LED抵抗値計算
##3.センサ・LEDの準備
手順を書こうとしたところ、すでに記載されているサイトがありましたので、こちらを参照ください。
①BME280本体とピンヘッダをハンダ付けをする。
②BME280本体のジャンパ(J3)をハンダ付けをする。
こちらのセンサは、通信方式が2種類(I2C、SPI)をサポートしています。
今回はI2Cを使用します。その場合は、ジャンパ(J3)部分を接続する必要があるため、
ハンダ付けが必要になります。
③フルカラーLED(OSTA5131A)に必要な抵抗値を求める。
●抵抗値を求める計算式
(電源電圧[V] - 順方向電圧降下(VF)[V]) ÷ 順方向電流(IF)[A] = 抵抗値[Ω]
VFとIF条件をhttp://akizukidenshi.com/catalog/g/gI-02476/ より抽出
☆IF=20mA(標準電流は20mA以下と記載されている)
VF(IF=20mAを標準として算出されている)
☆赤のVF:2.0V
☆緑のVF:3.6V
☆青のVF:3.6V
☆電源電圧=3.3V(Raspberry PiのGPIOポートの電圧)
上記5つの☆条件を元に、計算する。
赤の抵抗:(3.3-2.0)/(20*(1/1000))=1.3/0.02=65Ω
緑の抵抗:(3.3-3.6) この時点でマイナスなので、抵抗なし
青の抵抗:(3.3-3.6) この時点でマイナスなので、抵抗なし
よって、赤だけ抵抗が65Ω必要となります。
※補足
LEDのページに記載されている20mAにおける各色の輝度を見ると、下記のように赤・緑・青の明るさがそろっていません。
◆輝度(IF=20mAにおける標準値):
・赤:2000mcd
・緑:7000mcd
・青:2500mcd
そのため、このまま実行すると、各色の明るさがバラバラになってしまうので、
緑に330Ω、青に51Ωをつけて、明るさを微調整しました。
##4.Raspberry Piとセンサ・LEDを接続
①BME280センサを接続する。
[AE-BME280] | 結線 | [ラズパイGPIO] |
---|---|---|
1番ピン(VDD) | <----> | 1番ピン(3.3v DC Power) |
2番ピン(GND) | <----> | 6番ピン(Ground) |
3番ピン(CSB) | 未使用 | N/A |
4番ピン(SDI) | <----> | 3番ピン(SDA1,I2C) |
5番ピン(SDO) | <----> | 6番ピン(Ground) |
6番ピン(SCK) | <----> | 5番ピン(SCL1,I2C) |
接続図は、前述のこちらを参照ください
②フルカラーLEDを接続する。
RGBフルカラーLED(OSTA5131A)の図
●一番長い部分はカソード。
●右側が赤色LED
●左側が緑色LED
●緑とカソードの間が青色LED
[OSTA5131A] | 結線 | [ラズパイGPIO] |
---|---|---|
赤 | <- 抵抗68Ω -> | 15番ピン(GPIO 22) |
カソード | <-------> | 14番ピン(Ground) |
青 | <- 抵抗51Ω -> | 12番ピン(GPIO 18) |
緑 | <-抵抗330Ω-> | 16番ピン(GPIO 23) |
##5.Raspberry Piの準備 | ||
①OSを最新状態にする。 | ||
次のコマンドを実行し、全て完了後に再起動する。 |
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo rpi-update
sudo reboot
②I2Cの設定を有効にする。
sudo raspi-config
「8 Advanced Options Configure advanced settings」を選択する。
「A7 I2C Enable/Disable automatic loading」を選択する。
③OS起動時にカーネルモジュールを自動的に読み込むために設定変更する。
/etc/modulesに、「i2c-dev」を追記する。
・・・(略)
i2c-dev
設定変更後、sudo rebootコマンドにてOSを再起動する。
④I2C関連コマンドをインストールする。
sudo apt-get install i2c-tools
⑤確認用のpython-smbusをインストールする。
sudo apt-get install python-smbus
##5.BME280センサの動作確認
①センサが読み込めるかを確認する。
sudo i2cdetect -y 1
次のメッセージが出力されていれば、正しく認識されています。
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
②サンプルプログラム(bme280_sample.py)を実行する。
こちらにも記載されていますが、スイッチサイエンスさんにてPython用のサンプルソースが公開されていますので、こちらをそのまま利用します。
bme280_sample.pyをダウンロードし、実行します。
sudo python bme280_sample.py
temp : 28.18 ℃
pressure : 995.69 hPa
hum : 60.62 %
##6.フルカラーLEDの動作確認
①赤、緑、青がそれぞれを1回ずつ点灯させるサンプルPythonソース(color.py)を作成する。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
for x in range(1):
GPIO.output(22, GPIO.HIGH)
time.sleep(1)
GPIO.output(22, GPIO.LOW)
time.sleep(1)
for x in range(1):
GPIO.output(23, GPIO.HIGH)
time.sleep(1)
GPIO.output(23, GPIO.LOW)
time.sleep(1)
for x in range(1):
GPIO.output(18, GPIO.HIGH)
time.sleep(1)
GPIO.output(18, GPIO.LOW)
time.sleep(1)
GPIO.cleanup()
②Pythonソースを実行する。
sudo python color.py
赤 => 緑 => 青の順でそれぞれ1秒ずつ点灯すれば、確認完了です。
以上で、BME280センサとLEDの確認は完了となります。
次回(その4)に続く。