更新

Arduino風 パソコン制御とマイコン制御

小山智史(弘前大学)
ATmega328版
ATtiny2313版

私が理解したArduino

 Arduino(やそれに近いもの)を大学や高校や中学校の実習用教材に利用したいと思っています。Arduinoおよびそれに近いものが、それぞれどのような関係にあるのか自分なりに整理してみました。(1)〜(5)のようにマイコン制御(ボード単独)で動作させるか、(1)(2)(6)(7)のようにパソコン制御とするかは、やりたいこと(やらせたいこと)によって変わってくるところです。

(1) 標準的Arduino(マイコン制御またはパソコン制御)

 ボードは標準のArduinoボードを用い、開発はArduino IDEで行います。ボード単独で動作しますが、プログラム(Processing)と連携させることもできます。

(参考URL)
http://www.arduino.cc/
http://www.musashinodenpa.com/arduino/ref/

(2) Arduino GUI を使わない方法(マイコン制御またはパソコン制御)

 ボードは標準のArduinoボードを用い、開発は標準のArduino GUIを使わずに、エディタでスケッチ(pdeファイル)を作り、ドラッグ&ドロップまたはコマンドライン操作でアップロード(コンパイルと書き込み)します。ボード単独で動作しますが、プログラム(Processing)と連携させることもできます。

Arduinoにはコマンドライン操作のためのMakefileが用意されていますが、Arduino ATmega328用のa328.batを作ってみました。パスの通ったフォルダ(例えばc:\bin)に入れ、コマンドプロンプトで のように使います。ドラッグ&ドロップで利用する場合はa328.batのショートカットを作っておき、ここにpdeファイル(スケッチ)をドラッグ&ドロップします。

参考: a328.bat, arduino.bat(a328.batから呼び出されます)...a328.batはパソコンに合わせてAVRDUDE_PORTの値(comポートの番号)を変更する必要があります。

(参考URL)
http://cpansearch.perl.org/src/MONTUORI/Device-Arduino-LCD-1.02/arduino/Makefile
http://mjo.tc/atelier/2009/02/arduino-cli.html
http://www.arduino.cc/en/Hacking/CommandLine

(3) Metaboard(簡略化したArduinoボード)(マイコン制御)

 Arduinoボードの代わりに部品を最小限に抑えたMetaboardを使う方法です。開発はArduino IDEを用い、標準的なArduino GUIで(または(2)のような方法で)行います。ボード単独で動作します。

(参考URL)
http://metalab.at/wiki/Metaboard

(4) Arduino IDEを用いてプログラム開発(マイコン制御)

 Arduinoボードを使わずに、任意のAVR搭載ボードのプログラム開発環境としてArduino IDEを用いる方法です。Arduino GUIで(または(2)のような操作で)、Arduinoのライブラリを活用したアプリケーション開発を行えます。ボード単独で動作します。

Arduino ATtiny2313用のa2313.batを作ってみました。パスの通ったフォルダ(例えばc:\bin)に入れ、コマンドプロンプトで のように使います。ドラッグ&ドロップで利用する場合は、a2313.batのショートカットを作っておき、ここにpdeファイル(スケッチ)をドラッグ&ドロップします。

 この方法でATtiny2313を使ったmidiコントローラATtiny2313を使ったミニドラム・ミニ鉄琴を作ってみました。どちらも2048バイトの範囲に収まっています。

参考: a2313.bat, arduino.bat(a2313.batから呼び出されます)

(参考URL)
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews46
http://hci.rwth-aachen.de/luminet

(5) WinAVR(gcc)を用いた一般的なプログラム開発(マイコン制御)

 Arduinoを用いずに、WinAVR(gcc)を用いてプログラムを開発する一般的な方法です。

(参考URL)
http://winavr.sourceforge.net/
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDaspx

(6) HIDmon / ヒダピオ(パソコン制御)

 パソコン側のプログラム(Visual BasicやExcel VBAやHTA)で外部入出力を制御する方法です。

ヒダピオは、HIDmonを中学校技術科教育の制御教材として利用できるように工夫されています。私もHIDmonをHTAで利用する方法を模索しています。

概観 画面
(参考URL)
http://hp.vector.co.jp/authors/VA000177/html/AVR_Monit.html
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDmon00
http://www.ne.jp/asahi/ja/asd/gijutu/HIDapio/

(7) Gainer/Pepper(パソコン制御)

 パソコン側のプログラム(ProcessingやFlash)で外部入出力を制御する方法です。

(参考URL)
http://gainer.cc/
http://web.mac.com/kuwatay/morecat_lab./Pepper.html

ふたつのシナリオ

(シナリオ1)

コンピュータの仕組み
HIDaspx(tiny2313)
アセンブラ
マイコン制御(上の(4))
HIDaspx(tiny2313)
Arduino(スケッチ)/WinAVR(C)

 シナリオ1は、従来の「AVRマイコン入門」のトレーニングボードをブレッドボードに変更し、まずはアセンブラと機械語でコンピュータの仕組みを理解し、その後、Arduino(スケッチ)でさまざまなプログラムを開発するというものです。tiny2313はアナログ入力が無いのが残念なところです。また、Arduinoで作成できるプログラムサイズは限られてしまいますが、tiny4313が利用できるようになるとこの点は改善されます。tiny2313にこだわるのは、

というふたつの理由です。また、なぜこのようなことを重視するかというと、対象として想定している中学校の技術科教員(あるいはその卵)がこの分野の学習に充てることができる時間は少なく、核心となる事柄に集中して取り組んでもらいたいからです。

(シナリオ2)

HP作成
プログラミング入門
(Javascript)
パソコン制御
HIDmon&bootloadHID(mega328P)
Arduino風HTA(Javascript)

 シナリオ2は、HTMLタグによるHP作成、Javascriptプログラミングの延長線上でパソコン制御を扱おうというものですが、...実際にはちょっと難しいかもしれません。


(参考)
方法ボードアナログ入力パソコン制御マイコン制御
ArduinoGUI非ArduinoGUIその他
標準的Arduino(mega168/328)専用ボード○(Processing/Flash) 
Gainer(PSoC)
Pepper(tiny85)
専用ボード○(Processing/Flash) × 
Metaboard(mega168/328)ブレッドボード ×  
ヒダピオ(tiny2313)専用ボード+ブレッドボード×○(専用ソフト/Arduino風HTA) ×バスコンピ
HIDmon(tiny2313)ブレッドボード×○(Arduino風HTA)× 
HIDaspx(tiny2313)ブレッドボード×× 
HIDmon&bootloadHID
(mega328)
ブレッドボード○(Arduino風HTA)  

koyama@cc.hirosaki-u.ac.jp