なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

SoftModem用iPhoneアプリ第2弾「マルチトリガー」リリース!

Posted by arms22 on 2010年10月16日 0  0

マルチトリガーアイコン

マルチトリガーは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


Arduino Uno
Arduino Uno
posted with amazlet at 10.10.16
スイッチサイエンス
売り上げランキング: 8450



スポンサーサイト



SoftModem用シンプルターミナルアプリ for iPhone「音響電文」リリース!

Posted by arms22 on 2010年08月19日 9  0

音響電文

音響電文はスピーカとマイクを使って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日に発売されるよ~。

Make: Technology on Your Time Volume 10

オライリージャパン
売り上げランキング: 7150



iPhoneで一眼レフカメラのシャッターを制御する

Posted by arms22 on 2010年08月12日 0  0

iPhoneとArduinoとSoftModemインターフェースボードを使って、一眼レフカメラのシャッターを制御してみたよ。これはSoftModemインターフェースボードを使ったとっても実用的な作例の1つだね。まずは動画を見てみて(最初の1分は飛ばしてもいいよ)。



仕組みはいたって簡単。iPhoneからArduinoにシャッター制御のコマンドが送られ、Arduinoはコマンドを受けてシャッターを制御している。iPhoneとArduinoの通信にはSoftModemインターフェースボードを使い、カメラのシャッター制御は以前、実験した回路をそのまま使っている(フォトカプラを使ってリモートレリーズのスイッチを制御)。


Arduinoと周辺回路



リモートリリース /w Arduino

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


フォンジャックのピン配


release_plug_connect.jpg

真ん中(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スクリーンショット

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をはじめようキット
スイッチサイエンス
売り上げランキング: 751


Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ
小林 茂
オライリージャパン
売り上げランキング: 5371



SoftModemインターフェースボード発売!

Posted by arms22 on 2010年07月27日 4  1

SoftModem BreakOut Board

おまたせしました!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 Duemilanove 328
Arduino Duemilanove 328
posted with amazlet at 10.07.27
スイッチサイエンス
売り上げランキング: 2297


Arduinoをはじめようキット
スイッチサイエンス
売り上げランキング: 1222


Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする(2)

Posted by arms22 on 2010年07月13日 1  0

目次



イントロダクション


SoftModemTerminalクラス図

前回、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側のボリュームは最大にしてください。



SoftModem Breakout Board

Arduinoとの接続用にコンパクトなSoftModem Breakoutボードを準備中です。うまくいけば来月ぐらいにスイッチサイエンスさんで買えるようになるかも。。


Arduinoで遊ぼう - iPhoneのオーディオ端子を使って通信をする
http://arms22.blog91.fc2.com/blog-entry-350.html


音系iPhoneアプリに興味があるかたにオススメです。これ1冊でiPhoneのオーディオ処理に関する情報がまとめて手に入ります。

iPhone Core Audioプログラミング
永野 哲久
ソフトバンククリエイティブ
売り上げランキング: 15849



該当の記事は見つかりませんでした。