2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

micro:bitAdvent Calendar 2020

Day 17

「CoderDojo向けTFabWorks製品無償レンタルプログラム」でつくるスマート家電スイッチ

Last updated at Posted at 2020-12-16

「CoderDojo向けTFabWorks製品無償レンタルプログラム」がスタートします。

「CoderDojo向けTFabWorks製品無償レンタルプログラム」が2021年1月15日にスタートします。先日、CoderDojo Japanのポッドキャストを観ていたら(YouTube動画はこちら)、「サーボにはどのくらいのトルクがあるのか?」という質問が出ていて、「スイッチとかをぽっちと押したりできるチカラ」とか「スマートスピーカーみたいなカタチで」というアイデアが出ていました(YouTube動画 17分44秒あたり)。

Bセット(サーボモーターセット)

  • micro:bit本体(V1.5)
  • スピーカー付きサーボコネクトボード(TFW-KR1)
  • 電池3本
  • サーボモーターFT90B 2個
  • USBケーブル

Scratch3.0 + micro:bit でスマートホーム

micro:bitは、BLE(Bluetooth Low Energy)による無線通信が可能です。スマートスピーカーからBLEで接続できる標準仕様はなさそうです。SWITCHBOT 株式会社のSwitchBotは、そのBLE通信仕様が公開されていますが、スマホアプリとの連携が必要そうですので、実験をするには煩雑です。

micro:bitと通信ができるものとして、Scratch3.0のmicro:bit拡張機能(Scratch Link)があります。しかし、標準の拡張機能では、micro:bitに接続したサーボを制御することができません。そこで、 Scratch3.0からも制御を可能とするmicrobit-CodeMore-v1 テンプレートを使って、スマートホームを実現します。

スマートホームの概要図

Scratch3.0からサーボを制御するだけでは、少し物足りません。外出先からでも、スイッチを押したりしたいですよね。そこで、Scratch3.0のクラウド変数を使って、外出先のスマホからでも操作できるようにしたいと思います。

ScratchSmartHome.png
図. スマホ(Scratch3.0) →<クラウド変数>→パソコン(Scratch3.0)→<Scratch Link>→micro:bit→サーボ→スイッチ

Scratch3.0のコード

クラウド変数を使うためには、Scratcherになったユーザーでログインして、変数を作成する際に「クラウド変数(サーバーに保存)」にチェックを入れます。micro:bit CODE Moreと通信するために、拡張機能からmicro:bit拡張機能をを選択し、「〇〇を表示する」ブロックを配置し、"@"で始まる半角英数字を入力します。
HashScratch (15).png

micro:bitのコード

GitHubの次のURLで、micro:bit CODE More!のテンプレートが公開されていますので、これを元にmicro:bitのコーディングを行い、HEX形式ファイルにコンパイルします。
https://github.com/jp-rad/microbit-CodeMore-v1

まずは、Arm Mbed オンライン IDEのコンパイラを開きます(サインアップとサインインが必要)。
https://ide.mbed.com/compiler/

「インポート」ボタンで、インポートウィザードを表示し、「ここをクリック」で「Import Program」ダイアログを表示します。Source URLに、 https://github.com/jp-rad/microbit-CodeMore-v1と入力して、Importします。
image.png

main.cppを次のように書き換えます。@on@offで、端子P1に接続したサーボを制御します。

main.cpp
#include "MicroBit.h"
#include "mbitcodemore/MbitMoreStartup.h"
#include "mbitcodemore/MbitCodeMore.h"

const ManagedString SWITCH_OFF("@off");
const ManagedString SWITCH_ON("@on");

MicroBitPin P1(MICROBIT_ID_IO_P1, MICROBIT_PIN_P1, PIN_CAPABILITY_ANALOG); 

// This handler, onDisplayTextCommmand is called, If the display text starts with '@'.
int onDisplayTextCommand(MicroBit &uBit, ManagedString &text)
{
    if (text==SWITCH_OFF)
    {
        P1.setServoValue(30);
        return 1;
    }
    else if (text==SWITCH_ON)
    {
        P1.setServoValue(150);
        return 1;
    }
    ManagedString err("Err:");
    text = err + text;
    // Unhandled, retrun not zero.
    return 1;
}

int main()
{
    // Start Service
    //MbitMore::startMbitMoreService();
    MbitMore::startMbitMoreService(onDisplayTextCommand);
}

これを「コンパイル」すると、コンパイルが開始され、コンパイルに成功するとHEX形式ファイルを名前を付けてダウンロードできます。HEX形式ファイルをダウンロードしたら、いつものように、micro:bitドライブ(例えば、D:\)へファイルコピーします。

実験

【警告】

  • 家電製品等の分解は、自己責任で行ってください。メーカーからの保証を受けられなくなったり、故障や火災の原因となります。
  • 感電には十分注意してください。また、電気配線工事には資格が必要です。
  • micro:bitへの第三者からの接続にご注意ください。
  • Scratch3.0プロジェクトを共有しないでください。共有すると世界中のから操作される恐れがあります。

実際にスマホで、Scratch3.0のプロジェクトを開いて、クラウド変数経由で、サーボを制御できるかどうかを実験しました。
→ YouTube動画
YouTubeLogo.png

クラウド変数の反応が悪いときがあるので、一時変数で計算したり、応答用のクラウド変数を追加して、現在のサーボの状態を確認できるようにした方が良さそうです。
また、第三者からのmicro:bit接続を防止するために、共通鍵(パスワード)などによる認証・認定機能の実装をお勧めします。

おわりに

  • **「CoderDojo向けTFabWorks製品無償レンタルプログラム」が2021年1月15日にスタートします。micro:bitを使ってみたい方は、日本各地のCoderDojo**にご相談ください。
  • **レンタル Bセット(サーボモーターセット)**を使ったスマート家電スイッチの実験ができます。
  • Scratch3.0のクラウド変数を使って、外出先のスマホからでもmicro:bitに接続されたサーボを制御し、自宅便所のスイッチを入切できました。

おまけ
サーボ FEETECH FT90B のトルクは、1.0kg/cm(3.0V)、または、1.3kg/cm(4.8V)、1.5kgcm(6.0V) です。
今回使ったサーボは、DIY MORE MG90Sです。そのトルクは、2.2kg/cm(4.8V)、または 、2.5kg/cm(6.0V) です。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?