[ESP32]固定IPアドレスでWifi接続する方法 with Arduino IDE

ESP32
スポンサーリンク

固定IPアドレスでWifiアクセスポイントに接続する方法 with Arduino IDE

開発環境

OS : Windows 11 Pro
ESP32:ESP-WROOM-32
統合開発環境 : Arduino IDE 2.3.2
Arduino core for the ESP32:2.0.17
使用ライブラリ:なし

使用パーツ

ESP32開発ボード(38Pin)

\最大12%ポイントアップ!/
Amazon
\ポイント最大46.5倍!/
楽天市場
\商品券4%還元!/
Yahooショッピング
\管理人おすすめ!/
Aliexpress

作業内容

スケッチ作成

固定IPアドレスを使用して無線ルーターに接続するサンプルコード。

使用API:WiFi.config() / WiFi.begin()

#include <WiFi.h>

const char* ssid     = "xxxxxxxx";
const char* password = "xxxxxxxx";
const IPAddress ip(192, 168, 11, 52);
const IPAddress gateway(192, 168, 11, 1);
const IPAddress subnet(255, 255, 255, 0);
const IPAddress dns1(192, 168, 11, 1);

void setup()
{
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  if (!WiFi.config(ip,gateway,subnet,dns1)){
      Serial.println("Failed to configure!");
  }
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop()
{
  // put your main code here, to run repeatedly:
}
コード説明

[ssid]と[password]の内容は変更します。

const char* ssid     = "xxxxxx";
const char* password = "xxxxxx";

固定IPアドレスを取得する場合は、WiFi.config()を使用します。

  if (!WiFi.config(ip,gateway,subnet,dns1)){
      Serial.println("Failed to configure!");
  }

引数

local_ipESP-WROOM-32に割り当てるIPアドレス
gatewayゲートウェイのIPアドレス
subnetサブネットマスク
dns1プライマリDNSサーバのIPアドレス。(オプション)
dns2セカンダリDNSサーバのIPアドレス。(オプション)

dns1,dns2はオプションのため指定しなくても良いですが、外部と通信する場合は必要になります。今回はdns1のみ指定しています。

Wi-Fi API - - — Arduino ESP32 latest documentation

動作確認

以下のようにシリアルモニタに表示されれば、接続完了です。

まとめ

今後Webサーバを立てた時など、利用者がIPアドレスを知りたいシステムを作る場合に便利だと思います。

また、家庭内の無線LAN接続機器を管理する上でも、常時接続しているものは固定IPアドレスにしていると何かと便利です。

Wifi切断時に自動で接続させる方法はこちら👇

コメント

  1. Masa より:

    固定IPアドレスのメリットとしては、DHCPからアドレス取得をする時間を省略できるため、接続時間が大幅に短縮される点ですね。
    時間の計測はしていないのですが、体感半分以下になっています。

    私はLightSleepに入れておいて10分おきに起床、温度を送信というアプリケーションを組んでいるのですが、
    リポバッテリーで運用していますので、Active時間をできる限り短くできるように、固定IP運用にしています。

    • farmsoft より:

      なるほど。接続時間の短縮にも固定IPアドレスは有効なのですね!
      時間がある時にでも計測してみます。
      LightSleepはまだ実装したことがないので、これも参考にさせていただきます。
      特にwifi関連は電力使いそうですし、その点でも固定IPアドレスは有効なのですね。

タイトルとURLをコピーしました