「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のクラウド変数を使って、外出先のスマホからでも操作できるようにしたいと思います。
図. スマホ(Scratch3.0) →<クラウド変数>→パソコン(Scratch3.0)→<Scratch Link>→micro:bit→サーボ→スイッチ
Scratch3.0のコード
クラウド変数を使うためには、Scratcherになったユーザーでログインして、変数を作成する際に「クラウド変数(サーバーに保存)」にチェックを入れます。micro:bit CODE Moreと通信するために、拡張機能からmicro:bit拡張機能をを選択し、「〇〇を表示する」ブロックを配置し、"@"で始まる半角英数字を入力します。
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
します。
main.cpp
を次のように書き換えます。@on
と@off
で、端子P1に接続したサーボを制御します。
#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動画
クラウド変数の反応が悪いときがあるので、一時変数で計算したり、応答用のクラウド変数を追加して、現在のサーボの状態を確認できるようにした方が良さそうです。
また、第三者からの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) です。