組込み系リーダ育成セミナーのカリキュラムへの提案
~中小企業緊急雇用安定助成金対応のものづくり人材育成のコース(マイコン部分)~ Practical proposal to a seminar for leaders who implement embedded softwares
福良 博史 FUKURA Hirofumi 1.はじめに 中小企業緊急雇用安定助成金1)対応のものづ くり人材育成のコースを立ち上げ、そのうち最 後の2 日間でマイコンの実装を行うこととなっ た。コース名は、「実践的ものづくりリーダ育 成」、期間は11 月 30 日(月)から 12 月 25 日 (金)の 19 日間コースである。コースの主な 目的は、リーダとして企業のものづくりを牽引 していく人材の育成であり、設計から実装まで を体験し、さまざまな人とのコミュニケーショ ンがとれるような経験の蓄積を行うことにより、 応用力を育てることが求められる。具体的には、 百円玉と五百円玉の判別をし、LCD に表示を出 す貯金箱を(図1は受講生の作品例)制作する。 投入口から入ってくる二種類のコインの振り分 け、振り分けられたコインのセンサによる検知、 マイコンを用いてセンサが検知したコインを勘 定する、というものである。このために必要な 各種技術を身につけることとなる。 表1 カリキュラム構成の概要 回 主な内容 1 挨拶/概要説明/ ビジネス・コミュニケーション 2 デザイン/CAD 3 創造的開発技法 4 センサ技術 5 デザイン CAD:製品設計のための3次元検証技術 6 (ソリッド編) 7 CAD:製品設計のための3次元検証技術 (ソリッド編) 8 案の評価:設計・開発段階における FMEA・FTAの活用法 9 案の評価:設計・開発段階における FMEA・FTAの活用法 10 動きの解析 11 動きの解析/ CAE:設計技術者のための 機械構造解析技術 12 CAE:設計技術者のための 機械構造解析技術 13 生産時の無駄どり:実践生産設備の改善 14 プラスチック加工 15 プラスチック加工 CAE:設計技術者のための 16 機械構造解析技術 17 生産時の無駄どり:実践生産設備の改善 18 マイコン:組立・動作確認(C 言語) 19 マイコン:ソフトの調整・状態遷移設計 /まとめ、講評 図1 受講生の作品例
2.マイコン部分のセミナーの組立て方法 2.1 セミナーの前提 マイコンの実装は情報系が担当することとな った(表1の最後の18、19 回の太字部分)。マ イコンの実装部分では、個別に制作された貯金 箱がきちんと動作することが望まれている。こ のため、どのようにセミナーを運営することが 望ましいのかと考えた。 受講生個々人がそれぞれに設計した貯金箱が 異なるので、ソフトも基本的には個別に対応し なければならない。つまりセンサと LCD の取 り付け位置が皆異なる。通常のソフトウェア開 発のセミナーでは皆同じものを制作するのが基 本で、余力があればいろいろ機能を追加させて いくことがある。しかし今回のセミナーでは皆 が独自の貯金箱をつくる可能性がある。このた め個別にそれぞれ実装できるように配慮した教 材を用意する必要にせまられた。 2.2 マイコンの選定 今回の参加者はマイコンの知識が無いことを 前提にしているので、扱いが容易なマイコンが 望まれる。開発環境も構築が容易なものであれ ば無用なトラブルを避けられる。ソフトウェア 制作の技術者を育てる場合には基礎知識から制 作まで幅広くかつより深く時間をかけて訓練す ることが望ましい。しかし今回のセミナーでは リーダ育成が主目的であるため、基本的なもの づくりの体験を通して何が必要かを見通せるよ うになることが大事である。このためマイコン の開発の主要な手順を把握してもらうことが眼 目となる。 マイコンは取り扱いの容易なものを選定する こととした。H8 マイコンの場合、アセンブラ が必要な場面がある。PIC マイコンの場合は C 言語で開発できるが、インターフェースの実装 に若干手間がかかり、かつ開発環境が純正品の 場合は高価である。 Arduino(図2)はアセンブラの知識は不要 であり、C 言語レベルでソフト開発が可能であ る。その上開発環境も純正品がフリーソフト(図 3)でありインストールも容易である。持ち帰 って別の実験用に簡単に使い回すこともできる。 そこでマイコンは、Arduino Duemilanove を採 用した。 2.3 マイコン組立ての前準備 マイコンとセンサの位置は現物の貯金箱に合 わせてコードの長さを変えられるように準備し ておく。LCD とマイコンの間は、配線がスパゲ ッティ状になってはトラブルの解析が大変にな るので、バスケーブル(図4)を事前に用意す ることとした。 受講生には、マイコンと LCD 間の距離を 15cm 以内となるように貯金箱の設計を進めて もらうことを依頼した。しかしそのケーブル長 が15cm より長くないと接続できないという場 図2 Arduino Duemilanove 外観 図3 Arduino 用統合開発環境
合を考慮し、実習の場で長いバスケーブルを事 前に準備することとした。 マイコン実装の2 日間のうち 1 日目は、マイ コンの実装と動作確認を行うようにし、2 日目 は、ソフトの調整を半日用意し、その後は状態 遷移の設計の考え方と、実装したコードとの関 係の解説を行う予定とした。もしハードの実装 が早く済むようであれば、1 日目の途中からよ り深く設計の解説を行うように準備をしておく こととした。 2.4 ソフトウェアの前準備 受講生は組込みソフトウェアに関する知識は 皆無という前提で1 日程度の期間を用いてソフ トウェアの体験をしてもらうことが要求されて いる。このために、学生のように時間をかけて C 言語の学習をし、自分でプログラムを作り上 げていくのではなく、ソフトウェアというもの がどういう性質のものであるかを短時間に体験 してもらうことが望ましい。このためには、ど のような形状の貯金箱に対しても簡単にソフト ウェアの変更ができるようなプログラムコード を用意しておくことが必要である。 図4 Arduino に LCD バスケーブル そこで、事前にモデルとなるプログラムのコ ードを用意しておくこととした。このコードは、 センサのサンプリング、センサとコインの間の 距離による電圧変化のレベルなどを適当にその 場で変更できるようにしておかなければならな い。そこで、事前にセンサのサンプルを用い、 センサとLCD を Arduino に接続し、貯金箱と 同じシステム構成の組込みソフト制作用実験機 器を用意した(図5)。この機器を用いて組込み プログラムのモデルを事前に制作した。 および増設基盤を接続した例 2.5 モデル・プログラム例 制作したモデル・プログラムのソースコード を図6に示す。センサ検知のプログラム制作に あたって注意した点は、以下のとおり(以下の 説明文中のn行目とは、図6のコードの中の左 側に振られている行番号を示す)。 (1)サンプリング サンプリング値の平均値を用いて閾値の判別 用の値とする。その件数の調整用に 31 行目の SUM という値で、その集約件数とする。この 値を変更することによりサンプリングの平準化 を調整する。平均値は、移動平均を用いると CPU 負荷が増大し、サンプリングの漏れが多く なるのではないかと考え、単純に区間ごとの平 均(33 行~43 行)を求める。 (2)閾値の値 閾値として、5 行目に Boundary を定義する。 この値より下の値を示すとコインを検知したこ ととなる。この値を上回るとコインが通過して いないこととなる(49,50 行、56,57 行)。 図5 組込みソフト制作用実験機器
(4)LCD への表示 (3)状態遷移 百円玉用と五百円玉用の2 種類のセンサを用 意している。そこで、LCD への表示は、上下 2 段にそれぞれのセンサの値を表示し(44 行~48 行、51 行~55 行)ておき、閾値としてどのよ うな値にするのがそれぞれの貯金箱に妥当かを 検査し、最終的に個々の貯金箱特有の閾値(5 行目)に対応したプログラム・コードに変更す ることで最終調整できるように考えた(図8)。 状態遷移の関数を13 行目からの automaton 関数にて定義した。その意味は、表2に示した 状態遷移表である。 表2 状態遷移表 状態 入力されたコイン 検知せず 検知 0(アイドルング) 0 1 この状態遷移表をUML の状態機械図に書き 直し、意味を付加したものが図7である。コイ ンの通過したときのカウントを行うには、状態 2は不要である。状態が1(初期検知)から2 (連続検知)に変化したときにカウントすれば よい。しかし、そのような設計にすると、カウ ントする箇所は状態機械のアルゴリズムと一体 化してしまう。初心者には難解なうえ保守性を 考えた場合もあとからの修正がしにくくなる。 そのうえチャタリングのような状態が発生した 場合は、コイン1 個の通過にもかかわらず 2 個 通貨したように判別する場合もある。貯金箱に よっては、初期検知と連続検知の二種類だけで は済まず、n回検知という状態を用意しないと いけないかもしれない。このようなことを考え ると、状態1と2に分けることにより、柔軟性 が高まり保守性が良くなる。つまり個々の貯金 箱の現地設定によるロジック変更も容易になる と判断し、この遷移図を採用した。コイン検知 の個数カウントは、58,59 行である。 1(初期検知) 0 2 2(連続検知) 0 2 図7 UML 状態機械図 図8 LCD への表示例 3.セミナーの実施 (1)マイコンの組立・設置 マイコンの半田付けから、貯金箱への設置ま では、ほぼ1 日費やした。これは予定通りの経 過となった。夕方に動作確認が行えた。 図9 講義風景 (2)ソフトウェアの調整 a.サンプリングの平均の求め方には変更が生 じなかった。 b.閾値の値はそれぞれ若干の変更を要した。 変更の一例を紹介する。ある貯金箱は、センサ 2 個がそれぞれコインの通貨位置との距離が異 なっていた。このため、閾値を1 種類で共用す ることが不可能となる。つまりセンサ毎に閾値 を持たなければならないケースが生じた。 c.状態遷移の考え方は変更せずに済んだ。
4.セミナー実施の結果 a.アンケート結果 受講生は4 名であり、統計データとしては少な いが、マイコン関連の箇所についてのアンケー ト結果を表3に示す。この評点は、1から5ま での5 段階評価で、3が中間を示している。 この結果からうかがえるのは、ある程度満足 していただけたが、難しいと感じており、活用 できるか否かについては意見が割れたことであ る。標準偏差を見ると、活用度が満足度と難易 度の質問に比べばらつきが大きいことがわかる。 b.実施した講師として気がついた点 何もかも知っておいてほしいと、メニューを 盛りだくさん用意しすぎたと感じている。あま りにも多くのことを詰め込みすぎたという感 触がある。 5.今後のセミナー企画方法の提案 アンケート結果での難易度は、4.3である。 特段難しいことをしていたとの評価ではない。 しかし、マイコンのソフトウェア制作に当たっ て講師が得た感触は、時間的に余裕がまったく 無く駆け足でセミナーを実施した感がある。こ れは、2年間かけて訓練する学生に対するよう に詰め込み過ぎたためと感じている。 社会人のリーダ育成セミナーのように全体 を概観し、ものづくりをいろいろな角度から観 察し体験してもらうための短期セミナーを企 画する場合、ものづくりの幹を体感してもらう ことに重点を置くことが望ましいと感じた。 今回の組込みマイコンのソフトウェアの実 装部分について考えると、最終成果物は貯金箱 であり、そのプログラムが正しく動くことが主 目的である。そのためには、図6のコードの理 解を中心に据え、修正ができるようになるため の解説が一番重要なことである。ソフトウェア 学習の一般常識(例:真理値表、状態遷移図な ど)は、副読本とし、時間的に余裕があれば解 説するように運営することが望ましい。 短期の特注セミナー用カリキュラムを検討 する上でセミナーの幹を明確にするための発 想法を模索中である。そのなかで目標からのト ップダウン方式の発想法(図9がそのイメー ジ)に注目している。この視点で得られた項目 の中から幹と枝葉を仕分けると短時間に容易 に仕分けられると感じた。今後はこのような視 点での発想方法を採り入れていきたい。 表3 アンケート結果 満足度 難易度 活用度 貯金箱をつくる 評点平均 4.0 4.3 3.3 標準偏差 0.8 図9 教材化のトップダウン・アプローチ 謝辞 最後に、各方面の先生方からお忙しい中を多 大なご支援をいただきました。 参考文献 1) 厚生労働省のホームページ http://www.mhlw.go.jp/general/seido/josei/ kyufukin/a01-2.html 2) Arduino のホームページ: http://www.arduino.cc/ 1.0 1.3 注:少数以下2 桁目を四捨五入 (マイコン部分) ハードの実装 ソフトの実装 (ソフトの実装部分) 最終コード・モデルの理解 現場でのコードチューニング その他、副読本