注目キーワード

【Arduino】ディスプレイ付きマイコン「M5StickC Plus」IMUとブザーでデスク見守り君を作る!

すけろく
前回の記事で6軸IMUのデータをPCでグラフ化したが、
うまく傾き検知ができているようだ。
げんろく
そうだな。
微細な傾きも検知できているようだ。
すけろく
傾き検知の機能を使って何かできないかな?
げんろく
なら、机を離れる時にノートなどの見守りを
してくれる「デスク見守り君」を作るぞ!
今回の記事では、ディスプレイ付きマイコン「M5StickC Plus」を使って、「デスク見守り君」を作ります。
「デスク見守り君」は、カフェなんかで勉強中、ちょっと席を離れる時に、机の上のものを見守ってくれるものです。
「M5StickC Plus」の6軸IMU(慣性測定装置)から、本体の傾きを計算し、傾きを検知したらアラームを鳴らす仕組みです。

今回使用するマイコンはこちら!

M5StickC Plus
画面付きで小型のマイコンです。旧版のM5StickCから、ディスプレイサイズ、バッテリ容量が変更になっています。ブザーも実装されました。通信(WiFi/Bluetooth)機能、6軸加速度センサーも搭載されています。
Aruduino で開発できます。Amazonで確認

これからはじめる方にお勧めの参考図書はこちら!

 

M5StickC Plusの傾きを検知するって?

6軸IMU(慣性測定装置)を使って、マイコン本体の傾きを検知します。

詳細については、次の記事で紹介しています。ぜひご覧ください。

6軸IMU制御方法はこちら

関連記事

すけろく M5StickC Plusには、筐体の動きや傾きを検知する センサーが標準で搭載されているらしいな。 げんろく 6軸IMUのことか。 加速度、角速度を測るセンサーだ。 計算で姿勢角度も分[…]

 

今回は、6軸IMUの加速度センサーの値を元に、M5StickC Plusの3次元上の傾き(ロール:X軸、ピッチ:Y軸:ヨー:Z軸)を計算して、ロールとピッチのどちらかの傾き角度が10°以上になった場合に、アラートを出すようにします。

M5StickC Plusの軸は、次のような対応付けになっています。

 

アラートの出し方は?

M5StickC Plusには、ディスプレイが標準で実装されていますので、平常画面、アラート画面をビットマップデータで準備し、ディスプレイ表示させます。

ビットマップ画像のディスプレイ表示については、次の記事で紹介しています。ぜひご覧ください。

AdafruitGFXを使ったビットマップ表示方法はこちら

関連記事

すけろく M5StickC Plusには、筐体の動きや傾きを検知する センサーが標準で搭載されているらしいな。 げんろく 6軸IMUのことか。 加速度、角速度を測るセンサーだ。 計算で姿勢角度も分[…]

 

また、M5StickC Plusには、ブザー(GPIO2)も標準で実装されています。

ディスプレイ表示だけを変えるだけでは、さみしいので、このブザーをアラート画面と共に鳴らすようにします。

ブザーを使うためには、以下の関数を使用できます。

関数 説明
M5.Beep.setBeep(4000, 100); ブザーを初期化します。4000Hz、100msが初期値です。
M5.Beep.update(); ブザーの状態をアップデートします。
ブザー音を消したりする際には必ず呼び出す必要があります。
M5.Beep.beep(); 初期化時に設定した周波数でブザーを鳴らします。
M5.Beep.tone(3000, 1000); ブザーのトーンを変えて鳴らします。(例だと3000Hz、1000ms)
音は周波数が高いほうが高くなります。

 

デスク見守り君をプログラムする

では、プログラミングしていきましょう。

基本的な動作仕様は次の通りにします。

  • 水平設置時:平常画面でブザー音なし
  • 傾き検知(ロール10°より上、またはピッチ10°より上、ヨー20°以上):アラート画面でブザー音を鳴らす
  • ブザー音は、3000Hzと1500Hzを交互に鳴らす

ディスプレイ表示する画面は次のものを作りました。

平常時の画面
平常時の画面
傾き検知時の画面
傾き検知時のアラート画面

 

 

デスク見守り君プログラム

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

 Arduino IDE スケッチ例

<プログラム本体>

<画像ファイル>

※「Original_bmpdata.h」という名前のファイルとしてプログラム本体と同じフォルダに保存してください。
画像はご自身で準備してくださいね!

 

 

 M5StickC Plusへの書き込み

  1. 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  2. 「ツール」メニューから「ボード」情報を確認し、M5StickC Plusであるか確認します。
    この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  3. 「ツール」メニューから「Patition Scheme」を「”No OTA(Large APP)”」にします。
    ※ここを変更しないと、スケッチが大きいというエラーになります。
  4. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
  5. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

 

 プログラム実行結果

プログラムの書き込みが終了したら、M5StickC Plusを水平に置くと、ディスプレイ上には次のように表示されています。

平常時の画面

少しでも傾けると、ブザー音と共に次の画面が表示されます。

傾き検知時の画面

 

動画のほうがわかりやすいと思い、動画にしています。ぜひご覧ください。

 

 

 

編集後記

いかがだったでしょうか。

M5StickC Plusの傾き検知を活用して、実用的な「デスク見守り君」を作ってみました。

プログラムとしては、簡単な構成ですが、動いているところを見るとなかなか良い感じです。

これで、安心してトイレに行けますね!(笑)

 

記事は以上になります。

最後までご覧いただきありがとうございました。

今回使用するマイコンはこちら!

M5StickC Plus
画面付きで小型のマイコンです。旧版のM5StickCから、ディスプレイサイズ、バッテリ容量が変更になっています。ブザーも実装されました。通信(WiFi/Bluetooth)機能、6軸加速度センサーも搭載されています。
Aruduino で開発できます。Amazonで確認

これからはじめる方にお勧めの参考図書はこちら!