クリエイター手抜きプロジェクト[610]IoT マイクロビット編 温度・湿度・気圧を計測する/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,600文字)



今回は、TFab Worksから発売されているマイクロビット用のセンサーを使って、温度・湿度・気圧を計測します。使用するセンサーは以下の製品です。

・micro:bit用温度・湿度・気圧センサー
https://tfabworks.com/product/tfw-en1/

センサーはマイクロビットを差し込むだけで準備完了です。マイクロビットの製品は子供向けなので、このように差し込むだけで使うことができます。さすがに裏表を逆さまに差し込むと動きません。そう言えば、マイクロビットには逆差し防止機能がついていません。

センサーを差し込んだら、いつものようにマイクロビットのページにアクセスして、新しいプロジェクトを作成します。
https://makecode.microbit.org/





センサーはそのままでは使用できません。拡張機能のカテゴリをクリックして、機能を追加する必要があります。検索ボックスに以下のURLを入力します。
https://github.com/tfabworks/pxt-stem

表示されたstemの拡張機能のボックスをクリックします。すると、STEMのカテゴリが追加されます。このセンサーは追加されたカテゴリの中で、EN1にある4つのブロックを使うことができます。

(温度[℃](EN1))
(湿度[%])
(気圧[hPa])
(高度差[m]基準圧(1013))

マイクロビットのLEDに、計測した温度をリアルタイムに表示するには「ずっと」のブロック内に「数を表示(0)」ブロックを入れます。

その「数を表示」ブロックの(0)の部分に(温度[℃](EN1))のブロックをはめ込むだけです。JavaScriptのコードだと以下のようになります。

basic.forever(function () {
basic.showNumber(stem.getTemperature())
})

湿度や気圧も同様に表示することができます。高度差のブロックは少し違っています。この高度差ブロックは気圧から現時点の標高を返してくれます。ただし、±50mくらいの誤差は発生する可能性があるので、正確性を求めてはいけません。

マイクロビットにはグラフを表示する機能があるので、湿度の割合をグラフとしてLEDに表示してみましょう。ブロックよりもJavaScriptコードの方が楽なので、以下のコードをコピー&ペーストしてください。コピー&ペーストしたらブロックエディタに切り替えてもらえば、どのようにブロックが構成されているかわかります。

basic.forever(function () {
led.plotBarGraph(
stem.getHumidity(),
100
)
})

ただ、このグラフは5段階しかありません。20%、40%、60%、80%、100%というおおよその表示になってしまいます。これだと、ちょっとわかりにくいのと、せっかく精度のいいセンサーを使っているので、もう一工夫してみます。

マイクロビットには25個のLEDがあります。これを利用して、一つのLEDにつき4%、として扱えばより高い精度で表示することができます。LEDが9個点灯すれば9×4=36%となります。25個点灯すれば25×4=100%となります。ブロックで説明するのは困難なのでJavaScriptコードを示します。

let n = 0
let x = 0
let y = 0
basic.forever(function () {
n = stem.getHumidity() / 4
n = Math.trunc(n)
for (let index = 0; index <= 24; index++) {
x = index % 5
y = Math.floor(index / 5)
if (index < n) {
led.plot(x, y)
} else {
led.unplot(x, y)
}
}
})

かなり高速に処理されますので、息を吹きかけるとあっという間にLEDの表示が増えていきます。子供にとっては、ちょっと面白いかもしれません。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

マイクロビットで使えるセンサーモジュールは、手軽なのが多くて便利なのですが、ちょっと残念なのが一つ接続してしまうと他のモジュールを併用できないことです。Keyestudioの37個センサーセットのようなものもありますが、配線しなければいけません。もっと簡単に併用できるといいのになあと思います。

https://keyestudio.com/keyestudio-37-in-1-sensor-starter-kit-for-bbc-microbit-no-microbit-board--p0593.html

講座とイベントがなくなったので、今のうちに原稿を書いたりプログラムを書いたり、お絵かきの練習でもして経験値を上げておきたいところです。

・みんなのobniz入門
https://www.amazon.co.jp/dp/4865942165/

・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/
https://www.amazon.co.jp/dp/4844396854/

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/