2011年12月19日月曜日

USB Newton Keyboard 詳細篇


USB Newton Keyboard にコメントがあったので、詳細篇です。
まさか需要があるとは、、、

前回の記事はブレッドボードに組んでいましたが、その後ユニバーサル基板に組みました。
(MOSA Software Meeting 2011 の懇親会で紹介したときのバージョンです。)

[ハードウェア]


ハードウェアは単純にRS422 とArduino のUART とのレベル変換です。
NewtonKeyboard と、レベル変換IC (LTC485) に電源が必要ですが、
この回路では D7 ピンをHIGH、D6 ピンをLOW にして、電源としています。

・D5 ピンにLED をつけると、CapsLock の状態によって点灯します。
・LED の種類は任意です。電流制限用の抵抗を直列にいれます。
(計算方法が分からない場合は 470Ω〜1kΩ 程度をつけてください。)
・104 は念のためつけたパスコン(セラミックコンデンサ 0.01uF) です。
 無くても動作すると思います。
・コネクタはキーボード側のプラグを正面からみた図です。

[ソフトウェア]

まず、こちらのプログラムを通常のArduino のプログラムとして書き込みます。

プログラムの動作はNewton Keyboard が出力するシリアルキーコードを、USB HID Keyboard のファームウェアに合わせて変換し、シリアルポートから出力しています。

次に、Arduino Uno のUSB シリアル変換部のチップ(Atmega8u2) に、DFUプログラミングで USB HID Keyboard のFirmware を書き込みます。
 →こちらの記事を参照して下さい。

Arduino のプログラムを書き換える場合は、再度DFU プログラミングで USB シリアル変換 のFirmware に戻します。


もしかして、他にも欲しい方いらっしゃいますか?


たこ足シールド

コネタ中のコネタですが、、、
お気に入りなので、自作シールドとして、胸を張って公開したいと思います。

「たこ足シールド」はArduino のシールドに挿んで使うシールドです。
試作中、後からピンを追加したくなったときに使います。


基板は秋月電子のAE-ATMEGA
連結ソケット(8p, 6p) と通常のソケット(8p, 6p) をL字につけただけのものです。計390円。
基板は要らないんじゃ、、、とおっしゃるかと思いますが、
「無くさない」という大きなメリットがあります。



調度いい感じにブレッドボードを収める事ができるので、
このまま使っても良いでしょう。


合わせ技で、このような使い方も。
省スペースで作業をする事ができます。
出先でのデモなどに活躍します。


(12/25追記) ちょろちょろと過電流の警告(Mac のUSB ポートは過電流時、保護機能が働きます)がでるとおもったら、USB コネクタのハウジングで+5V とGND がショートしてました、、、気をつけましょう、、、


2011年11月10日木曜日

ADK! ADK!


今年の3月に発売された Xperia Arc に Android 2.3.4 のアップデートが登場しました。
Google からは5月にリリースされていたバージョンなので、半年も待たされるとは思いませんでした。
(メーカー(Sony Ericsson) が対応を行なって、キャリア(docomo) がOK 出して、、と長い道のり)

このバージョンから、いよいよ ADK (Android Open Accessory Development Kit) に対応します。

まずは、動作確認。
こちらのサイトの手順で行ないました。

その2その3と続く)

・ハードウェアは Arduino Uno + USB Host Shield (Sparkfun) を使用。
・サンプルアプリ(DemoKit) は side2.jp さんのページからダウンロード。
・Arduino 用の、ADK のライブラリはOfficial サイトからDL。
・Arduino 用の、USB Host Shield のライブラリはこちらから最新版にアップデート。
・オフィシャルのサンプルコードはArduino MEGA ベースなので、
 これも side2.jp さんのページ(その3) から修正版 demokit.pde をダウンロード。

(回路は以前作った RGB LED のボードなので、Arduino のピンアサインなどは調整した。)





とりあえず、動いた。
電源は12V のAC アダプタを使用したが、USB Host Sheild の発熱がすごい。
5V レギュレータが触れないほど熱くなる。。

なので、こちらも side2.jp さんの5V のラインからバイパスする方法を採用。
ADK はUSB ホストなので、スマートフォン側に電源供給をする必要が有る。
ちょっと面倒。

オフィシャルのハードウェア拡張手段があるのは嬉しいが、Xperia Arc は2.3.4 アップデートでUSB OTG (ホストとデバイスの両方に対応する) が有効になったので、USB デバイスを作った方が幸せになれる気がする、、、




2011年10月20日木曜日

Arduino でタッチセンサー その2

前回紹介した、Capsense 用タッチパッドの作り方動画を作りました。

ニコニコ技術文化祭用なので、今回もニコ動画仕様です。

2011年10月18日火曜日

Arduino でタッチセンサー


CapSense は静電容量の変化を検出するライブラリで、「タッチセンサー」を作る事が出来ます。
ATMEL QTouch というメーカー純正のライブラリもありますが、それとは別物です。

デジタルピン 2本の間に高抵抗 (100k〜50MΩ程度) を挟み、静電容量の変化を「計測」します。
必要な電子部品は抵抗(普通のカーボン抵抗)のみ。
使用するデジタルピンも自由に割り当てできます。



リンク先サイトの、非常に味のあるイラストに「簡単そう」と思ったのですが、なかなか上手く行きませんでした。



実験中はこんな感じでしたが、イベントで使うので、冒頭の写真のようにシールド化してみました。(サンハヤトのArduino 用ユニバーサル基板

一度成功すれば、図の通り簡単でした。
パッドの作り方は順次説明していきますが、宣伝です。

今週末(10/22-23)、東京工業大学 大岡山キャンパスにて行われる「ニコニコ技術文化祭2011」に参加します。
(TETRASTYLE ではなく、DJGJ.jp としての参加です。)

都合により10/22(土) のみの参加になります。
23(日) は有料イベントですが、同じものをこちらで展示します。
よろしくお願いします。

2011年10月5日水曜日

USB Newton Keyboard



************************
(2012/7/2 追記)最新情報はこちら。販売方法についてまとめています。
http://dev.tetrastyle.net/2012/06/newton-keyboard-to-usb-converter.html
************************

*****************************
(2012/3/2 追記)さらに小型化しました
*****************************

*****************************
(追記)作り方の詳細をこちらで公開しています。
*****************************

やってしまいました。

Newton は、1993年から1998年にかけて販売された、Apple の「元祖PDA 」シリーズの名称です。
Newton Keyboard はNewton Message Pad の周辺機器で、シリアルポートに接続するタイプのキーボードです。Mac のシリアルポートと同じ、RS422 (mini Din 8pin) を使用しています。当時のMac のキーボードはADB 接続で、全く互換性がありません。

小型で携帯性に優れ、愛好家の手によって palm pilot やHP-200LX などで使うためのドライバも作成されました(主に日本で)。

驚くべき事に、この1995年製のキーボードの情報を、今でも公開している方々が居ます。

中でも、こちら

キーコードやピンアサインなど、独自解析の貴重な資料を活用させて頂きました。
これらの情報を元に、Newton Keyboard が出力する RS-422 信号をArduino で受け、USB のキーボードとして出力します。

USB のキーボードの作り方は、こちらで解説しています。
RS422 はRS232C と同様、レベル変換 IC (今回はLTC485 を使用) を使って、Serial.read() で読むだけです。



折角なので、Camera Connection Kit を使って iPad に入力します。

動画はこちら


なんというか、、、文明開化の音がします。

2011年10月1日土曜日

これからの Arduino

TETRASTYLE はあまりトレンドを追わずに、マイペースでやっているのですが、先日のR2 はさすがに遅すぎたかなと、、、

去る9/17 に行われたMaker Faire (NewYork) にて、Arduino の次の製品群が発表されました。
Youtube にビデオが公開されています。Part 1, Part2
Official Blog の記事はこちら


IDE がArduino 1.0 に。
・現在、リリース候補版(rc1) が一般に公開されています。
・Ethernet Library がDHCP に対応する模様。
・拡張子を「.pde」から「.ino」に変更
 そんな拡張子で大丈夫か?(懐かしい)



シールド用のヘッダピンが増えた新Uno (画像は上記Youtube から)

標準ボードは「Uno」ですが、少しピンが増えた、新Uno のようです。MEGA も新MEGA に。
・TWI(I2C), Auto Config, Secret Pin。
・リセットボタンの位置が良くなっている。(シールドに被らない)

Open Hardware にして Secret Pin とはこれ如何に。発売時期がよくわからないのですが、動画によると新Uno とは別にUno R3 もあるようです。


その他新製品 (画像は上記 Arduino Official Blog から転載)

Arduino Leonard (希望小売価格:20USD)
・ATmega8u2 の機能をメインCPU に取り込んだ、ATmega32u4 を使用。
Arduino Uno SMD のように表面実装品になり、部品が少なくローコスト。
 2000円前後ならうれしい。(SMD はローコスト版(だよね?) なのに安くなかった。) 気の早い方はもう互換ボードを試している、、、

Arduino Due
・ついに CPU が32bit (ARM Cortex M3) に。形状はMEGA 互換。

正直どうなんだろう。価格も不明。高度なプログラムを書くにはIDE が弱すぎるような。

WiFi Shield (希望小売価格:79USD)
・待望のWiFi Shield だけど、日本ではメーカーか代理店が技適の認証をとらないと売られないのかな?
・シールド側に電源コネクタがあるのが気になる。
・以上2点から、現状は XBee WiFi の方に期待。こちらも実物未見。



私事ですが、7月のDEMOsa つながりで、11月のMSM (MOSA Software Meeting) 2011 にて、Arduino の話しをする事になりました。
良いタイミングで「Arduino 1.0」が出たので、徐々に「Lion & Arduino 1.0」環境に移行していきたいと思います。

2011年9月28日水曜日

Arduino Uno R2



いつの頃からか、Arduino Uno がR2 というバージョンになっています。
(Arduino MEGA2560 もR2 に)

マイナーチェンジなので、通常の使用であれば、特に違いを意識せずに使えます。

最大の違いは、ATmega8u2 用の ICSP 端子が標準で付いています。
また、以前のバージョンのArduino Uno の様に、DFU モードに入るために、抵抗をつける必要はありません。


ICSP の5番、6番 (USB コネクタ寄りの2つ) をそのままショートすれば、DFU モードに入ります。


通常接続のArduino



DFU モードの Arduino


その後の DFU プログラミング の手順は以前と同じです。

Arduino Uno (R2) DFU プログラミングの手順

1) Arduino Uno をPC にUSB で接続
2) USB コネクタに近いICSP 端子の5-6間をショート(して離す)
3) dfu-programmer (という名前のソフト)を使用して、ATmega8u2 用のファームウェアを書き込む
$ sudo dfu-programmer at90usb82 erase
$ sudo dfu-programmer at90usb82 flash Arduino-usbserial-uno.hex
$ sudo dfu-programmer at90usb82 reset

4) USB コネクタを抜き差しして再起動

簡単になりました。


Arduino as ISP


Arduino はUSB シリアル接続で、簡単にプログラムを書き込むことが出来ます。
その他に、ICSP (In Circuit Serial Programming) 端子で書き込む方法があります。

この方法は、普通の使い方をする上では、全く必要ありません。
これまでこの端子は、気になりつつも使わずにいました。
前回、変則的ながら使う事になったICSP 端子の、本来の使い方を調べてみました。

ICSP を使ったプログラマは市販品を購入することも、自作することもできます。
今回は、「Arduino を使ったISP プログラマ(書き込み器)」というものがあるので、使ってみます。(ISP (In-System Programmer) とICSP は同じような意味だと思います。)

Examples の中にある「ArduinoISP」というプログラムを書き込みます。

注意:このプログラムはArduino Uno には対応していないそうです。

このプログラムを書き込んだArduino (2009: Duemilanove 以前) をプログラマとして使い、他のArduino、あるいは生のAVR にプログラムを書き込む事が出来ます。
Bootloader を書くこともできるので、2台目、3台目のArduino を自作する際に活用できます。


2台のArduino を接続します。(ISP:書き込み器, TARGET:新しく書き込む方、ICSP のピン番号は基板上の白いマーカーを1番に)

実際やってみると、例によって罠が有りました。

error: avrdude: stk500_getsync(): not in sync: resp=0x15

Mac 環境では、オートリセットが邪魔をするそうです。
対処法がこちらで解説されていました。

上記サイトを参考に、ISP側の 5V-Reset 間に 110Ωの抵抗を挿入して対処しました。
(上記サイトの「ATmega168 とATmega168p の問題」は、ATmega328p を使用する場合は関係ありませんでした。

配線を簡単にするため、専用のケーブルを作成しました。
これで、生のAVR にブートローダーやプログラムを書き込む事が出来ます。



Arduino ISP を使ったブートローダーの書き込み手順

1) Arduino (Duemilanove以前) に通常の手順で「ArduinoISP」 を書き込む
2) ISP 仕様のArduino と、新しくプログラムを書き込むArduino を接続する

3) Tools > Serial Port は1) のArduino を接続したポートを選択する。
4) Tools > Board は新しくプログラムを書き込むArduino に合わせる。
 ATmega328p に Uno 相当のブートローダー(Optiboot) を書く場合は "Arduino Uno" を、
 Duemilanove 相当のブートローダーを書く場合は "Arduino Duemilanove or Nano w/ ATmega328" を選択。

5) Tools > Burn Bootloader > w/ Arduino as ISP を選択する(ブートローダーの書き込み開始)

Arduino ISP を使ったプログラム書き込み
接続方法は上記手順と同じ、ただし、書き込み方法を設定ファイルで指示する必要があります。
preferences.txt にupload.using=arduinoisp を書き込む方法と、board.txt に同様の記述をする方法があります。
前者は、今後の書き込みを全てISP で行うので、後者をお勧めします。
設定ファイルの場所や、記入方法は、こちらを参考に。

*******

「簡単・お手軽なArduino」からちょっと離れてしまいますが、秋月の基板を使ってArduino を増産したり、ATmega8u2 をいじる場合に、ICSP 経由の書き込みは便利ではないでしょうか。


2011年9月20日火曜日

Arduino MEGA と旧Ethernet Shield


Arduino MEGA は、普通のArduino とShield 形状互換になってるので、大抵のシールドはそのまま使用できる。はずなのですが、、、
Ethernet Shield の様に、SPI 接続をしているものは要注意です。

私の使っている 「旧 Ethernet Shield」は、MEGA と互換性がありません。microSD のスロットが付いている「新 Ethernet Shield」は、そのまま MEGA で使用可能です。

原因は、MEGA(ATmega2560) とUno(ATmega328P) でSPI のピンアサインが異なるためです。
旧EthernetShield はATmega168/328 に合わせて、デジタル 11,12,13 番ピンを使っていました。新EthernetShield はどちらでも使えるよう、ICSP のポートからSPI の信号を取るようになっています。

対処法ですが、このように接続することで、プログラムの変更なしに動作させることができました。
(古い情報ではプログラムの修正が必要、というものがありますが、IDE 0022 では修正不要です。)

(Shield) - (MEGA), 11-51, 12-50, 13-52 を接続


詳しく見ると
旧EthernetShield 側


Arduino MEGA 側


MOSI,MISO,SCK の3本を接続します。(SS はそのまま)MEGA 側はDIGITAL でもICSP でも、使いやすい方から取ればOK です。

この接続では、MEGA の11,12,13 と接続したままになってしまいますが、特に問題は無いようです。

Arduino MEGA 購入



Arduino MEGA 2560 を買った!
というだけなんですが、、、

これまで何となく敬遠していました。

一番の理由は値段 (6495円で購入) ですが、いろいろ努力がたりない感じがするんですよね。
「ポートが足りなければMEGA にすれば良いよ!」というのが。

実際、こんなにポートの多いアマチュア向けマイコンボードはなかなか無いです。デジタル54 本、アナログ16本の 計70本が苦もなく使えます。(Arduino Uno はデジタル 14本, アナログ 6本, 計20本)

ファンクションキーなしの小型キーボードとか、6 オクターブくらいの鍵盤は直結できてしまいます。8x8 のLED マトリクスも、8桁の7 セグなんかも、ダイレクトに制御できます。配線が大変なのでやりませんが。

FLASHEEPROMRAM
MEGA(ATmega2560)256 KB4 KB8 KB
Uno (ATmega328P)32 KB1 KB2 KB


Uno に比べて大容量なので、メモリ大喰らいなプログラムをつくりたいなと思っています。

2011年9月16日金曜日

Arduino Ajax Web Server

MASHUP AWARDS 7 というコンテストが開催されています。
先日、その関連イベントの一つ(Mashup Camp in Tokyo)に参加しました。

Web のAPI はあまり馴染みがなかったのですが、なかなか面白そうです。
この技術をArduino のWeb サーバーに使えば、iPhone とArduino の連携手段として、有力なのではないでしょうか?

次のような手順で作成していきました。

1) GET (HTTP のGET) でArduino Server に値を渡せるようにする
2) XMLHttpRequest でページ遷移なしに値を取得できるようにする
3) JSON 形式で値を返すようにする
4) JSONP 形式で値を返すようにする

Arduino のプログラムは、IDE 標準サンプルの WebServer に少し手を加えただけです。
URL の末尾に付けるオプションに対応するのと、返すHTML データ(の中のJavaScript) に仕掛けがあります。



Arduino のプログラムはこちらです。
<新>http://djgj.sub.jp/TETRASTYLE/arduino/ajax_slim.txt
<旧>http://djgj.sub.jp/TETRASTYLE/arduino/Ajax_WebServer.txt

変更点(2015.10.21):
- Arduino.cc のIDE 1.6.5 に合わせた修正
- メモリ使いすぎだったので変数や関数名、値を短く変更
- "Access-Control-Allow-Origin: *" を追加
- JSONP からJSON に変更
- 外部ホストから操作するhtml のサンプルも追加→(サンプル)
  (Arduino サーバーのIP アドレスは 1) ページ埋め込み 2) ?host=xxx.xxx.xxx.xxx で渡す 3) ページ内のフォームで書き換える の3通り用意しました。

<説明は旧のまま>
Web ブラウザ(IE 未確認) からアクセスします。
サーバーのIPアドレス (標準では http://192.168.1.177/) にアクセスすると、動画のような画面になります。

JSON(P) でデータのみを取得する場合は
<-- data-blogger-escaped-br="" data-blogger-escaped-http:="">
返ってくる値
--> cb({"D":[D0,D1,D2,D3,D4,D5,D6,D7],"A":[A0,A1,A2,A3,A4,A5]});

デジタルポート(D0 - D7) のトグル(ON/OFF) は、各ポート毎、個別に送ります。(On と Off の指定はなく、現在の状態を反転します)
<-- data-blogger-escaped-btn="0<br" data-blogger-escaped-http:=""> <-- data-blogger-escaped-btn="1<br" data-blogger-escaped-http:=""> ...
<-- data-blogger-escaped-btn="7<br" data-blogger-escaped-http:="">

2011年8月11日木曜日

iPhone用 RS232C アダプタ

ついにというか、今更というか、、出てしまいました。
iPhone/iPad のDock コネクタをRS232C シリアルに変換するアダプタ、Redpark Serial Cable C2-DB9 です。



真ん中のメスコネクタは、セルフテストに使うループバックアダプタ(付属品)です。

こんな感じで使います。
MFi のロゴもあるし、SDK も無料でダウンロードできますが、公式サイトの FAQ によれば、

Q: What apps does this cable work with?
A: The cable and SDK are provided to you so that you may write your own apps.

Q: Does the cable work with apps available at the App Store?
A: Not at this time. This will depend upon Apple policy.

対応アプリは自分で作る必要があり、App Store で配布することはできません。
つまり、このケーブルを使うにはiOS デベロッパープログラムへの加入が必須です。


iOS 4.3.3 以降の対応だったので、事前にOS のアップデートして、SDK 付属のサンプルアプリをインストールしました。

サンプルアプリはシリアル通信の設定(ex: 9600bps, 8bit, Parity none, Stop bit 1)と、送受信バイト数のカウント、先ほどの紹介したループバックテスト(128文字のデータ送受信)ができます。

残念ながら、汎用ターミナル エミュレーターはありません、、、

とりあえず、Arduino でシリアル入力した文字をキャラクタ LCD に表示するプログラムを動かしてみました。

RS232C とTTL ロジックレベルの変換は秋月のADM3202AN (2個300円) を使いました。外付けのコンデンサーも付属しています。回路は説明書の通り。


秋月で、Dsub9 ピン用のユニバーサル基板 (150円) があったので買ってみました。
半分に切れば2個になると思いましたが、J1 はメス用、J2 はオス用で、ピンアサインが違うので要注意です。

*購入を検討されている方へ*

私は Make ブログの記事で知ったので、Maker SHED (海外通販) で購入したのですが、、、
すでに 国内で送料無料で販売しているところがありました。本体価格も結構安い、、、、
Maker SHED からは5日で届きました。送料$27.28- です。。

上の記事で紹介されていますが、Arduino と連携させる例
文字列コマンド主体の通信が必要な場合には最適ですが、個人的には対応アプリが豊富なMIDI アダプタの方が遊べると思います。

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 のデモで使うソフトを決めないと。。(できれば無料アプリがいいのですが、、、)