2011年7月27日水曜日

Arduino とiPad で温度計測


7/31(日) のDEMOsa に向けて、Arduino - iPad 連携のサンプルを作ってみました。
Arduino に温度センサー(LM35D) を接続し、iPad 上に温度を表示します。




回路はかなり手抜きですが、温度センサーLM35D に電源を接続し、出力をArduino のAnalog input で直接読んでいます。

Arduino プログラムも手抜きです、、、平均などとらずに、1秒に1回計測・転送を行います。
(電圧 <> 温度の変換式は、センサー出力が +10mV/℃、10bit AD変換 のリファレンスに内部 1.1V を使用したので、Temperature = sensorValue *1.1/1024.0 *100.0 (℃) としています。)




転送部分が今回のキモですが、仕組みは HID (キーボード) エミュレーションです。iPad Camera Connection Kit を使って接続します。この記事で紹介している USB キーボードのファームウェア(Arduino-keyboard-0.3.hex) を、Arduino Uno の atmega8u2 に書き込んでいます。

メインのatmega328p のプログラムでは、まず温度の読み取りを行い、温度が+31.5℃なら、[+][3][1][.][5][Return] というキーを押すコードを送っています。

今回は iPad 側のプログラムも作成しましたが、内容は非常に簡単です。
一番上のテキストフィールドにキーボードで値を入力し、リターンが入力されると、そのテキストフィールドの値を大きく表示します。

UITextFieldの Delegateメソッド

- (BOOL) textFieldShouldReturn:(UITextField *)textField;

を実装するだけです。




2011年7月21日木曜日

MIDI 受信回路

MIDI の送信回路はとても簡単ですが、受信側はフォトカプラを使って受ける必要があります。MIDI は古くから自作派の人々に愛されて来たので、回路例はネット上に沢山あります。

フォトカプラをいろいろ試している例が散見されますが、少々高くても定番品を使うのが無難でしょう。

ど定番の 東芝 TLP552 は千石電商で220円でした。

メーカーのサイトにある、フォトカプラ・フォトリレー [PDF](東芝セミコンダクター)というカタログから引用します。手に入るなら、この欄のやつどれでも良いと思います。


MIDI の回路も載ってますが、、、コネクタがいい加減で悩みます。


ちょっと書き直しました。(実際に使った定数です。)外付けのダイオードは普通の汎用小信号用で良いそうなので、秋月で50本100円の1N4148 にしました。


ピンアサインは以前にも使ったこの図を参考にしてください。

フォトカプラがちょっと高いですが、これでMIDI シールドも不要ですね。

もうひとつの定番、SHARP の PC900V というのも買ったのですが、まだ使っていません。マルツで115円でした。(いつのまにかマルツ電波からマルツエレックに名前変わったんですね。)
置き換えは、上の回路図の1kΩのところを280Ω にすれば良いようです。(280って中途半端なので270とか、近い値で良いはず。)ピン配置などはデータシートで確認して下さい。

2011年7月14日木曜日

MIDI によるLED カラーコントロール


前回とほぼ同様の内容です。
前回は明るさの制御をしましたが、LED コントロールと言ったら、やっぱりRGB 制御です。

最近はいろんな色のLED (夕日色とか) が出てきましたが、原理的には3原色(RGB) をコントロールすることで、好きな色を作る事が出来ます。

今回は 100均(ダイソー) で買ったレイボーライト(7色+グラデーション)を外部制御します。


これで100円。電池も入ってる。フルカラーLED も安くなったなーと思って中をあけたら、単色のLED が3つ入ってました。どっちが安いのだろう、、、




arduino 側のプログラムは前回とほぼ同様。
MIDI のスライダーを受信して、PWM 出力( analogWrite() )に割り当てています。
点滅には Timer2 を制御するライブラリのMSTimer2 を使用しています。
(Timer2 を使うと、PWM3, PWM11 が使用できないので注意。ハマりました。)

MIDI 受信回路はシールドを使わず、バラックで組んでみました。(回路図後日)



MIDI アダプタは前回はYAMAHA だったので、今回はLine6 のアダプタでやってみました。
YAMAHA のアダプタは見た目になんだかわからないので、こちらの方が好きです。


2011年7月12日火曜日

MIDI アダプタで送受信


これまでは「MIDI アダプタを使って、iPhone 用のソフト音源を鳴らす」という事をやっていました。

この MIDI アダプタを使えば、送信と受信の双方向に通信ができるはず、、、
ということで、送受信のデモができるアプリを探してみました。

TouchOSC (600円)
OSC (Open Sound Control) のコントローラソフトとして有名。
Mac 上のソフト(TouchOSC Editor) を使って画面レイアウトを作ることができる。
Core MIDI, MIDI Mobilizer 両対応。
(古いバージョンを使っていた場合、アプリをバージョンアップしても MIDI 対応でない古いレイアウトを引き継いでしまう様です。
 その場合はアプリを一度削除して再ダウンロードするか、新しいバージョンのTouchOSC Editor から、新しいレイアウトを転送します。)


MIDI Monitor (無料)
MIDI 信号の内容を表示する。無料なのでとりあえず入れておくべき。スライダーやボタンが使える。
Core MIDI, MIDI Mobilizer 両対応。

MIDI アダプタも2つ持っているので、上記ソフト同士をMIDI 接続して送受信などのテストを行いました。とりあえず期待通りに動いています。




動画はYAMAHA のiMX-1 とTouchOSC の組み合わせで、Arduino の Analog Input に繋いだスライダーの読み取りと、LED のPWM 制御を行っています。


Arduino のMIDI 送受信はこちらの記事を参考にして下さい。

2011年7月11日月曜日

Arduino に Ciao!


Make ブログで紹介されていた、Ciao (チャオ) というiPhone 用のソフトを試してみました。
Ciao はEthernet 経由で Arduino の値を表示したり、画面上のボタンを操作して ON/OFF をArduino に送ることが出来ます。

UI がなかなか凝っていて、CIAO SHIELD という仮想 LCD と仮想ボタンを iPhone の画面に表示します。これらを Arduino のスケッチで定義します。



ネットワーク設定も簡単で、Bonjour 対応。同じネットワークに繋いであれば、自動的に見つけてくれます。DHCP も使用可能です。
Arduino のEthernet Shield で使うのが基本ですが、USB Serial 接続でPC 上のProcessing ソフトと通信し、それを経由してCiao と通信することも可能です。

WiFi Router の有線ポートに、Ethernet Shield を直結して使うのが通常です。

家のルーターは有線ポートがないMobile ルーターなので、先日紹介した小型WiFi ルーターをブリッジモード(Ethernet Media Converter) で使用しました。



Analog 値を表示するサンプルや、画面上のボタンで LED をON/OFF させるサンプル、シンプルカウンターなどのサンプルスケッチが付属します。


サンプルスケッチは特にトラブルなく使えました(DHCP を使わなかったので、固定IPアドレスをスケッチ中に直指定)。デフォルトの設定だと2秒毎に表示をアップデートするので、値の追随が少し遅いです。(動画では 0.5秒に変更)
手軽さと引き換えに自由度が少ないのですが、OSC コントローラーアプリを使った通信では Arduino 側の値を表示することができないので、なかなか面白い手法だと思います。


2011年7月8日金曜日

iPhone 用 MIDI アダプタ




当サイトに何度か登場している iPhone 用レガシーMIDI アダプターの「Line6 MIDI Mobilizer」ですが、ヤマハから同種の製品「YAMAHA i-MX1」が登場しました。

特徴は、なんと言ってもCore MIDI 対応。MIDI Mobilizer は iPhone がCore MIDI をサポートする以前の製品なので、独自API でした。
現時点ではCore MIDI / MIDI Mobilizer 両対応のアプリも多いですが、MIDI Mobilizer 対応のアプリを作るには Line6 と別途契約(無料) が必要なため、今後は Core MIDI のみをサポートするアプリが増えてくるのではないでしょうか?MIDI Mobilizer も Firm Ware のアップデートでCore MIDI に対応できないのかな?

※(追記)Line6 から、Core MIDI 対応の MidiMobilizer II が出ました。


付属のケーブルは 丸形DIN 5ピン <-> 2.5mm ステレオ超ミニプラグ(笑) です。
両製品とも同じコネクタ、同じ長さ(約1.5m) で、ピンアサインも同じでした。




YAMAHA のケーブルは細身でプラグもコンパクトです。個人的にはMIDI Mobilizer のケーブルの方がしっかりしてて良いかなと。金メッキだし。(MIDI なので音が良いとか、そういうのはないですが。)
本体形状も YAMAHA の方がコンパクト。ピアノブラックはカッコいいですが、傷つきやすそう。欲を言えば Dock直さしアダプタではなく、短いひも付きのドングルの方が良かったです。さらに欲を言うと外部給電端子が欲しい、、、

既にMIDI Mobilizer を持っているので、これは必要なかったのですが、表サイトで告知している DEMOsa の発表内容とぴったりだったので、買ってしまいました。
同時にTENORI-ON を始めとする YAMAHA 純正アプリがいくつか出ていますが、未購入。
そろそろ DEMOsa のデモで使うソフトを決めないと。。(できれば無料アプリがいいのですが、、、)


2011年7月4日月曜日

ADB で接続 (Android)

※Apple Desktop Bus の話ではありません。


最近 Android にも手を出し始めました。

Android とArduino を繋ぐ仕組みは、Android Open Accessory Development Kit (ADK) というGoogle オフィシャルなものがありますが、手持ちのXperia Arc (Android 2.3.2) は対応していません。

ADK 以前から、さまざまな有志の試みがありましたが、今回は いわたん さんのこの記事を参考に、Micro Bridge というものを使ってみました。
Micro Bridge はADB (Android Debug Brige) というプロトコルを使って、マイコン(Arduino) と通信する仕組みです。

・USB ホストの使えるマイコン (Arduino + USB Host Sheild) が必要。
・Android 端末はUSB 接続で、デバッグモードにする。

Micro Bridge はここからダウンロードします。

ServoControl.zip:Android のサンプルアプリ
MicroBridge-Arduino.zip:Arduino のライブラリ
usb_host_patched.zip:USB Host Shield のライブラリ(既にインストールしている場合は不要)

Arduino のライブラリの使い方はこの記事を、USB ホストシールドについてはこの記事を参考にしてください。
サンプルスケッチを使ってみます。

File > Examples >Adb

Demo、Logcat、Reboot、Shell、WriteFile

[Demo] は、Android 用のソフト Servo Control と通信するスケッチ。
サーボのコントロール (Android -> Arduino) と、アナログ値の読み取り (Arduino -> Android) が出来ます。
(サーボを持っていないので、A0 の入力電圧を可変させてみました。)

[Logcat] は Android のシステムログを表示する。
[Shell] は Android のShell にログインできる。
シリアルターミナルで57.6kbps で接続する (改行コードは LF)。

[Reboot] は動作できなかった。

Shell で
$ reboot
とすると、

reboot: Operation not permitted
(その操作は許可されていません)

と出るので、この端末では駄目なんだと思います。

[WriteFile] はSD カード上に hello という名前のファイル(中身はhello world) を作成する。

という、多彩なサンプルスケッチが収録されているので、何でも出来そうです。