本記事はシリーズの第4回です:
- センサー紹介 - DHT11とMH-Z14A
- データ通信 - UART(実装ではUARTのみを使用するため、UARTのみについて説明します)
- Arduinoトラブルシューティング
- WiFiセクション:デバッグ時間を節約するために、ESP32開発ボードを追加で購入しました。ESP32にはWiFiとBluetoothの機能がすでに組み込まれています。
- (未公開)MQTTセクション:データを他のデバイスに送信するため、軽量で小さな通信プロトコルであるMQTTを使用しました。
- (未公開)Grafana / Webセクション:データをデータベースに保存するので、華やかな方法で表示します!ここでは、Grafana + PromethusおよびSvelteを使用してデータを表示します。
はじめに
通常、ArduinoでWiFi機能を実装するには、他の拡張モジュールが必要です。よく知られているチップはESP8266
です。ただし、ESP8266だけを購入する場合、すべてのピンを自分ではんだ付けする必要があり、データシートも自分で読み解く必要があります。WiFiの基本動作を理解したい場合、これは素晴らしい練習ですが、今回の目的はアイデア全体を実装することなので、WiFiとBluetoothの機能が組み込まれたESP32開発ボードを購入しました。
ESP32開発ボードにはWiFi機能だけでなく、GPIOピン、シリアルインターフェース、UARTも備わっており、Arduino IDEとの互換性もあり、開発も簡単です。したがって、Arduinoを使用しなくても、ESP32だけですべての機能を実行できます。
WiFi接続
#include "WiFi.h"
WiFiClient client;
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Wifi is connected!");
}
void loop()
{
}
WiFi
ライブラリを使用すると、WiFi接続を簡単に確立することができます。単にsetup
内でWiFi.mode
とWiFi.begin
を呼び出すだけです。ここでは再接続メカニズムを設定していないため、失敗した場合はArduinoを再起動する必要があるかもしれません。
WiFiに接続した後、できることはたくさんあります!HTTPサーバーの実行、サーバーにAPIを送信、センサーデータをデータベースに送信、リアルタイムモニタリングなどがあります。
ここでは、MQTTを使用してセンサーデータ(温度、湿度、二酸化炭素濃度)をサーバーに送信し、残りのロジックはすべてサーバーで処理することを目指しています。MQTTの詳細については、次回の記事で説明します!