ESP32-DevKitCをWi-Fi中継機にする

先日、「ESPr Developer」に「esp_wifi_repeater」というファームウェアを書き込み、ESPr DeveloperをWi-Fi中継機として利用できるようにしてみました。
機能的には特に問題もなく、若干通信速度が遅くはありますが、ESPr DeveloperをWi-Fi中継機として使えることが確認できました。

ただ、しばらく使っていると、結構頻繁にこの中継機へのWi-Fi接続が解除されてしまうことに気づきました。
ファームウェアのダウンロードページ(GitHub)には「インターネットアクセス中に最大170mAの電流スパイクが発生するため、動作が不安定な場合は電源−グランド間に大きなキャパシタを入れるように」との注意書きもあり、この電流スパイクが原因で動作が不安定になっている可能性があります。

今回はWi-Fi中継機を屋外(畑)に設置しようと考えており、「ソーラーパネルで稼働させるため、電源は不安定となる可能性が大きい」「将来的には複数台の中継機を設置する可能性もあり、外付け部品をつけるのは面倒」という事情があります。

何か他に良い方策がないか調べていたところ、「esp_wifi_repeater」の開発者の方が、「ESP32」をWi-Fi中継機にすることができる「esp32_nat_router」というファームウェアも公開しておられました。
使用するハードウェア(マイコンボード)が異なるため、電源ノイズの問題も発生しない可能性があります。そんな訳で今回は、手持ちの「ESP32-DevKitC」に「esp32_nat_router」を書き込み、実際に使うことができるか確認してみることにしました。



ちなみに、作業手順はESPr DeveloperをWi-Fi中継機にした時とほとんど同じです。

ESP32-DevKitCへの「esp32_nat_router」書き込み

「Flash Download Tools」はWindows版しか提供されていないため、この項の作業はWindows PCで実施します。

  • GitHubの こちら のページから「esp32_nat_router」のZIPファイルをダウンロードし、解凍しておきます。
  • Espressif SystemsのWebサイト(こちら)から「Flash Download Tools」をダウンロードし、解凍します。
  • 解凍した中にある「flash_download_tool_X.X.X.exe」を実行します。
  • 「Chip Type」で「ESP32」、「Work Mode」で「develop」を選択して「OK」をクリックします。
  • ESP32-DevKitCとPCをUSBでつなぎます。
  • 先ほどダウンロードした「esp32_nat_router」の中にある「bootloader.bin」「esp32_nat_router.bin」「partitions_example.bin」という3つのファイルをESP32-DevKitCに書き込みます。
    • ファイルパス指定フォームで上記3つのファイルを指定、「@」の後ろに「0x1000」「0x10000」「0x8000」と入力し、各行の先頭にチェックマークを入れます。
    • 「SpiFlashConfig」で、「SPI SPEED」を「80MHz」、「SPI MODE」を「QIO」、「FLASH SIZE」を「32Mbit」にします。
    • 「COM」で書き込み対象のESP32-DevKitCを指定、「BAUD」を「921600」にして「START」をクリックします。
  • 「FINISH」と表示されたら書き込み完了です。

ちなみに、「Flash Download Tools」のダウンロードパスにマルチバイト文字(日本語)が含まれていると正常に実行できません。ダウンロードファイル(今回は「esp32_nat_router」)のパス中にマルチバイト文字が含まれていてもダメです。

「esp32_nat_router」の設定

この項の作業はMacで実施します。

  • 書き込みが完了したら、ESP32-DevKitCからUSBケーブルを一旦抜き、再度つなぎます。
  • Wi-Fi設定画面を開くと、アクセスポイントのリストに「ESP32_NAT_Router」が表示されていますので、そこに接続します(パスワードはいりません)。
  • Webブラウザで「192.168.4.1」にアクセスします。
  • 「STA Settings」の「SSID」「Password」に、このリピーターが接続するアクセスポイント(親AP)のSSID、パスワードを入力し、「Connect」をクリックします。
  • ブラウザ画面が更新されない場合は、「192.168.4.1」に再度アクセスします。
  • 「AP Settings」の「SSID」でこのリピーターの名前(好きな名前)、「Password」でこのリピーターのパスワード(好きな名前)を指定し、「Set」をクリックします。
  • Wi-Fi接続が切断されますので、再度接続します(アクセスポイントの名前は「ESP32_NAT_Router」から先ほど指定したSSIDに変わっています)。今回はパスワード入力も求められます。

PCから、このリピーター経由でインターネットにアクセスできることが確認できました。

ESP32-DevKitCの消費電流値調査

今回つくった「ESP32-DevKitC版Wi-Fi中継機」についても、「ESPr Developer版Wi-Fi中継機」の時と同様に、消費電流値を調査してみました。

今回も、ストロベリー・リナックスの「INA226PRC」というモジュールとM5StickCを使い、ESP32-DevKitCの電源供給ライン(USB)の途中に「INA226PRC」をつなぎ、30秒に1回の間隔で消費電流値を測定し、Ambientに送信しました。

結果は以下のとおりです。

1時間ほど調査した結果、消費電流値は125mA〜135mA、平均すると130mA程度でした。
「ESPr Developer版」と比べると、約1.7倍の消費電流値になりました。

これを屋外で安定稼働させるためには、それなりに発電能力のあるソーラーパネルを使う必要がありそうです。

なお、PCのWi-Fi接続先を、この「ESP32-DevKitC版Wi-Fi中継機」に変更し、数時間にわたり作業していましたが、今のところはWi-Fi接続が解除されることもなく、安定稼働しています。