Share via


Windows IoT Coreで複数のI2Cセンサーを使う

以前のポストで幾つか、I2CセンサーをWindows 10 IoT Coreで制御する方法を紹介しました。I2Cに詳しい方はご存知のはずですが、I2Cでは、一つのバスに複数のセンサーデバイスの接続が可能です。
詳しくは、https://www.i2c-bus.org/ を見ていただくことにして、同一のI2Cにバスに接続されたセンサーデバイスは、1バイトのアドレスをそれぞれ持っているので、一つのアプリから複数のセンサーデータ取得が可能です。

各センサーのアドレスの値は、メーカーが公開しているデータシートに記載されています。例えば、WindowsOnDevices.comのサンプルとして紹介されている、ADXL345(加速度)は0x53、BoschのBME280(温度・湿度・大気圧)は0x76といった具合です。

このADXL345とBME280を同時にRaspberry PI2に接続する方法は、図の通り。

Raspberry PI2にあるGND、VDDはどれを使っても構いません。後は、

string aqs = I2cDevice.GetDeviceSelector("I2C1");
var dis = await DeviceInformation.FindAllAsync(aqs);
var settings = new I2cConnectionSettings(I2C_ADDR);
settings.BusSpeed = I2cBusSpeed.FastMode;
var sensor = await I2cDevice.FromIdAsync(dis[0].Id, settings);

 の3行目の、I2C_ADDRに使いたいセンサーのアドレスをセットすれば、センサー計測値を取得するための、I2cDeviceを取り出せます。
データの読み取り方法は、メーカーから公開されている、データシートを参考にしてくださいね。