ショップ

取扱説明書


製品概要

近年様々なモノをインターネットに接続してサービスの高度化を図るモノのインターネット「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 容量を必要とする写真や画像の処理なども余裕をもって行えます。(MicroPythonの現在のファームウェアでは、使用できる容量は4MBに限定されているようです。)
  • ネットワークと接続するためのWiFi やBluetooth のネットワーク機能を利用できます。
  • ArduinoやMicroPythonを利用してソフトウェアを開発できます。
  • ドロップアウトが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 ディスプレイは、128x64 ドットのグラフィックディスプレイになっており、ボードの稼働状態や利用者に伝えたい情報を、画像や文字で分かり易く表示できるようになります。
ネット上などで公開されている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 と表示されます。


MICROPYTHONでのプログラミング

ESP32-WROVER-KEY-R2の機能を最大限に発揮できるように構成されたMicroPythonファームウェアをご利用いただけます。以下のページからダウンロードしてご利用ください。

MicroPython用のプログラミング環境はいくつかありますが、定評のあるThonnyの使用法を紹介します。

ESP32-WROVER-KEY-R2のMicroPythonでのプログラミング情報を以下に示します。

Microdotを使用したWEBサーバーの構築法を紹介します。


MicroPython のプログラム例

マイクロファンのMicroPythonファームウェアを使用した場合のプログラム例です。

LED の点滅

電子工作で定番の LED の点滅プログラムです。ESP32-WROVER-KEY-R2 に搭載されている LED1を点滅させるプログラムです。

from machine import Pin
import time

led = Pin('LED1', Pin.OUT) # D2 を出力に設定
while True:
    led.on()
    time.sleep_ms(1000) # 1000ms(1 秒) 待つ
    led.off()
    time.sleep_ms(1000)

OLED ディスプレイへの出力

ESP32-WROVER-KEY-R2 の CN3 に OLED ディスプレイを搭載することができます。OLED ディスプレイを使用するために、oledjpライブラリをあらためて開発ボードに登録する必要はありません。

from machine import Pin
from oledjp import OLEDJP_I2C
import gc

# OLED の設定

i2c = I2C(0)
oled = OLEDJP_I2C(128, 64, i2c) # 日本語表示機能付きOLEDドライバ
oled.setFont(OLEDJP_I2C.MISAKI) # 日本語フォントの利用設定
# OLED への文字列の出力
oled.text("こんにちは、みなさん", 0, 0)
oled.text("マイクロファン", 0, 16)
oled.text("ESP32-WROVER-KEY", 0, 32)
oled.text("MEM: "+str(gc.mem_free()), 0, 48)
oled.show() # 表示内容の OLED への反映

PSRAM の容量確認

スタックサイズと、PSRAMに確保されたヒープサイズの確認を行う対話的な実行例です。

>>> import micropython
>>> micropython.mem_info()
stack: 736 out of 15360
GC: total: 64000, used: 10400, free: 53600, max new split: 4063232
 No. of 1-blocks: 242, 2-blocks: 34, max blk sz: 32, max free sz: 3338
>>> import gc
>>> gc.mem_free()
4111280

回路図


関連製品

ESP32-KEY-R3

ESP32-WROVER-KEY-R2と同じCPUを使用したESP32-WROOM-32Eを搭載しており、PSRAMも2M搭載しています。

ESP32-S3-KEY-R2

PSRAMを搭載し新しいバージョンのCPUを搭載したESP32-S3シリーズのMCUを搭載した開発ボードです。

SENSOR-PLUS

ブレッドボードを使用してプロトタイピングを行うと、ディスプレイ、スピーカー、スイッチなど、標準的に使用する回路がいくつかあります。プロトタイピングのたびに、繰り返しそれらの配線を行うことが面倒であったり、配線が入り組んでわかりにくいといったことがよくあります。

SENSOR-PLUSはそのような、よく使う標準的な入出力・センサーを一つにまとめたボードです。

SENSOR-PLUSを使用してプロトタイピングを行えば、よく使う標準的な入出力が既に提供されているので、注目している機能や回路に集中して実験を行うことができます。

ArduinoだけでなくMicroPythonでも手軽に使用することができます。