ESP32にTelnetを実装しようとしていた時に引っかかったので記録します。
問題
ESP32上でTelnet経由で文字列を送っていた時に、文字の更新間隔にラグがあることに気づいた。
何かが遅延していると考えPingを打ってみると
ESP32 からの応答: バイト数 =32 時間 =44ms TTL=255
ESP32 からの応答: バイト数 =32 時間 =270ms TTL=255
ESP32 からの応答: バイト数 =32 時間 =87ms TTL=255
ESP32 からの応答: バイト数 =32 時間 =312ms TTL=255
やっぱり何かが遅延している
原因
ESP32 ping slowで検索
一番上のサイトに直行
サイトのコードは所々スペルミスをしているので注意
調べてみた結果
原因はESP32がWiFi省電力モードに入っているために起こる遅延だったようです
対策
原因がWiFi省電力モードのため、そいつを無効化してやればいい
詳細はespサイトで説明してくれています。
省電力モードを無効化するためには、
#include "esp_wifi.h"
void setup(){
WiFi.mode(WIFI_MODE_STA);
WiFi.begin(ssid, password);
esp_wifi_set_ps(WIFI_PS_NONE);
}
みたいな感じでWiFi
の設定後にesp_wifi_set_ps(WIFI_PS_NONE)
を呼び出せば良いみたい。