メインコンテンツまでスキップ

OpenEPaperLink / OpenDisplay を使う

OpenEPaperLink (OEPL) エコシステムと関連プロジェクトの OpenDisplay は、電子ペーパーディスプレイを駆動するためのオープンソースのファームウェア/プロトコルスタックです。最新リリースは Bluetooth Low Energy 上で動作し、スマートフォン、コンピュータ、Home Assistant からデバイスへ直接通信できます。専用の 802.15.4 アクセスポイントは不要です。

このガイドでは、Seeed ハードウェアからそのエコシステムへ入る 2 つのパスを扱います:

  • XIAO ePaper Display Board EN04 — OpenDisplay ファームウェアを BLE 上で動作させる一体型キット。
  • ePaper Breakout Board for Seeed Studio XIAO — OEPL Config Builder と OEPL Image Uploader を XIAO nRF52840 シリーズボードと組み合わせて使う、よりモジュール的な DIY パス。

どちらのフローも共通の思想(BLE 設定、Web ベースのツール、低消費電力)を共有していますが、ハードウェアとファームウェア/Web ツールは異なります。この記事全体を通して、自分のハードウェアに合ったタブを選択してください。

対応ハードウェア

XIAO ePaper Display Board EN04

XIAO nRF52840 Plus を搭載した XIAO EN04 ePaper Display Board は、Bluetooth 対応の電子ペーパーディスプレイを始める最も簡単な方法です。スマートフォン、コンピュータ、Home Assistant から直接ワイヤレス制御でき、専用 AP は不要です。

  • アクセスポイント不要 — Bluetooth Low Energy を使って直接通信します。802.15.4 ハードウェアは不要です。
  • Web ベースのツール — ファームウェアのインストール、デバイスの設定、画像のアップロードをブラウザから直接行えます。
  • 専用ハードウェア対応 — XIAO nRF52840 ファミリ、EN04、EE04 など。
  • オープンソースかつ無料 — GitHub 上で積極的に開発されています。
  • 複数のマイコンに対応 — nRF52840、ESP32-S3、ESP32-C6、ESP32-C3。
  • シンプルなフロー — ドラッグ&ドロップでファームウェアをインストールし、Web から設定でき、複雑なプログラミングは不要です。
  • バッテリー効率に優れる — 低消費電力の電子ペーパー向けに最適化されています。
  • 活発なコミュニティOpenDisplay Discord

ステップ 1: ハードウェアのセットアップ

ステップ 1. ドライバボードにディスプレイを接続する
FPC ケーブルを XIAO EN04 ボード上のコネクタに合わせ、ラッチを固定します。

ヒント

FPC ケーブルの金属面は上向きにする必要があります。逆向きだと何も表示されません。ほとんどのディスプレイでは FPC に 150 が印字されているので、ボード上の対応する番号と合わせてください。

ステップ 2. バッテリーを接続する
バッテリーケーブルをドライバボード上の JST コネクタに接続します。赤い線を +、黒い線を に接続します。

注意

極性を必ず再確認してください。バッテリーによっては配線が異なる場合があります。配線が合っていない場合は、針などを使って JST コネクタからピンを抜き、正しい向きで差し直すことができます。

ステップ 2: ファームウェアを書き込む

最も簡単な方法は OpenDisplay Web インストーラを使うことです。

ステップ 1. ブラウザで OpenDisplay Web Installer を開きます。

ステップ 2. デバイス一覧から Seeed EN04 4.26 または Seeed EN04 7.3(使用しているディスプレイに合うプリセット)を選択します。

ステップ 3. Download Firmware をクリックし、NRF52840.uf2 をローカルに保存します。

ステップ 4. EN04 ボードを USB-C で接続します。

ステップ 5. リセットボタンを 素早く 2 回 押します。コンピュータ上に USB ドライブ(DFU モードの EN04)が表示されるので、そのドライブに NRF52840.uf2 をコピーします。

ヒント

インストーラがうまく動作しない場合:

  • 別の USB ケーブルを試してください(一部は給電専用なので、データ通信対応ケーブルを使用してください)。
  • EN04 のリセットボタンを 2 回押して DFU モードに再度入ります。
  • 別の USB ポートを試してください。

ステップ 6. OpenDisplay Configuration Page を開き、ボードに接続します。

Seeed EN04 4.26 または Seeed EN04 7.3 を選択していれば、Auto Install to Device が表示されます。これはキットを設定する最も簡単な方法です。

ステップ 7. Connect ボタンを押します。ペアリングダイアログで新しいデバイスを選択し、Pair を押します。

ステップ 8. Auto Install to Device を押して、設定をボードに保存します。

インストールと設定が完了すると、ディスプレイに起動画面が表示され、BLE 経由でコンテンツを受信する準備が整います。

ステップ 3: BLE 経由でデバイスを設定する

前のフラッシュ手順で行った OpenDisplay の設定ステップですでに処理されています — これで EN04 は OpenDisplay の起動画面で起動し、画像のアップロードを受け付けるようになっているはずです。

ステップ 4: 画像をアップロードする

OpenDisplay プロジェクトには、専用のブラウザベースのアップローダーがあります。

ステップ 1. OpenDisplay BLE Tester を開きます。

ステップ 2. Connect をクリックし、BLE ペアリングダイアログから OpenDisplay デバイスを選択します。

ステップ 3. Select Image をクリックし、PC からファイルを選択します。

ヒント

最良の結果を得るには:

  • ディスプレイの解像度に合った画像を使用します(7.3" パネルは 800×480 px)。
  • モノクロディスプレイでは、白黒画像が最もきれいに表示されます。
  • このツールはカラー画像を自動的に変換し、ディザリングします。

ステップ 4. Upload Image をクリックします。電子ペーパーがリフレッシュされ、画像が表示されます。

画像編集ソフト(GIMP、Photoshop)、Python + Pillow スクリプト、Web ベースの画像ジェネレーター、あるいは Home Assistant 連携(後述)を使ってカスタムコンテンツを作成することもできます。

Home Assistant 連携(EN04 / OpenDisplay のみ)

ヒント

Home Assistant と連携するには、Bluetooth 対応のセットアップが必要です:

  • Home Assistant Green(Bluetooth 内蔵)
  • Bluetooth 対応ハードウェア上の Home Assistant OS / Supervised
  • ESPHome Bluetooth Proxy(電波範囲を広げるために推奨 — 下記参照)

注: Bluetooth プロキシとして動作する Shelly デバイスは、OpenDisplay に必要なアクティブ接続をサポートしていないため、使用できません。

ステップ 1. インテグレーションをインストールする

詳細なインストール手順は、OpenDisplay Home Assistant Integration リポジトリを参照してください。

最も簡単な方法は HACS(Home Assistant Community Store)経由です:

Home Assistant インスタンスを開き、Home Assistant Community Store 内のリポジトリを開きます。

備考

HACS からカスタムインテグレーションをインストールした後、変更を反映させるために Home Assistant を再起動 してください。

ステップ 2. 検出されたデバイスを追加する

Home Assistant が再起動して立ち上がったら:

  1. Settings → Devices & services に移動します。
  2. Discovered の下にある OpenDisplay デバイスを探します。
  3. Add をクリックします。
  4. NameArea を設定し、Finish をクリックします。

ディスプレイに新しい画像が表示され、Home Assistant が接続されたことが確認できます。

ディスプレイ更新の自動化

主なサービスは open_epaper_link.drawcustom で、テキスト、アイコン、画像、図形を描画できます。利用可能な型とパラメータの一覧は、drawcustom ドキュメントを参照してください。

例 1 — センサーデータを表示する(ビジュアルエディタ)

  1. Settings → Automations & Scenes に移動し、Create Automation をクリックします。
  2. Time Pattern トリガーを追加します(例:10 分ごと)。
  1. Action を追加し、OpenDisplay: Draw Custom Image を選択します。
  1. 対象デバイスを選択します。
  1. Payload フィールドにレイアウト設定を入力します:
- type: "text"
value: "Living Room"
x: "50%"
y: 50
anchor: "mm"
size: 70
color: "red"
- type: "icon"
value: "mdi:thermometer"
x: "35%"
y: 200
anchor: "mm"
size: 100
color: "black"
- type: "text"
value: "{{ states('sensor.living_room_temperature') }}°C"
x: "65%"
y: 200
anchor: "mm"
size: 100
color: "black"
- type: "icon"
value: "mdi:water-percent"
x: "35%"
y: 350
anchor: "mm"
size: 100
color: "black"
- type: "text"
value: "{{ states('sensor.living_room_humidity') }}%"
x: "65%"
y: 350
anchor: "mm"
size: 100
color: "black"
Entity IDs

上記のエンティティ ID(例:sensor.living_room_temperature)はプレースホルダーです。実際の Home Assistant のエンティティ ID に置き換えてください。

例 2 — カウントダウンタイマー(YAML)

上級ユーザー向けに、オートメーションを YAML として編集します。この例では、ある日付までのカウントダウンを行い、その結果をディスプレイに表示します。

alias: Update ePaper Display - Countdown
description: Displays days until Christmas
triggers:
- at: "00:00:00"
trigger: time
actions:
- variables:
days_left: "{{ (as_datetime('2025-12-24').date() - now().date()).days }}"
- action: open_epaper_link.drawcustom
data:
background: white
payload:
- type: text
value: "{{ 'Christmas Countdown' if days_left > 0 else '' }}"
x: 50%
"y": 50
anchor: mm
size: 60
color: black
- type: text
value: "{{ days_left if days_left > 0 else '' }}"
x: 50%
"y": 240
anchor: mm
size: 250
color: red
- type: text
value: >-
{{ 'Day Left' if days_left == 1 else ('Days Left' if days_left > 0
else '') }}
x: 50%
"y": 430
anchor: mm
size: 60
color: black
- type: text
value: "{{ 'It''s Christmas!!!' if days_left == 0 else '' }}"
x: 50%
"y": 50%
anchor: mm
size: 100
color: red
target:
device_id: 2ad706d4aa7c657b6fe99a733cef2253
Device ID

上記の device_id はプレースホルダーです。実際のデバイス ID を確認するには、次の手順に従います:

  1. ビジュアルエディタで新しいオートメーションを作成します。
  2. アクション設定で OpenDisplay デバイスを選択します。
  3. YAML mode(アクションカードの三点メニュー)に切り替えます。
  4. device_id をコピーして、あなたのオートメーションに貼り付けます。

おまけ

ディスプレイをスタイリッシュにマウントしたいですか?この 3D プリントインサートは IKEA RODÅLM フォトフレームに適合し、簡単にマウントできます:

トラブルシューティング

ファームウェアインストールの問題

問題:ボードを接続しても、PC が新しい USB ドライブを検出しません。

  • 別の USB ケーブルを試してください(電源専用ではなくデータ通信対応ケーブル)。
  • ボードを接続した後にリセットボタンを 2 回押してください。

設定の問題

問題:ボードが検出されません。

  • ボード上の LED が点滅しているか確認します — デバイスに電源が入っていることを示します。
  • ボードを再起動してみてください。
  • ファームウェアを書き直してください。

問題:ファームウェアインストール後もディスプレイに何も表示されません。

  • FPC ケーブルの向き(金属端子が上向き)を確認します。
  • ケーブルが最後まで差し込まれ、ラッチされていることを確認します。
  • コンフィギュレータで設定を再確認します。

Bluetooth 接続の問題

問題:Bluetooth ペアリングでデバイスが見つかりません。

  • デバイスの電源が入っており、ファームウェアがインストールされていることを確認します。
  • もっと近づいてください(2~3 m 以内)。
  • コンピュータ / スマートフォンで Bluetooth が有効になっていることを確認します。

問題:画像アップロード中に接続が切断されます。

  • アップロード中はデバイスの近くにいてください。
  • バッテリーを十分に充電するか、USB 経由で給電してください。
  • 非常に大きな画像のアップロードは避けてください。
  • Bluetooth が混雑していない環境で再度お試しください。

バッテリーと電源の問題

問題:バッテリーの持ちが短い。

  • コンフィギュレータでスリープ間隔を長く設定します。
  • 常に最新のファームウェアを使用します(各リリースで消費電力が改善されます)。
  • ディスプレイのリフレッシュ頻度を下げます。
  • バッテリーが完全に充電されていることを確認します(Li-Po の場合 4.2 V)。

問題:デバイスが充電されません。

  • 極性を確認します(赤 = +、黒 = −)。
  • 充電ケーブルが 500 mA 以上を供給できることを確認します。
  • 電源スイッチが ON になっていることを確認します。
  • 別の USB 電源を試してください。

Home Assistant / 連携の問題

問題:Raspberry Pi + HA 経由でデバイスを追加する際に "Insufficient connection slots" と表示されます。

これは多くの場合、Raspberry Pi 内蔵の Bluetooth アダプタが同時接続数の上限に達しているために発生します。

Error: Insufficient connection slots "Insufficient connection slots" メッセージの例。

推奨される対処法:ESP32 デバイス(例:XIAO ESP32S3)を ESPHome Bluetooth Proxy として使用します。これにより Bluetooth 接続を Pi から切り離し、電子ペーパーディスプレイ用の「スロット」をより安定して確保できます。

ESPHome Bluetooth Proxy の使用

Raspberry Pi と Home Assistant を使用していて "Insufficient connection slots" に遭遇した場合、ESPHome Bluetooth Proxy を使うのが最も効果的な対処法です。

前提条件

  • ESP32 デバイス(例:XIAO ESP32S3)。
  • Home Assistant にインストールされた ESPHome。
  • ESP32 を Pi に接続するための USB データケーブル(初回のフラッシュ用)。

手順付き設定ガイド

  1. デバイスを接続 — XIAO ESP32S3 を Raspberry Pi の USB ポートに接続します。

  2. 下記の YAML を使用して、新しい ESPHome 設定を作成します:

    ESPHome YAML Configuration

    esphome:
    name: esps3-proxy
    friendly_name: ESP32S3 Bluetooth Proxy

    esp32:
    board: esp32-s3-devkitc-1
    framework:
    type: esp-idf

    # 1. Enable detailed logging (useful for debugging)
    logger:
    level: VERY_VERBOSE

    # 2. Core: Enable Bluetooth Tracker
    esp32_ble_tracker:
    scan_parameters:
    active: true

    # 3. Core: Enable Bluetooth Proxy
    bluetooth_proxy:
    active: true

    api:
    encryption:
    key: "YOUR_ENCRYPTION_KEY"

    ota:
    - platform: esphome
    password: "YOUR_OTA_PASSWORD"

    wifi:
    ssid: "YOUR_WIFI_SSID"
    password: "YOUR_WIFI_PASSWORD"

    captive_portal:
  3. インストール / フラッシュ

    • Install → Plug into this computer(または ESPHome を実行しているデバイス)を選択します。

      ESPHome flashing process

    • 初回のフラッシュ時には、ESPHome が esp-idf ツールチェーンをダウンロードする場合があります。GitHub へ安定してアクセスできるインターネット環境を用意してください。

    • コンパイル後、ログに「WiFi connected」と Bluetooth スキャンの動作が表示されます。

  4. Home Assistant にプロキシを追加します:

    • Home Assistant が新しい Bluetooth Proxy を自動的に検出します。
    • 追加が完了すると、「insufficient slots」エラーなしで、電子ペーパーディスプレイがプロキシ経由で検出できるようになります。

    Success: Bluetooth Proxy connected

    Success: e-paper display added

リソース

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに合わせて選べる複数のコミュニケーションチャネルをご用意しています。

Loading Comments...