Arduinoと高精度温度センサをI2Cで接続しました

なにを学習するの?

  • 温度を高精度で測定するI2Cで通信する温度センサからの測定値をシリアルモニタに表示する方法をI2C通信方法の使い方を含めて学習します。

必要な部品は?

ADT7410 I2C (Adafruit社製 ADT7410搭載 高精度I2C温度センサモジュール)1個
Arduino UNO R31個
  • 回路図作成用のFritzingのデータを検索すると見つかりました。回路図(配線図)の作成に使用します。
関連する商品・製品の購入先は?

ADT7410搭載 高精度I2C温度センサモジュールのピン配置は?

端子番号端子名備考
VIN電源 (3V ~ 5V)
GNDグランド
SCLI2C データクロック
SDAI2C データ
A0I2Cアドレス設定用
6A1I2Cアドレス設定用
7INTオープンドレイン 割り込み出力
8CTオープンドレイン トリガー出力 (設定閾値による)

回路図 (配線図)は?

  • Fritzingで描いた回路図(配線図)と実際の配線です。

ADT7410搭載 高精度I2C温度センサモジュールを動作させるには?

  • Adafurui社のADT7410搭載 高精度I2C温度センサモジュールの使用方法が[Arduino | Analog Devices ADT7410 Breakout]で回路図やスケッチと共に丁寧に説明されています。
  • Adafruit社のライブラリはArduino IDEのライブラリ管理機能を使ってダウンロードできます。同時にダウロードされるスケッチをArduino IDEからArduino UNO R3に書き込んでシリアルモニタを起動すると測定した温度が摂氏と華氏で表示されます。

スケッチのコードは?

  • AdafruitのWebの手順に従って必要なライブラリをインストールし、同時にインストールされるスケッチ例を使います。
  1. [Adafruit ADT7410]ライブラリをインストールします。Arduino IDEのメニューから[ツール] -> [ライブラリを管理…]を選び、ライブラリマネージャーのダイアログで[Adafruit ADT7410]をインストールします。
  2. [Adafruit Unified Sensor Library]も同時にインストールされます。
  3. Arduino IDEのメニューから[ファイル] -> [スケッチ例] -> [Adafurui ADT7410 Library] -> [adt7410test]を選ぶとスケッチがロードされます。
関連するArdiono IDEにライブラリを追加する方法の記事
  • Serial.begin(115200)となっていましたが、初期値は9600にしていることが多いので9600に変えています。

/**************************************************************************/
/*!
This is a demo for the Adafruit ADT7410 breakout
----> http://www.adafruit.com/products/4089
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
*/
/**************************************************************************/

#include <Wire.h>
#include "Adafruit_ADT7410.h"

// Create the ADT7410 temperature sensor object
Adafruit_ADT7410 tempsensor = Adafruit_ADT7410();

void setup() {
  Serial.begin(9600);
  Serial.println("ADT7410 demo");
  
  // Make sure the sensor is found, you can also pass in a different i2c
  // address with tempsensor.begin(0x49) for example
  if (!tempsensor.begin()) {
    Serial.println("Couldn't find ADT7410!");
    while (1);
  }

  // sensor takes 250 ms to get first readings
  delay(250);
}

void loop() {
  // Read and print out the temperature, then convert to *F
  float c = tempsensor.readTempC();
  float f = c * 9.0 / 5.0 + 32;
  Serial.print("Temp: "); Serial.print(c); Serial.print("*C\t"); 
  Serial.print(f); Serial.println("*F");
  
  delay(1000);
}
  • スケッチはI2C用の[Wire.h]とADT7410用の[Adafruit_ADT7410.h]をインクルードしています。
#include <Wire.h>
#include "Adafruit_ADT7410.h"
  • ADT7410のインスタンスを作成しています。
Adafruit_ADT7410 tempsensor = Adafruit_ADT7410();
  • ADT7410の初期化をします。初期化に成功すればtrueを失敗すればfalseを返します。
tempsensor.begin()
  • ADT7410から摂氏で温度を読み取ります。華氏の数値は摂氏から計算して作ります。
tempsensor.readTempC()
  • 温度は一定期間測定してデータを保存し、変動を調べたい場合があります。データロガーシールドを使い、高精度温度センサのデータと時間データをSDカードに保存する方法を記事にまとめました。
温度センサのデータと時間データをSDカードに保存する方法?

ご質問、誤植の指摘などありましたら。「問い合わせ 」のページからお願いします。