ESPr DeveloperをWi-Fi中継機にする

私は小さな畑に「モバイルWi-Fiルータ」と「ソーラーパネル」を常設し、そこでIoTに関する色々な実験を行っています。

さて、私が利用している畑は里山地域にあり、形状が複雑で高低差もある上、あまり手入れができていないため雑草が生え放題と、Wi-Fi通信にとってはあまり良い環境ではありません。
これまでにも、畑の隅の方にIoTデバイスを設置しようとしたところ、ルータからそれほど離れていないにも関わらずWi-Fi通信できないことがありました。

そんな訳で、かねてより、畑にWi-Fi中継機(リピーター)を設置し、Wi-Fi通信可能なエリアを広げたいと考えていました。
ただし、もちろん、Wi-Fi中継機もソーラーパネルで常時稼働させる必要がある上、場合によっては複数台の中継機を設置することになる可能性もあるため、できるだけ安価に実現する必要があります。

そのため、Wi-Fi中継機自体も、他のIoTデバイスと同様に、マイコンボードを使ってつくれないか?と考えました。
調べてみたところ、「ESP8266」をWi-Fi中継機にすることができる「esp_wifi_repeater」というファームウェアが公開されていました。

手持ちに、今のところは使っていない「ESPr Developer(ESP8266搭載ボード)」がいくつかあるので、これらに「esp_wifi_repeater」を書き込み、実際に使うことができるか確認してみることにしました。


ESPr Developerへの「esp_wifi_repeater」書き込み

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

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

なお、ESPr Developerで「Flash Download Tools」を使う場合、いろいろとクセがあるようです。
ネット検索で見つけた記事には、

  • 「FLASH」ボタンを押しながら「START」をクリックする。
  • 「RESET」ボタンと「FLASH」ボタンを同時に押し、「RESET」ボタンのみ離してから(「FLASH」ボタンを押したまま)「START」をクリックする。
  • ESPr Developerの「RESET」と「GND」の間に0.1uFのセラミックコンデンサをつなぐ。

などの対応策の記載がありました。
今回も、最初はうまく書き込むことができませんでしたが、設定を少しずつ変更して何回か試しているうちに、最終的には上記のいずれの対策も実施せずに書き込むことができました。

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

「esp_wifi_repeater」の設定

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

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

ESPr Developerの消費電流値調査

この「ESPr Developer版Wi-Fi中継機」は、ソーラーパネルで常時稼働させることを想定しています。
そのため、「esp_wifi_repeater」を書き込んだESPr Developerの消費電流値を調査してみることにしました。

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

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

1時間ほど調査した結果、消費電流値は70mA〜86mA、平均すると75mA程度でした。

追記

PCからのWi-Fi接続先を、この「ESPr Developer版Wi-Fi中継機」に変更して、しばらく試行しました。
機能的には特に問題もなく、若干通信速度が遅くはありますが、ESPr DeveloperをWi-Fi中継機として使えることが確認できました。

ただ、しばらく使っていると、結構頻繁にPCからのWi-Fi接続が解除されてしまうことに気づきました。
接続解除されるタイミングに規則性はありませんが、インターネットにアクセスしているタイミングで解除されることが多いようです。

前述のGitHubのページに「インターネットアクセス中に、最大170mAの電流スパイクが発生するため、動作が不安定な場合は電源−グランド間に大きなキャパシタを入れるように」との注意書きがありました。
この電流スパイクが原因で動作が不安定になっている可能性があります。

キャパシタ追加などハードウェアをいじるのは面倒なので、他に何か良い方策がないか、少し考えてみようと思います。