インターフェース 2013年 08月号 寄稿しました。
Posted by arms22 on 2013年06月24日

インターフェース 2013年 08月号 にソフトモデムを使った温度・湿度計の記事を寄稿しました(書いたのは去年の暮れぐらいですけどw)。スマホとマイコンの通信と言えばもっぱらBLE(Bluetooth low energy)が主流のようですが、オーディオ端子を使った通信のお手軽さもまだまだ捨てたもんじゃないと思います。スマホ側のソフトウェアの実装が面倒ですが、それはBLEも同じ、、はず。。ぜひご覧ください!
ソースコードはCQ出版サイトからダウンロードできます。また次のURLからもダウンロードできます。
ソフトモデムソフトウェア.zip
CQ出版 (2013-06-25)
SoftModemライブラリ、更新。
Posted by arms22 on 2012年10月21日

久しぶりに SoftModem ライブラリを更新しました。あるプロジェクトで SoftModem を使っていて、バグを見つけたのでそれを修正しました。それと連続して write() を呼び出した時に余分に送っていたプリアンブルビットを減らして、データ転送の効率をアップしました。あとArduino 1.0対応。ダウンロードは次のURLからどうぞ。
SoftModem library for Arduino
http://arms22.googlecode.com/files/SoftModem-005.zip
関連URL
SoftModem インターフェースボード
http://code.google.com/p/arms22/wiki/SoftModemBreakoutBoard
SoftModemインターフェースボードⅡ
http://www.switch-science.com/products/detail.php?product_id=600
SoftModemインターフェースボードⅡ発売
Posted by arms22 on 2011年05月26日

お待たせしました。SoftModemインターフェースボードⅡ発売です。以前、ご紹介したSparkFunのAudio Jack Modem for iPhone and Androidと同じものです。スイッチサイエンスさんが製造・販売しております。
ちまたではArduino×Androidの組み合わせでアクセサリが作れるて盛り上がっているけど、Apple(iPhone)はアクセサリの開発に関して今だクローズドの姿勢でいる。
SoftModemはAndroidのUSBほど速くないけど、ちょっとしたスイッチやセンサをiPhoneにつなげて見たいって思っているならベターな選択じゃないかな。
SoftModemインターフェースボードⅡ
http://www.switch-science.com/products/detail.php?product_id=600
Audio Jack Modem for iPhone and Android
Posted by arms22 on 2011年04月08日

SparkFunからSoftModemの基板が発売されました。Audio Jack Modem for iPhone and Androidと名前は変わっていますが、この基板はスイッチサイエンスが設計・製造し、SparkFunがスイッチサイエンスから購入しています。僕はSoftModemの設計情報をスイッチサイエンスにライセンスする形でこれに係わっています。
時々、海外から売って欲しいって問い合わせがあるけど、これで「SparkFunで買ってね」って言える←重要。
Audio Jack Modem for iPhone and Android
http://www.sparkfun.com/products/10331
SoftModemインターフェースボード
http://code.google.com/p/arms22/wiki/SoftModemBreakoutBoard
SoftModem用iPhoneアプリ第2弾「マルチトリガー」リリース!
Posted by arms22 on 2010年10月16日

マルチトリガーはiPhoneの音声端子を使って一眼レフカメラのシャッターを制御するアプリケーションです。簡単なハードウェアを用意することで様々なタイミングでカメラのシャッターを制御することができます。
http://itunes.apple.com/jp/app/id396272702
お待たせしました!SoftModem用iPhoneアプリの第2弾として、iPhoneから一眼レフカメラのシャッターを制御するアプリ「マルチトリガー」がリリースされました!
マニュアル撮影とインターバル撮影しかないショボイアプリですが、iPhoneの開発環境もってねーよって人は使ってみてください。
iPhoneで一眼レフカメラのシャッターを制御する
http://arms22.blog91.fc2.com/blog-entry-371.html
スイッチサイエンス/商品詳細 SoftModemインターフェースボード
http://www.switch-science.com/products/detail.php?product_id=364
Fusion PCBに発注。
Posted by arms22 on 2010年10月15日

Fusion PCBに新しいSoftmodem基板(写真上)、8x8ドットLEDマトリクス用基板(写真下)とPhotoduinoの基板を発注してみた。
Fusion PCBは中国は深センにあるキットメーカーSeeedStudioが提供するホビーストの為のプリント基板製造サービスだ。その特徴はなんと言っても安いこと。
5cm x 5cm x 10枚で$20、10cm x 10cm x 10枚で$40の破格の値段だ。今なら円高の影響で5cm x 5cmなら1600円ぐらい。10cm x 10cmでも3200円程度で製造してもらえる。
枚数は必要ないけど自分でエッチングするのはちょっととか、試作で数枚欲しいんだけどって人は使ってみるとよい。EAGLEユーザ向けにデザインルールファイルやガーバー出力用のCAMファイルも準備されている。
発注方法
- ショッピングサイトでFusion PCBサービスを購入する
- オーダー番号がメールで送られてくる(from order@seeedstudio.com)
- オーダー番号をメールのタイトルに入れて、ガーバーファイルを pcb@seeedstudio.com に送る
- デザインルールにマッチしていれば4日~6日で基板が発送される
{Fusion PCB} 2 Layer 5cm*5cm max -10pcs
http://www.seeedstudio.com/depot/fusion-pcb-2-layer-5cm5cm-max-10pcs-p-513.html?cPath=64_12
{Fusion PCB} 2 Layer 10cm*10cm max -10pcs
http://www.seeedstudio.com/depot/fusion-pcb-2-layer-10cm10cm-max-10pcs-p-396.html
EAGLEのチップス - Fusion PCB: ガーバーとドリル・データ
http://etherpod.org/forum/index.php?topic=64.msg406#msg406
SeeedStudioのプリント基板製造サービス「FusioPCB」に関するつぶやきのまとめ。
http://togetter.com/li/59005
SoftModem用シンプルターミナルアプリ for iPhone「音響電文」リリース!
Posted by arms22 on 2010年08月19日

音響電文はスピーカとマイクを使ってiPhoneからiPhoneへ簡単なメッセージを送信するアプリケーションです。 音響カプラのようにデジタルデータを音声に変換してメッセージをやり取りします。
http://itunes.apple.com/jp/app/id385096654?mt=8
お待たせしました!SoftModem用シンプルターミナルアプリ「音響電文」がAppStoreからリリースされました!これでiPhoneアプリの開発環境がなくてもSoftModemボードを使ってごにょごにょできますよ!
Appレビューで承認を得る為にアプリの説明を上記のように書いています。本当のところ通信したいのはiPhoneじゃなくてArduinoなんだけどね ;p
SoftModemインターフェースボード、スイッチサイエンスさんで発売中です。
スイッチサイエンス/商品詳細 SoftModemインターフェースボード
http://www.switch-science.com/products/detail.php?product_id=364
そうそう Make: Technology on Your Time Volume 10 が8月26日に発売されるよ~。
オライリージャパン
売り上げランキング: 7150
iPhoneで一眼レフカメラのシャッターを制御する
Posted by arms22 on 2010年08月12日

iPhoneとArduinoとSoftModemインターフェースボードを使って、一眼レフカメラのシャッターを制御してみたよ。これはSoftModemインターフェースボードを使ったとっても実用的な作例の1つだね。まずは動画を見てみて(最初の1分は飛ばしてもいいよ)。
仕組みはいたって簡単。iPhoneからArduinoにシャッター制御のコマンドが送られ、Arduinoはコマンドを受けてシャッターを制御している。iPhoneとArduinoの通信にはSoftModemインターフェースボードを使い、カメラのシャッター制御は以前、実験した回路をそのまま使っている(フォトカプラを使ってリモートレリーズのスイッチを制御)。
Arduinoと周辺回路

ミニブレッドボードにSoftModemインターフェースボードとフォトカプラを実装している。カメラとの接続は2.5Φのステレオフォンジャックを使う。
フォンジャックのピン配

真ん中(Right)と根元(Gnd)をショートさせると半押し(オートフォーカス)、先端(Left)と根元(Gnd)をショートさせると全押し(シャッターを切る)となる。
回路図

D4/D5にシャッター制御用のフォトカプラを、D3/D6/D7にSoftModemインターフェースボードを接続する。
ライブラリのインストール
次のURLからライブラリをダウンロードして、Arduinoのライブラリフォルダ(OSXの場合~/Documents/Arduino/libraries、Windowsの場合My Documents/Arduino/libraries)にコピーしてください。
SoftModem
http://code.google.com/p/arms22/downloads/list?can=2&q=SoftModem+label%3AFeatured
サンプルスケッチ
#include <SoftModem.h>
// SoftModemクラスのインスタンス
SoftModem modem;
const int pinAF = 5; // 半押しスイッチ制御用ピン
const int pinShutter = 4; // 全押しスイッチ制御用ピン
const int pinLED = 13; // Arduino基板上のLEDピン
// iPhoneからのシャッター制御コマンドの定義
#define MULTI_TRIGGER_SHUTTER_ON 0x01
#define MULTI_TRIGGER_SHUTTER_OFF 0x02
#define MULTI_TRIGGER_AF_ON 0x03
#define MULTI_TRIGGER_AF_OFF 0x04
#define MULTI_TRIGGER_SHOOT 0x05
void setup()
{
// ポート入出力設定
pinMode(pinShutter, OUTPUT);
digitalWrite(pinShutter, LOW);
pinMode(pinAF, OUTPUT);
digitalWrite(pinAF, LOW);
pinMode(pinLED, OUTPUT);
digitalWrite(pinLED, LOW);
// デバッグ用シリアル通信開始
Serial.begin(57600);
// SoftModem通信開始
modem.begin();
Serial.println("multi trigger");
}
void loop()
{
// iPhoneから3byte以上データ受信したら
while(modem.available() >= 3){
int syn = modem.read();
if(syn == 0xff){ // 1byte目同期用0off確認
uint8_t cmd = modem.read(); // 2byte目コマンド
uint8_t opt = modem.read(); // 3byte目オプション
// コマンド毎の制御
switch(cmd){
case MULTI_TRIGGER_SHUTTER_ON:
digitalWrite(pinShutter, HIGH);
digitalWrite(pinLED, HIGH);
Serial.println("shtter on");
break;
case MULTI_TRIGGER_SHUTTER_OFF:
digitalWrite(pinShutter, LOW);
digitalWrite(pinLED, LOW);
Serial.println("shtter off");
break;
case MULTI_TRIGGER_AF_ON:
digitalWrite(pinAF, HIGH);
Serial.println("af on");
break;
case MULTI_TRIGGER_AF_OFF:
digitalWrite(pinAF, LOW);
Serial.println("af off");
break;
case MULTI_TRIGGER_SHOOT:
digitalWrite(pinLED, HIGH);
digitalWrite(pinShutter, HIGH);
delay(200);
digitalWrite(pinLED, LOW);
digitalWrite(pinShutter, LOW);
Serial.println("shoot!");
break;
default:
Serial.println("unknow command");
break;
}
}
else{
Serial.println("not sync");
}
}
}
iPhoneアプリ: MultiTrigger

MultiTriggerはiPhone用カメラシャッター制御用アプリケーションです。現在の機能はマニュアル撮影とインターバル撮影に対応しています。もっと色々な機能を追加しようと計画中ですが、時間が足りません。。「俺がもっとクールで多機能なアプリ作ってやるよ!」という方はご連絡ください。色々サポートさせていただきます。
例によってAppStoreでは配布していません、すみません。。ソースコードをダウンロードしてご自身でビルド&インストールを行ってください。
MultiTrigger-001
http://code.google.com/p/arms22/downloads/detail?name=MultiTrigger-001.zip
関連URL
SoftModemインターフェースボード発売!
http://arms22.blog91.fc2.com/blog-entry-366.html
Arduinoで遊ぼう - 一眼レフカメラのシャッターを制御する
http://arms22.blog91.fc2.com/blog-entry-326.html
―「作りながら考える」ためのArduino実践レシピ
オライリージャパン
売り上げランキング: 5371
SoftModemインターフェースボード発売!
Posted by arms22 on 2010年07月27日

おまたせしました!iPhoneのオーディオ端子を使ってArduinoと通信するためのボード「SoftModemインターフェースボード」がスイッチサイエンスさんから発売です!
スイッチサイエンス/商品詳細 SoftModemインターフェースボード
このボードを使うとiPhoneからArduinoへ、ArduinoからiPhoneへデータを送ることができます。通信速度は1225bpsと少し(かなり)遅いですが、センサー情報やスイッチ入力など少量のデータ通信なら問題なく使えます。
iPhoneを自作デバイス・イミフガジェットのコントローラとして使いたいと思っている方に最適なソリューションでございます。
基板寸法は25 x 25mmと非常にコンパクトです。基板上のボリュームを調整することで、5V・3.3V両方の電源に対応することができます。
基板の詳しい使い方などをこちらのページで公開しております。
http://code.google.com/p/arms22/wiki/SoftModemBreakoutBoard
※Arduinoは付属しておりません。
※iPhoneとの接続には4極オス~オスケーブルをお使いください。
追加の情報
Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする
Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする(2)
Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする(2)
Posted by arms22 on 2010年07月13日

目次
- Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする
- Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする(2)
イントロダクション

前回、SoftModemについてその仕組みや回路、Arduinoとの接続、ライブラリの使い方を解説しました。今回、iPhoneのソースコードの使い方について詳しく解説します。
※iPhoneアプリの開発にはXCodeとiPhone SDKが必要です。iPhone SDKは3.2以上をお使いください。
ソースコード
SoftModemTerminal
http://code.google.com/p/arms22/downloads/list?can=2&q=SoftModemTerminal+label%3AFeatured
現在、iPhoneのソースコードはフレームワーク化されておらず、SoftModemTerminalからSoftModemに関連するソースコードをコピーして使う必要があります。次のリストはSoftModemに関連するソースコードの一覧です。これらのソースコードをプロジェクトフォルダにコピーしてお使いください。
- AudioQueueObject.h
- AudioQueueObject.m
- AudioSignalAnalyzer.h
- AudioSignalAnalyzer.m
- AudioSignalGenerator.h
- AudioSignalGenerator.m
- CharReceiver.h
- FSKModemConfig.h
- FSKRecognizer.h
- FSKRecognizer.mm
- FSKSerialGenerator.h
- FSKSerialGenerator.m
- lockfree.h
- MultiDelegate.h
- MultiDelegate.m
- PatternRecognizer.h
SoftModemは音声の入出力に次の2つのフレームワークを使います。これらフレームワームもプロジェクトに追加してください。
- AudioToolbox.framework
- AVFoundation.framework
初期化
まず最初にAVAudioSessionクラス使って、アプリケーションのカテゴリを設定します。音声の録音と再生を行うので AVAudioSessionCategoryPlayAndRecord を設定します。
AVAudioSession *session = [AVAudioSession sharedInstance];
session.delegate = self;
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[session setActive:YES error:nil];
次に音声解析用のAudioSignalAnalyzerクラス、FSKRecognizerクラスのインスタンスを生成します。AudioSignalAnalyzer はマイクから入力された波形を解析し、波形の上がり立ち下がりエッジを検出します。FSKRecognizer は AudioSignalAnalyzer が解析した結果を元にデータビットを復元します。
recognizer = [[FSKRecognizer alloc] init];
analyzer = [[AudioSignalAnalyzer alloc] init];
[analyzer addRecognizer:recognizer]; //analyzerにrecognizerを登録
[analyzer record]; //音声解析開始
次に音声出力用の FSKSerialGeneratorクラスのインスタンスを生成します。FSKSerialGenerator はデータビットを音声信号に変換し、出力します。
generator = [[FSKSerialGenerator alloc] init];
[generator play]; // 音声出力開始
受信
データの受信は CharReceiver プロトコルを実装したクラスを FSKRecognizer クラスに登録することで行います。
@interface MainViewController : UIViewController <CharReceiver>
初期化のタイミングで FSKRecognizer クラスに登録します。
MainViewController *mainViewController;
[recognizer addReceiver:mainViewController];
データを1バイト受信すると receivedChar: メソッドが呼ばれます。
- (void) receivedChar:(char)input
{
//受信処理
}
送信
送信は受信に比べてずっと簡単で、FSKSerialGenerator クラスの writeByte: メソッドで1バイト送信します。
[generator writeByte:0xff];
制限
- レイテンシー
音声の入出力にはAudioQueueを使用しており、20ms~100msのレイテンシーが存在します。 - プリアンブル
無信号状態が続いた場合、データ送信時に約40msのプリアンブル(高周波数搬送波)を送信します。 - 音声出力レベル(ボリューム)
S/N比を稼ぐ為にiPhone側のボリュームは最大にしてください。

Arduinoとの接続用にコンパクトなSoftModem Breakoutボードを準備中です。うまくいけば来月ぐらいにスイッチサイエンスさんで買えるようになるかも。。
Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする
http://arms22.blog91.fc2.com/blog-entry-350.html
音系iPhoneアプリに興味があるかたにオススメです。これ1冊でiPhoneのオーディオ処理に関する情報がまとめて手に入ります。
ソフトバンククリエイティブ
売り上げランキング: 15849