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); }