さて、No.1でESP32 DEV Moduleの開発環境ができたのと、簡単な操作で慣れたところで、実際に今回は、温度と湿度センサーをつけてみましょう。
温湿度センサ
SHT31使用 高精度温湿度センサモジュールキット: 組立キット 秋月電子通商 電子部品
上記のページに取扱説明書と仕様書のリンクがあるので、まずは確認しましょう
温湿度センサとESP32 DEV Moduleをつなげます
ESP32 DEV Moduleと温湿度センサの接続は以下のようにしています
| ESP32 | SHT31 |
| 3V3 | 端子1 |
| IO21(SDA) | 端子2 |
| IO22(SCL) | 端子3 |
| – | 端子4 |
| GND | 端子5 |
センサーから温度と湿度を取得しましょう
VS CodeかArduinoIDEを立ち上げて、新規ファイルを作成しましょう。
setup()で、センサーに接続しに行きます。
SHT31のI2Cアドレスは、取扱説明書にのっている通り
今回は、ADRはopenにしているので、0x45です。
Wireは、I2Cと通信するライブラリです。
Wire.begin(21,22);
> SDA(データ)が、21でSCL(転送用クロック)22
I2Cの端子として21ピンと22を使う宣言をしています。
#include <Wire.h>
// Sensor address
#define SHT31_ADDR 0x45
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("setup");
Wire.begin(21,22); // I2C
}
測定コマンドを送ります。
コマンドコードは取扱説明書を確認。
取得できた温度測定値を取り出して、変換のための計算をして、シリアルモニタに出力します。変換のための計算式も取扱説明書にあります。
void loop() {
byte command[2] = { 0x24, 0x00 };
byte data[7];
Wire.beginTransmission(SHT31_ADDR);
Wire.write(command, sizeof(command));
Wire.endTransmission();
delay(300);
int i = 0;
Wire.requestFrom(SHT31_ADDR, 6);
while (Wire.available() && i < 6) {
data[i++] = Wire.read();
}
data[i] = 0;
float temp = -50.0 + (175.0 * (unsigned int)(data[0] * 256 + data[1]) / 65535.0);
float humidity = (100.0 * (unsigned int)(data[3] * 256 + data[4])) / 65535.0;
Serial.print(temp);
Serial.print(" , ");
Serial.println(humidity);
delay(5000);
}
これで、ESP32 DEV Moduleにアップロードしてみましょう
シリアルモニタに、温度と湿度が表示されました!
シリアルモニタは、Serial.begin(9600);としているので、9600bpsに設定してみてくださいね。
さて、次はhttp://Wifiに接続して、https通信をしてみましょう!