Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@youtoy

#obniz のブロックプログラムで 2台のデバイスを連動させる【 #GWアドベントカレンダー 2021/4/29 】

以下の 自分用の #GWアドベントカレンダー 4/29 の分の記事も兼ねたメモです。

●2021年はマイペースに( @youtoy ) | GWアドベントカレンダー
 https://gw-advent.9wick.com/calendars/2021/103

概要

今回の内容はタイトルの通り、obniz のブロックプログラムで 2台のデバイスを連動させる、というものです。今回の記事の中で用いたデバイスについて、 一方は obniz Board 1Y を使いましたが、もう一方は obnizOS が入った M5StickC を使ってやってみました。

先に、今回作った内容の動画を掲載してみます。

詳細

今回の内容の元になった記事があり、ここでその @wicket さんの記事を紹介します。

●ブロックプログラムで遠隔地IoTを行う - Qiita
 https://qiita.com/wicket/items/0c69b308c8b582d1e086

ブロックプログラム上で obniz との接続を行うブロックを 2つ配置し、それらの ID を異なる 2台分のものにすると、それら別々のデバイスを制御するプログラムを 1箇所で書くことができる、というものです。
さらに、一方のデバイスにつながったセンサー等から得られる値をもとに、他方のデバイスの制御を行うようなことも容易に実現できる、というものでした。

そこで今回、「一方のデバイスの加速度センサーの値を元に、他方のデバイスにつないだサーボモーターの角度を変化させる」という内容にして、上記の仕組みを自分でも試してみました。

作ったプログラム

作ったプログラムは、以下のような内容です。

2台を連動させるブロックのプログラム.jpg

一部、内容を補足すると、以下のような対応を行っています。

  • 角度は 0〜180 まで設定できるようだったので、それを45度ずつの 5つの範囲に分割
  • M5StickC のディスプレイを真上にした状態からディスプレイが真横になる角度まで回転させた時、おおよそ -1〜1 の値をとったので、その区間を不均等に 5分割
    • センサーの値の判定で小数が使えなかったので、センサーの値は 10倍にしてから変数で保持するようにした
  • 上記の分割した範囲をプログラム中で紐付け
  • 角度の変化の支持出しのタイミングを適当に 500ミリ秒間隔似設定

それと、動画を見ていただくと分かるのですが、自分が使ったサーボモーターが動く範囲が 180以上動くもので、ブロックプログラムで設定した値よりも大きな角度のところまで動いています(ブロック中の角度指定と、実際の角度が不一致)。もし、実際に動く角度が重要な作品を作る場合は、これらの値の違いをうまくマッピングして吸収してやる必要がありそうです。

まとめ

当初、2台の obniz を連携させる話を考えた時に、ちょっと前に書いた以下の記事の内容と、HTTPリクエスト(GET)のブロックを組み合わせる方法が思い浮かんだものの、それだと短い時間間隔で連動させるのは難しいな、と思っていました。

●#obniz のブロックプログラムで作った仕組みを外部からの Webhook をトリガーにして動かす(アプリのインストールを利用) - Qiita
 https://qiita.com/youtoy/items/668ffd93f6dea3d7a2de
HTTP_GET.jpg

そして JavaScript でプログラムを書いてしまえば、とも思いつつ情報を調べていたら、上記の「概要」のところで書いた記事の内容に行き当たり、今回の記事で実装した仕組みを実現することができました。

自分が何かを作る話なら JavaScript で書いてしまえば良い話ではあったのですが、自分以外で作品を作りたいという方が JavaScript が得意でない等といった場合に、今回の方法を提示できたりして便利だったりするので、試せて良かったです。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
youtoy
プライベートでの活動で、ビジュアルプログラミング・IoT・ロボットトイを扱う技術コミュニティを単独・共同で主催したり、登壇をしたりしています。Qiitaの記事で書いていることは、このプライベートでの活動に関することです。また、普段は通信会社の研究所で働いていて、ガジェットが大好きです。
kddi
KDDIは、通信を中心に周辺ビジネスを拡大する「通信とライフデザインの融合」をより一層推進し、国内はもとよりグローバルにおいても、5G/IoT時代における新たな価値創造を実現し、お客さまの期待を超える新たな体験価値の提供を追求してまいります。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?