趣味TECHオンライン | 趣味のモノづくりを応援するオンラインメディア

趣味のモノづくりを応援するオンラインメディア

M5Stackでツリービュー形式の多機能ランチャーを作ってみた


f:id:tokyo_ff:20190514225240j:plain

SDに入れた複数のアプリを選んで起動したり、WiFiの接続設定を行ったり、他にも色々できるランチャーアプリを作りました。

 

<投稿者:らびやん @lovyan03

らびやんと申します。主にWindows用の業務ソフトの開発をしています。2018年の夏ごろにM5Stackを入手して以来ハマっております。M5Stackの開発ではArduinoを使用しています。Pythonは把握できていません…。

twitter.com

 

制作動機

M5Stack Basic

M5Stack Basic

 

M5Stackを触り始めて何か作ろうと思った時、まずメニューのUIが必要だと思い、ツリー形式のUIを作り始めました。SDカードの内容一覧やWiFiのAP一覧が表示できるサンプルを作るうち、次第に多機能化していったので、UI部分をライブラリとして公開し、特に利便性のよい機能を集めてアプリとして公開する事にしました。

 

M5Stack_TreeView

こちらが作成したツリービュー形式のライブラリ部分です。

github.com

ボタンA短押しで親階層に移動、ボタンBで決定、ボタンCでフォーカス移動。ボタンAとCは長押しでフォーカス連続移動ができます。(ボタンAだけ短押しと長押しで挙動が違います。)PLUSエンコーダやGROVE JoyStick等にも対応しています。

 

M5Stack_LovyanLauncher

そしてこちらが作成したアプリケーション、LovyanLauncherです。

github.com

 

Windows環境でしたらReleasesからM5Burner.zipをダウンロードして実行するのが簡単です。ビルド済バイナリがありますので、ESP32 Flash Download Toolを使用しても良いです。

 

色々な機能がありますが、特に次の2つについて説明します。

  • SDカードからアプリを読み込んで起動するSD-Updater
  • 多数の設定手段が用意された WiFi 設定

この2つの機能によって、複数のアプリを入れ替えて試すことが容易になり、アプリ作成時のWiFi設定の実装が不要になります。

 

SD-Updater

f:id:tokyo_ff:20190514225819j:plain

 

フランスのtobozoさんの作成された、SD-Updaterというライブラリがあります。

github.com

 

これを使うと、SDカードに入れてあるアプリを読み込んで起動することができます。より具体的には…、ESP32のフラッシュメモリにはOTA用にアプリ領域が2つあり、 (厳密には、パテーション設定でOTA領域を有効にしている場合に限ります) 片方にランチャーアプリを入れて、もう片方にSDから読み込んだアプリを書込んで起動します。

 

SDに入れるアプリには、起動時にボタンAが押されていたらランチャーに戻るコードを書いておきます。

f:id:tokyo_ff:20190514225951j:plain

こうすることでSD-Updater対応アプリになり、アプリからランチャーへ、ランチャーからアプリへ、切り替えが自由になります。

 

WiFi設定

f:id:tokyo_ff:20190514230020j:plain

M5StackでWiFiに接続する際、WiFi.begin関数の引数でSSIDとパスワードを渡せますが、実は引数を省略し 「 WiFi.begin(); 」 と書くと、最後に使用した設定値が使用されます。つまりLovyanLauncherでWiFi設定を行えば、アプリを作る側はSSID・パスワードの記述やWiFi設定機能の実装が不要になります。

 

LovyanLauncherでは、WiFiの設定手段を複数用意しています。

  • アクセスポイント一覧から選択(パスワードをM5Stackで入力)
  • WPSプッシュボタン方式(WPS対応APのボタンを押す方式)
  • SmartConfigアプリ(スマホアプリで現在接続しているAPのパスワードを入力)
  • APモード+HTTPサーバ(スマホ等でAP接続しブラウザ上でパスワード入力)


WPS対応のAPであればWPSが一番簡単です。スマホがあればSmartConfigアプリが手軽でしょう。また、M5Stack本体しかない状況であっても、本体の3ボタンでのパスワード入力が可能です。

 

おわりに

元々は自分用の単純なUIの試作から始まったものでしたが、Twitterで公開したことでたくさんの反響を頂き、githubを使い始めるきっかけになり、こうして記事を書かせて頂いたりと、M5Stackとネットのお陰で新しい経験を色々とすることができました。これからどんな事が起こるのか、楽しみです。

 

 

<投稿者:らびやん @lovyan03

らびやんと申します。主にWindows用の業務ソフトの開発をしています。2018年の夏ごろにM5Stackを入手して以来ハマっております。M5Stackの開発ではArduinoを使用しています。Pythonは把握できていません…。

twitter.com