Skip to content

Latest commit

 

History

History
181 lines (126 loc) · 13.2 KB

m5paper.md

File metadata and controls

181 lines (126 loc) · 13.2 KB

M5Paper 開発者ガイド

Copyright 2021-2022 Moddable Tech, Inc.
改訂: 2022年3月22日

このドキュメントは、Moddable SDKを使用してM5Paperを使用する方法、アプリのビルドとデプロイ方法、その他の開発リソースへのリンクについての情報を提供します。

目次

SDKとホスト環境のセットアップ

M5Paperでアプリをビルドして実行するには、以下が必要です:

  1. Moddable SDKをインストールする
  2. ESP32ツールをインストールする
  3. (macOSユーザーのみ) 以下のmacOSセクションの指示に従う
  4. 以下のアプリのビルドとデプロイセクションの指示に従う

macOS

macOSでのM5PaperのUSBドライバの状況は少し厄介です。以下の手順を実行してください。

  • macOS Big Sur以降を実行する
  • このissueで参照されているドライバをインストールする

アプリのビルドとデプロイ

Moddable SDKには、M5Paperを最大限に活用する方法を示すいくつかのサンプルアプリケーションがあります。詳細はePaperブログの投稿を参照してください。

ホスト環境とESP32ツールをセットアップした後、以下の手順でM5Paperにアプリケーションをインストールします。

  1. デバイスに付属のUSBケーブルでM5Paperをコンピュータに接続します。

  2. mcconfigを使用してアプリをビルドおよびデプロイします。

    mcconfigは、マイクロコントローラおよびシミュレータ上でModdableアプリをビルドおよび起動するためのコマンドラインツールです。mcconfigの完全なドキュメントはこちらで利用できます。

    mcconfigを使用してM5Paper用にビルドするには、プラットフォーム-p esp32/m5paperを使用します。例えば、epaper-photosのサンプルをビルドするには次のようにします。

    cd $MODDABLE/examples/piu/epaper-photos
    mcconfig -d -m -p esp32/m5paper
    

    examples readme には、画面の回転、Wi-Fiの設定など、他の一般的に使用される mcconfig 引数に関する追加情報が含まれています。

    プラットフォーム -p simulator/m5papermcconfig と共に使用して、M5Paperシミュレータ用にビルドします。

トラブルシューティング

一般的な問題とその解決方法については、ESP32ドキュメント のトラブルシューティングセクションを参照してください。

開発リソース

ポートステータス

以下が実装され、動作しています:

  • EPDディスプレイドライバ
  • GT911タッチドライバ
  • SHT30温度/湿度センサー
  • A / B / Cボタン
  • RTC

注意: GT911タッチコントローラのI2Cアドレスは揺らぎがあります。実装ではアドレス0x14と0x5Dの両方を試みます。これはホストプロバイダのTouchコンストラクタで処理され、ドライバやユーザースクリプトでは処理されません。0x14が失敗すると、0x5Dで再試行する前に例外がスローされます。これに遭遇した場合は、xsbugでGoを押してください。

Display Driver

ディスプレイドライバはPoco PixelsOutの実装です。これにより、Moddable SDKのPocoグラフィックスAPIとPiuユーザーインターフェースフレームワークの両方を使用することができます。

多くの既存のPocoおよびPiuの例はEPDで動作しますが、その多くは実用的ではありません。これらは高リフレッシュレートの小型カラーLCD用に設計されているため、低リフレッシュレートの大きなグレーディスプレイでは見た目が滑稽になることが多いです。このディスプレイ用に設計されたいくつかの例が必要です。

ディスプレイドライバは完全にJavaScriptで書かれています。すべてのハードウェアアクセスにEcma-419 IO APIを使用しています。パフォーマンスは優れており、ネイティブのM5Paperライブラリに組み込まれているEPDクラスよりも高速なことが多いです。その理由の1つは、Pocoが4ビットグレーピクセルに直接レンダリングできるため、ピクセルフォーマットの変換が不要になることです。もう一つの理由は、ディスプレイコントローラーへのSPI転送が一度に数千ピクセルのバルク転送で行われるため、4ピクセルずつ転送する場合に比べて転送されるビット数が半分以上削減されることです。

メモリ使用量も非常に低いです。ESP32メモリにはフレームバッファがなく、レンダリングされたピクセルは16ラインのレンダーバッファ(約8 KB)から直接ディスプレイに送信されます。

Pocoのcontinue機能を使用すると、EPDパネルを一度だけリフレッシュしながら画面の複数の領域を更新することが可能です。これにより非常に効率的な更新が可能になります。つまり、転送されるメモリの量が最小限に抑えられ、長いパネルフラッシュが一度だけ発生します。Piuのballsのサンプルはこれを実際に見るのに良い方法です。ボールの画像(その周りの空白部分ではなく)のみがディスプレイに転送され、4つのボールを囲む矩形のみがディスプレイパネルでフラッシュします。

ディスプレイコントローラの回転機能がサポートされており、0度、90度、180度、および270度の回転でオーバーヘッドなしの回転が可能です。

更新モード

ディスプレイコントローラは、いくつかの異なる更新モードをサポートしています。最適なモードは描画されるコンテンツによって異なります。モードは各フレームで変更することができます。デフォルトのモードはGLD16です。モードを変更するには、グローバルscreenオブジェクトのconfigメソッドを呼び出します。例えば:

screen.config({updateMode: "A2"});

新しいアプリをデバイスにインストールすると、前のアプリから画面に残っているアーティファクトが見えることがあります。これを取り除くためには、高品質モード(例:GC16)で少なくとも1フレームを完全に描画してから、より高速な更新モード(例:A2)に切り替えることが有効です。epaper-flashcardsのサンプルでは、ほとんどのアプリに適用できるパターンを使用しています:

onDisplaying(application) {
	screen.refresh?.();
	screen.configure?.({updateMode: config.firstDrawMode ?? config.updateMode});
	if (config.firstDrawMode)
		application.defer("onFinishedFirstDraw", config.updateMode);
	this.showNextCard(application, 1); // render the initial screen of the app
}
onFinishedFirstDraw(application, mode) {
	screen.configure({updateMode: mode});
}

このパターンを使用すると、デバイスごとのfirstDrawModeおよびupdateMode設定をプロジェクトのmanifest.jsonに適用できます:

"platforms": {
	"esp32/m5paper": {
		"config": {
			"firstDrawMode": "GC16",
			"updateMode": "A2"
		}
	}
}

画像フィルター

ディスプレイドライバは、いくつかの異なるピクセルフィルターをサポートしています。これらのフィルターはピクセルの輝度を調整します。画像の最適化や特殊効果の適用に役立ちます。デフォルトのフィルターは「なし」です。フィルターは各フレームごとに変更できます。フィルターを変更するには、グローバルなscreenオブジェクトのconfigメソッドを呼び出します。例えば:

screen.config({filter: "negative"});

フィルターは16個の値を持つ Uint8Array です。組み込みフィルターの代わりに独自のフィルターを設定するには、次のようにします:

let filter = new Uint8Array(16);
// ここでフィルターを初期化するコード
screen.config({filter});

サンプル

Moddable SDKには、その多くの機能を使用する方法を示す150以上のサンプルアプリがあります。これらのサンプルの多くはM5Paperで動作します。

とはいえ、すべてのサンプルがM5Paperハードウェアと互換性があるわけではありません。例えば、一部のサンプルはM5Paperディスプレイと互換性のない特定のディスプレイおよびタッチドライバをテストするために設計されており、ビルドエラーが発生します。

Moddable SDKには、M5Paperを最大限に活用する方法を示すいくつかのサンプルアプリケーションがあります。詳細については、ePaperブログの投稿を参照してください。

ドキュメント

Moddable SDKのすべてのドキュメントはdocumentationディレクトリにあります。documentationexamples、およびmodulesディレクトリは共通の構造を持っており、情報を簡単に見つけることができます。いくつかのハイライトは次のとおりです:

  • commodetto サブディレクトリには、2DグラフィックスAPIを提供するビットマップ グラフィックス ライブラリであるCommodettoと、軽量レンダリング エンジンであるPocoに関連するリソースが含まれています。
  • piu サブディレクトリには、複雑で応答性の高いレイアウトを簡単に作成できるようにするユーザー インターフェイス フレームワークであるPiuに関連するリソースが含まれています。
  • networking サブディレクトリには、BLE、ネットワーク ソケット、およびHTTP/HTTPS、WebSockets、DNS、SNTP、telnetなどのソケット上に構築されたさまざまな標準の安全なネットワーキング プロトコルに関連するネットワーキング リソースが含まれています。
  • pins サブディレクトリには、サポートされているハードウェア プロトコル (デジタル、アナログ、PWM、I2Cなど) に関連するリソースが含まれています。市販の一般的なセンサー用の多数のドライバと対応するサンプル アプリも利用できます。

サポート

ご質問がある場合は、issue を開く ことをお勧めします。できるだけ早く対応し、他の開発者が支援を提供し、質問への回答から利益を得ることができます。多くの質問にはすでに回答されているため、新しいissueを開く前に以前のissueを検索してみてください。

更新情報

私たちの活動をフォローする最良の方法は、Twitter (@moddabletech) をフォローすることです。新しい投稿に関するお知らせやその他のModdableニュースを私たちのブログで発表しています。