ESP-WROOM-02でTFTに漢字を表示する

HSES-LCD-24


昨年(2016年)、大垣Mini Makers Faire に行ってきました。
そこで面白いものを見つけたので紹介します。
こちらに製品紹 介のページが有りますが、ESP-WROOM-02と2.4インチのTFTを組み合わせた製品(HSES-LCD-24)です。
製作者の方が直々に販売されていましたので、色々お話を聞くことができました。

基盤の表はTFTへのソケットが実装されています。
裏面にはESP、5V→3.3V変換レギュレータ(AZ1117CH-3.3TRG1)、USB→シリアル変換チップ(FT231X)、
Mini USB、IO0とRESETのブッシュボタンなどが実装されています。




USB→シリアル変換チップが実装されているので、USBでPCと繋ぐだけで、UNOの様にArduino-IDEでスケッチを書き込むことがで きます。
スケッチ書き込み時の注意点は、こ ちらに明記されています。
特に重要なのはReset Methodの指定です。
この製品は基板上にNodeMCUやWeMosと同じ自動リセット回路を持っていて、GPIO00のモードを自動的に切り替えてくれます。

非常に完成度の高い製品ですが、何より驚いたのは作者の方が提供している漢字フォントライブラリです。
このライブラリを使うと漢字を表示することができます。漢字ですよ!!カ・ン・ジ!!

ArduinoやESPでTFTに漢字を表示する試みは、こ ちらこ ちらなどで紹介されています。
このライブラリが優秀なのは、漢字ROMやSDカード上のフォントファイルを使わずに
フォントファイルをメモリ上に展開し、フォントドライバーとして動くことです。
フォントファイルはFONTX形式(懐かしい!!)のファイルを使います。
DOS/Vが初めて日本に上陸したときIBM-PC互換機で、$fontxや$dispvのドライバーを使いましたが、
要するにマイコン版のfontxドライバーです。

こちら
にドライバーとサンプルコードが公開されています。
examplesフォルダーにあるKanjiDispを実行すると以下のように表示されます。

なぜか私の環境では、ESP8266 Core 2.4.2を使うと、Flash Size 4Mで正しく動きません。
2.3.0なら正しく動きます。




フォントファイルの読み込みは
@フォントファイルをヘッダーファイル形式に変換したものをincludeする
フォントファイルをヘッダーファイル形式に変換するやり方はこちらに公開されています
Aフォントファイルをプログラムコードの一部としてFLASHに格納して読み込む
BフォントファイルをSPIFFSに格納して読み込む
の3つ方法がありますが、私はAのフォントファイルをプログラムの一部としてFLASHにおいて読み込む方法を試しました。

注意点として、フォントファイルのパスは絶対パスで指定する必要があります。
製作者の方に直接確認した(このために2日続けて大垣まで行きました)のですが、
作者の方も相対パスだと、どこにパスが通るのか分からないそうです。

そこで、私はCドライブの直下に「/fontx」フォルダーを作って、そこにフォントファイルを置いています。
IMPORT_BIN("/fontx/ILGH16XB.FNT", font_16hg); //16ドット半角ゴシックフォント
IMPORT_BIN("/fontx/ILGZ16XB.FNT", font_16zg); //16ドット全角ゴシックフォント

非常に面白い製品なので、色々と紹介していきたいと思います。

続く....