部屋のスイッチをスマホで操作しよう!②

 obniz(オブナイズ)は、センサーやモーターなどの電子部品を、インターネット上でかんたんに操作できるようにするシステムで、obniz OS(オブナイズ オーエス)、obniz Board(オブナイズ ボード)、obniz Cloud(オブナイズ クラウド)で構成
こうせい
されている。obniz OSが搭載
(とうさい)
されているマイコンボードobniz Boardに接続した電子部品は、インターネット上のobniz OSを経由してパソコンやスマートフォンから遠隔操作
えんかくそうさ
ができる。これを使うと、IoT(Internet of Things、モノのインターネット)がかんたんにできるんだ。

 『子供の科学』本誌では、obnizを使って家をスマートホーム(いろいろなものをインターネットにつないで遠隔操作できる家)にするための装置
そうち
をつくる連載
れんさい
をしてきたよ。今回からは「スタプロ」のWeb連載として、引き続きスマートホームを実現する装置をつくっていくぞ。

 これまでの連載は「obnizでつくろうスマートホーム!」旧サイトで公開しているよ。これまでにつくった装置のつくり方を解説しているので、まだ見たことがない人は見てみてね。Web連載は、本誌の連載の続きになっているので、基本的なことがわからなくなったら、本誌のバックナンバーを振り返ろう。

 この連載では、「KoKa obnizスマートホームキット」が必要なので、持っていない人は「KoKa Shop!」で手に入れよう。プログラミングはスマートフォンを使うよ。親子でいっしょに取り組んでみてね。

 前回は、スマートフォンでスイッチをONにする装置をつくったね。でも、ボタンを押したとき、モーターが同じ方向にしか回らないから、スイッチをONにしかできなかった。せっかくなら、スイッチを押すごとに、ON、OFFどちらにも切り替えられたらかっこいいよね! 今回は、前回のプログラムをバージョンアップしていくよ!

1 スイッチをOFFにするしくみを考える

 スマートフォンの画面に表示された「スイッチ」ボタンをタップすると、サーボモーターが時計回りに回り、もう一度タップすると今度は反時計回りに回るようにしていくよ。そうすれば、スイッチをON、OFFどちらにも変えることができるね。
 プログラミングはどのようにしたらいいだろう? 前回のプログラムの一部をいっしょに見てみよう。

ボタンがクリックされるとサーボモーターが90°移動するプログラム

 「スイッチ」ボタンをタップしたら、サーボモーターが90°に回転するようになっているね。このままだと、90°になったら、何度ボタンをタップしても動かないよ。

 もし、「サーボモーターが0°のとき」ボタンをタップしたら、サーボモーターが90°になり、逆に「サーボモーターが90°のとき」ボタンをタップしたら、サーボモーターが0°になるようにプログラミングできたら、うまくいきそうだよね。つまり、プログラムに「サーボモーターの状態
じょうたい
」を覚えておいてもらえばいいということだ。
 こんなとき、プログラミングでは「変数」を使うんだ。

2 変数ってなに?

 変数は「数」という字がついているから、数字だと思うかもしれないね。でも実際
じっさい
は数字ではなくて、プログラム上で使う箱のようなものなんだ。その箱の中には、数字や文字を入れることができるよ。ただ、箱の中に何を入れるのかについてはルールがあるから、なんでも入れていいわけではないんだ。

変数の説明

 また、箱には名前をつけることができる。今回つくるプログラムでは、箱(変数)に「サーボモーターの状態」という名前をつけているよ。その箱に数字を入れていくというプログラムをつくるよ。今はよくわからなくても、手を動かすうちにわかってくるから大丈夫! さっそくプログラミングしていこう!

3 OFFにするプログラムをつくる

それでは、スイッチをOFFにするためのプログラムをつくっていこう。

① 下の画像のようにブロックを組んでみよう。ここまでは前回と同じだから、忘れてしまった人は前回の記事を見てみてね!

ツールボックスの人差し指のアイコンをタップし、「”buttopn”を”text”で作る」ブロックを取り出そう。「”obniz”に”servomotor”を接続する」ブロックの下につなげてね。”text”の部分を”スイッチ”に変更

② ツールボックスの三本線のアイコンをタップし、「変数の作成」をタップしよう。変数の名前を入力する画面がでてくるよ。“サーボモーターの状態”と入力して、「OK」をタップしよう。すると、変数のブロックが新しく表示されるよ。

三本線のアイコン(変数)をタップ
新しい変数をつくるためには、三本線のアイコンをタップする
新しい変数の名前を入力して、変数を作成
表示された画面で、変数の名前を入力する

③ 新しく表示された変数のブロックで「“サーボモーターの状態”に“  ”をセットする」をタップして、「“button”を“スイッチ”で作る」ブロックの下につなげよう。

「“サーボモーターの状態”に“  ”をセットする」をタップして、「“button”を“スイッチ”で作る」ブロックの下につなげる

④ ツールボックスの電卓
でんたく
のアイコンをタップして、一番上にある数字のブロックを取り出し、「“サーボモーターの状態”に“  ”をセットする」ブロックの“  ”の中に入れよう。数字は0のままで大丈夫だよ。

ツールボックスの電卓のアイコンをタップして、一番上にある数字のブロックを取り出し、「“サーボモーターの状態”に“  ”をセットする」ブロックの“  ”の中に入れる

⑤ ツールボックスの矢印が円を
いているアイコンをタップして「ずっと実行」ブロックを取り出し、「“サーボモーターの状態”に“0”をセットする」ブロックの下につなげよう。

「ずっと実行」ブロックを「”サーボモーターの状態”に‟0をセットする」ブロックの下につなげる

⑥ 2本の矢印が描かれたアイコンをタップして「もしも“true”実行」ブロックを取り出し、「ずっと実行」ブロックの中に入れる。また「“  ”かつ“  ”」ブロックも取り出し、「もしも“true”実行」ブロックの“true”の中に入れよう。

「もしも“true”実行」ブロックを取り出し、「ずっと実行」ブロックの中に入れる。また「“  ”かつ“  ”」ブロックも取り出し、「もしも“true”実行」ブロックの“true”の中に入れる

⑦ 再び2本の矢印が描かれたアイコンをタップして「“10” “=” “10”」ブロックを取り出し、「“  ”かつ“  ”」ブロックの左側に入れよう。また、三本線のアイコンをタップして「サーボモーターの状態」ブロックを取り出し、「“10” “=” “10”」ブロックの左側に入れよう。右側の“10”は“0”に変更しよう。間の“=”はそのままで大丈夫だよ。

「“10” “=” “10”」ブロックを「“  ”かつ“  ”」ブロックの左側に入れれる。「サーボモーターの状態」ブロックを「“10” “=” “10”」ブロックの左側に入れる

⑧ 次に、人差し指のアイコンをタップし、「“button”がクリックされた」ブロックを取り出して、「“  ”かつ“  ”」ブロックの右側に入れよう。

「“button”がクリックされた」ブロックを「“  ”かつ“  ”」ブロックの右側に入れる

⑨ バイクのアイコンをタップして、「“servomotor”の角度を“0”度に設定する」ブロックを取り出し、「もしも~実行」ブロックの中に入れよう。

「“servomotor”の角度を“0”度に設定する」ブロックを「もしも~実行」ブロックの中に入れる

⑩ 三本線のアイコンをタップし、「“サーボモーターの状態”に“  ”をセットする」ブロックを取り出し、「“servomotor”の角度を“0”度に設定する」ブロックの下につけよう。

 ツールボックスの電卓のアイコンをタップして、一番上にある数字のブロックを取り出し、「“サーボモーターの状態”に“  ”をセットする」ブロックの“  ”の中に入れよう。数字は“1”に変更してね。

「“サーボモーターの状態”に“  ”をセットする」ブロックを「‟servomotor”の角度を“0”度に設定する」ブロックの下につける。

⑪ ツールボックスの矢印が円を描いているアイコンをタップして、「“500”ms 待つ」ブロックを取り出し、「“サーボモーターの状態”に“1”をセットする」ブロックの下につなげよう。“500”をタップし、“1000”に書きかえよう。

「“500”ms 待つ」ブロックを「“サーボモーターの状態”に“1”をセットする」ブロックの下につなげる

⑫ 下の画像を参考に、続きのブロックを組んでみよう! これまで組んできたものと似ているけれど、「“サーボモーターの状態”に“  ”をセットする」ブロックに入れている数字と、サーボモーターの角度が違うよ。

完成したプログラム

 これでプログラムは完成だよ。

4 変数の流れを見てみよう!

 完成したプログラムを見ながら、変数の流れをチェックしてみよう。

 まず、「ずっと~実行」ブロックのプログラムが始まる前に、「サーボモーターの状態」という名前の箱(変数)を用意し、その中に0を入れた。この「箱を用意すること」を「変数の宣言
せんげん
」と呼び、「その中に初めて何かを入れること」を「初期化」と呼ぶよ。

 この後からは、箱に入っている数字によってプログラムの動作が変化するよ。

 最初は、箱の中にはもちろん0が入ったままだね。このときボタンをタップすると、上にある「もしも~実行」ブロックのプログラムが動き出すよ。サーボモーターが回転して0°になったら、箱の中の数字が0から1へ入れかわるんだ。

 箱の中に1が入っているときにボタンをタップすると、下の「もしも~実行」プログラムが動き出す。サーボモーターが90°になったら、箱の中の数字が1から0へ入れかわるよ。この後はボタンをタップするごとに箱の中の数字が0になったり1になったりを繰り返すんだ。

 サーボモーターの角度を直接
ちょくせつ
プログラムが覚えるわけではないけれど、0°になったら箱に1、90°になったら箱に0を入れることで、ちがう動きをさせることもかんたんにできるんだよ。

5 装置を使ってみよう!

 まずは装置をスイッチに取り付けよう。テープなどを使ってしっかり固定してね。サーボモーターの貼り付け位置やテープでの固定方法を工夫して、押しやすさを調整してみてね。サーボホーンの大きさとスイッチのサイズが合わなかったり、スイッチが固かったりすると
むずか
しいかもしれないので、いろいろなスイッチでためしてみてほしい。

スイッチを遠隔でオンオフする装置

 電池ボックスをONにして、プログラムを実行してみよう。スマートフォンの画面に表示された「スイッチ」ボタンをタップすると、スイッチを押すことができる。もう一度「スイッチ」ボタンをタップすると、サーボモーターが逆方向に回転してスイッチを押すことができるね。これで、スイッチから
はな
れていても、スイッチのON、OFFをスマートフォンからかんたんに操作することができるよ!

プログラム実行画面

 どこのスイッチでも遊べるけれど、台所やお風呂、洗面所などの水回りは危険なので、設置しないでね。

 装置を使うのをやめるときは、プログラム画面の右上にある「終了」をタップし、電池ボックスの電源を切ろう。長時間電源をONにしていると、obniz Boardとセンサーが熱くなっていることがあるから、しばらくして熱くなくなってからさわるようにしてね。

 スイッチのオンオフだけじゃなくくて、ちがう使い方もできるかもしれないね。キミのアイディアも付け加えて、より便利な装置にしてみよう。

 次回も、「おうちを便利にする装置」をつくっていくよ。お楽しみに!

(文/トボリ 写真/青柳敏史 イラスト/新保基恵)

プログラミング教材 obniz

KoKa obnizスマートホームキット

¥12,650- (税込)

KoKa Shop!で購入する

最新号好評発売中!

子供の科学 2020年 12月号

CTR IMG