ESP32-WROOM-32 の SPIFFS を使って、日本語漢字 美咲フォント を読み込む

ESP32 ( ESP-WROOM-32 )
Arduino - ESP32 SPIFFS アップローダー プラグインが使えるようになりました。
micro SDカード要らずで、Windows PC から直接アップロードできるようになりました。
以下の記事も合わせて参照してください。
●ESP32-WROOM-32 SPIFFS アップローダープラグインの使い方
●ESP32-WROOM-32 SPIFFS メモリサイズを大きくする方法
(2017/10/24)

こんばんは。

いきなり別件話題ですが、最近、Twitter や Facebook などで、ESP-WROOM-02 のフラッシュが4MB ではなく、2MBだったという情報が流れています。
ESP-WROOM-02のFlash ROMが2MBになっていた(減ってた)
ESP32-WROOM-32 についても有り得る話題ですので、気を付けなければなりませんね。
フラッシュサイズやチップリビジョンの確認は Arduino IDE でも可能ですので、近々まとめようと思っています。

さて、話を戻しまして、今回は、ESP32-WROOM-32 の SPIFFS (内蔵フラッシュメモリファイルシステム)を使って、8×8ドットの日本語漢字フォント、美咲フォントを読み書きして、ディスプレイに表示させてみました。

最近の Arduino core for ESP32 の更新により、ようやく公式で Arduino IDE の SPIFFS 開発が可能になりました。
今までも非公式では可能だったのですが、ようやく公式でできるようになったのです。

SPIFFS ファイルシステムは ESP-WROOM-02 ( ESP8266 )では Arduino IDE プラグインがあり、とても使いやすかったのですが、ESP32-WROOM-32 ではプラグインはまだありません
そして、保存できるファイルサイズは、なぜか 1MB少々です。
ESP32-WROOM-32 のデータシートによると、4MB×4 = 16MB まで可能だったと思うんですが、Arduino IDE では方法がまだ分かりません。

※ESP32-WROOM-32 の Flash サイズは 4MB です

そこで、8×8ドットの美咲フォントなら保存できたので、使ってみました。

ファイルを SPIFFS フラッシュにコピーする場合には、micro SDHC カードを使ってコピーします。

これができると、外付けSDカード要らずで、ESP32-WROOM-32 開発ボードだけで文字を表示させることができてとても便利です。
ただ、micro SDHC カードより読み取り速度は遅いです。

では、その方法を紹介したいと思います。
今回は、スイッチサイエンスさんの ESPr Developer 32 で説明したいと思います。
ESP32-DevKitC でも同じピン番号で接続すれば使用できます。

スポンサーリンク

準備するもの

ESPr Developer 32 ( ESP32-WROOM-32 開発ボード )

スイッチサイエンスさん販売のもので、ESP32 や USB接続機器の各種保護機能が充実しています。
私個人として、超お勧めのボードです。

つい最近では Amazon.co.jp さんでも販売されておりました。
(※ピンヘッダやピンソケットは別売りです)

ESPr Developer 32
スイッチサイエンス(Switch Science)

もちろん、スイッチサイエンスさんのサイトでも販売されています。

ESPr® Developer 32

フルカラー OLED ( 有機EL )ディスプレイ SSD1331 モジュール

SPI通信で制御する SSD1331 ドライバのモジュールです。
フルカラーで小型なのでお勧めですが、Amazon.co.jp さんでは中国販売店のものしかありません。
以下のところは安いのですが、到着まで10日~2週間くらいかかります。
ピンヘッダは別売りかも知れませんし、付属しているかも知れません。

以前は格安の HiLetgo 販売のものがありましたが、今はありません。

その他、ちょっと高めですが Amazon プライム対応のものがあります。
この場合、即配達してくれます。

その他、日本の販売店では秋月電子通商さんで、Pmod というモジュールで販売しています。

Pmod OLEDrgb Pmod96×64有機ELディスプレイ

SparkFun マイクロSDカードスロット・ピッチ変換基板

シンプルな micro SDカードスロット基板です。
スイッチサイエンスさん販売のものです。

SparkFun マイクロSDカードスロット・ピッチ変換基板

micro SDHC カード

当方で動作確認がとれた micro SDHC カードは以下のものです。

Transcend microSDHCカード 8GB Class10 UHS-I対応 Nintendo Switch 動作確認済 TS8GUSDU1
トランセンドジャパン
¥1,080(2024/03/19 01:06時点)

1/4W 10kΩ固定抵抗×2つ

micro SDHC カードとSPI通信するためのプルアップ抵抗です。

その他、ブレッドボード、ピンヘッダ、ピンソケット、ジャンパーワイヤー等

microSDカードからSPIFFSでコピーするための接続

ESPr Developer 32 の使い方については、以下のページを参照してください。
ピンヘッダまたはピンソケットを予めハンダ付けしておく必要があります。

ESPr Developer 32 ( スイッチサイエンス製 ) を使ってみました

まず、フォントデータをmicro SDHC カードからコピーするために、micro SDHC カードスロットを接続します。
下図の様にしてください。

micro SDHC カードスロットとは VSPI 接続にします。

micro SDHC カードの DI ( MOSI ) と DO ( MISO ) 端子は必ず 10kΩ以上の抵抗でプルアップしておくことが必要です。

写真ではこんな感じになります。

美咲フォント、UTF-8→ Shift_JIS 変換テーブルのダウンロード

美咲フォントはフリーの日本語漢字フォントで、過去の記事で何度も紹介しております。
門真なむさんが開発されていて、8×8ドットのものを読みやすくするために実際は7×7ドットになっています。
こちらの記事のように、8×8ドットの LED マトリックスで表示させると絶大な効果が発揮されます。
電子工作的にはとても素晴らしいフォントです。

ただ、複雑な漢字の判読はかなり厳しいものがあります。
その場合はやはり16×16ドットの東雲フォントくらいが良いでが、ファイルサイズが 1.1MB くらいありますので、Arduino – ESP32 の SPIFFS システムで ESP32-WROOM-32 のフラッシュには書き込めませんでした。
ということで、今回はファイルサイズが小さい美咲フォントを使う事にしました。

美咲フォントのダウンロード

ダウンロードは以下のページにあります。
PC-E500 SCRNJPN.FNT 形式のZIPファイルをダウンロードしてください。

8×8 ドット日本語フォント「美咲フォント」

ZIPファイルを解凍して、その中の MSKG13KU.FNT というファイルのみを使用します。

半角フォントのダウンロード

美咲フォントファミリーには4X8.FNT というものもあるのですが、あまりに小さすぎて判読し辛いので、私がそれを改変した4×8ドットの半角フォントファイルがあります。

GitHub の以下のページにありますので、ダウンロードしてください。

mgo-tec_FONT

ZIPファイルをダウンロードしたら、その中の mgotec48.FNT というファイルを使います。

UTF8→Shift_JISコード変換テーブルファイルのダウンロード

Arduino IDE 1.8.2以降のスケッチ入力では、文字コードは UTF-8 が使われています。
美咲フォントは Shift_JIS コード並びなので、文字コードを変換する必要があります。
それには私が自作した、UTF8 → Shift_JIS コード変換テーブルファイルが必要です。
GitHub の以下のページにあります。

UTF8_to _Sjis

ZIPファイルを解凍していただき、Utf8Sjis.tblというファイルを使います。
フォントファイルよりもこちらの方がサイズ大きいです。

micro SDHC カードにフォントファイルをコピーする

上記でダウンロードしたフォントファイルをmicro SDHC カードにパソコンでコピーしておきます。

販売されている micro SDHC カードは殆どが予め FAT32 でフォーマットされていますが、フォーマットできていない場合は以下の記事を参照してください。

micro SD 、micro SDHC カードの初期化(フォーマット)方法

私の場合はmicro SDHC カードに font というフォルダを作成しました。
そのフォルダに以下の3つのファイルをコピーしてください。

MSKG13KU.FNT  ( 59KB )
mgotec48.FNT  ( 3KB )
Utf8Sjis.tbl  ( 236KB )

Arduino – ESP32 の設定

事前に Arduino core for ESP32 をインストールしておいてください。
インストール方法は以下のページにあります。

Arduino core for the ESP32 のインストール方法

Arduino IDE のバージョンは 1.8.4 で動作確認が取れています。
Arduino core for ESP32 は最新版を使って下さい。

コメント

  1. いなり より:

    MAX7219制御の8x32のマトリックスLEDに美咲フォントを表示さしたいです。どうすればいいかわからないのでご教授願いたいです

    • mgo-tec mgo-tec より:

      いなりさん

      記事をご覧いただき、ありがとうございます。

      残念ながら、MAX7219は使ったことが無いので、まったく分かりません。

      ご気分を害されるかもしれませんが、正直にお答えしたいと思います。
      私がその美咲フォントを表示させるためには、それぞれの部品を購入し、1から回路を作成し、各パーツのデータシートを熟読し、オシロスコープ等で波形を確認しながらプログラミングすることになります。
      他の仕事をしないで、それにかかりきりになれば、1か月くらいでできるのではないかと思います。
      また、それができたとして、お教えするためにはブログに記事をアップするなどの、原稿執筆の時間が更に半月くらいかかります。

      今現在の私の場合は、他の本業の仕事と家庭の仕事があり、更に次の新規記事の編集を抱えていますので、その倍以上の日数がかかります。
      その期間の生活費や賃金をお支払い頂かないと、とてもご依頼にお答えすることはできません。
      以上、ご要望にお応えできず、誠に申し訳ございませんが、ご理解くださいませ。

  2. いなり より:

    丁寧な返信をしていただきありがとうございます。これからデータシートとにらめっこしながら自分で開発していきたいと思います。これからもこのブログを読ませていただくので更新頑張ってください。

タイトルとURLをコピーしました