今までRaspberry Pi 3A+にBME280をつなげて寝室の気温・湿度・気圧を測定していた1が、足を引っかけて壊してしまったので足を引っかけないように小型化することにした。 その際にBME280搭載の温湿度センサをXiao ESP32C6から使えるようにする方法を備忘録として残しておく。

使用部品

使用した部品は以下の通り。

配線図

配線図は以下の通り

配線図
配線図

最終的にXIAO ESP32C6のUSB Type-CポートにUSB ACアダプターを挿してコンセント経由で常時給電させた。 このときに使用した追加の部品は以下の通り。

画像の説明

完成図

コード

コードは以下の通り

#include <Wire.h>
#include <Adafruit_BME280.h>

Adafruit_BME280 bme;

void setup() {
  Serial.begin(115200);
  Wire.begin(22, 23);
  if (!bme.begin(0x76, &Wire)) {
    Serial.println("BME280 is not found!!");
    while(1) delay(10);
  }
}

void loop() {
  float temp = bme.readTemperature();
  float hum = bme.readHumidity();
  float press = bme.readPressure() / 100.0;
  Serial.printf("%.2f C, %.2f %%, %.2f hPa\n", temp, hum, press);
  delay(2000);
}

最終的にこのようにWiFi機能と組みあせて気温・湿度・気圧をJSONで返すWebサーバーを実装した。

https://github.com/jj1guj/room_metrics_prometheus/blob/master/server/bme280_server/bme280_server.ino

これを一定時間ごとにfetchしてPrometheusに送信するスクリプトを書いてGrafanaで表示できるようにしている。

https://github.com/jj1guj/room_metrics_prometheus/blob/master/client/main.py

Grafanaのメトリクス画面
Grafanaのメトリクス画面

感想

久しぶりにはんだ付けをしたらめちゃくちゃ下手になってて泣いた。 定期的にはんだ付けをするべき

ライブラリを使うと時短になってとてもよい。


  1. しかもGrafanaをデプロイしているサーバーからリモートGPIOを叩いて取得するとかいう訳のわからない方法をとっていて本当にめちゃくちゃでメンテナンス性最悪だった ↩︎