今回は、openFrameworksでArduinoをコントロールしてみます。
Arduinoとは、単純な入出力を備えた基板と Processing/Wiring 言語を実装した開発環境から構成されるシステム、だそうです。要するに、PCとの通信・書き込みもセットになったI/Oボードという事かな。詳しくはWikiで。
■Arduinoの準備
□ハードの準備
Arduinoはオープンハードウェアなので、仕様をみて作ろうと思えば作れますが(僕には無理ですが)、最近はAmazonでも購入できます。たくさんの種類がありますが、最初は基本的なものを用意するのがいいと思います。その辺の事情はこちらで書かれています。スタパ齋藤の「週刊スタパトロニクスmobile」
僕が買ったのはこれ。電源をUSB、ACアダプタで供給でき、シールド(拡張ボード)と組み合わせる事もできます。
Arduino Duemilanove 328
電子工作をやった事が無く、ブレッドボードを持っていなければ、Arduinoをはじめようキットも一緒に買うといいかもしれません。
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_umLz1DtipYHgidvaGwOi2CgyV56yVypY7-ykVHtGu9PCtMV1RoDG29llilOESeYkYSmxx0nMhDfK2mUZTIruiKGUKK7DI2e8uM-XSDYGkIppYCudoF2rlZvOhceWzrtkQ=s0-d)
□ソフトの準備
Arduino IDE(開発環境)はこちらから自分の環境にあったものをダウンロードしてください。Download the Arduino Software
解凍したフォルダの中の「FTDIUSBSerialDriver」を実行して、USB-Serialドライバーをインストールします。
□サンプルの実行
まずは最もシンプルなLEDが点滅するサンプルを動かしてみます。
下の写真のように13番のOutput PinにLEDを繋ぎ、USBでパソコンに接続します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvCDrnIJq1WknjrasQpUVvmjzbGOSnSVmJtmWN0Wxepm6BcGpaxKwieLhvC432dcaSw581iKnaTgULCGYB2P-e34UZ3z3GZlonuulw4jNZzoBwR1F1ipkrA_CTSPIWw6-mVcX2ws9ZTSc/s400/DSC_0199.JPG)
次にAruduino IDE を起動し、File > Examples > Digital > Blink を選択すると、以下のようなウィンドウが開きます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXsYEgCDZOCH4VQ3ikzbY_xFVV4nvi-l8LubLS3uqb2HNQnVrp5UDF7hKJOlDeCn03jG3iB2A_eyXPey3ocAGzOESqP8pkTkH6IbV7Img4AIZZD_SWZ9-a1eyKUbllDAsUQ4Eu6WFa0FA/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-02-18+15.50.33%EF%BC%89.png)
「Upload」のアイコンをクリックすると、Arduinoへプログラムを書き込みを始め、正常に終了するとLEDが1秒ごとに点滅します。IDEに戻り、loop()の中のdelay(1000)をdelay(500)に変えて再度Uploadすると、0.5秒毎の点滅に変わると思います。
■サンプルを開く
Arduinoへの書き込み確認ができたので、いよいよopenFrameworksからコントロールしてみます。そのためには「Firmata」という物を使います。Firmataとは、マイクロコントローラとホストコンピュータ上で通信するための一般的なプロトコル、だそうです。PCからの命令に受け答えるソフトをArduinoに入れ、openFrameworksからはそのソフトが分かるように命令を渡してあげる、という事のようです。なので、Firmataに従っていれば、Processingからコントロールする事もできます。
まず、Arduinoにfirmataを入れます(こういう言い方でいいのかな?)File > Examples > Firmata > StandardFirmataを開き、Uploadします。
次にoFのapps/firmataExample/firmataExample.xcodeproj を開きます。まずはそのままビルドしてみてください。下記のようにアプリは起動しますが、Arduinoが接続されていないと表示されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52sl-4b6o0HtkcalE53mvn9zUZoKj80DbFF3iWG1oGKAwLFvcZa8GqHqbI_ExvabuMHgXoH_F3kbyThBBC2hw_lbFCV3OBN-8Mtd2O4_RLnpTUEegAM4DnP8bYMllAdxwlHigxMqv-Uc/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-02-18+16.46.37%EF%BC%89.png)
写真に従ってLED, 半固定抵抗を繋ぎます。半固定抵抗は「始めようキット」に入っていないので、別に用意する必要があります。Amazonでは半固定可変抵抗器セットがありますが高いので、千石電商などの電子パーツ屋さんで買うのがよいと思います。
この状態でビルドしてエラーが出なければ成功です。右上に半固定抵抗の値が表示されます。ちなみに僕はここで躓きました。ビルドでエラーはでませんが、Arduinoが認識されません。試しにProcessingのFirmataサンプル(SketchBook > librarys > arduino > examples > arduino_output)を試したところ、ちゃんと動きました。
かなり悩んだ結果、ようやく分かったのは、Processingのメッセージでusb serialを探している(?)表示がありますが、この名前とopenFrameworksのfirmataExampleのtestApp.cppで呼び出している名前が違っていました。Processingで表示されている名前に書き換えたところ、ちゃんと動くようになりました。
Processingのarduino_output、実行時のメッセージ
[0] "/dev/tty.usbserial-A7005OBP"
openFrameworks > firmatExample > testApp.cpp
ard.connect("/dev/ttyUSB0", 57600);
↓
ard.connect("/dev/tty.usbserial-A7005OBP", 57600);
こんな感じで、ようやくopenFrameworksでArduinoをコントロールできるようになったので、次回はLEDで音量を表示するメーターを作ってみます。
Arduinoとは、単純な入出力を備えた基板と Processing/Wiring 言語を実装した開発環境から構成されるシステム、だそうです。要するに、PCとの通信・書き込みもセットになったI/Oボードという事かな。詳しくはWikiで。
■Arduinoの準備
□ハードの準備
Arduinoはオープンハードウェアなので、仕様をみて作ろうと思えば作れますが(僕には無理ですが)、最近はAmazonでも購入できます。たくさんの種類がありますが、最初は基本的なものを用意するのがいいと思います。その辺の事情はこちらで書かれています。スタパ齋藤の「週刊スタパトロニクスmobile」
僕が買ったのはこれ。電源をUSB、ACアダプタで供給でき、シールド(拡張ボード)と組み合わせる事もできます。
Arduino Duemilanove 328
電子工作をやった事が無く、ブレッドボードを持っていなければ、Arduinoをはじめようキットも一緒に買うといいかもしれません。
□ソフトの準備
Arduino IDE(開発環境)はこちらから自分の環境にあったものをダウンロードしてください。Download the Arduino Software
解凍したフォルダの中の「FTDIUSBSerialDriver」を実行して、USB-Serialドライバーをインストールします。
□サンプルの実行
まずは最もシンプルなLEDが点滅するサンプルを動かしてみます。
下の写真のように13番のOutput PinにLEDを繋ぎ、USBでパソコンに接続します。
次にAruduino IDE を起動し、File > Examples > Digital > Blink を選択すると、以下のようなウィンドウが開きます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXsYEgCDZOCH4VQ3ikzbY_xFVV4nvi-l8LubLS3uqb2HNQnVrp5UDF7hKJOlDeCn03jG3iB2A_eyXPey3ocAGzOESqP8pkTkH6IbV7Img4AIZZD_SWZ9-a1eyKUbllDAsUQ4Eu6WFa0FA/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-02-18+15.50.33%EF%BC%89.png)
「Upload」のアイコンをクリックすると、Arduinoへプログラムを書き込みを始め、正常に終了するとLEDが1秒ごとに点滅します。IDEに戻り、loop()の中のdelay(1000)をdelay(500)に変えて再度Uploadすると、0.5秒毎の点滅に変わると思います。
■サンプルを開く
Arduinoへの書き込み確認ができたので、いよいよopenFrameworksからコントロールしてみます。そのためには「Firmata」という物を使います。Firmataとは、マイクロコントローラとホストコンピュータ上で通信するための一般的なプロトコル、だそうです。PCからの命令に受け答えるソフトをArduinoに入れ、openFrameworksからはそのソフトが分かるように命令を渡してあげる、という事のようです。なので、Firmataに従っていれば、Processingからコントロールする事もできます。
まず、Arduinoにfirmataを入れます(こういう言い方でいいのかな?)File > Examples > Firmata > StandardFirmataを開き、Uploadします。
次にoFのapps/firmataExample/firmataExample.xcodeproj を開きます。まずはそのままビルドしてみてください。下記のようにアプリは起動しますが、Arduinoが接続されていないと表示されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg52sl-4b6o0HtkcalE53mvn9zUZoKj80DbFF3iWG1oGKAwLFvcZa8GqHqbI_ExvabuMHgXoH_F3kbyThBBC2hw_lbFCV3OBN-8Mtd2O4_RLnpTUEegAM4DnP8bYMllAdxwlHigxMqv-Uc/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-02-18+16.46.37%EF%BC%89.png)
写真に従ってLED, 半固定抵抗を繋ぎます。半固定抵抗は「始めようキット」に入っていないので、別に用意する必要があります。Amazonでは半固定可変抵抗器セットがありますが高いので、千石電商などの電子パーツ屋さんで買うのがよいと思います。
この状態でビルドしてエラーが出なければ成功です。右上に半固定抵抗の値が表示されます。ちなみに僕はここで躓きました。ビルドでエラーはでませんが、Arduinoが認識されません。試しにProcessingのFirmataサンプル(SketchBook > librarys > arduino > examples > arduino_output)を試したところ、ちゃんと動きました。
かなり悩んだ結果、ようやく分かったのは、Processingのメッセージでusb serialを探している(?)表示がありますが、この名前とopenFrameworksのfirmataExampleのtestApp.cppで呼び出している名前が違っていました。Processingで表示されている名前に書き換えたところ、ちゃんと動くようになりました。
Processingのarduino_output、実行時のメッセージ
[0] "/dev/tty.usbserial-A7005OBP"
openFrameworks > firmatExample > testApp.cpp
ard.connect("/dev/ttyUSB0", 57600);
↓
ard.connect("/dev/tty.usbserial-A7005OBP", 57600);
こんな感じで、ようやくopenFrameworksでArduinoをコントロールできるようになったので、次回はLEDで音量を表示するメーターを作ってみます。
Comments
Post a Comment