7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BluemixでIoT 温湿度、気圧を収集・蓄積・可視化+LED制御 その3

Last updated at Posted at 2016-03-30

##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を接続する。
   image 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」を選択する。
image

「A7 I2C Enable/Disable automatic loading」を選択する。
image

「<はい>」を選択する。
image

「<了解>」を選択する。
image

「<はい>」を選択する。
image

「<了解>」を選択する。
image

「<Finish>」を選択する。
image

「<はい>」を選択し、OSを再起動する。
image

③OS起動時にカーネルモジュールを自動的に読み込むために設定変更する。
/etc/modulesに、「i2c-dev」を追記する。

/etc/modules
・・・(略)
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)を作成する。

フルカラーLED点灯サンプルソース(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)に続く。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?