Wio Terminal:なんでもない何かっぽいヘッドライン

Wi-Fiでデータ取得に成功したら、以前M5Stackで作成していた「なんでもない何かっぽいヘッドライン」を作ろうと思っていたのですが、Webからのデータ取得がまだうまくいかず、この先も道は険しそうです。

ここは、ひとまず、Wio Terminalだけで完結するのをあきらめて、データの取得は外部で行うことにしました。PCでデータを取得、スクレイピングを行い、Wio Terminalにシリアルで送信。Wio Terminalは単純に来た文字列を表示するだけ、とします。これならいけそう!


「なんでもない何か」風にするには、画像表示も必要です。M5Stackなら、dwawJpgFile でJPEGファイル一発描画可能なのですが、Wio Terminalにはその関数は実装されてません。

以下に従って、bitmap で表示をやってみます。

loading Images
https://wiki.seeedstudio.com/Wio-Terminal-LCD-Loading-Image/

通常のPCで扱う 24-bit bitmapはそのままでは表示できず、16-bit または 8-bit に変換する必要があります。上記のページで、Python で作成されたツール(bmp_converter.py)が提供されてました。画像処理には Pillow(PIL)ライブラリ使ってますね。

bmpフォルダを作成し、そこに変換したい24-bit bitmapファイルを置いて、bmp_converter.py 実行して、16-bit と 8-bit どちらにするか選択すると、変換が行われます。bmpフォルダ以下に、rgb332(8-bit) または rgb565(16-bit) フォルダが作成されてそこに生成されます。

ここではbmpファイルは配布しませんので、320×240サイズで、いい感じに作成してください!

あとは、上記ページ内の RawImage.h ファイルをダウンロードして ino ファイルと同じフォルダに入れておいてください。bmp画像表示用のライブラリです。

今回のプログラムでは、16-bit bitmapを使うと、メモリ不足なのか(どうかはわからないのですが)途中で動作が止まってしまいました。 8-bit bitmap 使ってください。


日本語フォントは、下記のサイトで公開されているフォントを使わせてもらいました。

M5Stack の LCD に TFT_eSPI を使って日本語フォント “源真ゴシック” で表示する
https://qiita.com/ma2shita/items/fef1608fc9cf3a7bd46a

フォントの変換作業大変なので、とても助かっています。ありがとうございますー。

大きさは、genshin-regular-24pt を使いました。

この形式のフォントデータを使うためには、Arduino ライブラリフォルダにある User_Setup.h の #define SMOOTH_FONT を有効にしておく必要があります。


Wio Terminal 側のソースはこちら。bitmapファイル名、フォントファイル名は各環境に合わせて、変更でお願いします。

https://github.com/shikarunochi/WioTerminalNewsPicker/tree/master/newsPickerSerial


ニュースサイトからの取得と送信はPCのPythonプログラムで行っています。シリアル通信には、pySerial を使いました。それと、Webデータ取得にはrequests 使ってます。

シリアルで日本語データを送信するには、以下のようにすればOKでした!

ser = serial.Serial("COM10", baudrate=115200 ,parity=serial.PARITY_NONE)
ser.write(bytes("日本語です!", 'UTF-8'))

最初に Wio Terminal 側のプログラムを起動した後に、下記の nanika.py と YahooHeadline.py を同じフォルダに入れて、nanika.py 内の COMポートを自分の環境に合わせて変更した後、実行してください。

shikarunochi / WioTerminalNewsPicker
https://github.com/shikarunochi/WioTerminalNewsPicker/tree/master/nanikaHeadlineHost

なんでや!


突っ込みセリフはランダムなので、ニュース内容によっては、会話が不謹慎になることもありますが、そこはご了承くださいー。

コメントを残す

メールアドレスが公開されることはありません。