M5stackを電光掲示板にする
M5Stackとスマホ(PC)をwifiルータを介して接続。 好きな文字列をM5stackの液晶に表示させます。
以下サイト様の記事で作成されていたものを、実行しましたが、インストールするライブラリ数が多く、ややこしかったため、備忘録的に自分なりにまとめてみました。
必要な物
- M5stack Basic grayでも可能です。
- microSDカード PCよりフォントデータを書き込み、最終的にはM5stackに挿入して使用します。
- wifiルータ スマホとの通信の際に使用します。
- スマホorPC webブラウザを開けるなら、iOS端末でもandroid端末でもOK。
- PC(開発環境) なんでもいいですが本記事では、arduinoIDEインストール済windows10 環境で実施しています。 また、M5stackに必要なドライバ等はインストール済としています。 ドライバのインストールについては、以下記事を参照ください。
SDカードへのフォントデータ書き込み
フォントデータのダウンロード
フリーのフォントとして有名な東雲フォントを使用します。
shinonome font familyというサイトから「2004-09-15 0.9.11 リリース」→「 shinonome-0.9.11p1.t..>」を押してダウンロード。
ファイルを2回解凍して、ファイル内から 半角データ
shnm8x16r.bdf
、全角データshnmk16.bdf
の2種類を使用するため、これを取り出しておきます。 なお、このとき半角データのファイル名をrを消してshnm8x16.bdf
としておきます。1
SDカードのフォーマット
FAT32でフォーマット
/font/というフォルダを作成しておく ここにフォントデータを入れます
書き込みデータのDL
GitHub - mgo-tec/UTF8_to_Shift_JIS
ファイルの書き込み
以下3つのファイルをSDカードに書き込む。
shnmk16.bdf
shnm8x16.bdf
Utf8Sjis.tbl
HTML ヘッダファイルをSD カードへ書き込む
WebSocket 通信を行うために、ブラウザに表示させる HTML のヘッダファイルをSDカードに移す。
HTMLヘッダファイルをコピー
GitHub - mgo-tec/ESP32_SD_EasyWebSocketより、ESP32_SD_EasyWebSocket-master.zip
をダウンロード。インストールしたライブラリの以下ディレクトリ内に以下3つのヘッダファイルがあるのでこれをコピーする。
~\ESP32_SD_EasyWebSocket-master.zip\examples\ESP32_SD_EWS_STA_sample\data
LIP2hed1.txt
LIP2hed2.txt
dummy.txt
ファイルの書き込み
SDカードに新たに/EWS/というフォルダを作成し、そこに上記3ファイルをコピーする。
コピー後、PCから取り外して、M5stackに挿入。 これでSDカードの作業は完了です。
M5stack(ESP32)へのプログラム書き込み
必要ライブラリのダウンロード
以下5つ必要なライブラリをダウンロードする。 なお、使用させていただくライブラリはすべてmgo-tec様リポジトリのものです。
ESP32_SD_UTF8toSJIS-master.zip
ESP32_SD_ShinonomeFNT-master.zip
- Shift_JISコードの東雲フォントを、SPI接続のmicroSDカードからESP32で読み込むためのライブラリ
- GitHub - mgo-tec/ESP32_SD_ShinonomeFNT: Arduino core for the ESP32 Japanese font (Shinonome) library
ESP32_Button_Switch-master.zip
- ボタンのチャタリング対策や瞬時押し、長押し、持続押しの判別ができるライブラリ
- 今回実行させるプログラムには直接関与しないが、インストールするライブラリにインクルードされているため、入れておく必要がある
- GitHub - mgo-tec/ESP32_Button_Switch: Arduino core for the ESP32 Button Switch Simple Library
ESP32_LCD_ILI9341_SPI-master.zip
- M5stack に SPI 接続されている TFT LCD ( 液晶ディスプレイ ) ILI9341 を駆動させるためのライブラリ
- ESP32_LCD_ILI9341_SPI/src at master · mgo-tec/ESP32_LCD_ILI9341_SPI · GitHub
ESP32_SD_EasyWebSocket-master.zip
- micro SD カードから HTML や Javascript ファイルを読み込んで WebSocket 通信するライブラリ
- このライブラリによって、webブラウザ上でのUI表示、操作が可能になる
- GitHub - mgo-tec/ESP32_SD_EasyWebSocket
arduino IDEへのライブラリ(zip形式)インストール手順
ダウンロードしたライブラリをarduinoIDEにインストールする。 arudinoIDEには、形式さえ対応していれば、ライブラリをzip形式のままインストールする機能が備わっている。
- 「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」を選択
上記でDLした
ESP32_SD_UTF8toSJIS-master.zip
を選択しインストール同様に以下4つもインストール
ESP32_SD_ShinonomeFNT-master.zip
ESP32_Button_Switch-master.zip
ESP32_LCD_ILI9341_SPI-master.zip
ESP32_SD_EasyWebSocket-master.zip
arduinoIDEを再起動する
ソースコードの入力
以下サイト様よりソースコードをarduinoIDEにコピペ。 M5stack ( ESP32 )電光掲示板をスマホでリアルタイムコントロールしてみた | ページ 2 / 2 | mgo-tec電子工作
17,18行目のxxx部分をスマホ、PCが接続されているwifiルータのSSID、パスワードに書き換える。
const char* ssid = "xxxxxxxx"; //ご自分のルーターのSSIDに書き換えてください const char* password = "xxxxxxxx"; //ご自分のルーターのパスワードに書き換えてください
「ツール」タブより、 ボード選択で「ESP32 Dev Module]を選ぶ その他項目も以下画像の用意選択する。
コンパイル実行し、M5stackに書き込む。
掲示板を使ってみる
M5stackを起動する
M5stackを起動させると、画像の様な画面になり、プログラムに記述したSSIDのwifiアクセスポイントに自動的に接続されます。
接続に成功すると、IPアドレスが表示されます。
webブラウザを開く
M5stack上に表示されたIPアドレスに、同じwifiアクセスポイントに接続されたPC(スマホ)のwebブラウザでアクセスしてみます。 するとこのような画面が出てきます。
表示テキストを変更して、「送信」を押すと好きな文字が出ます。 テキストスクロールをStartにすると、テキストがスクロールを始め、スクロール速度、テキストの横幅、縦幅を変更するたびリアルタイムで表示が対応して変化します。
使ってみた様子
スマートフォン向けUIとなっているため、タッチ操作できないPCはスクロールスピード等がいじれないかもしれません。(未検証)
M5stack、リアルタイム電光掲示板動いた。 pic.twitter.com/wAfRbamL0E
— アメガン (@8aomegane8) 2018年8月16日
所感
M5stackが電光掲示板になりました! 意外にもラグがほとんどなく、コンパイルエラーも起きなかったので、ライブラリの完成度の高さに感動しました・・・。 ブラウザのUIに関しては操作性や利便性を考えると、色々改善できそうですね。(HTML勉強しなきゃ・・・) 今回はwifiですがせっかくBluetoothもあるので、次はこれを少し発展させてBLEによるスマホとの直接通信で電光掲示板を作ってみたいですね。あいにく自分はandroid端末を持っていないので、スマホアプリ開発は・・・まだまだ先になりそうです(逃げ)
-
ArduinoIDEにおいて、ファイル名が8文字以上だとエラーが起きる場合があるらしく、こうすべきらしい。(ソース不明)参考:日本語漢字ビットマップフォント、東雲フォントについて|mgo-tec電子工作↩