micro:bitで実践する環境データロギング:身近な現象をデータで捉えるSTEAMアクティビティ
「家庭で手軽にできるSTEAM体験」をテーマとする本サイトにおいて、今回は身近な環境の変化をデータとして捉え、分析するアクティビティをご紹介いたします。使用するのは、手のひらサイズのプログラミングボード「micro:bit」です。本アクティビティは、Science(科学)、Technology(技術)、Engineering(工学)、Mathematics(数学)の各分野を横断的に学び、プログラミングによるデータ収集、センサーの原理理解、そして収集したデータの分析を通じて、応用力と論理的思考力を高めることを目的としています。高価な専門キットに頼ることなく、身近なツールで深い学びを体験できるでしょう。
アクティビティ概要:micro:bitで環境データを収集する
このアクティビティでは、micro:bitに内蔵されている温度センサーと光センサーを活用し、一定時間ごとに室温や明るさといった環境データを自動で記録します。収集したデータはPCにシリアル通信で送信され、その後、テキストデータとして保存・分析することで、時間の経過に伴う環境の変化を数値で客観的に把握できるようになります。単にセンサーの値を読み取るだけでなく、その背景にある原理を理解し、データの意味を考察するプロセスが、このアクティビティの核心です。
必要な材料と準備
本アクティビティに必要なものは以下の通りです。
- micro:bit本体: 1台(バージョン1または2のいずれでも可)
- USBケーブル: 1本(micro:bitとPCの接続用)
- PC: 1台(Windows, macOS, Linuxのいずれでも可)
- Webブラウザ: 最新版のGoogle ChromeやMicrosoft Edgeなど
- (オプション)電池ボックスと単4電池2本: micro:bitをPCから切り離してデータロギングを行う場合
準備手順:
- micro:bitとPCの接続: micro:bitをUSBケーブルでPCに接続します。PCがmicro:bitをストレージデバイスとして認識することを確認してください。
- プログラミング環境の準備: Webブラウザで MakeCode for micro:bit にアクセスします。これはブロックベースの直感的なプログラミング環境であり、プログラミング初心者でも容易に扱えます。Pythonでの記述も可能ですが、今回はブロックエディタを中心に解説を進めます。
- シリアル通信ターミナルの準備: PCでシリアル通信を受信するためのターミナルソフトが必要です。Windowsでは「Tera Term」や「PuTTY」、macOSでは「CoolTerm」などが一般的です。これらのソフトウェアは無料で利用できます。
詳細なアクティビティ手順
ここでは、micro:bitを使って温度と光のデータを収集し、PCに送信する具体的な手順を説明します。
ステップ1:micro:bitのプログラミング
MakeCodeエディタを開き、「新しいプロジェクト」を作成します。以下のロジックをブロックで構築してください。
- 「ずっと」ブロックの配置: プログラム全体を繰り返し実行するために、「ずっと」ブロック(
forever)を配置します。 - データ取得と表示:
- 「入力」カテゴリから「温度(℃)」ブロックと「光レベル」ブロックを取り出し、それぞれの値を一時的に保持する変数(例:「現在の温度」、「現在の光」)に格納します。
- シリアル通信でPCにデータを送信するため、「シリアル」カテゴリから「文字列を新しい行に書き出す」ブロック(
serial write line)を配置します。 - 送信する文字列は、温度と光の値をカンマで区切ったCSV形式にすると、後でデータ分析がしやすくなります。例えば、「
${現在の温度},${現在の光}」のような形式で結合ブロックを使って作成します。- 例: 「結合」ブロックを使い、テキストブロックで
"温度:"と現在の温度変数、",光:"と現在の光変数を連結します。
- 例: 「結合」ブロックを使い、テキストブロックで
- (任意)micro:bitのLEDディスプレイに取得した値をスクロール表示させると、データが正しく取得されているかを目視で確認できます。
- データ取得間隔の設定: データが頻繁に送られすぎるとPC側での処理が煩雑になるため、適切な取得間隔を設定します。「基本」カテゴリから「一時停止」ブロック(
pause)を取り出し、例えば5000ミリ秒(5秒)に設定します。これにより、5秒ごとにデータが送信されるようになります。
ブロックコードの概念的な表現:
// MakeCode ブロックエディタの概念的な表現
// 「ずっと」ブロック
ずっと:
// 温度センサーの値を読み取り、「現在の温度」変数に格納
現在の温度 を 温度(℃) に設定する
// 光センサーの値を読み取り、「現在の光」変数に格納
現在の光 を 光レベル に設定する
// シリアル通信でデータをPCに送信
// 例: "25,128" (温度25度、光レベル128)
シリアルに新しい行として書き出す:結合(""+現在の温度+","+現在の光)
// 5秒待つ
一時停止 (5000ミリ秒)
ステップ2:プログラムの書き込み
MakeCodeエディタの画面左下にある「ダウンロード」ボタンをクリックし、作成したプログラム(.hexファイル)をmicro:bitのドライブにドラッグアンドドロップします。書き込みが完了すると、micro:bitは自動的に再起動し、プログラムの実行を開始します。
ステップ3:PCでのデータ受信と記録
- ターミナルソフトの起動: 事前に準備したターミナルソフトを起動します。
- シリアルポートの設定: ターミナルソフトでmicro:bitが接続されているシリアルポート(COMポート番号や
/dev/tty.usbなどで表示されるもの)を選択し、通信速度(ボーレート)を115200に設定します。これはMakeCodeのデフォルト設定です。 - データ受信の開始: ターミナルソフトでデータの受信を開始すると、micro:bitから5秒ごとに温度と光のデータが画面に表示され続けます。
- データの記録: 表示されるデータをコピー&ペーストするか、ターミナルソフトのログ記録機能(ファイルに保存)を利用して、テキストファイル(例:
environment_data.txt)として保存します。
注意点
- 接続の安定性: USBケーブルの接続不良はデータ通信の途絶につながります。安定した接続を保ってください。
- データのタイムスタンプ: micro:bit自体には正確な時刻を記録する機能がないため、収集したデータにPC側でタイムスタンプを付与すると、後からの分析が容易になります。これは、ターミナルソフトのログに記録される時刻情報や、Pythonなどのスクリプトで受信する際に付与することで実現できます。
- 電池の使用: PCから切り離して長時間のデータロギングを行う場合は、電池ボックスを使用します。電池の消耗には注意し、必要に応じて交換してください。
科学的・工学的原理の解説
本アクティビティの背景には、様々な科学的・工学的な原理が隠されています。
1. センサーの原理
- 温度センサー: micro:bitに内蔵されている温度センサーは、主にICチップ内部の温度を測定するものです。多くのデジタル温度センサーは、内部の半導体pn接合の順方向電圧が温度によって変化する特性を利用しています。これにより、アナログ信号である電圧の変化をデジタル値に変換(アナログ-デジタル変換: ADC)し、温度として出力しています。この変換プロセスが、物理現象を数値データとして捉える基礎となります。
- 光センサー: micro:bitのLEDマトリクスは、光を発するだけでなく、逆に光を感知するフォトダイオードとしても機能します。光がフォトダイオードに当たると、その光量に応じた電流が流れ、これを電圧に変換してデジタル値として読み取っています。この原理は、スマートフォンの画面の明るさ自動調整機能など、私たちの身の回りの多くのデバイスに応用されています。
2. データロギングの概念
データロギングとは、物理的な現象を一定の間隔で自動的に計測し、記録するプロセスです。 * 時系列データ: 本アクティビティで得られるデータは、時間の経過とともに変化する「時系列データ」です。時系列データは、トレンド(傾向)、周期性、季節性、異常値などを分析する上で非常に重要です。例えば、一日の温度変化を記録すれば、日中の最高気温や夜間の最低気温、その変化のパターンを把握できます。 * サンプリングレート: データを取得する間隔(例: 5秒ごと)は「サンプリングレート」と呼ばれます。サンプリングレートが低いと細かな変化を見落とす可能性があり、高すぎるとデータ量が膨大になるというトレードオフがあります。適切なサンプリングレートの設定は、効率的かつ正確なデータ収集において重要な工学的判断です。
3. プログラミングとシリアル通信
- プログラミングの役割: プログラミングは、センサーからのデータ取得、データの加工、そして外部デバイス(PC)への送信という一連のプロセスを自動化するための指示を与える役割を担います。変数の利用、繰り返し処理(ループ)、条件分岐といったプログラミングの基本概念が、効率的なデータロギングシステムの構築には不可欠です。
- シリアル通信: micro:bitとPCの間で行われるシリアル通信は、データを1ビットずつ順番に送受信する通信方式です。USBを介したこの通信は、比較的低速ですが、配線が簡単で信頼性が高いため、組み込みシステムとPC間のデータ交換によく用いられます。UART(Universal Asynchronous Receiver/Transmitter)がその代表的なプロトコルです。
応用・発展の提案
本アクティビティは、より高度なSTEAM学習への入口です。以下のアイデアを参考に、さらなる探究を進めてみてください。
1. データの可視化と分析
収集したテキストデータは、そのままでは全体像を把握しにくいものです。
- スプレッドシートでのグラフ化: データをCSVファイルとして保存し、Google スプレッドシートやMicrosoft Excelにインポートして、折れ線グラフや散布図を作成します。これにより、温度や光の変化の傾向、特定のイベント(例: 窓の開閉、照明のオンオフ)がデータに与える影響などを視覚的に分析できます。
- Pythonによるデータ解析と可視化: プログラミングの基礎知識がある読者であれば、Pythonとライブラリ(
pandasでデータ処理、matplotlibやseabornでグラフ作成)を用いることで、より専門的なデータ解析と美しい可視化が可能です。例えば、複数日のデータを比較したり、移動平均を計算してノイズを除去したり、相関関係を分析したりといった応用が考えられます。
2. 外部センサーの活用
micro:bitには、外部センサーを接続するためのピン(GPIOピン)が用意されています。
- より多様な環境データの取得:
- 土壌湿度センサー: 観葉植物の育成状態をデータで把握。
- 超音波距離センサー(HC-SR04など): 特定の場所への人や物の接近を検知。
- ガスセンサー(MQシリーズなど): 空気質の変化をモニタリング(要適切な安全対策)。
- これらのセンサーを追加することで、家庭内の「IoT(モノのインターネット)」の基礎を体験し、物理的な環境とデジタルデータを結びつける実践的なスキルを磨くことができます。
3. IoTプラットフォームとの連携
収集したデータをインターネット経由でクラウドに送信し、リアルタイムで監視・分析する「IoTシステム」の構築に挑戦できます。
- MQTTプロトコル: IoTデバイス間の軽量なメッセージングプロトコルであるMQTTを学び、micro:bitからデータをクラウドサービス(例: Adafruit IO, ThingSpeak)へ送信するシステムを構築します。これにより、どこからでも自宅の環境データをモニタリングできるようになります。
- Webダッシュボードの作成: クラウドサービスが提供する機能を利用して、収集したデータをグラフやゲージで表示する自分だけのWebダッシュボードを作成することも可能です。
4. 問題解決への応用
収集したデータを単に眺めるだけでなく、具体的な問題解決に活用する視点を持つことが重要です。
- エネルギー効率の改善: 室温と電力消費量のデータを比較し、エアコンの適切な設定温度や運転時間の検討材料とする。
- 健康的な室内環境の維持: 温度、湿度、CO2濃度(外部センサー利用)などのデータから、換気のタイミングや加湿の必要性を判断する。
- 「デザイン思考」の実践: 特定の課題(例: 「植物が枯れる」「部屋が乾燥する」)に対して、データを根拠として現状を分析し、解決策を考案・試行するプロセスは、デザイン思考の素晴らしい実践の場となります。
次のステップへ繋がる情報源
- 書籍:
- 『Pythonによるデータ分析入門』:データ解析の基礎から応用までをPythonで実践的に学べます。
- 『micro:bitではじめる IoTプログラミング』:micro:bitを使ったセンサー活用やIoT連携の具体的なプロジェクトが豊富に紹介されています。
- オンライン学習プラットフォーム/YouTubeチャンネル:
- Coursera / edX: データサイエンスや組み込みシステムに関するMOOC(大規模公開オンライン講座)が多数提供されています。
- YouTubeチャンネル『Programming with Mosh』や『Pythonista Japan』: Pythonプログラミングの基礎からデータ分析ライブラリの使い方まで、質の高い解説動画が豊富です。
- TED Talks: 「データ駆動型社会の未来」「IoTがもたらす変革」などのテーマで、第一線の専門家による示唆に富んだ講演を視聴できます。
- 専門ブログ/海外サイト:
- Qiita (micro:bit, Python, IoTタグ): 日本語の技術記事が集まるプラットフォームで、具体的なコード例やプロジェクト事例が見つかります。
- micro:bit 公式ウェブサイト (Projectsセクション): 公式が提供する多種多様なプロジェクト例は、新たなアイデアの源泉となります。
- Adafruit Learning System / SparkFun Learn: 海外の有名な電子工作・Maker系サイトで、多くのセンサーやモジュールを使った詳細なチュートリアルが公開されています。
まとめ
micro:bitを使った環境データロギングは、身近な材料と手軽なツールで、STEAM教育の核となる「原理原則の理解」「論理的思考」「問題解決能力」を育む優れたアクティビティです。センサーの仕組みからプログラミング、データ分析の基礎までを体験し、「なぜそうなるのか」という問いを追求することで、お子様の知的好奇心を深く刺激し、応用力のある学びへと繋がるでしょう。今回紹介した発展的な提案を参考に、継続的な学習を通じて、ご家庭でSTEAMの可能性を広げていくことをお勧めいたします。