当サイト限定「Raspberry Pi 3B+ のセット品」割引クーポン配布中!この機会に是非!こちらから

M5Stackでオリジナルの「LinkTime」を作るための情報

M5で作るLinkTime M5Stack
この記事は約8分で読めます。

KINGJIMから販売されているスマートプログラムアラーム「リンクタイム」LT10はご存じですか? どうもこれってRaspberry Pi で作れそうだったし、M5Stackのような印象です。全く同じではなくても同じコンセプトで作れそうですね!

キングジム 時計 スマートアラーム リンクタイム 黒 LT10クロ

と、言っても私は非プログラマーで非エンジニアです。

この記事で作り方を教えるというよりは、試行錯誤している日記だと思ってください! いや、作ってませんw 色々とこの記事を読んでくれた諸先輩方に教えていただけると幸いでございます。

参加することに意義がある? 参加だけだけどねー。

こういうサンプルで組み上げたら出来るよね?っていう記事になります。

 

なお、本末転倒ではありますが、キングジムのリンクタイム自体は非常に安価なので、使い勝手を望むなら購入した方が早いし安いです!

はじめてのM5StackまたはこれからM5Stackなら初見レビュー

ようこそM5Stack!はじめてのレビュー(M5Stack Gray)
Twitterでフォローしている諸先輩マニアの方々が、少し前からブログなどでも紹介しているM5Stackにとうとう手を出してしまいました。既に呟いたように「思ったよりも小さくて、オラ、ビックリしたぞ!...

リンクタイムの主な機能

KINGJIMのリンクタイムはGoogleと連携したスケジュールの通知をはじめ、アラームと通知に特化しています。

これらをスマホから制御できるというのもウリです。更に通知方法として音声とLEDの色で通知することが可能です。

これらはRaspberry Pi でも実現できるものです。ただ、M5Stackの方が全ての機能を有している点で最適です。見た目も。

M5Stackボタン例

他力本願的M5Stackでリンクタイム

実際に製作するのはプログラムの部分です。プログラマーならGoogleとの連携が無ければ非常に簡単かも知れません。しかし、文系のオヤジにはなかなかハードルが高い!

機能を実装するにあたり、いくつかに分けてみます。

  1. 時計表示
  2. アラーム機能
  3. 音声通知
  4. LED通知
  5. 管理画面

この5項目でほぼリンクタイムですね!

では、これをいつものように「元気玉」としてネットからかき集めたいと思います!!(ザ・他力本願)

時計表示

先ずは時計表示からです。

公式ページの画像を確認すると以下のようになっています。

LinkTime05

全く同じよりも変えた方が面白いでしょう。しかし、そのテクニックもないので、とりあえず機能の部分を探してみます。

NTPで取得

今回はNTP同期で時計を合わせて表示することと、数字の表示を決めることにします。

スケッチ例にあるTFT_Clock_Digitalでも時計はOKかなと思っていました。ただ転送時にシリアル通信経由で時間を送っているので、更新しません。電源を入れると転送時の時間からカウントが始まってしまいます。

これはRTCモジュールが無いからです。Raspberry Pi も同じですね。そのため、Wi-Fiに繋いで取得しないと時計として機能しません。

参考にできるサイトがありました!

M5stack に変な?漢数字スクロール時計を表示させてみた | mgo-tec電子工作
ESP32 搭載 M5stack にスクロールする漢数字で Wi-Fi NTP 時計を作ってみました。ちょっと「変な」時計です。和をイメージするために五色幕調カラーにしてみました。平仮名数字や自作カスタムフォントを表示させたりしています。ボタンで文字列や色を変えられます。

こちらのサイト運営者さんが作ったライブラリを利用するとLCDへの表示制御とフォント、NTPの時刻合わせも対応できますね。

ただ機能も盛りだくさんなので、今回はNTPに対応させ、アラーム用と合わせて時刻を制御できれば良いのかなーと思ってます。

そう思ったらまさにドンピシャなサイトがありました!(クラクスさん)

参考:https://kuracux.hatenablog.jp/entry/2018/10/08/160000

スケッチ例にある「TFT_Clock_Digital」と「SimpleTime」の合わせ技となっております。

こちらをそのまま利用させていただきます。ごちそうさま。

アラーム機能

こちらもシンプルに作成されていたクラクスさんの例を参考にしたいと思いました。

素晴らしいですね! ジャイロも使ってM5Stackならではです。

御神籤は気が付きませんでした。ジャイロセンサって面白いわー。Grayで良かったわー。

しかし、アラームのコードが見つかりませんでした・・・。

音声通知

音声で知らせる機能は、音声合成ですね。Raspberry Pi とはちょっと勝手が違うものの、ESP32で音声合成しているテクニックを探してみました。

AquesTalk pico for ESP32

有名なAquesTalkです。評価版は無償です。気に入ったらライセンスキーを購入しましょう。

AquesTalk-ESP32の評価版はナ行とマ行がすべてヌと発声される制限があります。ライセンスキーを購入することでこの制限が解除されます。

「AquesTalk-ESP32 Ver.2.0」を使う

これはそのまんまですね。ただ、導入するのは少し難しいかな(非エンジニア)

環境構築

ArduinoIDEでビルドするため事前に「Arduino core for the ESP32」はインストールされている状態でライブラリのコピーなどで準備します。

Windows用は公式リンクの通りです。Mac OSXの場合はヘッダを置く場所は以下です。

libaquestalk.aは以下へ
ユーザー名 ▸ ライブラリ⁩ ▸ ⁨Arduino15⁩ ▸ ⁨packages⁩ ▸ ⁨esp32⁩ ▸ ⁨hardware⁩ ▸ ⁨esp32⁩ ▸ ⁨1.0.1⁩ ▸ ⁨tools⁩ ▸ ⁨sdk⁩ ▸ ⁨lib⁩
aquestalk.hは以下へ
ユーザー名 ▸ ライブラリ⁩ ▸ ⁨Arduino15⁩ ▸ ⁨packages⁩ ▸ ⁨esp32⁩ ▸ ⁨hardware⁩ ▸ ⁨esp32⁩ ▸ ⁨1.0.1⁩ ▸ ⁨tools⁩ ▸ ⁨sdk⁩ ▸ ⁨include⁩ ▸ ⁨aquestalk

※aquestalkディレクトリは新規作成する

platform.txtがある場所にplatform.local.txtを新規作成する

platform.txtがある場所

ユーザー名 ▸ ⁨ライブラリ⁩ ▸ ⁨Arduino15⁩ ▸ ⁨packages⁩ ▸ ⁨esp32⁩ ▸ ⁨hardware⁩ ▸ ⁨esp32⁩ ▸ ⁨1.0.1⁩

中身はバージョンにより異なるため、compiler.c.elf.libsの部分はplatform.txtから探してコピーしてください。(私はおよそ真ん中当たり(38行目)に記述がありました)

compiler.c.elf.libsの部分は、Arduino core for the ESP32のバージョンによって異なります。必ずplatform.txtからcompiler.c.elf.libsの部分をコピペして、最後に -laquestalk を加えます。

辞書のコピー

microSDカードにaq_dicフォルダを作成し予めコピーしておきます。

サンプルプログラムでテスト

公式ページにサンプルプログラムがあります。SampleTTS.zip

こちらをテストすると無事に喋りました。しかし、画面がおかしいんだけど、本来はどうなったらいいのだろうか??

Aボタンが定型句を喋ります。

TTS.playK("新しいライブラリは、漢字テキストから音声合成ができるようになりました。", 100);

Bボタンは日付を1日(ついたち)〜31日まで順番に喋ります。

Cボタンは停止です。

このサンプルコードを使い、マニュアルもあるので、音声通知させる時に流用できますね。

「AquesTalk-ESP32 Ver.2.0」を使う | N.Yamazaki's blog
keywords:音声合成, 組み込み, 日本語, ESP32, M5Stack   ■概要AquesTalk-ESP32は、ESP32向けの音声合成ライブラリです。これが今回バージョンアップしました。また、A

LED通知

LEDは物理的に繋げられます。そうしても良いんだけど、画面のフラッシュとか、背景の色変更なんかで対応するのもいいのかなー。

背景を変更するなら、こちらが参考になりました。

M5StackのLCDディスプレイの色をRGBで指定する。 - Qiita
##目的 M5StackのLDCディスプレイでは、16Bit Colorで色を指定するようになっている。 直感的にわかりやすい、RGBの24Bit color(8Bit color x 3channel)で、色を指定する。 ##従...

アラームや音声通知などのタイミングで予め決めた背景で動作させれば、簡易的に色での通知にもなりますね。

反転フラッシュさせれば目立つかな?

管理画面

スケジュールの登録とか、設定なんかを管理したいところです。とは言っても外部から読み込むのは意外と大変です。・・・というより何をするにも非プログラマーには大変なんですが・・・。

WEBインターフェイスが最初に浮かびました。もしくは定義したテキストを読み込ませるとか?

リアルタイムで変更できるのが理想なんですけど、そこまでの開発能力はないので、組み込んで作って、毎度転送し直す形でインターフェイスはまた別に追加できればと思います。

まとめ

冒頭のようにリンクタイムもどきは作っていません!(ダメじゃん)

今回のように機能としては割と簡単に実現できそうです。あとは上手く組み上げて、見た目を凝るのは面白そうです。

あとは、他のエンジニアさんのサイトのように、M5Stack Grayならではの、ジャイロセンサを使ったユーザーインターフェイスは分かり易いですね!

通常時はアバター表示っていうのも可愛いと思います。

 

今回はここまで〜。

コメント