ショップ

取扱説明書

製品概要

近年様々なモノをインターネットに接続してサービスの高度化を図るモノのインターネット「IoT」が注目されており、IoT サービスを実現するための様々な開発や実験が、企業はもちろん個人でも行われています。そのIoT 装置を実現する中核部品として、WiFi やBluetooth が標準装備されたESP-WROOM-32 が広く使用されています。
ESP32-WROVER-KEY-R2 はESP-WROOM-32 のRAM 増強型のESP32-WROVER-E を利用したIoT 機器の開発や実験を、ブレッドボード上で手軽に行うための開発ボードとして開発されました。ESP32-WROVER-KEY-R2 はESP-WROOM-32 の活用を発展させ、大容量のRAM が必要な用途に取り組みたい人に最適な開発ボードです。
ESP32-WROVER-KEY-R2 は以下のような特徴を持っています。

  • ESP32-WROVER-E の8M Flash, 8M PSRAM 版を搭載しています。
  • 8M のPSRAM を搭載しているため、ESP-WROOM-32 では難しかった大きなRAM 容量を必要とする写真や画像の処理なども余裕をもって行えます。
  • ネットワークと接続するためのWiFi やBluetooth のネットワーク機能を利用できます。
  • 電子工作で広く利用されているArduino などの無償、便利、高機能な開発環境を利用してソフトウェアを開発できます。
  • Arduino IDE で作成したスケッチを書き込むためのUSB インターフェースを装備しています。
  • ドロップアウトが300mV と少ない1.5Aの電圧レギュレータを搭載し、ESP32-WROVER-E に安定した電源を供給できます。
  • ESP32-WROVER-E の信号線が、ピンヘッダーを取り付け可能な端子列に引き出されており、ブレッドボードに挿して利用できます。
  • 端子列の幅はブレッドボードを最大限に活用できるよう狭く設計されています。
  • 様々な情報を表示できるOLED ディスプレイ(別売) を搭載することができます。

ESP32-WROVER-KEY-R2 の特徴

PSRAM によるRAM 領域拡張

ESP32-WROVER-KEY-R2 に搭載されているESP32-WROVER-E には、従来のESPWROOM-32 には搭載されていなかった8MB のPSRAM が搭載されています。容量の大きなRAM 領域が使用できるようになるため、写真や画像などの処理も余裕をもって行えるようになります。
なお、PSRAM の使用には、以下の様な制約があります。

  • 単純に配列を定義してPSRAM の領域を使用することはできず、ps malloc() あるいはps calloc() 等を使用して領域を確保して使用しなければならない。
  • プロセッサのバスに直付けされたメモリではなく、SPI 接続なので、アクセス速度が遅い。
  • Arduino 環境下では、4MB しか使用することができない。
  • ESP-IDF 開発環境では、himem API を使用して8MB のメモリを利用できるようです。
  • 参考URL: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/ api-reference/system/himem.html

USB インターフェース

Arduino IDE で作成したスケッチを ESP-WROOM-32 に書き込むために、USB インターフェース (microB) を備えています。
USB インターフェースは以下のような用途で使用されます。

  • ESP32-WROVER-KEY-R2への電力供給。
    • USB からは 5V の電力が供給され、ESP32-WROVER-KEY-R2では、基板上の電圧レギュレータで3.3V に変換され使用されます。
  • ESP32-WROVER-KEY-R2へのスケッチ(プログラム) の書き込み。
    • スケッチの書き込み時や、USB を介した受信時には、赤色の LED2(RX)が点滅します。
  • ESP32-WROVER-KEY-R2と PC 間のシリアル通信。

電圧レギュレータ

ESP32-WROVER-E は無線機能の利用時に300mA 程度の電流を消費します。さらに、瞬間的ではありますが、突入電流として1A 以上を消費することもあるようです。ESP32-WROVERKEY-R2 で利用している電圧レギュレータBL8071 は、少なくとも1.5A 以上の電流を供給できますのでESP32-WROVER-E を余裕をもって稼働させることができます。
また、BL8071 の入力電圧から出力電圧のドロップダウンは300mV 程度で、USB から電力を取得する場合、ショットキーダイオードの順方向電圧降下と合わせると電圧低下は0.8V 程度となります。ESP32-WROVER-E が瞬間的に大きな電流を必要としている際に、USB からの供給電圧が定格の5V をある程度下回っても、安定した電源電圧3.3V を維持することができます。

ブレッドボードの利用

ESP32-WROVER-KEY-R2 の2列の信号の引き出し端子は、ブレッドボードの部品配置領域を最大限に利用できるように、狭い間隔で配置されています。他のESP32 開発ボードでは部品の配置が難しかった一般的なブレッドボードでも、ESP32-WROVER-KEY-R2 では図に示すように余裕をもって部品を配置し利用することができます。

OLED ディスプレイ

ESP32-WROVER-KEY-R2 にはOLED ディスプレイの接続端子が装備されているため、図に示すようにOLED を基板に搭載して手軽に使用することができます。
OLED ディスプレイは、128×64 ドットのグラフィックディスプレイになっており、ボードの稼働状態や利用者に伝えたい情報を、画像や文字で分かり易く表示できるようになります。
ネット上などで公開されているESP32-WROVER-E のサンプルスケッチでは、IP アドレスや様々な情報をPC 上でシリアルモニタに表示する例が多いですが、実際の運用ではESP32-WROVER-E をPC に接続して使用することは少ないため、運用時に必要な情報を確認することができないという問題があります。
ESP32-WROVER-KEY-R2 では、面倒な配線等を行うことなく開発ボード上にOLED ディスプレイを搭載できるため、PC と切り離して単独で運用している場合でも、様々な情報をOLEDに表示し確認することができます。

PSRAM の容量等の調査

ESP32-WROVER-KEY-R2 にはPSRAM が搭載されています。その容量等を表示してみましょう。

スケッチ例を以下に示します。

uint8_t *psram ;

void setup() {
  Serial.begin(9600);

  Serial.println();
  Serial.printf("PsramSize: %d, FreePsram: %d\n",
            ESP.getPsramSize(), ESP.getFreePsram());
  Serial.printf("HeapSize: %d, FreeHeap: %d\n",
            ESP.getHeapSize(), ESP.getFreeHeap());
  Serial.printf("FlashChipSize: %d\n", ESP.getFlashChipSize());
  Serial.printf("ChipRevision: %d, CpuFreqMHz: %d\n",
            ESP.getChipRevision(), ESP.getCpuFreqMHz());

  Serial.printf("PSRAM MALLOC\n");
  uint8_t *psram = (uint8_t *) ps_malloc(1000000);

  Serial.printf("PsramSize: %d, FreePsram: %d\n",
            ESP.getPsramSize(), ESP.getFreePsram());
}

void loop() {
}

シリアルモニタに表示されたスケッチの実行例を以下に示します。

PsramSize: 4192139, FreePsram: 4192139
HeapSize: 364036, FreeHeap: 339444
FlashChipSize: 8388608
ChipRevision: 3, CpuFreqMHz: 240, SdkVersion: v4.4.2
PSRAM MALLOC
PsramSize: 4192123, FreePsram: 3192123

ESP32-WROVER-KEY-R2 のPSRAM は8MB が実装されていますが、Arduino の環境下では、4MB しか使用できないので、その容量が表示されています。
ESP-IDF 開発環境では、himem API を使用して8MB 全てのメモリを利用できるようです。
参考URL: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/himem.html
また、ps malloc() を使用してPSRAM メモリを取得すると、空いているPSRAM 容量が取得領域+ αの容量が減少していることも確認できます。
なお、ボードの設定が[ESP32 Dev Module] で[PSRAM] がDisable の場合には、PSRAM のサイズが0 と表示されます。

回路図