· 2分で読了

ArduinoとESP32で作る空気質モニタリングアプリ(4)- WiFi編

この記事は中国語から自動翻訳されたものです。翻訳によりニュアンスが失われている場合があります。

この記事はシリーズ第4弾だ:

  1. センサー紹介編 - DHT11とMH-Z14A
  2. データ通信編 - UART(実装で使ったのはUARTなので、UARTの話だけ)
  3. Arduino 落とし穴編
  4. WiFi編:デバッグの時間を節約するため、元からWiFiとBluetooth機能を備えているESP32開発ボードを追加で購入した
  5. (未公開)MQTT編:データを他のデバイスに送信するため、軽量でコンパクトな通信プロトコルであるMQTTを使用した
  6. (未公開)Grafana / Web編:データベースに保存したデータは、もちろんイケてる見た目で可視化したい!ここではGrafana + Prometheus、そして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経由でセンサーデータ(温湿度、CO2濃度)をサーバーへ送信し、残りのロジックはすべてサーバー側に任せて処理することだ。MQTTについては、次回の記事でまとめて紹介する!

関連記事

他のトピックを探索