LoginSignup
3
2

More than 5 years have passed since last update.

ESP32でIPアドレス固定(ESP-IDF)

Last updated at Posted at 2018-10-03

はじめに

ESP-IDFのサンプルscan.cでは、DHCPで自動的にローカルIPアドレスが割り当てられた。
これを、自分で指定したいIPアドレスに設定してみる。

scan.cでWi-Fiの初期化とスキャンを行う部分はこうなっている。

scan.c
/* Initialize Wi-Fi as sta and set scan method */
static void wifi_scan(void)
{
    tcpip_adapter_init();
    ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));

    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_wifi_init(&cfg));
    wifi_config_t wifi_config = {
        .sta = {
            .ssid = DEFAULT_SSID,
            .password = DEFAULT_PWD,
            .scan_method = DEFAULT_SCAN_METHOD,
            .sort_method = DEFAULT_SORT_METHOD,
            .threshold.rssi = DEFAULT_RSSI,
            .threshold.authmode = DEFAULT_AUTHMODE,
        },
    };
    ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
    ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
    ESP_ERROR_CHECK(esp_wifi_start());
}

結果

〜(略)〜

I (3662) event: sta ip: 192.168.0.14, mask: 255.255.255.0, gw: 192.168.0.1
I (3662) scan: SYSTEM_EVENT_STA_GOT_IP
I (3662) scan: Got IP: 192.168.0.14

設定する

tcpip_adapter_init()の後でIPアドレスを設定する。

scan.c
/* Initialize Wi-Fi as sta and set scan method */
static void wifi_scan(void)
{
    tcpip_adapter_init();

    tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA);

    /* IPアドレスの設定 */
    tcpip_adapter_ip_info_t ipInfo;
    IP4_ADDR(&ipInfo.ip, 192,168,0,20);
    IP4_ADDR(&ipInfo.gw, 192,168,0,1);
    IP4_ADDR(&ipInfo.netmask, 255,255,255,0);
    tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &ipInfo);

    ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));

    /*    〜略〜    */
}

結果

〜(略)〜

I (1981) event: sta ip: 192.168.0.20, mask: 255.255.255.0, gw: 192.168.0.1
I (1981) scan: SYSTEM_EVENT_STA_GOT_IP
I (1981) scan: Got IP: 192.168.0.20

指定したIPアドレスになった。

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2