python-bluezを使う
linuxではbluezを使うと、簡単にBluetoothデバイスを
制御するプログラムが書ける。
Macでもwindowsでも同じように簡単にプログラムはかけるが、
それはまた今度。
今回はubuntu7.10でためした。Bluetooth-USBはPLANEXのBT-01UDEを使った。
C言語でもいいが、なんとなくpythonがイケてるので、python-bluezをいれる。
$ sudo aptitude install python-bluez
ではまず、デバイススキャンから。先にPLENの電源をONにしておく。
$ python Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import bluetooth >>> devices = bluetooth.discover_devices() >>> for device in devices: ... print bluetooth.lookup_name(device), device ... PLEN *** **:**:**:**:**:** ******** のコンピュータ **:**:**:**:**:** >>>
実行結果のプライベートな情報っぽいところは、'*'で隠してあるのであらかじめ。
PLEN以外にこの部屋で起動しているMacも見つけたようだ。
さっきの実行結果でわかったPLENのデバイスアドレスを変数に持っておく。
>>> bt_addr='**:**:**:**:**:**'
PLENに接続する。
あらかじめPLENの後頭部にあるリセットボタンを押しておく。
>>> s=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
>>> s.connect((bt_addr,1))
ここで、ふつうにubuntuを使っているなら(ウィンドウマネージャがgnomeで、
bluez-gnomeをいれているなら)、画面のトップのBluetoothマークが語りかけてくるので、言うとおりにしてパスキーを入力する。
ここまでうまくいったら、PLENにコマンドを送ってみよう。
>>> s.send('\x01cf\x1d1')
PLENが前進するだろう。
とりあえず、止めよう。
>>> s.send('\x01mx\x1d1')
ちなみに
- 後進:'\x01cb\x1d1'
- 右旋回:'\x01cr\x1d1'
- 左旋回:'\x01cl\x1d1'
- クリア:'\x01mo\x1d1'
- モーション再生:'\x01mp\x1d00'
(0番を再生ということ、1番なら最後の2つの数字を01とする)
- 目点灯:'\x01gy\x1d1'
- 目消灯:'\x01gy\x1d0'
なのでお試しあれ。
ためした後はsocketを閉じるべし。
>>> s.close()