編集履歴一覧に戻る
akira.keiのアイコン画像

akira.kei が 2026年06月21日21時46分41秒 に編集

初版

タイトルの変更

+

Arduino IDEでI2C接続温湿度センサーを使う(その3):SHT31

タグの変更

+

Arduino

+

Arduino-IDE

+

ArduinoIDE

+

I2C

+

SHT31

記事種類の変更

+

セットアップや使用方法

ライセンスの変更

+

(MIT) The MIT License

本文の変更

+

[<前の記事](https://elchika.com/article/8774ff05-3369-44e4-8416-28d7db901f59/) : 次の記事> ## お次はSHT31を使ってみる AHT21B、SHT40iときて次は[SHT31](https://akizukidenshi.com/catalog/g/g112125/)だ。名前の冒頭にSHTが付いているSHT40iとほぼ同じような感じなんだが、より高精度なのかも知れない。これも機能は多いが単純な単発測定のみを使うような構成としておく。アドレスは0x44と0x45が切り替えられるので、2台を同じバスに接続できる。 ![SHT31モジュール](https://akizukidenshi.com/img/goods/L/112125.jpg) これも自前ライブラリの構成を同じにしてあるので、スケッチは名前違いでほぼ同じ内容になる。 ```Arduino:SHT31libTest.ino #include "Wire.h" #include "SHT31.h" SHT31 meas=SHT31(0x45); void setup() { Serial.begin(115200); Wire.begin(); meas.begin(); } byte cnt=0; void loop() { meas.measure(); Serial.print(cnt++); Serial.print(", SHT31, MEAS-T-H. "); Serial.print(meas.temperature()); Serial.print(", "); Serial.println(meas.humidity()); delay(1000); } ``` ## ライブラリ本体「SHT31.cpp」 ヘッダファイルの内容はSHT40iやAHT21Bと同じ(名前だけ違う)ので割愛して、ライブラリ本体の特徴点だけ以下に示す。[データシート](https://akizukidenshi.com/goodsaffix/Sensirion_Humidity_Sensors_SHT3x_DIS_Datasheet_V3_J.pdf)に基づき```begin```ではソフトウェアリセットをかけている。 ```Arduino:begin void SHT31::begin(void) { delay(100); Wire.beginTransmission(_adrs); Wire.write(0x30); Wire.write(0xA2); Wire.endTransmission(); delay(5); } ``` ```measure```では繰り返し精度「高」でクロックストレッチ無効の単発測定を指示している。クロックストレッチ無効なので、測定時間を```delay```で待ってからデータ取得を行なった。CRCのチェックはやっていない。 ```Arduino:measure void SHT31::measure(void) { Wire.beginTransmission(_adrs); Wire.write(0x24); Wire.write(0x00); Wire.endTransmission(); delay(15); Wire.requestFrom((int)_adrs,(int)6); byte i=0; while(Wire.available()) data[i++]=Wire.read(); Wire.endTransmission(); } ``` ```temperature()```および```humidity()```は共に```float```型の関数だが、将来的には固定小数点+シフト演算で考え直すかも知れない。 ![キャプションを入力できます](https://camo.elchika.com/a972077fd236dc69569d4527eb9d8e71af2d79ba/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f31353634626534302d343061342d343036612d626164612d623032646661326232613463/) 手元の温湿度計が「29.5℃、68%」なので精度はまぁまぁといたところか。どっちが合ってるのかは分からない。 --- [<前の記事](https://elchika.com/article/8774ff05-3369-44e4-8416-28d7db901f59/) : 次の記事>