Vol.2013-CE-119 No.8
2013/3/15

情報処理学会研究報告
IPSJ SIG Technical Report

タブレット端末で動作する，インタプリタ型言語搭載マイコンのプログラミング環境の開発
光永 法明1,a)

概要：マイコンは身近な家電を含め多くの工業製品で活用されるだけでなく，計算機と実世界との接点であるセンサやアクチュエータとの接続が容易なものが多く，インタラクションデザインの教育・研究や中学校の技術科といった工学系以外の分野の教育での利用が拡大している．一方で，タブレット端末やスマートフォンなど小型で安価な端末が普及しつつある．そういった端末でマイコンのプログラミングが容易に出来れば，より利用の敷居が下がると考えられる．ところで，そういった端末は計算機資源が限られている．しかし，インタプリタをマイコンへ載せ，端末側にはコンパイラを持たず，エディタやデバッグに必要なもののみとすれば，計算機資源が限られていても問題がない．そこで本研究では，タブレット端末で動作する，インタプリタ型言語搭載マイコンのプログラミング環境を開発したので報告する．

1. はじめに電子計算機が様々な場面で活用されるようになり，これからも活用の場面が広がりを見せると考えられている．な

ロスコープといった従来からのツールが利用されている．
しかし，それらのツールが利用可能であっても，操作の習得に時間がかかり，また慣れない接続でミスをすると余計に混乱するといった問題がある．

かでも実世界におけるユーザインタフェースへの電子計算

そういった問題は，特別な操作の習得が不要なマイコン機の活用が増えていくと考えられる．実世界との接点とな用の開発環境にプログラムと回路の動作を可視化するツーるセンサ，アクチュエータと接続しやすい電子計算機としルを備えれば，解決すると考えられる．また対話的に動作ては周辺回路を内蔵したマイコン（マイクロコントローラ/を確かめられるインタプリタ型言語が有効な場面もあるとマイクロコンピュータ）があり，多くの製品で使われてい考えられる．

る．また製品や工学系の教育においてだけでなく実世界とところで，タブレット端末やスマートフォンなど小型での関わりを重視する，インタラクションデザインの教育・安価な端末が普及しつつあり，そういった端末でマイコン研究や中学校の技術科 [1] といった分野での教育での利用のプログラミングが出来れば，開発環境を用意する敷居がが拡大している．そういった用途でのマイコンの利用方法下がると考えられる．安価な端末では計算機資源が限られは，いわゆる試作に近い．一方で作品の制作者はマイコンているが，インタプリタをマイコンへ載せ，端末側にはコを使った電子回路やプログラム開発に慣れてはいない．

ンパイラを持たず，エディタやデバッグに必要なもののみ

初心者にとっては，マイコンの能力を最大限に生かせることよりも，目的の動作をさせるためのステップが少ない方がとすれば問題は少ない．
そこで本研究では，マイコン上で動作するインタプリよい．そういった目的で BASIC 言語処理系 [2], [3], [4], [5]タ [7] 用にタブレット端末 (Android OS) で動作する，イや Arduino [6] などが開発・市販されている．とくに利用

ンタプリタ型言語搭載マイコンのプログラミング環境をするマイコンを限定し周辺回路の準備のステップを少なく開発したので報告する．以下では，まずインタプリタとした Arduino は利用者が多い．

Windows 上でのプログラミング環境を紹介する．次にタそういった環境を用いても，多くの場合に，回路やプログラムが意図通りに動作していないときに，動作を可視化するツールとしては，デバッガや回路計（テスター），オシ1a)

大阪教育大学4-698-1 Asahigaoka, Kashiwara, Osaka 582-8582, Japan
mitunaga@cc.osaka-kyoiku.ac.jp

c 2013 Information Processing Society of Japan⃝

ブレット端末での実現を紹介し，最後に議論とまとめを述べる．

2. マイコン上で動作するインタプリタ [7]iArduino は，Arduino のボードに搭載されたアトメルのAVR マイコン上で動作する，Arduino 言語 (C 言語ベース)

1

Vol.2013-CE-119 No.8
2013/3/15

情報処理学会研究報告
IPSJ SIG Technical Reportと互換性のあるインタプリタ型言語である．マイコン上で動作するインタプリタは，シリアルポートで操作を受け付

表 1 iArduinoTerminal から iArduino への要求と応答番号
要求/応答0x00

バージョン0x01

変数値
入出力ピンの値

ターミナルソフト iArduinoTerminal(図 1) を開発環境とし0x04
0x0d

プログラムリストて使うことで，プログラムの実行中でも，変数の値が表示

0x0e

プログラム実行時に実行位置を送る (応答なし，以降

け，一般のシリアルターミナルでもプログラミングを含めた操作ができる．さらに，専用の Windows 上で動作する

され，入出力ポートを GUI により操作できる．また，入出プログラム実行中に実行文の範囲を送る)

力ピンの値をグラフにより表示し，エディタ上で動作中の

0x0f

Arduino 起動時からの経過時間 (ms 単位)文をハイライト表示する．

0x10

ピンの入出力設定 (応答なし)

0x11

デジタル出力 (応答なし)

0x12

PWM 出力 (応答なし)

0x13

ラジコンサーボ出力 (応答なし)

0x14

ラジコンサーボ出力の設定 (応答なし)

iArduino はマイコン上で動作するインタプリタである
ため，同一マイコン用にコンパイラ型言語によりプログラ
ムを開発する場合と比べて動作速度やメモリの制約は大きい．そういった制約に到達した場合には，コンパイラ型言語である Arduino 言語に移行し，Arduino IDE を開発環境に利用できる．またコンパイラ型言語に移行した際にも，て決まったコマンドを入力することも出来る．画面の右側

数行追加することで，図 1 の入出力ポートの操作とピンのはピンのモードを設定するプルダウンメニューと，ピンのグラフによる可視化が可能である．

値を操作するスライダが並んでいる．その右にはスライダ

3. タブレット端末で動作するプログラミング
環境を操作したときに，操作と等価になる文を表示する．

Editor/GUI/Graph ボタンをタップすると図 3 に表示が切り替わる．画面の右側にはプログラムを書くテキストエ

現在，安価で容易に入手出来るタブレット端末の OS はリアになる．プログラムの動作中には実行中の文をハイラ

iOS と Android の二つに分かれる．iOS 端末では外部接イト表示（選択状態）する．下のボタン read によりマイ続用に自由に利用できる USB 端子はない．Android 端末

コンからのプログラム読み出し，prog によりマイコンへの場合には機種によるが，端末が USB ホストになる USBのプログラム書き込み（揮発性の RAM 上），save によりポートを備えたものがある．そこで Android 3.1

以降のEEPROM への記憶，autorun によりマイコンのリセット

OS で動作し，USB ホストモードの USB ポートを持つタ

時にプログラムを自動実行するよう設定，nouto により自ブレット端末を対象にし，iArduinoTerminal for Android動実行の解除ができる．さらに Editor/GUI/Graph ボタン*1を作成した ．開発に当っては Android OS 用の USB シをタップすると図 4 に表示が切り替わり，画面の右側がグ

リアルライブラリ FTDriver [8] を用いている．動作は acer

ラフ表示になる．またグラフ上をタップすると，その時刻の ICONIA TAB A200 (Android 4.0.3，画面サイズ 10.1の値を表示する．

インチ，解像度 1280 × 800 ピクセル) で確認している．
マ イ コ ン 上 の iArduino と タ ブ レ ッ ト 端 末 上 の iAr-4. 議論

duinoTerminal for Android は USB シリアル (115.2kbps)

iArduinoTerminal for Android を作成にあたっていくつを通して通信する．プロトコルを表 1 に示す．プロトコルかの問題が見つかった．まず，Android 端末の場合には画は Windows 上の iArduinoTerminal と iArduino が通信す面サイズと画素数の組み合わせが多いことである．アプリる場合と同じである．プログラムの実行文の範囲をのぞき，ケーションを作成する際に，どのような画面を想定するかコマンドは端末側から要求を出し，マイコン側が応答する．

によって視認性や操作性の悪い端末が出てくる場合がある．

各要求/応答を送る際には 0x7f を先頭につけ，プロトコル当然であるが複数のサイズの画面に対応するのは開発者に番号とデータを送る．データ長は可変である．チェックサ負担がかかる．関連してウィジェットの配置について相対ムなどの誤り検出・訂正はしていない．

的なものが多く，実行時の自動配置も用意されている．一iArduino の動作する Arduino をタブレット端末に接続

方で図 1 にあるような，Arduino を模した図の上にスライすると，起動アプリをたずねるダイアログが出るので，ダーを置くといったことが難しい．また PC 上の GUI とiArduinoTerminal for Android を選択すると図 2 が表示さ違って複数のウィンドウを並べることが想定されていない

れる．画面の左側にシリアルターミナルと変数の値を表示ため，図 2〜図 4 で見られるような画面の分割の仕組みをしている．上のテキストボックスに文字を入力し，Send をアプリケーション側で用意する必要があり，利用者が自由タップするとシリアルから送信される．下のボタンを使っに並べることはできない．しかしながら，Android OS の*1

http://n.mtng.org/ele/arduino/iarduino-j.html から入手できるc 2013 Information Processing Society of Japan⃝

仕様は変化が早く，それほど時間を経ずに解決する問題もあると考えられる．

2

Vol.2013-CE-119 No.8
2013/3/15

情報処理学会研究報告
IPSJ SIG Technical Report

図 1

Windows 上で動作する iArduinoTerminal のウィンドウ．左上のウィンドウが起動時に表示されるシリアルターミナルと変数，入出力ピンモニタである．右上のウィンドウは入出力ピンの変化をグラフで表示するウィンドウである．左下のウィンドウはプログ
ラム用のテキストエディタで，プログラム実行中は，実行している行が赤で示される．右下のウィンドウはピンの操作ウィンドウである．ピンを GUI で操作し，回路の動作などを確かめられる．また操作をプログラムの文として表示する．

一方で，プログラムの作成時などには，画面にソフトウェアキーボードが表示される，キーボードが画面の広い面積を占めるためプログラム全体が見にくくなる，など，ハードウェアキーボードをもたないタブレット端末に共通[5][6][7]の問題も見られた．これにはボタンによる定型文の入力，ブロック状のアイコンによるプログラミングなど，あまりキーボードを必要としない工夫が必要になると考えられる．

5. まとめ[8]

mikrobasic/)
MicroEngineering Labs.：PICBASIC PRO, 詳細(http://melabs.com/)
Arduino project：Arduino, 詳細 (http://arduino.cc/)
Noriaki Mitsunaga. ”An interpreted language with debugging interface for a micro controller”, IEEE GCCE
2012, pp.115-119, 2012.
@ksksue：FTDriver: Android USB シリアルドライバ,
詳細(http://ksksue.com/wiki/doku.php?id=wiki:android:
hardware:usb:ftdriver)

本論文ではインタプリタ型言語 iArduino が動作するマイコンの開発環境として，Android で動作する iArduinoTer-

minal for Android の開発を報告した．本開発環境がマイコンを利用する方々，とくに初心者の方，指導者の方の一助になれば幸いである．
参考文献
[1]
[2]
[3]

[4]

文部科学省：中学校学習指導要領解説技術・家庭編 (平成20 年 9 月), 2008.
Parallax Inc.：BASIC Stamp Windows Editor, 詳 細(http://www.parallax.com/tabid/295/Default.aspx)
MCS Electronics：BACOM-AVR, 詳細(http://www.mcselec.com/index.php?option=
com content&task=view&id=14&Itemid=41)
mikroElektronika：mikroBASIC Pro for PIC, 詳 細(http://www.mikroe.com/eng/categories/view/98/

c 2013 Information Processing Society of Japan⃝

3Vol.2013-CE-119 No.8
2013/3/15

情報処理学会研究報告
IPSJ SIG Technical Report

図 2

iArduinoTerminal for Android の起動時の画面．左半面にシリアルターミナルと変数の値表示があり，右半面で Arduino の各ピンのモードと値を表示・操作できる．

図 3

iArduinoTerminal for Android のエディタ表示画面．左半面にシリアルターミナルと変数の値表示があり，右半面にプログラムの編集と実行中の文を表示するエリアがある．

図 4

iArduinoTerminal for Android のグラフ表示画面．左半面にシリアルターミナルと変数の値表示があり，右半面に Arduino の各ピンの入出力の様子をグラフで表示する．

c 2013 Information Processing Society of Japan⃝4