ホーム » スタッフ (ページ 205)
「スタッフ」カテゴリーアーカイブ
中学でのプログラムによる計測・制御
例年夏休み最後の時期に技術系高校の先生を対象とした、 制御関連の実習中心の講習会ということで、H8を使ったライントレース(H20),Arduinoをつかったライントレース(H21)と協力してきた。 次年度も引き受けるお話になっているけど、 H22年度は、中学校の技術家庭科の先生も含めた講習会を実施できないかとの依頼で、 以下のような講習会(案)となった。
【講座名称】 | B712 中学校 技術・家庭科(情報技術) ~極めよう!プログラム計測・制御~ B731 高等学校 産業教育 ~授業で役立つマイコン制御を利用した教材づくり~ |
【講座期日】 | 平成23年8月24日(水)、8月25日(木)の2日間 |
【受講対象】 | 中学校技術科教員、高等学校専門学科教員、実習助手 |
【受講定員】 | 中学校:8名、高等学校 12名 |
【研修目標】 | (中学校) 制御用マイコンを使って模型制御などの基礎を習得 し、 必修となったプログラム計測・制御の知識と技術を習得する。 (高等学校)制御用マイコンを使って模型制御などの基礎を習得 し、 授業等に使う教材を製作する。 |
【研修内容】 |
|
【研修会場】 | 福井工業高等専門学校 |
【備考】 | 中・高合同で実施する。B731(高等学校)は、初任者研修を兼ねる。 |
中学校の「プログラムによる計測・制御」とは?
んで、新しく中学校の先生も対象とすることで、依頼元の教育研究所さんからは、 プログラム言語がBASICで習っている…とのお話があり、できればBASICという 要望もあるけど、ArduinoでわざわざBASICというのも変だし、やっぱりそこはC言語。
ただ、中学校の技術家庭科ではH24年度から「プログラムによる計測・制御」が 始まるとのことなので、内容をしらべてみた。
新学習指導要領・生きる力 第2章 各教科 第8節 技術家庭 第2 各分野の目標及び内容 [技術分野]-2内容-D情報に関する技術 (3) プログラムによる計測・制御について,次の事項を指導する。 ア コンピュータを利用した計測・制御の基本的な仕組みを知ること。 イ 情報処理の手順を考え,簡単なプログラムが作成できること。 別資料によれば、 計測・制御システムは,センサ,コンピュータ,アクチュエータなどの要素で 構成されていることや,計測・制御システムの中では一連の情報が プログラムによって処理されていることを知ることができるようにする。
基本、ライントレースであればどれも体験できることだけど、 指導要領の別項には、 「(1)のアについては,情報のディジタル化の方法と情報の量についても扱うこと。」 との記載もある。 なので、求められていることは違うかもしれないけど、 ちょっとA/D変換や量子化の説明を増やしてみようかな…
関連の先生の教育系の発表資料をみると、 順序を覚えさせることが中心のシーケンス制御と、 電子回路でのセンサーと関連させたフィードバック制御の違いといったネタもある。 ライントレースの実験の前に、『自走ロボットを指定距離進んで、指定角度方向を変えて…』 というシーケンス処理っぽいプログラムを書いてもらって、フィードバックが無いとダメという 話を強調するのもありかもしれない。 動いている途中でタイヤがスリップとか、電池がヘタルとか、何か別のものがぶつかるとか…の 外乱なども交えながら…
特別装備経費での予算執行
年度末も近づき、学科予算での未執行分での購入物品の相談を受けていたが、 最終的な案を提示する。 WiFi環境の改善ということで、各フロアのAPをハイパワー11n対応…これはすんなり 皆さんも納得しそう。 WiFiの上流に設置しているFERECルータだけど、最近故障修理をした所なので、 購入なんだけど、後継機種がでていないので、躊躇している。 見積もり価格も30万そのまんまだし…
高久先生と雑談していたら、学科サーバの更新もいいのではないかとの案が浮上。 パソコン工房さんで、サーバ用をちょちょいと構成を考えて、33万円。 ちなみに、学科サーバmaisyちゃんは(長男が保育園時代に気に入っていたキャラクター ということで命名しているので….)軽く5年は経過。 サーバの/bootディレクトリをのぞくと、2003/4/1というファイルがある。ということで、約8年… 途中でHDD入れ替えは一度あったけど、確かに長生き。 しかしながら、学科実験用サーバsherryも控えているので、maisy→sherryの移行も可能 だし、悩みどころ。
ということで、WiFi用ルータをとるか、サーバ更新をとるか…と考えていた。 しかし、今日の校長年頭あいさつにて「機構より各教員+5万の研究費」という お年玉があったようなので、学科の教員研究費を持ち寄って、両方買えば…という案も出てきた…
緊急連絡システムのスマートフォン対策…
自分の携帯もIS03に機種変更して自宅サーバなどのWebページのスマートフォン対策は それなりにやったけど、緊急連絡システムもよく考えりゃ、対応していない。 このためスマートフォンの人は、最初に小さい文字で出てきたのを、わざわざ拡大することになる。
ということで、緊急連絡システムのスマートフォン対策を行う。 といっても、PHPスクリプトの先頭に、iPhone対策の定番の下記のタグを埋め込んだだけだけど…
<meta name="viewport" content="width=240, initial-scale=1.0, user-scalable=yes, maximum-scale=3.0, minimum-scale=1.0">
2011年1月2日(第197回)
新年、明けましておめでとうございます。本年も高専ライブをよろしくお願いいたします。
収録でお届けしました。
- 部活紹介 テニス部 5年物質工学科 印牧さん、5年環境年工学科 恵美さん、
4年環境年工学科 小泉さん
club010102.mp3
2010年12月26日(第196回)
- 英語の囃子 第38回 吉田三先生、電子情報5年丸山さん
英語プレゼンテーションコンテストについて
eng101226.mp3 - 数学の部屋 第55回 長水先生、MMM同好会の皆さん
math101226.mp3
スタジオの隣の誠照寺も雪景色になっていました。
mallocとfreeの実装の導入部
先週の説明のガベージコレクタの補足説明として、 実装方法の他の方法としてコピー法などを紹介。
この後、リスト構造の応用の最後の説明として、mallocとfreeの実装方法を 説明する。ただし、順序良く理解をしてもらうために、 確保する領域サイズが固定の場合を説明する。
mallocで確保する領域サイズが一定であれば、 最後にfreeされたものを最初にmalloc用に使う…と考えれば、 freeされた領域を、リスト構造のスタックとすればいい。
struct HeapList { struct HeapList* next ; // データ領域 } ; struct HeapList* freelist ; void* my_malloc() { struct HeapList* ans = freelist ; freelist = freelist->next ; return (void*)ans ; } void my_free( void* p ) { struct HeapList* hp = (struct HeapList*)p ; hp->next = freelist ; freelist = hp ; }
ただし、freelist は決められた領域のブロックをリストで連結しその先頭で初期化する。
ヒープ領域の断片化
実際のmalloc() , free() は、確保領域が自由な大きさを指定できる。 しかしながら、使用領域と開放領域が交互に並んだ状態で、 最初の使用領域よりも小さな領域の要求があると、 小さなメモリブロックが細切れで発生する。 この細切れで有効活用のできないメモリをヒープホールと呼ぶ。 また、このように細切れになることを断片化(フラグメンテーション) と言う。
関連する用語では、ハードディスクの断片化(フラグメンテーション)がある。 これは、ハードディスク内で散らばった小さなファイルが削除され、 この後に巨大なファイルが新規作成されると、1つのファイルが 分散して配置される。このような状態を断片化と呼び、 このファイルを読み出す場合、分散して配置されているため、 次の場所への移動で、シーク時間・回転待ち時間が余計に発生する。 これによりファイルの読み書き速度が遅くなる。 Windowsでは、これらの不連続状態の改善のために、 デフラグ機能がある。デフラグでは、ファイルの配置を入れ替え、 ファイルが連続して配置されるようにしてくれる。
OpenKinectが使えた…
Kinectを来年の卒研用に購入したので、手持ちのMac OS Xで使えるか、 試してみた。 参考にというか、この記事をそのまんま実験しただけ。 参考記事
環境を準備するために、gitとcmakeが必要みたい。 参考Webではmacportを使っているけど、 先日finkにしたので、finkにてインストール。
(( 必要なツールをインストール )) $ su root # fink install git # fink install cmake (( ソースコードのダウンロード )) $ git clone https://github.com/OpenKinect/libfreenect.git $ git clone git://git.libusb.org/libusb.git (( libusbのインストール )) $ cd libusb/ $ chmod +x autogen.sh $ patch -p1 < ../libfreenect/platform/osx/libusb-osx-kinect.diff patching file libusb/libusbi.h patching file libusb/os/darwin_usb.c patching file libusb/os/darwin_usb.h patch unexpectedly ends in middle of line Hunk #2 succeeded at 147 with fuzz 1. (( 参考資料とautogenの実行順序逆だったな... )) $ ./autogen.sh $ ./configure $ make $ su root # make install (( OpenKinectのインストール )) $ cd .. $ mkdir libfreenect/build $ cd libfreenect/build $ ccmake .. $ cmake .. $ make $ su root # make install $ cd ../examples $ cp ../include/* . $ cmake . $ make
#include の <libfreenext.h> "libfreenect.h" といったPATH の違いでコンパイルエラーがでたけど、適当に直しながらコンパイルして動いた。

ゼロエネルギービルの可能性
福井県機械工業会との連携事業でエコ関連技術ネタで、 勉強会などに協力しているけど、昨日テレビで面白そうな番組をやっていた。 「夢への扉~NEXT DOOR~:ゼロエネルギービルを可能にする太陽光照明を広めて行きたい」(2010/12/19放送)にて、光ダクトという技術が紹介されていた。
一般住宅で太陽光の取り入れ窓というのは、最近では積極的に取り組まれているが、 光ダクトとは、オフィスビルで太陽光をうまく使うためのシステムで、 採光窓から、太陽光をダクトを使って反射させながら建物の中に取り入れ、 照明に使うための物。
建物の構造上、L字型に曲がった環境でも光をうまく 取り入れられるように、反射光シミュレータを使って施工するらしい。 特に、L字型でも光をうまく反射させるには、単純に角に平面鏡を設置しても、 太陽の入射角度の変化で、明るくはできないらしい。 このため、L字部分では、カーブを付けた鏡の方が重要だったりするとの内容であった。
ただし雲などの自然変化で光量の変化が無いように、光ダクトには光感応による 補助ライトも設置する。光の量は、500ルクス程度らしい。 んで、最近はビルだけでなく身近な場所での導入のためにコンビニに設置するのを 目標に開発されている新しい光ダクトの紹介をしていた。 コンビニでは、職場などより明るい光が必要で1000ルクス程度が要求されている。 1000ルクスは厳しいけど、一般的に10時から16時程度の時間帯で800ルクスを超える ことを目標に開発しているが、単純に光の量を増やせばいいという訳ではない。 夏場では光を取り入れすぎると、エアコンの冷房が必要になってきて、エコではなくなる。 この会社での取り組みでは、採光窓に徐々に角度を変えた反射板をつけておき、 高い角度での光はさえぎられて、朝夕の入射角の光をたくさん取り込むように工夫を していた。これにより、真昼でも室温上昇がすくなくかつ800ルクスを実現との内容であった。
2010年12月19日(第195回)
収録した模様をお送りしました。
- 学生インタビュー デザインコンペティション2010に参加した学生さん
専攻科生産システム工学専攻2年 松谷さん、環境都市工学科5年 佐藤さん、脇本さん
desicom101210.mp3 - にしにしの部屋沖縄分室 沖縄高専 正木先生、福井高専 奥田先生
nishi101210.mp3
GrWinでグラフィックス基礎演習
プログラミング応用の第4クオータとして、グラフィックスのネタで演習を行う。 GrWinを使って、基本的な命令で簡単な絵を描く処理を示した後、 関数グラフを描く処理を説明し、簡単な応用で穴埋めをしてもらう。
基礎的なネタだけど、実数を使うプログラミングでありがちなミスの説明もおこなう。
(( 実数を積算しても完全に正確な値とはかぎらない...)) #define PI 3.141592 float th ; for( th = 0.0 ; th != 360.0/180.0*PI ; th += 5.0/180*PI ) { : // ループが止まらない... } (( 整数演算と実数が混ざると危険 )) for( th = 0.0 ; th <= 360.0/180.0*PI ; th += 5/180 * PI ) { : // thの値が変化せず無限ループ // 5/180 は int 型で計算され、0となる。 }