Penta creation

ホームへ
2016年12月14日

Raspberry Pi 3Bで温度センサー(MCP9808)

RTCモジュールに続き、温度センサーを試してみました。温度センサーはMCP9808 高精度温度センサ(I2C通信)を使用します。

I2Cの有効化

温度センサー(MCP9808)を使用するためには、I2C(アイ・スクエア・シー)を有効化する必要があります。I2Cは外部デバイスとやり取りするためのプロトコルの一つで、Raspberry Piは初期設定でI2Cが無効になっているので有効化します。詳細な設定方法は下記ページが非常に分かりやすいので、参考にしてください。



Raspberry Piと温度センサーの接続

I2Cを有効化したら、Raspberry Piと温度センサーを上図のように3.3V、GND、SDA、SCLにそれぞれ配線します。※Raspberry Pi 3Bのピンの並びは下図の通りです。
配線したら「i2cdetect」コマンドで接続を確認します。18が表示されればOKです。

$ i2cdetect -y 1

温度データの取得

Raspberry Pi 3BのProcessingで、温度センサーからデータを取得します。温度センサー(MCP9808)はAdafruit製でArduino環境、または、Raspberry PiのPython用にはライブラリが提供されていますが、Processing用のライブラリはないので、I2Cからバイトデータを取得して加工する必要があります。

import processing.io.*;
I2C i2c;

void setup() {
  i2c = new I2C(i2C.list()[0]);
}

void draw() {

  //I2Cでデータを取得
  i2c.beginTransmission(0x18);
  i2c.write(0x05);
  byte[] v = i2c.read(2);
  i2c.endTransmission();

  //バイトデータを加工
  int temp = ((v[0] & 0x1F) * 256 + (v[1] & 0xFF));
  if(temp > 4095){
    temp -= 8192; 
  }
  float tempC = temp * 0.0625;

  //温度データを出力
  println(tempC);
}
前の記事へ

Raspberry Pi 3BでRTC(リアルタイムクロック)

次の記事へ

Raspberry Pi 3Bで音声認識

ページトップへ