« 幸せなノートを作る10のノウハウ(2010年版) | Main | arduinoでドラクエのレベルを自動的に上げる »

2010.01.17

arduinoでIP Messenger

IP Messengerは主にLANで使われるメッセンジャー。前の職場では離れた座席の相手との雑談やら電話メモやら仕事の依頼やらと多目的に使われていた。

http://www.ipmsg.org/

これをarduinoで扱えたら

  • USBケーブルを伸ばせないがLANケーブルを伸ばせる範囲の値を拾える
  • PC側はIP Messengerのクライアントだけでサーバ不要

といったメリットがある。

IP Messengerは暗号化など色々と機能拡張されているが、メッセージを送るだけならUDPのPort2425にコロン区切りで送るだけなので、Rubyなら

require 'socket'
udp = UDPSocket.open()
sockaddr = Socket.pack_sockaddr_in(2425,"192.168.1.X")
udp.send("1:1:user:host:32:Hello",0,sockaddr)
udp.close

と5行で書けるのだが、arduinoの標準ライブラリではUDPをサポートしてないため、まずUDPに対応させるところから始める。

arduinoフォーラムで「UDPを送るにはどうしたらいいの?」という質問があったが、

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1231346812

ここでのベストアンサーはBjorn Hartmannのライブラリを使えと。

http://bitbucket.org/bjoern/arduino_osc/downloads/

というわけでREADMEに従って./libraries/Ethernetと./libraries/Ethernet/examplesにコピーする。標準のEthernetライブラリに置いちゃって大丈夫なのか気になるが(IDEを入れ替えたときに消されちゃうとか)、試しにExampleからUdpSendStringsというサンプルをVerifyしてUploadしてみると、Mac版のarduino 0017では問題なく動作した。(Win版や他のVerで大丈夫でしたらコメントください)

動いたら送信元(arduino)/送信先(PC)のIPアドレス、ポート番号、送信するメッセージを書き換える。IP Messengerのフォーマットはこちらを参考に

http://smart-pda.net/isourou/ipmsg/doc/ipmsg_protocol.html

とりあえず、こんな感じで作成。

"1:1:arduino_user:arduino_host:32:Hello,IP Messenger";

実際に動作確認したソースを置いてみました。

http://gist.github.com/278849

--

arduinoを無線ブリッジに繋げたら、使える範囲/箇所が増えそう。試してみた方は、コメントください。

BUFFALO IEEE802.11g 無線LAN AirStation ブリッジモデル WLA2-G54C
BUFFALO IEEE802.11g 無線LAN AirStation ブリッジモデル WLA2-G54C
おすすめ平均
stars初心者でも安心!
stars簡単・コンパクト
starsマニュアルの意味は・・・?
starsiPod touchの無線LAN接続用に購入
starsPSP用に買いましたが

Amazonで詳しく見る
by G-Tools

|

« 幸せなノートを作る10のノウハウ(2010年版) | Main | arduinoでドラクエのレベルを自動的に上げる »

Arduino」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/4282/47316392

Listed below are links to weblogs that reference arduinoでIP Messenger:

« 幸せなノートを作る10のノウハウ(2010年版) | Main | arduinoでドラクエのレベルを自動的に上げる »