Emuduino

Emu(lator) + (Ar)duino

Arduinoエミュレータ

DTP (Desk Top Prototyping)環境の構築をめざして!!!

業務連絡

えれくらでemuduinoのお披露目会をやります。
えれくら!〜第0x02回〜(2013/02/23)
触ってみたい方は、jdkとprocessingの最新バージョンをインストールしてきてね。

本プログラムについて

本プログラムは,PC上でArduinoをエミュレートすることを目的に開発しました。
本格的にエミュレータを作るのであれば、atmelのAVRマイコンのCPUシミュレータを開発し、それに入出力部を拡張するなどの高度な実装が必要となります。 しかし、本プログラムでは、お手軽にProcessingを使ってArduino風に動いているように見せているだけです。 もともと,ArduinoのIDEは,Processingをベースにして開発されており,両者のプログラミングスタイルは非常によく似ています。
Processing は,setup()で初期化を行い,その後,drow()で描画を繰り返します。
Arduino は,setup()で初期化を行い,その後,loop()で制御を繰り返します。

Processing <==> Arduino
void setup() {
… ;
}

void drow() {
… ;
}
void setup() {
… ;
}

void loop() {
… ;
}

そこで,以下のようなjavaアプリケーションで作成したGUIパーツを,Processing 上に作成した入出力関数を通じてコントロールし,Arduino風の実行環境を実現しています。
もちろん、ProcessingArduinoは、根本的に異なるシステムなので、割り込みやタイマー動作などのハードに依存した機能までは真似出来ませんが、簡単な入出力やループ動作などの検証には使えると思います。
学校などで、組み込みの基礎を教える場合、ハードウェアとして人数分の教材を確保するのは困難ですが、Emuduino なら、PCだけで実習を行うことが可能です。

使用可能なGUIパーツ群

詳細については、リファレンスをごらんください。

開発の流れ

Emuduinoを使った開発の流れは、以下のようになります。
1.開発環境を整え、emuduinoのライブラリをインストールする。
2.EmuduinoDesignerを用いて、使用するGUIパーツを選択して、その配置やパラメータを設定し、ベースとなるProcessingのソースコードを生成する。
3.2.で生成したソースコードをProcessingに移し、必要なプログラミングを行う。
4.Processingで機能の実装が終わったら、ソースコードから必要部分をArduinoの統合開発環境にコピーしコンパイル後、実機Arduinoに転送して実行する。

ダウンロード

以下の圧縮ファイルをダウンロードしてください。

実行用ライブラリとサンプルプログラム

Emuduino20130222.zip

ソースコード

EmuduinoSRC20130222.zip

emuduinoのGUIは,Netbeansを使って開発しています。
emuduinoのGUIは,Netbeansを使って開発しています。(大事な事なので,2回書きました。)
Netbeansのプロジェクトをそのままの状態で圧縮ファイルにしたものを公開しているので,プログラムの拡張改変を試みる方は,Netbeansを使用することをお薦めします。

旧バージョン

Emuduino20130105.zip,EmuduinoSRC20130105.zip
Emuduino20121224.zip

使い方

準備

インストール

1.先ほどダウンロードした「実行用ライブラリとサンプルプログラム」の圧縮ファイル Emuduino20??????.zip をハードディスクの適切な領域に展開してください。

2.展開するとemuduinoというディレクトリが生成されます。
このemuduinoディレクトリを processing.exe のあるディレクトリの下のmodes¥java¥libraries¥に全てコピーしてください。

例 D:¥processing–2.0b7-windows32¥processing–2.0b7¥modes¥java¥libraries¥

modes/java/libraries/

|-- dxf
|-- emuduino   <---  これを追加コピーする。
|   |-- examples
|   |   |-- ActivityLimitation
|   |   |-- Blink
|   |   |-- Button
|   |   |-- Button2LED
|   |   |-- ButtonStateChange
|   |   |-- DataRepTest
|   |   |-- DroidTestAnalog
|   |   |-- DukeTestAnalog
|   |   |-- HeartBeat
|   |   |-- KnightRider
|   |   |-- LcdTest
|   |   |-- ReadAnalogVoltage
|   |   |-- SerialTest
|   |   |-- Slider2Buzzer
|   |   |-- toneKeyboard
|   |   |-- toneMelody
|   |   `-- TwentyFour
|   `-- library/
|       |-- data
|       |   |-- heartbeat1k.csv
|       |   `-- sin_cos.cs
|       |-- emuduino.jar
|       |-- export.txt
|       `-- template
|           |-- AnalogReadFunction.tmpl
|           |-- AnalogWriteFunction.tmpl
|           |-- DigitalReadFunction.tmpl
|           |-- DigitalWriteFunction.tmpl
|           |-- Disp7SEG.tmpl
|           |-- Header.tmpl
|           |-- initComponents.tmpl
|           |-- PinAllocation.tmpl
|           |-- SerialFunction.tmpl
|           |-- SetUp.tmpl
|           |-- SpeakerFunction.tmpl
|           `-- Variables.tmpl
|-- javascript
|-- minim
|-- net
|-- pdf
|-- serial
`-- video

サンプルの実行

1.さきほど準備した実行環境の中にある processing.exe を実行してください。

2.メニューの中のFile - Examples… Ctrl+Shift+Oをクリックしてください。
別ウィンドウでサンプルの一覧が表示されます。

3.このに表示されるtreeの中のLibraries以下にあるemuduinoの中にサンプルが収録されています。
それぞれのタイトルをクリックするとサンプルソースが開きます。

    Libraries
    |-- emuduino

4.メニューの中のSketch - Run Ctrl+R で実行します。

5.サンプルの終了は,Arduino と Emuduinoのタイトルが表示されているウィンドウの右端の[X]で終了します。

注意事項

これらのサンプルをベースにして,プログラムを作る場合,一度,自分の作業領域内に別名でコピーしてから作業を開始してください。
これらのサンプルプログラムは,ライブラリ中にread onlyファイルとして登録されているので,書き込みができません。

サンプルリスト

以下のサンプルリストをお読みください。

samples

EmuduinoDesignerの使い方

以下のEmuduinoDesignerの解説をお読みください。

EmuduinoDesigner

デバイスと関数のリファレンス

以下のリファレンスをお読みください。

リファレンス

応用編

サンプルプログラムを参考にして,setup(); と loop(); 内に必要な機能を実装していきます。
emuduino上でひと通りの機能確認ができたら,ArduinoのIDEに,それらの内容をコピーしてください。
これをコンパイルして,Arduinoの実機にプログラムを転送すればそのまま実行出来るはずです。

宿題

Emuduinoを使って,以下のアプリを作成せよ!

キッチンタイマー仕様書

音階表

FAQ(frequently-asked question)

Q.何と読むのですか?

A.emuduinoは,“えみゅでゅいーの” と読みます。
Emulator と Arduinoを合成して作った単語です。
Emu(lator) + (Ar)duino

Q.何故作ったのですか?
ArduinoやProcessingは,プログラムをしていて非常に楽しい環境です。
でも、Arduinoをプログラムするには、機材やパーツを揃えたり組み替えたりするのがチョット面倒です。
そこで、Processingの上で、いつでもどこでもチョイチョイとお気軽にarduinoのプログラムができたらいいなと思って作りました。

「怠惰はプログラマの美徳」

Q.ボタンやLEDのサイズが大きすぎると思うんですが?
理由は2つあります。
1つ目は、これからは、タッチパネル式のコンピュータ環境が増えると考え、タッチパネルで扱いやすいGUIのサイズを想定して、全体をデザインしました。
2つ目は、出来上がった作品をプロジェクターを使ってデモをすることを想定し、見やすいように大きめのデザインにしました。

ToDo

改変履歴

参考文献 & その他

Arduinoをはじめよう 第2版
Arduinoをはじめよう 第2版
posted with amazlet at 09.10.27





Processingをはじめよう (Make: PROJECTS)
Processingをはじめよう (Make: PROJECTS)
posted with amazlet at 09.10.27





ArduinoMegaではじめようキット
ArduinoMegaではじめようキット
posted with amazlet at 09.10.27





Arduino Leonardo(+Headers)
Arduino Leonardo(+Headers)
posted with amazlet at 09.10.27