最初の9ドルコンピュータC.H.I.Pの作品はiBeaconにすると思う。
普通iBeaconはクーボンなどの配信をする機器だか、こちらはこどもの下校帰宅の知らせ機器にする。機能として:
- こどもにiBeacon持たせて、帰宅すると感知する
- 感知したら、区別して「XXXちゃん、お帰り」をしゃべり
- 親にメールを送る「XXXちゃん帰宅」
- (将来)親の伝音をしゃべる
名刺半分サイズだから、PCスピードなどの中に空いてる空間に組み込むして運用すると考える。
Bluetooth検知
まずBluetooth検知から。下記のサイトを見ながら、教科書通りまずBluetooth keyboardからと考えた。
http://docs.getchip.com/#connecting-bluetooth-devices
C.H.I.Pには、Bluetooth 内蔵、OSも内蔵なので、特になにもインストールの必要がなく利用できる。まずbluetoothctlコマンド使って、find, pair with, and connectなどを試す。
- root@chip:~# bluetoothctl
[NEW] Controller 7C:C7:08:DE:2A:4E chip [default]
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller 7C:C7:08:DE:2A:4E Discovering: yes
[NEW] Device DD:52:20:CC:66:BA N0U9Z
の感じで、もう新しいDevice 見つかった。その後延々と周囲のBluetooth 機器の情報を報告。
このN0U9Zはなぜか用意したBluetooth keyboard(電池切れ?)ではなく、近所のiBeaconらしい。そうしたらも教科書通りBluetooth keyboard接続など飛ばして、自分が用意したiBeaconで体験を継続。
Raspberry Piと iBeacon関連サイトを調べて、必要な情報収集を行った。そこでわかって、bluetoothctlコマンドで対話式操作の他に、hcitool lescan で近くに BLE の端末がある場合は近づけると Mac アドレスとデバイス名を表示することもできる
- hcitool lescan — BLE 検知テスト
node.js/bleacon 環境構築
検出ができたので、実現したい機能をプログラミングするだが、プログラミング環境として、まずnode.jsを考えた。
nodebrewでnode.jsをインストールして、それからbleaconというモジュールでBluetooth を操る。
bleaconを利用するために、まずは node.js をインストール。node のバージョン管理を行う nodebrew を利用してインストール。
C.H.I.Pには、curlもないので、そのインストールから
- root@chip:~# apt-get install curl
- root@chip:~# curl -L git.io/nodebrew | perl – setup
- chen@chip:~$ vi .bashrc
- chen@chip:~$ source .bashrc
- chen@chip:~$ nodebrew install-binary v0.10.28
しかし”v0.10.28 is not found”と怒られて。node.jsしばらく放置したので、この間結構変わった。日本語のページは古いのままだが、英語のページも最新版4.4.0になった。それをインストールに。
- chen@chip:~$ nodebrew install-binary v4.4.0
- chen@chip:~/ibeacon$ npm install bleacon
npm WARN optional dep failed, continuing xpc-connection@0.1.4
npm WARN optional dep failed, continuing xpc-connection@0.1.4
> bignum@0.11.0 install /home/chen/ibeacon/node_modules/bleacon/node_modules/bignum
> node-gyp configure build
make: Entering directory ‘/home/chen/ibeacon/node_modules/bleacon/node_modules/bignum/build’
CXX(target) Release/obj.target/bignum/bignum.o
make: g++: Command not found
しかしそのbleaconというモジュールのインストールにエラーがたくさん出るから、お手上げ。
python/pybluez/iBeacon-Scanner 環境構築
ネットいろいろ検索して、kakakikikekeのサイトを参考にpythonで試すことにした。
Python から操作するためのライブラリをインストールします
pip を使うのでインストールしています
- sudo apt-get -y install python-pip
- sudo apt-get install python-dev libbluetooth-dev libboost-all-dev
- sudo pip install pybluez
- sudo pip install pybluez[ble]
ここもエラーが見回り、pybluez[ble]のインストール失敗でした。
ここで試しにiBeacon-Scanner を入れてなんど機能した。
- git clone https://github.com/switchdoclabs/iBeacon-Scanner-.git
- cd iBeacon-Scanner-
- sudo python testblescan.py
サンプルのソースは簡単で、10個 BLE情報を受信すると情報を出力しつづけてくれる。
これてこどもの下校帰宅の知らせ機器は、pythonでプログラミングすると決定。できたらまたレポートする。
参考サイト: