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()