AndroidでSoftModemを試してみた

SoftModem

今回、ここで言うSoftModemとは、携帯電話のオーディオ端子(イヤホン・マイク端子)を利用した通信の事を言います。 (実際にはこう言うことを言うらしいでが・・・)

このSoftModemは通信速度は決して速くは無いのですが(むしろ激遅)、コストが非常に安く済みます。
わずか数百円の部品代で携帯電話と外部機器が通信できてしまうので、これを Android + Arduino で使わない手は無い!

と言うことで、今回 SoftModemインターフェースボードを入手したので、Androidで使えるのか試してみました。

 


SoftModem インターフェースボードについて

Soft Modem Breakout Board

SoftModemボードには、Arduinoに接続する為の5つの端子(FSKOUT・GND・VCC・FSKIN・AIN)と携帯電話に接続する為の4極3.5mmのプラグを差し込めるジャック端子が装備されています。

 

arduino-softmodem

Arduinoとはブレッドボードを利用して接続しました。
・ FSKOUT→D3
・ GND→GND
・ VCC→VCC
・ FSKIN→D6
・ AIN1→D7
この時AIN1の電圧が (VCC / 2) + 300mVになるようにボードに付いているボリュームを調整します。

 

4極 3.5mm プラグ

SoftModemボードと携帯電話を繋ぐケーブルは、金メッキ仕様のシールドされたケーブルが推奨されています。 僕は日本橋の千石電子で300円(1.5m)で購入しました。

 

Softmodem Android

SoftModemボードとNexusOneを繋ぎます。
ちなみに、N1のオーディオ端子はiPhoneのオーディオ端子とピンアサインが同じでそのまま差すだけでOKです。
ですが、Xperiaなんかは同じ3.5mmのジャックでもピンアサインが違うらしいので、そのままでは使えません。

 

このSoftModemボード、基本はArduino+iPhoneでの利用が前提なので、Android用のプログラムは自分で作らなくてはいけませんでした。(専門知識の無い僕には、結構無謀でした・・・><)

Arduino用のプログラムは公開されている物を、ちょっとだけ改造して利用させていただきました。

自分で作ってみた結果なのですが、送信側(Android->Arduino)は比較的簡単に完成したのですが、受信側(Arduino->Android)が想像以上に難しくて、結局のところまともに通信できる状態の物は作れませんでした。

それでも、まぁ、精度は低いながら、なんとかギリギリでデータを受信できるものは出来たので、かなりの妥協ではあるものの自分の好奇心的には満たされたので、ひとまずこれで完成としました。

 


出来上がったもののデモ

一応、動いているよと言う動画を・・・

この動画では、NexusOne ←(softmodem)→ Arduino ←(rs232c)→ PCと言う構成で通信しています。

利用しているAndroidアプリは、以前自作したBluetooth Terminal をSoftModem用に改造して使用。PC側のアプリはAcknowrichと言うターミナルソフトを使っています。

※追記(2010/09/09) このアプリを Softmodem Terminal として公開しました。

AndroidからPCへ hello pc
PCからAndroidへ hello n1
AndroidからPCへ 123
PCからAndroidへ 456

と、データをやりとりしているのが分かるかと思います。

通信の仕様としては、送信速度(Android -> Arduino) 1225BPS、受信速度(Android <- Arduino) 315BPS で、受信時のエラー率が10%~20%(10byteにつき1byteは確実に壊れてるw)と言うものです。
動画では、たまたまエラーの出なかった時の物を(ry

 

さらに、温度計アプリを作ってみました。

サーミスタを利用したなんちゃって温度計アプリです。
温度表示はかなり適当です。

ちなみに、これを撮影するすこし前の部屋の温度は><・・・こちら

参考までに、温度計で使用したもの

品名 価格
Japanino(雑誌付録) 3360円
Softmodem Breakoutボード 995円
オーディオケーブル(3.5mm4極・金メッキ) 300円
サーミスタ 30円
抵抗(10kΩ) 5円

 


最後に

以上、結論として、Androidでも、このSoftModemインターフェースボードを利用して外部機器と通信ができたと言えると思います。
受信精度が低いと言う問題は、いずれどこかのえらい人が解決してくれるだろうと信じていますw
幸いなことに、送信精度は割と良いので、これを使って何か役にたちそうな物を作れれば良いなぁと思っています。

 

参考リンク 

SoftModemインターフェースボード発売! – なんでも作っちゃう、かも。
http://arms22.blog91.fc2.com/blog-entry-366.html

Arduinoで遊ぼう – iPhoneのオーディオ端子を使って通信をする – なんでも作っちゃう、かも。
http://arms22.blog91.fc2.com/blog-entry-350.html

Arduinoで遊ぼう – iPhoneのオーディオ端子を使って通信をする(2) – なんでも作っちゃう、かも。
http://arms22.blog91.fc2.com/blog-entry-359.html

SoftModemインターフェースボード – arms22(google code)
http://code.google.com/p/arms22/wiki/SoftModemBreakoutBoard

iPhone ソフトウェアモデム – Reinforce Lab
http://sites.google.com/a/reinforce-lab.com/www/projects/iphone-software-modem

Perceptive Development Labs
http://www.perceptdev.com/labs/

 

関連記事

no image

Android + Bluetooth + Arduino

 以前書いた『気になる物』で紹介したBluetoothモジュールですが、本当に気になって実

記事を読む

ssh_connected

Raspberry PiをWindowsで操作する(SSH)

SSHを使って、Raspberry Piを外部PC(Windows)で操作する。

記事を読む

米粒AVRで温度計

米粒AVRで温度計(STTS751使用)

前回までに紹介したI2CライブラリとLCDライブラリを使って作る、温度計のサンプルです。 温度

記事を読む

no image

Wimeji Client for Arduino

前回紹介したWimeji Client for WindowsXPをArduinoでやってみました。

記事を読む

sdcards

Raspberry Pi SDカードのクラスと起動速度

SDカードにOSをインストールするので、起動にはそれなりに時間がかかります。 では、どれくらい

記事を読む

no image

Android+Arduinoでリモコン4(Microbridge接続)

前回AndroidAccessory接続で作った赤外線学習リモコンを、今回はMicrobridge接

記事を読む

raspi-colortest

Raspbianの起動

Raspbianの起動画面をキャプチャしてみた。 SDカードにイメージを書き込んだままのデフォ

記事を読む

Raspberry Pi

Raspberry Piを買った

先日、Raspberry Pi(ラズベリーパイ)を買いました。 Raspberry Piは噂で

記事を読む

Androidから米粒AVRへデータを送る

米粒AVRでSoftModem的なこと その2

前回は「米粒AVRからAndroidへデータを送る」ことを試しました。 今回はその逆の「And

記事を読む

熱湯の温度計測実験

パソコンで温度計 #3

今回は、I2C接続の温度センサー STTS751をケーブルを使ってArduinoに接続できるよう

記事を読む

Comment (9件)

  1. ピンバック: side2 » AndroidでSoftModemを試してみた | Android情報局

  2. Androino (@Tec_Androino)

    I would like to comment you that this project is something i would like to try as a part of my final project that I describe in my blog ( just a click on my nick)

    So i would like to know if it is posible to share your code about the app + thermistor ( arduino code, and if it were posible the android app ;) )

    I would like also to keep in touch and listen to all the suggestion you can make in order to improve my project.

    Thank you very much.

  3. thomas

    hi very nice work with your project very impressed! is it possible to run a small picmicro project off the audio jack(iphone/android) with no alternate power supply?

    thanks

  4. Matteo

    Hi,
    Great work and thanks for sharing.
    Is the code available for download? How can I get it?
    Thanks
    Matteo

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑