第10回 実習教材はどのように作るのか?

第10回実習教材の作り方

「マイコンを使ったプログラミング実習教材の開発」ストーリー

皆さん、こんにちは。テラオカ電子です。第8回で、「事件は、会議室で起こっているんじゃない。現場で起こっているんだ」ということで、教室を飛び出して高齢者施設を訪問した探究活動を紹介しました。今回は、「会議」を通して開発した実習教材開発のストーリーを紹介します。今回は、探究活動の話ではないのですが、高校の先生方の参考になると思いますので、お付き合いください。なので、文章は固めになっています。

実習教材は、探究活動のリハーサルにあたります。いわゆる「壁打ち」にあたります。生徒にとっては、初めてのことなので珍しさがありますが、一方で、同じようなことの繰返しでつまらなさもあります。それゆえ、しっかりとしたものを準備する必要があります。

「人は生きるために生まれる。生きる準備をするために生まれるのではない」ポリス・パステルナーク(旧ソ連の詩人・小説家)

とありますが、そもそも「学校」自体が「生きる準備」をするためのものですので。「準備」も大切だとお考えください。

第10回では、まず、【研究の背景と目的】を述べ、次に、【本研究の意義】【教材の開発事例】【学習指導のポイント】【教育上の効果】を述べ、最後に本活動の【まとめ】を述べたいと思います。

なお、今回取り上げた実習教材「トレーニングボード」は以下の動画で視聴できます。見て頂けると後の話が良く分かると思います。

【テラオカ電子:「トレーニングボード」はこちらから】

【研究の背景と目的】

現在、電気・情報系の工業高校では、1年次に科目「情報数理基礎」でコンピュータの仕組みとプログラムの基本を学習する。そこでのプログラム言語はC言語である。その後、2、3年次にプログラムの学習は、実習を含めて学習していくが、1年次は、「奇数と偶数に分ける」などの数値計算であるのに対し、2年次以降は、マイクロコントローラ(以下マイコン)を使った制御が加わる。そこで、生徒が制御のプログラムをスムーズに学習できる教材が必要となる。

マイコン制御の指導には2つの難しさがある。1つは、マイコンの開発環境を使えるようにすることである。プログラムを書いても、マイコンにそれを書き込まなければマイコンは動作しない。プログラムを作成しマイコンにそれを書き込めるようにする開発環境がIDE(統合開発環境)であるが、まず、このIDEの使い方に習熟させる必要がある。1年次の学習で簡単なC言語のプログラムを作ることができる生徒であっても、このIDE習得の難易度は高い。2つ目は、マイコン制御の命令を理解させることである。先にも述べたように、1年次のプログラム学習は数値計算が主体である。マイコンの制御はハードウエア(電子回路)と関係しているため、具体的な実物のイメージがないと理解が難しい。また、本校の電気科の場合、2年次で科目「電子回路」を履修していないことも理解の難易度を高めている(電子回路については、3年次に科目「電子技術」と選択科目「計測制御」で学ぶ)。そこで、本研究では、これら2つのマイコン制御の指導の難しさを克服する、2年次の実習教材(「トレーニングボード」)を開発したので報告する。特に教材の開発経緯を述べる。

【本研究の意義】

学校教育の3要素は、生徒と教員、そして教材である。特に実習において教材は重要な要素である。教材の準備は、市販の教材を購入する、教育センターが開発したものを使う、担当教員自身がオリジナルの教材を開発するの3通りが考えられるが、生徒の実態やカリキュラムの連続性を考慮すると、担当教員がオリジナルの教材を開発するのが望ましい。しかしながら、世の中で様々な教材、その活用法、評価が報告されているが、そもそもどのようにその教材を開発したかの方法を示した文献はほとんどない。そこで、2年生対象の実習教材「トレーニングボード」の開発過程をドキュメント化し、公開することにした。教員が自分で教材を開発する際、本報告が参考になれば幸いである。

【教材の開発事例】

1.計画フェーズ:実習「マイコン制御」の概要

  • 対象生徒:本校電気科 2年生(80名)
  • 実習形態:9月~2月、週3時間、10名単位、各一人1台PC
  • 実習内容:3テーマ(「第1回:LED制御」、「第2回:マトリックスLED制御」、「第3回:モータ制御」)
  • 「トレーニングボード」は基礎の実習教材の位置づけ

2 要件定義フェーズ:現状分析と開発仕様の決定

教材は、実習実施前年度の8月から実施年の8月までの1年間をかけて開発した。この期間、現状分析のため3回のワーキングミーティングと、電気科内での周知のため4回の科内報告を行った。ワーキングミーティングは、筆者と以前の本実習経験者2名の教員で行った。このミーティングの目的は、実習をリニューアルするに当たり、これまでの不具合点を筆者の経験だけでなく幅広い視点から整理するためである。80名の生徒には様々な特徴を有するものが在籍しているので、予想されるトラブルを事前に把握しておく必要がある。また、科内報告は、本年度の実習は筆者が担当するが、来年度以降、誰でも担当することができるようにしておくことと、このように記録を残すことで今後同様な実習教材を開発する際の手順の標準とするためである。

1回目のワーキングミーティングは、前年度の8月上旬に行った。ここでは、従来の実習教材(写真1)の問題点について議論した。議題として、

①電源やコネクタの逆接続を生徒に注意しても守られなかった。

②コネクタ接続が乱暴なので端子のランド剥がれが多発した。

③基板(エッチング)が製造されてから10年経過しており劣化して導通不良が発生した。

④閉校となったところから移管されたもので、原板、回路図が存在しないのでメンテナンスができない。

⑤実習基板が4枚に分割されており使いづらい。

⑥技術の進歩に対応したデバイスも使用した方がよい。ブザー、距離センサを新たに実装したらどうか。また、音声合成などもできるようにI2Cバス端子を付ける。

⑦現状はマイコンにH8/3664(ルネサス エレクトロニクス)を使っているが、教科書はPICマイコンが標準となっている(注:なお、現在の教科書では、マイコンを使うのではなく、ラズベリーパイPicoの事例が紹介されている)。変更した方が良いのではないか。

⑧在庫部品を活かせていないので、出来るだけ在庫を生かす。マトリックスLED、7セグLED、DCモータ制御およびステッピングモータのドライバのFETは在庫部品を使う。

⑨ステッピングモータに関しては、構造が簡単なので現状と同じユニポーラ型ステッピングモータとする。

⑩コストの見積もりは後日。年度当初の予算執行時期に注意する。

⑪流行りのラズベリーパイ(言語はPython)を使うのはどうか。しかし、工業高校生はC言語を1年次に学ぶカリキュラムとなっている。

⑫部品の配置において、PICマイコンのソケットは、右側に実装した方が使いやすい。また、マイコンのソケットのレバー周辺にスペースをとる。トレーニングボードの大きさは、200☓150以下とする。次回、実装図案を検討する。

⑬構造は、トレーニングボードの基板をタッパー容器のふたの内側に付けて、ACアダプタや書込みツールを収納できるようにする。

⑭プログラム指導で、どこまで機能を関数化して実習課題とするかを次回検討する。が上がった。それを受けて、9月上旬に1回目の電気科内報告をワーキングミーティングでの議論の内容に回路ブロック図、開発日程計画を添付して行った。

2回目のワーキングミーティングを9月下旬に行った

「トレーニングボード」のハード面に関しては、

①入力スイッチを3個から4個に増やす(4ビットの入力を確保するため)。

②DCモータ(2ピン)はリード線を出す。差し込み端子では、耐久性に問題があるため。

③ステッピングモータは、5ピン端子で耐久性が確保できるので、現状と同じ差し込み端子とする。

④ステッピングモータのFETに保護ダイオードを追加しておく。

⑤在庫のステッピングモータの定格駆動電圧が4Vなので、5V電源ラインに直列にダイオードを追加する。ブレットボードで事前に動作を確認しておく。が議論された。プログラム指導に関しては、①C言語の特徴である関数の理解を基本に指導する。

②関数の引数、型、戻り値の意味を復習する(これまで生徒の理解は不十分であった)。③個別の関数で、ハードの理解(ポートの設定など)を深めさせる。

④main関数で、C言語の構文(分岐、繰り返し)の理解を深めさせる。

⑤具体的には、main関数の中に個別の関数を並べて作成させる。

⑥main関数で呼び出す個別の関数は、ある程度独立性を持たせる。個別の関数から個別の機能への呼び出すような複雑なものは扱わない(入れ子は1回までとする)。

⑦開発環境MPLABは現状実習のWindows XPでは動作しないので、電算室の新しいPC(Windows10)を使う。などが議論された。これを受けて、10月初めに2回目の科内報告をワーキングミーティングでの議論とともに、トレーニングボードの回路図案、部品実装予定図、作成する関数一覧表案を添付して行った。

第3回のワーキングミーティング(12月初旬実施)

「トレーニングボード」をブレッドボードのデモ機で議論した。写真2に準備した「トレーニングボード」のデモ機を示す。ここでは、①基板外形は、150☓210とする(100円均一のタッパーケースに収まるようにするため)。②7セグメントLEDは、小型の3桁一体型とする。③ステッピングモータの動作に関して、(1000)→(0100)→(0010)→(0001)の順にポート出力する制御ではなめらかに回転しない(現在の実習も同じ)が、ポート出力をビットシフトするとなめらかに回転するので詳細を調査する(実習に反映した)。④モータが動作すると、電源ラインが変動するので、できる限り電解コンデンサを挿入しておく。⑤マイコンのコンフィグレーションの設定は、MPLAB X IDEの機能を使う。⑥基板ができた段階で、実習で行うプログラムを検討する。が議論された。これを受けて、1月初旬に3回目の科内報告を、デモ機を実演しながら行った。ここでは、デモ機のプログラムを添付した。

3 設計・開発フェーズ

3.1 「トレーニングボード」の仕様

仕様検討後のトレーニングボードの使用部品を表1に示す。

3.2 「トレーニングボード」の回路設計の特徴

トレーニングボードの回路図は、PICマイコンから各入出力部品への信号線で構成される。使用するPICマイコンが40ピンであるため、LEDアレイ、マトリックスLED、7セグメントLEDおよびステッピングモータの信号線は共用になっている。そのため同時に動作させることはできないが、3回の実習で行う制御にはLEDが無意味に点灯したり、制御対象でないモータが勝手に動作したりしないように信号線を共用化した回路を工夫した。また、書き込みは、マイコンをボード上のゼロプレッシャーソケットに挿入しておこなう構成とした。直接書き込み装置をボードに挿入する構成の方が、デバッグに便利であるが、本教材を複数の生徒で共用する場合も考慮してこの構成とした。なお、当初、I2Cバスの端子を実装する予定であったが、マイコン端子の信号線を確保できず省略した。

3.3 「トレーニングボード」の基板の設計

設計した回路図を基に、配線パターンをCADで作成した。写真3に完成時のパターン図を示す。基板外形は210×150で部品実装には余裕があったため、配線はクリアランス0.5㎜以上、パターン幅0.8㎜以上で引くことができた。なお、基板は両面2層FR4、厚さ1.6㎜である。

3.4 「トレーニングボード」の部品の実装と組付け

冬休みに基板が製作できたので、試作機(写真4)を作成し、4回目(最終回)の科内報告を2月初旬に行った。試作機の動作の実演とともに、その動画を撮影し科内の共有フォルダに置いて、いつでも観ることができるようにした。このあと、部品を発注し、夏休みに15セット製作した。部品の基板への実装では、抵抗、ダイオード、コンデンサ等のディスクリート部品が多いため、ケース加工、組付けなどを含めると製作時間は75時間程度要した。一部を生徒に手伝わすことも考えたが、夏休みであったことと、はんだ付け不良があった場合、その手直しの時間が必要になると判断したので筆者が行った。

3.5 「トレーニングボード」の指導書の作成

一方、冬休みに作成した試作機を動かしながら、3月~5月に指導書を作成した。指導書は3回分を準備した。授業ではパワーポイントを使うので、指導書はそのスライドを印刷したものにした。

実習の第1回は、「LEDアレイの制御」である。横に並んだ8つのLEDを様々なパターンで点灯、消灯させる。実習目標は、①マイコンの働きを説明できる。②開発環境を使うことができる。③C言語を使ったプログラムを記述できる。④トレーニングボードでLEDを制御できる。とした。初回の授業のため、実習概要、実習構成、開発環境およびマイコンへの書き込み手順を載せた。特に開発環境の設定に関しては、スライドを9枚に分けて載せた。プログラムは、入出力ポート設定など第2、3回と共通のコードは「init.h」ヘッダーファイルとし、LEDの制御の関数は「ledarray.c」とした。制御の演習プログラムは、難易度順に7個用意した。具体的には、全点灯、飛び飛びの点灯、2パターンの繰り返し点灯、シフト点灯およびスイッチで点灯パターンの切り替えである。指導書では、各演習プログラムの中で、キーとなるコード(1行)を隠した。生徒は、その部分を補ってプログラムを作成する。マイコンへの書き込みには、PICkit3を使うが、これも初回なので、操作手順は、スライド5枚を使った。最後にレポート課題を示した。

第2回は、「マトリックスLEDの制御」である。8行8列のマトリックスLEDに様々なパターンを表示させる。第1回の「LEDアレイの制御」は1次元の制御であったが、今回は2次元の制御であることと、1行ずつ順にトレースして点灯させる必要があり、時間管理が必要となる。実習目標は、第1回目と「④トレーニングボードでマトリックスLEDを制御できる。」のみが異なる。2回目であるので、開発環境の設定に関しては、簡略な掲載とした。プログラムに関しては、C言語の記述構造を理解させるために、関数プロトタイプ宣言の項目を加えた。制御の演習プログラムは、6個用意した。具体的には、特定の位置(2行目、右から3列目)のLEDを点灯させるもの、サイコロの目のパターン、文字(「S」など)の表示およびスイッチでのパターンの切り替え点灯などである。第1回目と同様、最後にレポート課題を示した。

第3回は、「モータの制御」である。DCモータとステッピングモータを駆動させる。今回は、電子回路に関する知識も盛り込んだ。DCモータに関しては、Hブリッジ回路とPWM制御、ドライバICに関する内容を、ステッピングモータに関しては、その構造とFETを使った制御回路に関する説明を付加した。制御の演習プログラムは、DCモータについては5個、ステッピングモータについては4個用意した。具体的には、スイッチでモータを回転、逆回転、回転速度の変更である。最後にレポート課題を示した。

4 運用フェーズ:学習指導における実践:

本教材(「トレーニングボード」)を使って、電気科2年生(80名)に対してマイコン制御実習を実施した。各回10名で、「第1回:LEDアレイの制御」、「第2回:マトリックスLEDの制御」、「第3回:モータの制御」のテーマで授業を行った。

第1回では、初めに、そもそも「マイコンとは何か」から「どんなことができるのか」、「何に使われているのか」など、今回使用するマイコンの特徴を説明した。次に、開発環境(MPLAB X IDE)とコンフィグレーションの設定を生徒自身で設定させた。これは、教師のPCの開発環境の設定画面をプロジェクターに移しながら指導した。生徒はプロジェクターのスクリーン画面と指導書を参照しながら設定を行なった。マイコンはオシレーターのモードやメモリの保護などマイコンを期待通りに動作させるための環境設定(デバイスコンフィギュレーション)が必要だが、この設定がマイコンを使う上での難しさになっている。生徒は、このような設定を1年次のプログラム学習では習っていないので、操作方法だけでなくその意味も説明した。具体的には、生徒に「マイコンは汎用的に設計されているので、使う用途に応じてその骨組みを与える必要がある」と説明した。開発環境の設定が終わったら、LEDアレイの点灯制御のプログラム演習を行った。ここまでに約2時間を要したため(実習は各回3時間で構成されている)、プログラムは、簡単な繰り返しと分岐のみとなった。プログラムは、筆者の方で予め、LEDの点灯と消灯の関数を準備し、生徒は、その関数の引数に目的の値を入れて作成できるようにした。これは、初回なのでプログラムの開発を一通り行い、その流れを理解させることを優先したためである。生徒がプログラムのコンパイルをしてエラーを出したときは、IDEが示すエラー表示を示しながら指導した。生徒は、初めてのプログラム制御を、興味深く取り組んだ。また、生徒には、「確認チェックシート」を配布し、開発環境の設定や各プログラムの課題に取り組んで完了すれば教員のチェックの「サイン」を受けるようにした。

第2回も開発環境の設定は、最初から行った。2回目であることもあり、1時間ほどで終えることができた。生徒は、自分一人では設定できないが、筆者の指示を聞きながらであれば無理なく設定できるようになっていた。この回では、2つの点を重点的に指導した。一つはC言語における関数の記述の方法である。関数の形式、引数の扱いおよび戻り値について説明した。関数に関して特に引数の理解が困難であったため、ここでも「関数がカレーを作るレシピとすると、引数は、カレーを作る材料にあたる。関数さん、この材料を使ってカレーを作ってくださいという意味です」と例えを使って説明した。二つ目は、マトリックスLEDの点灯アルゴリズムである。列データと行データを出力することで所定の場所のLEDを点灯させることと、これを人が見てちらつかないように高速で繰り返せばよいことを指導した。ここでも列、行データの出力関数は筆者が準備し、生徒は、その関数の引数に値を入れればプログラムを完成させることができるようにした。関数の使い方の習得を目標とした。プログラムが得意な生徒には、それらの関数のコード読んで理解するように指示した。

第3回では、開発環境の設定は、かなり自分でできるようになっていた。ここでは、モータの制御の電子回路を詳しく説明した。DCモータのHブリッジ回路、PWM制御、ドライバIC、ステッピングモータの構造および制御回路である。プログラムではif文を使った分岐や、switch文を扱い、演習プログラムは1、2回よりも難易度を上げた。

目次

【学習指導のポイント】

指導のポイントは、以下の2つである。

一つは、既有知識の活用である。生徒は、1年次でプログラミングの基礎を学んでいる。本実習では、その活用としてマイコン制御を学習する。しかしながら、基礎知識を習得していない生徒も多いので、プログラムの基礎を復習しながら学習できるように内容を精選した。

二つ目は、明示的な指導である。本実習の目標は、マイコンを使えるようになることである。そこで、開発環境の設定と、トレーニングボードを使ったプログラム作成およびLEDやモータの制御を一通り体験させた。それぞれの演習には明確な指導の意図を与えた。特に、開発環境の設定やマイコンへの書き込み方法は、3回繰り返すことで習熟させた。さらに、各回の実習目標だけでなく、実習全体の目標として、3年次の「課題研究」の授業で、各自のテーマの課題解決にマイコンを使うことを設定した。これは、電気科の2、3年生の実習、全12テーマの内、4テーマがプログラムを扱うものであるのも関わらず、例年「課題研究」でマイコンを使った研究を行うチームが筆者のチーム以外無いという実態があったからである。生徒には、授業の冒頭で、「本実習の目的は、各自の『課題研究』でマイコンを使えるようにすることである」と明言してから指導を行った。なお、実習後に行ったアンケートでは、3年次の「課題研究」でマイコンを使う予定だと答えた生徒は、80名中51名であった。生徒にとって従来よりもマイコンが近い存在になったと推察している。

【教育上の効果】

最後に、生徒の実習の感想から教育上の効果を分析する。

標準的な成績で正直に感想を記述している一人の生徒を取り上げる。第1回目の感想は、「今回はIDEを使ってマイコンのLEDを動かした。始めは開発環境の設定でいろんなことを行ったが、かなり多くの手順で設定はかなり大変でよくわからない所が多かった。init.hやledarray.cの内容をコピーするとき自分ではできなくて、パソコンの知識の少なさを感じた。C言語は1年生のときと似ているところもあるが、それ以上にわからないものが多かった」である。初めての開発環境の設定で戸惑っていることがわかる。また、1年次で学んだことを活かそうとしていることも伺える。

第2回目の感想は、「今回もマイコンを使ってマトリックスLEDを光らせた。前回もやった開発環境の設定だが、前回の内容と多少のコンピュータの操作知識が増えたこともあって前回よりは苦戦しなかったが、それでもパソコン動作を誤ってしまい、最初からやることになってしまった。だが、授業の内容は少しずつであるが理解している。個人の作業では完璧に理解しながら作業はできなかった。次回は最初の設定ぐらいはミスなしでいきたい」である。開発環境の設定に慣れてきた様子が見てとれる。プログラムの内容も少しずつ思い出してきたようだ。

第3回目の感想は、「今回はモータ制御を行った。復習で開発環境の接続方法と初期設定の接続はかなり理解できるようになった。モータの動作方法はかなり理解できて納得できる内容だった。だが速度変動をC言語でやる方法を理解できなかった。else、forの内容は情報で勉強した内容でしっかり覚えていて使うことができた。次回がラストだが(今回が最終回であることを理解していない)、開発環境や初期設定の仕方を覚えておいて自分の身につけて実習を終われるようにしたい」である。実習の取り組みに余裕が持てるようになったと推察できる。しかし、複雑なプログラミングの制御に関しては、難しさを感じているようだ。なお、学年末考査の平均点は73点(100点換算)、標準偏差は12.7点で、ほぼ正規分布であり、特に物足りないさや難しすぎて理解できていない生徒は無かった。

【まとめ】

今回の記事で注意して頂きたいことがあります。

それは、この実習教材の開発は、5年前のことなので、扱っている技術が古いという点です。この記事では、マイコンにマイクロチップテクノロジー社のPIC16F877Aを採用しています。このマイコンは現在でも販売されていますが、現在では、これよりも低価格で高機能なマイコンが販売されています。工業の分野では、技術の進歩に合わせて教材も変化させていく必要があります。なので、この実習教材「トレーニングボード」の役目も終えたのではないかと考えています。

今回の記事では、「会議」を経ることで教材開発を進めた事例を紹介しました。これぐらいの規模ならば、個人の中で完結した開発ができるかもしれません。しかし、このようにした理由は、規模の大きなプロジェクトをやることもあるかもしれませんし、なによりも、当時、「知らないうちに、勝手にやっている」と言ったり、言われたりすることが多々あったからでした。

また、記録を残しておくことも重要だと思っています。このブログで共有できたことは幸いです。

これで、「実習教材はどのように作るのか? 「マイコンを使ったプログラミンング実習教材の開発」ストーリー」の紹介は終わりです。ここまで読んでくれて、ありがとうございます。

ご質問・ご意見・ご感想等がありましたらコメントください。

テラオカ電子 

【イチオシのYouTube動画】

このコーナでは、記事に関連する(関連しないかもしれません)気になるYouTube動画を紹介しています。今回は、YeLLOW Generation の『北風と太陽』です。20年以上前の古い曲ですが、当時、一度聞いて歌の内容がよく理解できたのを覚えています。「生意気だけがidentityだけど」とか「現実と対峙したら」とか難しい言葉が羅列されるのですが、わかりやすいのです。難しい言葉を使っても比喩を使えば理解しやすい表現ができるという例だと思います。

「イエロー・ジェネレーション 北風と太陽 PVフル画面 歌詞つき YeLLOW Generation Kitakaze To Taiyo」

【2023/12/17投稿】

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次