このページの目次
ショップ
取扱説明書
製品概要

鮮やかな色で文字や画像を表示できるLED マトリックスパネルが広く使われるようになり、LED マトリックスパネルを手軽に制御できる高性能なコントローラが求められています。
ESP32-LEDPRO-R1 はESP-WROOM-32 を中核に、HUB75(E) インターフェースを使用するLED マトリックスパネルを手軽に利用できるように開発されたコントローラボードです。
ESP32-LEDPRO-R1 はLED マトリックスパネルの裏面のHUB75 コネクタに直付けすることも可能で、手軽に使用できます。また、LED マトリックスパネルの表示制御は、Arduino IDE を使用して、プログラミングすることができます。
さらに、ESP-WROOM-32 はWiFi などの無線ネットワーク機能を持っているため、インターネットやスマートフォンからLED マトリックスパネルを制御したり、インターネット上の各種のサービスに接続し、リアルタイムで様々な情報を表示するシステムを作成することも可能です。
ESP32-LEDPRO-R1 はLED マトリックスパネルを初めて使用する人や、それを利用して多様なアプリケーションを作成・使用したい人に最適なコントローラボードです。
LED マトリックスパネルコントローラとしての特徴
ESP32-LEDPRO-R1 はLED マトリックスパネルコントローラとして以下のような特徴を持っています。
- HUB75(E) インターフェースを利用した、1/16 または1/32 スキャンのLED マトリックスパネルを制御することができます。
- 信号電圧が3.3V のESP-WROOM-32 から、信号電圧が5V のHUB75(E) を適切に制御するために、信号電圧の変換回路を備えており、HUB75(E) を安定して制御できます。
- 複数枚のLED マトリックスパネル(ESP-WROOM-32 のメモリによる枚数制限はあります)を接続 して制御することもできます。
- LED マトリックスパネルの使用時に、USB コネクタにLED マトリックスパネルが必要とする大容量の電流が流れないように安全回路が組み込まれています。
- 電子工作で広く利用されているArduino などの無償、便利、高機能な開発環境を利用してLED 表示用のソフトウェアを開発できます。
- LED マトリックスパネルの制御用のライブラリ*1 は、ライブラリマネージャを使用してArduino IDE に簡単に組み込むことができます。
- 上記のライブラリは、LED マトリックスパネルへの高頻度のデータの伝送にDMA を使用しているのでCPU の負担はほとんどなく、CPU の能力のほとんどをLED マトリックスパネルの表示以外の処理に振り向けることができます。
- 圧電スピーカーを搭載しており、LED での表示に合わせて音を出すことができます。
- 温度や湿度等のセンサーを搭載することができ、その計測値をLED 表示に利用することができます。
ESP32-LEDPRO-R1 を使用してP2.5 128×64 ピクセルのLED マトリックスパネルに表示を行った例を図に示します。

ESP-WROOM-32 開発ボードとしての特徴
またESP32-LEDPRO-R1 は、ESP-WROOM-32 を使用した開発ボードとして以下のような特徴を持っています。
- ESP32 のE バージョンの16M 版を搭載しています。
- 高性能の32 ビットマイクロプロセッサを搭載することで、Arduino UNO R3 などと比較して高速な処理が行えるとともに、大容量のFLASH(16M) とRAM を利用できます。
- ネットワークと接続するためのWiFi やBluetooth のネットワーク機能を利用できます。
- Arduino IDE で作成したスケッチを書き込むためのUSB インターフェースを装備しています。
- ドロップアウトが300mV と少ない1.5A *2の電圧レギュレータを搭載し、ESP-WROOM-32 に安定した電源を供給できます。
- ESP-WROOM-32 の信号線がピンヘッダーを取り付け可能な端子列に引き出されており、LED 表示以外の機能を拡張することができます。
- 様々な情報を表示できるOLED ディスプレイ(別売) を搭載することができます。
スケッチの例
64×32パネルにBME280の計測結果を表示する例
P4の64×32のLEDパネルに、BME280で計測した温度・湿度・気圧を表示するスケッチの例を示します。
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
#include <BME280I2C.h>
#include <Wire.h>
#define RES_X 64
#define RES_Y 32
#define CHAIN 1
MatrixPanel_I2S_DMA *dma_display = nullptr;
BME280I2C bme;
void setup() {
HUB75_I2S_CFG mxconfig(RES_X, RES_Y, CHAIN);
// Display Setup
dma_display = new MatrixPanel_I2S_DMA(mxconfig);
dma_display->setBrightness8(128); // range is 0-255, 0 - 0%, 255 - 100%
dma_display->begin();
Wire.begin();
while (!bme.begin()) {
delay(1000);
}
}
void printValue(double v, char *unit, uint16_t color) {
dma_display->setTextColor(color);
if (v < 100)
dma_display->print(" ");
else if (v < 1000)
dma_display->print(" ");
dma_display->print(v);
dma_display->println(unit);
}
void loop() {
float temp, hum, pres;
BME280::TempUnit tu(BME280::TempUnit_Celsius);
BME280::PresUnit pu(BME280::PresUnit_hPa);
bme.read(pres, temp, hum, tu, pu);
dma_display->fillScreen(0);
dma_display->setCursor(0, 0);
printValue(temp, "'C", dma_display->color565(0, 255, 0)) ;
printValue(hum, "%", dma_display->color565(255, 0, 0)) ;
printValue(pres, "hPa", dma_display->color565(0, 0, 255)) ;
delay(2000);
}
回路図
