OLED ( 有機EL ) SSD1306 に16×16ドットのフリーの日本語漢字、東雲フォントを表示させてみました

ESP8266 ( ESP-WROOM-02 )
この記事を書いた当初のESPr Developer(ESP-WROOM-02)のFLASHサイズは4MBでした。
しかし、現在のESPr Developerおよび、ESP-WROOM-02 のFLASHサイズは2MBのものが流通しています。
その場合、東雲フォントなどの1MB以上の大きいサイズのファイルは SPIFFS へアップロードできませんのでご注意ください。
FLASHサイズの調べ方は以下の記事を参照してください。
ESP-WROOM-02 ( ESP8266 ) チップ・メモリ・MACアドレス情報確認方法
(2018/06/22)

 

こんばんは。

記事アップまでしばらく時間がかかりましたが、ESP-WROOM-02 ( ESP8266 ) と OLED ( 有機EL ) SSD1306 でフリーの日本語漢字フォントである、東雲フォントを表示させることにようやく成功しました。
16×16ドットの有料の漢字ROMを増設して表示させる方法はネットにはありましたが、フリーのフォントで16×16ドットのフォントを表示させる方法はネットには全く情報が無かったので、かなり苦労しました。

いかがでしょうか。
以前の記事の8×8美咲フォントの倍角よりはかなり複雑な文字も鮮明に見えると思います。
( JIS 13区の丸囲み文字などは表示できません。 )
ただ、SPIFFSファイルシステムによるフラッシュからのフォントデータ読み込みに8×8ドットの4倍時間がかかるので、表示速度は必然と遅くなります。

最近気が付いたのですが、東雲フォントの「東雲」は 「しののめ」 と読みます。私はずっと「とううん」と読んでました。
この東雲フォントは古川泰之さん原作のビットマップフォントの保守・開発を efont さんが引き継いだものだそうです。
ライセンスはPublic Domain ですからフリーで使えます。
詳しくは http://openlab.ring.gr.jp/efont/shinonome/ のページを参照ください。
こういうフォントをフリーで配布してくださるのは本当に有り難いことです。
そして、実際に字体を見るととても美しいし素晴らしいです。
これだけの文字数を作り上げることはさぞかし大変だったろうと思います。
今のパソコン環境ではビットマップフォントは殆ど使われてないと思いますが、電子工作ではとても重宝するものです。
私もライブラリを作ってみてとても苦労したので、偉大な先人たちの努力が本当に身に染みて感じている次第です。古川さん、efontさんに感謝せずにはいられません。

16×16ドットの東雲フォントはゴシック体で1.11MBありますので、Arduino IDEのESP8266ボード設定で、SPIFFSフラッシュサイズを3Mにしなければなりません。
実は、それがなかなか問題有りなんです。フォントをフラッシュにアップロードするのがハマリどころです。

では、この方法について順番に解説していきます。

スポンサーリンク

1.準備するもの

● ESPr Developer ( ESP-WROOM-02 開発ボード ) (スイッチサイエンス製)
当ブログでは何度も紹介しておりますが、このボードに関する記事についてはこちらのページをご覧ください。
今現在、ガンガン使い倒しておりますが、当方では全くのトラブル無しで快適に動作しております。シリアル変換や電源周りがしっかりと設計されているので素晴らしいボードですね。
かなり売れておりますので、在庫切れの場合があります。
スイッチサイエンスさんのページ
https://www.switch-science.com/catalog/2500/
から直売しておりますので、こちらでチェックしてください。

Amazon.co.jpではこちらにあります。どれでも使用できると思います。

ESP-WROOM-02開発ボード
スイッチサイエンス(Switch Science)

ESPr Developer(ピンソケット実装済)
スイッチサイエンス(Switch Science)

● OLED (有機EL) SSD1306
128×64ピクセルのI2C通信SSD1306付きの有機ELならばどれでも使えると思います。
当方ではDIYmallさん販売の2色表示のものを使用しました。


以下の製品は1色表示のみですが、問題なく使えると思います。

※Amazonさんで検索すると同じ有機ELでもSPI通信とI2C通信がありますが、今回はI2C通信のものを使いますので間違えないようにしてください。

●ブレットボード、ジャンパーワイヤー等

2.接続方法

接続方法は以下の通りです。

3.Arduino IDE 設定

初めて当ブログをご覧の方にも分かるようにすると、これから説明しなければなりません。
当方ではWindows PC で説明します。
Arduino IDE はver1.6.9で動作確認しております。予めインストールを済ませておいてください。
※IDEの以前のバージョンがインストールしてある場合、こちらのページを参照していただき、アンインストール後、Arduino15フォルダを削除してから、再インストールしてください。
Arduino IDE 1.6.9 のアップデート方法はこちらのページを参照してください。

●Stable版ESP8266ボードのインストール
プラグインのStable版ESP8266ボードをインストールします。
動作確認済みバージョンは 2.3.0 です。(2016/7/11現在)
そのインストール方法はこちらのページをご覧ください。
ツールメニューのESP8266ボードの設定は以下のようにしてください。
特にフラッシュサイズは4M(3M SPIFFS) を選択してください。

・マイコンボード→ Generic ESP8266 Module
・Flash Mode→ QIO
・Flash Frequency→ 80MHz
・CPU Frequency→ 160MHz
・Flash Size→ 4M (3M SPIFFS)
・Debug port→ Disabled
・Debug Level→ なし
・Reset Method→ nodemcu
・Upload Speed→ 115200
・シリアルポート→ ご自分の環境のUSB COMポート
・書込み装置→ USBasp

●SPIFFSファイルシステムのインストール
プラグインのESP8266 SPIFFSファイルシステムのインストールをします。
動作確認済みバージョンはは 0.2.0 です。
方法はこちらのページをご覧ください。

4.ライブラリのインストール

私の作成した以下のArduino IDE ライブラリをインストールします。
全てMITライセンスです。再配布、改変は自由ですが、ライセンス表記はしておいてくださいというものです。
Web上グローバル社会ではライセンス表記していないと逆に配布できないそうなので、そうしてます。
ここで注意していただきたいのは、以前のバージョンのライブラリは削除しておいてください。
Arduino IDE のlibrariesフォルダにあります。
ドキュメントフォルダ内のArduinoフォルダ内にある場合もあれば、C:\Program Files\Arduinoフォルダ内のlibrariesフォルダにある場合もあります。
ご自身のインストールした方式で削除してから再インストールしてください。

●ShinonomeFONTreadライブラリ
こちらは今回初登場です。
Shift_JISコードから16×16ドットと8×16ドットのビットマップ東雲フォントをESP-WROOM-02 ( ESP8266 ) のフラッシュから読み込むためのものです。
GitHubのこちらのページにありますので、ZIPファイルをダウンロードしてください。
GitHubのWebページは頻繁に改良されていて、ダウンロード方法が変わっていることがあります。私も知らぬ間に変わっていて戸惑いました。あんまり変えないでほしいですねぇ・・・。記事を修正するのが大変です・・・。
このページを開くと2016/5/31時点で以下の様に表示されます。


ダウンロードしたZIPファイルはIDE1.6.9の場合はZIPファイルのまま簡単にインストール可能です。下図のようにクリックしていけば自動インストールされると思います。
この場合、ドキュメントフォルダのArduinoフォルダの中のlibrariesフォルダにインストールされます。

今までのようにZIPファイルを解凍してIDEのlibrariesフォルダにコピーしてもOKです。
その場合、ShinonomeFONTread-masterというフォルダの更にその中のShinonomeFONTread-masterフォルダをコピーしてください。
ライブラリのインストールが終わったら必ずArduino IDEを再起動してください。

●UTF8toSJISライブラリ
現バージョンはVersion1.0で当初から変わってませんが、Arduino IDE1.6.9用にサンプルスケッチのファイル名やlibrary.propertiesファイルを追加しています。こうしておかないと何故かIDEで認識してくれないということがあった為です。

Arduino IDEスケッチ上の文字コードはUTF8です。
WindowsのArduino IDEシリアルモニターはShift_JISです。
Web上の文字コードは殆どがUTF8です。
東雲フォントはJIS並びデータですが、Shift_JISとほぼ同じ並びです。
したがって、UTF8からShift_JISへ文字コードを変換する必要があります。
そのため、このライブラリが必要になるわけです。
GitHubのこちらのページからZIPファイルをダウンロードしていただき、解凍してください。
UTF8SJIS_for_ESP8266-masterフォルダの中の更にその中のUTF8SJIS_for_ESP8266-masterフォルダをIDEのlibrariesフォルダにフォルダごとコピーしてください。
又は、IDEからZIPファイル自動インストールしてください。
このライブラリには Utf8Sjis.tbl という変換テーブルファイルが必要です。
このテーブルファイルはこちらのページにあります。
このライブラリの解説はこちらのページをご覧ください。

●OLED_SSD1306ライブラリ
こちらも当方で自作したI2C通信用SSD1306ライブラリです。
現在、バージョンアップして Beta ver 1.5 になっていますのでGitHubのこちらのページからZIPファイルをダウンロードして解凍しておいてください。
beta ver1.0では動作しませんので注意してください! 必ず、以前のバージョンのライブラリフォルダは削除しておいてください。
OLED_SSD1306-masterフォルダの中の更にその中のOLED_SSD1306-masterフォルダをIDEのlibrariesフォルダにフォルダごとコピーしてください。
又は、IDEからZIPファイル自動インストールしてください。

コメント

  1. 隣人 より:

    こんにちは。楽しく参考にさせてもらっています。
    まずは全てを真似してみようということでESP-WROOM-02 開発ボードをいくつか購入しIDEのバージョンなど諸々をそろえてやってみました。

    ところが、なんと、「6.SPIFFSファイルシステムとOTAでESP8266フラッシュにファイルをアップロードする」がUSB経由で成功しました。

    で、確認したところ、ESP-WROOM-02 開発ボードのリビジョンによる違いがあるようです。

    「Rev.2」と記されているESP-WROOM-02 開発ボードでは成功しますが、表記の無いものは失敗します。

    リビジョンの違いが仕様面でどのような違いがあるのか把握できていませんが、ご参考まで。

    • mgo-tec mgo-tec より:

      隣人さん

      当ブログをご覧いただきありがとうございます。

      とても有益な情報ですね。
      私の方でも、ハードがRev.2と刻印されているものはArduino IDE ver1.6.10で問題なくシリアルUSBでSPIFFSの3Mアップロードできました!!!
      どうやらハードの問題だったようですね。
      ライブラリの問題かと思って諦めてました。
      近いうちに当ブログでもこの情報をアップしたいと思います。
      貴重な情報ありがとうございました!!!

  2. Youtaka7 より:

    こんにちは。楽しく拝見しています。ESPr DeveloperのRev.3とIDE1.6.12で追加ボードマネージャをstagingにして全てUSB経由で実行したところ、上手くできましたのでお知らせ致します。因みに私はWindow7 ,64bitのOSで使っています。

    • mgo-tec mgo-tec より:

      Youtaka7さん

      当ブログをご覧いただきありがとうございます。

      これって、SPIFFSアップロードの件ということで良いのでしょうか?

      SPIFFSならば、当方の環境では、staging版、stable版の両方ともダメでした。
      環境は、Windows10, 64bit, です。
      Arduino15フォルダを削除してもダメでした。
      GPIO 0, 2, 15 を外してもダメでした。
      シリアルの転送速度を115200, 921600 で試しましたがダメでした。
      スケッチのアップロードは問題なくOKのですが・・・。

      Win7 でOKならばWin10でもできると思うのですが、不思議ですね。
      何が違うのかサッパリ分かりません。
      とりあえず、一手間かかりますが、OTAでアップロードしています。

      • Youtaka7 より:

        お世話になっています。もちろんSPIFFSの件です。他のRev.3でも上手くいきました。ただ、無印のものでは、SPIFFS Upload failedになり上手くいきません。なお、私はRev.2は持っていません。Revによる違いは良く分かりません。
        Switch sience さんに聞いて見ようと思っています。

        • mgo-tec mgo-tec より:

          なるほど、Rev.3 でもうまくいったというのは不思議ですね。
          ESPr Developer の回路図を見ると、トランジスタをうまく使って自動的にGPIO #0 のHIGH LOW を切り替えているようですが、私もそこはあまり詳しく解析していません。
          今はOTAでアップロードできるので、無理して解析しなくてもイイかな・・・、と思ってました。
          もし、スイッチサイエンスさんに聞いて何か分かりましたら、ぜひ教えていただけると幸いです。
          情報ありがとうございます。

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