wiki:esp32_setup

ESP-WROOM-32のセットアップについて

ESP-WROOM-32は、Xtensa Dual-Core 32-bit LX6 マイクロプロセッサを搭載する、上海のESPRESSIF社が開発した無線モジュールです。WiFiとBluetooth v4.2に対応しています。 開発ボードはスイッチサイエンスでも販売されているESPr® Developer 32の他にも、ESPRESSIF社からESP32-DevKitCなどが発売さています。

本ページでは、このESP-WROOM-32をArduinoIDEで開発するためのセットアップとATコマンドモードのセットアップ手順を記述します。記述内容は2017/04/15現在のものであるため、最新版では内容は変更されている場合があります。必要に応じて下記の資料Arduino Core for ESP32 - Githubなどを参照してください。

また、セットアップが終わったあとの開発に関しては、ESP-WROOM-32に関するTIPSも御覧ください。

ESP-WROOM-32 仕様

ESP32製品サイトより抜粋。

  • KeyFeatures?
    • 240 MHz dual core Tensilica LX6 microcontroller with 600 DMIPS
    • Integrated 520 KB SRAM
    • Integrated 802.11BGN HT40 Wi-Fi transceiver, baseband, stack and LWIP
    • Integrated dual mode Bluetooth (classic and BLE)
    • 16 MByte flash
    • 2.2V to 3.6V operating voltage
    • -40°C to +125°C operating temperature
    • On-board PCB antenna / IPEX connector for external antenna
  • Sensors
    • Ultra-low noise analog amplifier
    • Hall sensor
    • 10x capacitive touch interface
    • 32 kHz crystal oscillator
  • 32x GPIO
    • 3 x UARTs, including hardware flow control
    • 3 x SPI
    • 2 x I2S
    • 12 x ADC input channels
    • 2 x DAC
    • 2 x I2C
    • PWM/timer input/output available on every GPIO pin
    • OpenOCD debug interface with 32 kB TRAX buffer
    • SDIO master/slave 50 MHz
    • Supports external SPI flash up to 16 MB
    • SD-card interface support
  • Security Related
    • WEP, WPA/WPA2 PSK/Enterprise
    • Hardware accelerated encryption: AES / SHA2 / Elliptical Curve Cryptography / RSA-4096
  • Performance
    • Supports sniffer, station, softAP and Wi-Fi direct modes
    • Max data rate of 150 Mbps@11n HT40, 72 Mbps@11n HT20, 54 Mbps@11g, and 11 Mbps@11b
    • Maximum transmit power of 19.5 dBm@11b, 16.5 dBm@11g, 15.5 dBm@11n
    • Minimum receiver sensitivity of -98 dBm
    • 135 Mbps UDP sustained throughput
    • 2.5 μA deep sleep current

資料

ArduinoIDEを用いた開発のセットアップ手順(Windows)

参照元はWindowsでのセットアップ手順です。基本的な流れは、coreライブラリをGithubからダウンロードし、ArduionoIDEのシステムに導入するというものです。

ArduinoIDEのインストールは済まされているものとします。また、ArduinoIDEのスケッチブックの保存場所はデフォルトのC:\Users\%USERNAME%\Documents\Arduinoから変更されていないものとします。変更した場合、適宜読み替えてください。

  1. Githubからコアライブラリの開発リポジトリをクローンし、C:\Users\%USERNAME%\Documents\Arduino\hardware\espressif\esp32に展開する

git環境を利用すると、アップデートに対応しやすくなります。ZIPでダウンロードし手動で展開しても動作に影響はありません。 gitはGit - Fast Version Control SystemGitHub Desktopなどから利用できます。後者の場合、リポジトリのクローン時にディレクトリを作成できないため、予めエクスプローラー上でディレクトリを作成した後にクローン先を指定することになります。

ZIPでダウンロードする場合は以下の画像を参照してください。

ディレクトリが以下のようになっていれば次のステップへ進みましょう。

  1. C:\Users\%USERNAME%\Documents\Arduino\hardware\espressif\esp32\tools\get.exeを実行する

xtensa-esp32-elfというディレクトリが作成されます。

  1. 必要に応じてデバイスドライバを導入する

スイッチサイエンスのものであればFTDI社のデバイスドライバ、ESP32-DevKitCであればCP210x用のデバイスドライバを必要に応じて導入してください。

  1. ArduinoIDEのツール->ボード設定が以下のようになれば導入成功です

動作確認

他のArduinoボードと同じように開発できます。非常に基本的なサンプルスケッチとしては以下のようなものがあります。

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Hello World.");
  delay(10000); 
}

これを書き込んで、シリアルモニターを開いたときの様子を以下に示します。スケッチのアップロードにはESP32を書き込みモードで起動する必要があります。スイッチサイエンスの開発ボードは自動でモードが切り替わるようになっていますが、切り替わらないボードの場合は手動でBOOTボタンを押しながらリセットボタンを押してESP32を書き込みモードで起動する必要があります。

ATコマンドモードのセットアップ(2016/6対応)

デフォルトでは検査用のファームウェアが書き込まれています(参照)。ATコマンドとは別のコマンドをやり取りできます(参照、ただし公式にはサポート外)。通信速度115200bps、改行モードCR+LFでコマンドの送信がができます。下は、ArduinoIDEでシリアルモニタを開いたときの様子です。

ATコマンド用の資料はESP32-devkitCリファレンスサイトのGetting Started->ESP32 AT Instruction Set and Examplesにあります。

ESP32のファームウェアは、ArduinoIDEで開発をすると上書きされてしまうので、ArduinoIDEで開発を行ったあとにATコマンドモードに戻したくなった場合、別の手順を踏む必要があります。

ATコマンド用のファームウエアはESPRESSIF社 ダウンロードからダウンロードできます。2017/04/15現在できません。現在製作中の模様です。公式Topics参照2016/06/06付で公開されました。

ファームウエアの書き込みには、ESPRESIF社公式のFlash Download Toolsを使います。2017/07/08現在最新版はV3.4.8.4です。ESPRESSIF社 ダウンロード-ツールからダウンロードできます。

起動すると書き込み対象のボードの選択画面になります。今回は対象がESP32モジュールなので、ESP32 DownloadToolを選択します。

特に何もせずにSTARTを押すと、ESP32の情報が表示されます。

MACアドレスは隠してあります。

ダウンロードしたATコマンド用のファームウェアの設定は、 esp32_at_bin_v0.10\ESP32_AT_BIN\download.config に記載されています。執筆時点でのファームのバージョンは0.10です。 いかにその内容を示します。

  • SPI SPEED: 40 MHz
  • SPI MODE: DIO
  • FLASH SIZE: Detected(ESP-WROOM-32の場合は32MBbitにしておきます)
PathOffset
bootloader/bootloader.bin0x1000
phy_init_data.bim0xf000
esp-at.bin0x100000
partitions_at.bin0x8000

以上のように設定をして、STARTを押します。正しく書き込めれば、FINISHとでるはずです。

アドレスは隠してあります。

シリアルモニタなどで動作を確認してみます。下の画像は起動時にシリアルモニタに表示されたログです。

ATコマンドをやりとりする

一般的に、ESP-WROOM-32の開発ボードは、基板上のUSB-Serial変換はESP-WROOM-32モジュールのUART0ピンと接続されています。これは、フラッシュへの書き込みを行うのが目的のためです。

一方で、ATコマンドはUART1ピンで送受信するようになっています。そのため、開発ボードの他にもう一台USB-Serial変換を用意して接続する必要があります。(ESP32 AT Instruction Set and Examples の 1.2 Downloading AT Firmware into Flash 参照)(余談ですが、UART1とESP32内部回路のU1は別のようです)。

必要最低限の接続は次のようになっています。

USB/SerialESP-WROOM-32
TXGPIO16
RXGPIO17
GNDGND

通信には3.3V対応のものをつかってください。スイッチサイエンスのFTDI USBシリアル変換アダプター Rev.2など使う場合は3.3Vに変更するのを忘れないようにしてください。

画像はAT+RSTおよびATと送信したときの応答です。AT+RSTと送ったときは、開発ボードのシリアルにブートログが流れていることが確認できます。

ここまで動作すれば、ATコマンド用のファームウェアの書き込みは完了です。バージョン0.10ではまだWiFiのコマンドしか用意されていないようです。

ota data partition invalid と表示される

ESP32 AT Instruction Set and Examples の 1.2 Downloading AT Firmware into Flash によると、ota data partition invalidと表示されるときはota dataとラベルされているアドレス(参照)にblank.binを書き込むように、とあります。

つまり、blank.binをオフセット0x10000に書き込みます。実際に書き込んでみたところ、正常に動作するようになりました。

Last modified 6 weeks ago Last modified on Jul 8, 2017 6:05:27 PM

Attachments (11)

Download all attachments as: .zip