スタンプ型デバイス(1) ~M5StickCでデバイスを試作する~


まえがき

前回使用したATOM Matrixはバッテリーを内蔵しておらず,有線接続が必須であると判明した.無線化するにしてもボタン電池などを別途用意して接続する必要がある.ケースを3Dプリンターで作ったりしている人もいたようだが面倒なのでやめた😢

Bluetoothを用いてワイヤレス化させたい,バッテリー内蔵がよいということで急遽M5StickCを利用することにした

本題

前回と同じくON/OFFスイッチを作製する

機器概要
  • M5StickC
  • キャップレスのハンコ入れ
  • スイッチ
  • 被膜付き銅線
  • はんだごて,はんだ

手順

1.スイッチを作製

今回はスイッチをはんだ付けした

2.IDEでプログラム作成

前回のATOM Matrixを参考にしてプログラムを作成する
IDEをインストールして設定する
スケッチ/ライブラリをインクルード/ライブラリを管理...

M5StickCと検索してインストールする

これでライブラリを使えるようになった
実装する機能は以下の通り
・ON/OFF機能実装
・Bluetoothで接続設定
・リセットボタンで再接続

StampDevice.ino
#include <M5StickC.h>
#include <BluetoothSerial.h>

BluetoothSerial SerialBT;
uint64_t chipid;
char chipname[256];
const int buttonA = 26; //pinの番号

void set(){
  chipid = ESP.getEfuseMac(); //idの読み取り
  M5.Lcd.setCursor(0*0, 0*0);
  sprintf( chipname, "M5StickC_%04X", (uint16_t)(chipid >> 32));  //chipnameに上書き
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.printf("Bluetooth: %s\n", chipname);
  M5.Lcd.printf("Ver: %s %s\n", __DATE__, __TIME__);
  M5.Lcd.println();
  M5.Lcd.printf("State:");

  SerialBT.begin(chipname); //Bluetooth開始
  pinMode(buttonA,INPUT_PULLUP);  //指定のpinを入力に設定
}

void setup() {
  set();
}

void loop() {
  if( M5.Axp.GetBtnPress() == 2 ){  // 電源ボタンクリック
   M5.Axp.DeepSleep(1000000); // 1秒スリープ(リセット)
   set();
  } 
  int val = digitalRead(buttonA); //pinの信号を01で受信

  if(val == 0){ //ONの時
    //Serial.println("ON "); //USBのポートに「ON」送信
    SerialBT.println("ON"); //Bluetoothのポートに「ON」送信
    M5.Lcd.setCursor(8*5, 8*3); //本体画面のカーソルを調整
    M5.Lcd.printf("ON "); //本体画面に「ON」表示
  }
  else{
    //Serial.println("OFF"); //USBのポートに「OFF」送信
    SerialBT.println("OFF"); //Bluetoothのポートに「OFF」送信
    M5.Lcd.setCursor(8*5, 8*3); //本体画面のカーソルを調整
    M5.Lcd.printf("OFF"); //本体画面に「OFF」表示
  }
  delay(100); //0.1s時間を空ける
}

M5StickCをUSBで接続する
ツール/シリアルポートから書き込むポートを選択(今回はCOM6)
※右下,デバイスマネージャーから確認できる



シリアルポートに書き込む

pinを確認してスイッチと接続する
ペアリングをしてBluetoothで接続
ツール/シリアルポートからBluetoothのポートを選択
ここで動作確認をしておく
デバイスが接続できるようにシリアルモニタを開いておく

3.デバイス作製

スイッチをハンコ入れの中へ
本体に穴をあけて銅線は通す
pinに再度接続
これでデバイスは完成

※電源ボタンを6s以上長押しすると電源が切れる
 その後すぐには電源がつかないから注意
 しばらくして再度電源ボタン or USB接続でついた

実行例

あとがき

次はUnityのアプリケーションと連携して使えるようにする予定です

イメージ

参考

HoloLens 2 の環境構築をして実機で動かす
M5stickCを動かしてみる
M5StickC非公式日本語リファレンス
M5StickCでBLEデバイスを検索する
M5StickCのButtonクラスを調べてみた
M5StickCでBluetooth接続のマウスを作成する
ルンバをESP32でBluetooth通信で動かす方法