🌡️

M5Stackを学ぶ その3-2(Wi-Fi接続、Ambient)

2024/07/06に公開

はじめに

更新頻度的に書くことがなくなってきたので割愛。

今回は前回作成した温湿度センサーをインターネットを通じて見れるようにしていきたいと思います。本格的にIoTの分野になってきました。

前回の記事はこちら
https://zenn.dev/nemophila/articles/9d90517275ebbc

1,Ambientについて

簡単にまとめると、取ってきたデータをインターネットを経由して取得してグラフとかにできるよってサイトです。めちゃめちゃ便利です。

サイトはこちら
https://ambidata.io/

登録してログインします。そして、チャンネルの作成をすることで使えるようになります。この辺りはコードを最初に見たほうがわかりやすいかと思います。

2,フローチャート

※ループの締める部分を付け忘れています。きちんと確認しながら進めましょう

今回のフローチャートはこちらになります

わかりやすいように多少コメントを付けさせていただきました。Wi-FiとAmbientへの接続はsetup()で行うため記載していません。あと、60000msは1分です。

3,ライブラリのインストール

今回もAmbientのライブラリのインストールが必要となります。「ambient」と検索して、「Ambient ESP32 ESP8266 lib」をAddしてください。

※ambientだけだと出てこない可能性があるのでAmbient ESP32で検索すると良いかもしれません。

4,コーディング

フローチャートの通りにコーディングを行っていくと以下のようなコードが出来上がります。

#include <M5Stack.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <WiFi.h>
#include <Ambient.h>

#define DHTPIN 21 // DHT11のデータピンに接続するM5Stackのピン
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

// Wi-Fi設定
const char* ssid = "your_SSID"; // Wi-FiのSSID
const char* password = "your_PASSWORD"; // Wi-Fiのパスワード

// Ambient設定
unsigned int channelId = your_CHANNEL_ID; // AmbientのチャネルID
const char* writeKey = "your_WRITE_KEY"; // Ambientのライトキー

WiFiClient client;
Ambient ambient;

void setup() {
  M5.begin();
  dht.begin();

  // Wi-Fi接続
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // Ambient初期化
  ambient.begin(channelId, writeKey, &client);

  // 画面の初期設定
  M5.Lcd.clear();
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(0, 20);
  M5.Lcd.print("Temperature and Humidity");
}

void loop() {
  // 温度と湿度の測定
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 測定結果を画面に表示
  M5.Lcd.clearDisplay();
  M5.Lcd.setCursor(0, 60);
  M5.Lcd.printf("Temperature: %.1f C", t);
  M5.Lcd.setCursor(0, 100);
  M5.Lcd.printf("Humidity: %.1f %%", h);

  // Ambientにデータを送信
  ambient.set(1, t); // データ1に温度をセット
  ambient.set(2, h); // データ2に湿度をセット
  ambient.send(); // データを送信

  // 1分(60000ミリ秒)待機
  delay(60000);
}

Wi-FiのSSIDとパスワード、それとAmbientにて作成したチャンネルの情報に書き換えてM5Stackに書き込みます。

成功していると、Ambientで作成したチャンネルで更新が行われます。デフォルトの結果だと、折れ線グラフになっていると思うので必要に応じて変更していきます。

今回はチャートの種類をメーター表示にしてみました。

5,おわりに

インターネットを使用してのモノづくりなので、IoTと呼べるものができたと私個人としては思います。細かい部分は調べながら行い、覚えることもまだまだ多いので頑張りたいと思います。

では、また次回お会いしましょう。お疲れさまでした。

※追記:記憶が正しければ、Ambientは1日に受信できる上限が3,000件だったはずなので気を付けながら利用しましょう。

Discussion