LoginSignup
4
4

More than 5 years have passed since last update.

M5Stackでスマートウォッチ

Last updated at Posted at 2018-12-12

1. はじめに

M5StackにRTCを接続しI2C通信で時刻の設定、取得を行うの続編です。RTCを搭載し時計として使用しているほか、気温や湿度、気圧のチェックにも使用しています。また、OSDを用意しtwitterやQiita、GitHubのURLをQRコードで表示したりソフトウェアのテストツールのプロトタイピングに使用するコマンドを足しています。

IMG_9255s.jpg

温度・湿度はDHT12とBME280で示す値が異なります。温度はケース内部に収めているBME280の方がDHT12より高めに表示されるようです。一方、湿度はBME280の値は妥当というかDHT12の値がBME280の半分程度(?)で変なのですが、DHT12を別の個体に変えてもBME280の半分程度なのは変わらず深くは追っていません。。。

2. 機能概要

実装した機能を以下に示します。
IMG_9256s.jpg
IMG_9272s.jpg

  • サンプルソースのTFT_Clockを使ったアナログウォッチ
    • 現在時刻(PCF8563T)
    • 年月日
  • ケースに貼りつけたDHT12で温度・湿度の計測
  • ケース内部に収めたBME280で温度・湿度・気圧の計測
  • バッテリー電圧の計測
  • OSDメニューおよびtwitterやQiitaなどのURLのQRコード表示
  • M5Stackでコマンド操作のコマンド追加、など

ソースコード一式はGitHubにありますのでここではハードウェアと、ソフトウェアの補足をします。

3. ハードウェア

3.1 使用パーツ

3.2 ドーターボード

ドーターボードの写真と部品配置図です。BME280モジュールはUSB端子の上に立てています。ドーターボードとM5Stack本体の間にウォッチバンドに同梱のバッテリーを配置しています。
smartwatch_block.png

参考までにBME280搭載前は空中配線でした。
IMG_9031s.jpg

3.3 ドーターボードの組立

ドーターボードの基板は千石電商で購入した曲がる基板100x180mm(片面)で、はさみやカッターナイフで加工します。ドーターボードとM5Stack本体の間にバッテリーを配置できるよう隙間を持たせてピンヘッダをはんだ付けします。
IMG_9035s.jpg

M5Stack本体にドーターボードをはめ、はんだ付け前のBME280モジュールとプロトモジュールの枠パーツを配置した様子です。枠パーツはウォッチバンドのベースのツメが収まるようにカッターナイフで加工しています。
IMG_9036s.jpg

I2Cのバス(Clock、Data)と3.3V電源を引き出したところです。
IMG_9037s.jpg

バッテリー電圧測定用の抵抗は部品面に配置します。BATT端子の電圧を10kΩと20kΩの抵抗で分圧しADC(#36ピン)へ印加します。
IMG_9038s.jpg

この後、PCF8563TモジュールとBME280モジュールのI2Cと電源を配線しドーターボードの完成となります。

3.4 ウォッチバンド

ウォッチバンドのベースとM5Stack本体はボルト2本でねじ止めするためこのままではボルトのない側に隙間ができてしまいます。そこでプロトモジュールの枠パーツにねじでアンカーを打ち、ウォッチバンドのピンを通す穴にスズメッキ線を並行して通してアンカーに巻き付けています。ねじはプロトモジュールの基板を固定しているものを利用しています。
IMG_9257s.jpg

4. ソフトウェア

4.1 構成

ソフトウェアの構成は以下のようになっています。

役割 ファイル 備考
アプリケーション本体 MyM5Stack005.ino
MyM5Stack.h
setup、loop、CLIなど
OSD MyM5OSD.cpp
MyM5OSD.h
ユーティリティ MyM5Utils.cpp
MyM5Utils.h
アナログウォッチ TFTClock.cpp
TFTClock.h
サンプルコード(TFT_Clock.ino)を改修
年月日を追加
BME280ドライバ SSCI_BME280.cpp
SSCI_BME280.h
スイッチサイエンス製BME280ドライバを改修
PCF8564Tドライバ pcf8563.cpp
pcf8563.h
M5StackにRTCを接続しI2C通信で時刻の設定、取得を行う

4.2 OSD

4.2.1 OSDの状態遷移

ボタン押下とOSDの関係を以下に示します。

ボタン OSD OFF状態 OSD ON状態
A なにもしない メニューのカーソルup
B なにもしない メニューのカーソルdown
C OSD ON状態へ遷移 選択されているメニューの実行

4.2.2 OSDの機能

No. 機能
1 Close (OSD OFF状態へ遷移する)
2 QRコード表示#1(例:twitterのアドレス)
3 QRコード表示#2(例:Qiitaのアドレス)
4 QRコード表示#3(例:GitHubのアドレス)
5 Bright Up(液晶の明るさアップ)
6 Bright Down(液晶の明るさダウン)
7 LCD White(液晶を全面ホワイトで描画)
8 Power OFF(Deep Sleepへ遷移)

4.3 テストツールのプロトタイピングに使用するコマンド

コマンド 機能
m5lcd clear LCDを全面黒で描画する
m5lcd str <strings> 任意の文字列<strings>を画面の中心に描画する

詳細はM5StackとPythonで受入テスト自動化の要素技術を試すをご参照ください。

5. おわりに

OSDの5番目のBright Upから7番目のLCD Whiteは「ArduinoとオシロスコープをExcelで制御して測定する(2) シャッタースピードの自動測定」でシャッターボタン自動押下の様子を撮影する際にM5Stackを光源として使用するために作った機能です。M5StackはIoTデバイスとしてだけでなくちょっとした治具を作るのにもおすすめです。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4