R2P2ESP32

Wi-Fiを有効にする

USE_WIFIでWi-Fiサポートをビルドに組み込みます。

Wi-Fiのネイティブコード(Network::WiFi / ESP32::WiFi、およびpicoruby-socketの Wi-Fi経由のTCPServer/TCPSocket)は、デフォルトでは組み込まれていません。 有効にするには、ビルド前にUSE_WIFI環境変数を設定してください (ビルドを参照)。

$ export USE_WIFI=1
$ rake build

これは、例えばmrdebugの Wi-Fi経由のリモートデバッグを使う場合に必要です (デバッグを参照)。

Note: USE_WIFIはCMakeがプロジェクトを構成するときにしか読み込まれず、 ビルドのたびに読まれるわけではありません。すでにターゲットのセットアップや ビルドをUSE_WIFIを設定せずに実行している場合、単にUSE_WIFI=1 rake buildと しても反映されず、undefined reference to 'ESP32_WIFI_init'のような リンクエラーになることがあります。USE_WIFI=1をエクスポートした状態で ターゲットのセットアップをやり直し、強制的に再構成してください。

$ export USE_WIFI=1
$ rake setup_esp32   # ビルド対象のターゲットに合わせて
$ rake build

起動時に自動接続する

storage/etc/network/wifi.ymlに暗号化されたWi-Fi認証情報ファイルを生成すると (ファイル転送を参照)、 main_task.rbが起動のたびにこれを読み込んで自動接続します。

$ rake gen_wifi_config SSID=your-ssid PASSWORD=your-password UNIQUE_ID=your-device-unique-id
  • UNIQUE_IDはデバイス自身のMachine.unique_idから取得します。一度接続して (クイックスタートのirbなど)、Machine.unique_idを 実行して確認してください。
  • 任意項目: AUTO_CONNECT(デフォルトtrue)、RETRY_IF_FAILED (デフォルトtrue)、WATCHDOG(デフォルトfalse)、COUNTRY_CODE。

このファイルを生成したあとは、再ビルド・再フラッシュするか、wifi.ymlを デバイスに直接アップロードするのを忘れないでください。

デバイス上で設定する(nmcli)

ビルド前にパソコン側でwifi.ymlを生成する代わりに、デバイス自身のシェル (クイックスタートを参照)からnmcliを実行して、動作中の デバイスに直接書き込むこともできます。デバイス自身がすでにMachine.unique_id を知っているので、事前に調べる必要はありません。

$> nmcli
Ctrd-D to exit
Country Code? [JP]
WiFi SSID? your-ssid
WiFi Password? (leave blank if no password required)
Auto Connect? (y/n) [y]
Retry if failed? (y/n) [n]
Use Watchdog? (y/n) [n]

Successfully saved to /etc/network/wifi.yml
$> reboot

nmcliはファイルを書き込むだけです。デバイスは上記と同じ方法でこのファイルを 読み込んで自動接続しますが、それは次回起動時だけなので、反映させるには reboot(または電源の入れ直し)が必要です。

Note: これは実行時の変更のため(ファイル転送を参照)、 デバイス上にしか残りません。あとからrake flashを実行すると、ローカルの storage/ディレクトリの内容(またはその欠如)で上書きされてしまいます。 オンデバイスのストレージに触れずにアプリだけを再フラッシュしたい場合は、 代わりにrake flash_factoryを使ってください。