圃場環境(土壌水分・気圧・気温・湿度)を遠隔計測するシステム
中学校技術の学習指導要領では「第3学年で取り上げる内容では,これまでの学習を踏まえた統合的な問題について扱うこと。」とされています.
そのプロトタイプとして,下記(PDF版)のようなシステムを2022年度の卒業論文で学生さんと一緒に開発しました.ホストコンピュータはインターネット越しにNTPサーバで正確な時刻に設定されており,毎10分ごとに計測指令をセンサノードに無線で送信します.計測指令を受けたセンサノードは土壌水分と気象(気圧・気温・相対湿度)をセンサで計測し,それをホストコンピュータに(無線で)送り返します.ホストは受信した計測データを画面及びログファイルに記録します.ここでは「ネットワーク」はインターネットではなく,ホスト〜センサノード間の無線通信網ということになります(NTPサーバについてはOSレベルのことでプログラミングの対象になっていないため).
このシステムは,学校で実際に作るというより,システム設計の題材として扱うのが適切だと思います(3年生では時間も限られていますし).
上記はホスト,無線モデム,センサノードの各プログラムのアクティビティ図(概略版)です(PDFはこちら).プログラムはPythonで作成しましたが,micro:bitを用いるホスト無線モデムと測定ノードはMakeCode Blocklyでプログラムすることも可能です1.ホストは通常のPCになりますので,Python等シリアル通信を使用可能なプログラミング言語もしくはマクロ機能を持つシリアルターミナルソフト(例えばTeraTerm)になります.ホストのプログラムを一人一台端末で制作することは非常に難しいと考えます:一人一台端末は,使用者でソフトウェアのインストールをすることがそもそもできないように設定されているはずです2.
気象センサには秋月電子のBME280モジュールを用いました.micro:bitのPythonでBME280を使用するライブラリはここで公開されているbme280_microbit_lowmem.pyを使用しましたが,秋月のモジュールのI2Cアドレスが0x76なので,6行目の“address=0x77”を“address=0x76”と書き換えて使っています.
気象センサを収納するシールドは,φ120mmのPP製鉢受け皿を用いています.上の写真のように,通気を確保するため平らな部分にφ70mm程度の穴を開け,20mmのスペーサで間隙を取りながらM3の全ねじ3本を使って積み重ねて作っています.最上部は通気用の穴を開けず,150mm□のアルミ板にM10のボルトと3本の全ねじで固定して風に煽られても破損しないようにしています. またBME280モジュールは,BME280の開口部を除いてエポキシ系接着剤でポッティングを行いました.
この内容は,日本産業技術教育学会第66回全国大会(2023年8月,鹿児島)で発表しました.プレゼンテーション資料はこちら.
1 でも,無線モデムはPythonを使った方が簡単です:ホストPCとのデータやり取りをinput関数とprint関数で実現できるため.
2 EduBlocksやPython3 TrinketsのようなオンラインのPython環境では,端末のハードウェアを操作するようなプログラムを書くことはできても,動作させることはできません.