deviceplus 電子工作マニュアル - rohm · deviceplus 電子工作マニュアル...

16
DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身! ラズベリーパイとiBeaconで作るコーヒー休憩お知らせマシン Vol. 05 http://deviceplus.jp/

Upload: others

Post on 30-Dec-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

DevicePlus 電子工作マニュアル~Raspberry Piを活用してみよう(上級編)~

iBeacon1個だけであらゆるモノをIoTデバイスに変身!ラズベリーパイとiBeaconで作るコーヒー休憩お知らせマシン

Vol.05

http://deviceplus.jp/

Page 2: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

はじめに………………………………………………………………………………………………… 2

iBeacon1 個であらゆるモノを IoT デバイスに変身! ~ラズベリーパイと iBeacon で作るコーヒー休憩お知らせマシン~

必要なもの……………………………………………………………………………………………… 2

iBeacon って何?… …………………………………………………………………………………… 3iBeacon の活用事例… ………………………………………………………………………………… 3iBeacon の利用が可能な端末や環境… ……………………………………………………………… 3iBeacon のしくみ… …………………………………………………………………………………… 3iBeacon のビーコン信号が発信する情報… ………………………………………………………… 4iBeacon の届く範囲とエリア分け… ………………………………………………………………… 5iBeacon の特徴まとめ… ……………………………………………………………………………… 5ラズベリーパイで iBeacon を利用してみる………………………………………………………… 5必要なライブラリのインストール…………………………………………………………………… 5Bluetooth デバイスをラズベリーパイにインストール… ………………………………………… 6ラズベリーパイを iBeacon として動かす…………………………………………………………… 7ラズベリーパイを iBeacon としてビーコン信号を発信する(アドバタイジング)する……… 7他の端末でビーコン信号を確認する………………………………………………………………… 8ラズベリーパイを受信側で利用する場合…………………………………………………………… 9iBeacon チップを用意する… ………………………………………………………………………… 9ラズベリーパイの受信コマンド…………………………………………………………………… 10コーヒー休憩お知らせデバイスの実装…………………………………………………………… 10iBeacon 発信側の準備… …………………………………………………………………………… 11受信側ラズベリーパイの準備……………………………………………………………………… 11

まとめ………………………………………………………………………………………………… 13

参考・関連リンク…………………………………………………………………………………… 14

●…所要時間:180分  ●…レベル:★★★★☆●…部材費用:約 7,000 円

も く じ

当電子工作マニュアルは、以下の内容で構成しております。

Page 3: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

表 1 使用する部品一覧

※参考価格は、2015年 4月現在

品名 型名・仕様 数量 参考価格ラズベリーパイ 2…Model…B Raspberry…Pi2…Model…B 1 3,240 円

MyBeacon…Fun MB005…Ac…Applix 1 1,000 円ブレッドボード BB-601 1 130 円

ブレッドボード・ジャンパワイヤ EIC-J-L 1… 330 円電池ボックス単 3× 2本用 BH-321-1AS 1 60 円

ピンヘッダ 1× 40 ピンヘッダ 1× 40 1 40円Bluetooth…4.0…USB…MICRO…ADAPTER BSBT4D09BK…BUFFALO 1 1,400 円

PCファン 静音ファン 1 620円

2

は じ め に

iBeacon1 個であらゆるモノを IoT デバイスに変身!~ラズベリーパイと iBeacon で作るコーヒー休憩お知らせマシン~

iBeacon(アイビーコン)というキーワードが、昨年から技術系の雑誌や、ウェブサイトでよく見られるようになりました。iBeacon は、iPhoneをはじめとする Apple 社の iOS バージョン 7以降に搭載された低電力、低コストを特徴とするBluetooth…Low…Energy(BLE) を技術基盤とした通信プロトコルで、ワイヤレス技術では、今最も注目されている技術のひとつでしょう。

iBeacon は、ビーコン電波を発信する端末を安価に用意できること、電池などの省電力で長期間運用できること、発信端末から受信端末までどれくらい近いかを Immediate/Near/Far/Unknown といった 4つレベルで取得できるなどの特徴があります。2014 年後半から、iBeacon 対応の iPhoneを持つユーザーが多くなったことや、Android4.3から iBeacon を利用するBLE 機能のAPI が搭載さ

れたことなどを理由に、iBeacon の活用事例が見られるようになりました。iBeacon は、一定間隔で複数カ所に端末を設置することで、位置情報を特定でき、GPS 電波の届かない屋内の位置情報を利用するサービスなどと親和性が高いことがあげられます。駅やデパートといった施設内の案内機能や、店内の入店を自動的に確認して、クーポンを発行するといった、活用の場が広がる可能性を持った技術です。

本マニュアルでは、iBeacon がどのように利用できるのか? Bluetooth と何が違うのか?というiBeacon の基本的な使い方を紹介するとともに、ラズベリーパイで iBeacon を利用するためのライブラリ BlueZ の使い方を解説します。また、実例として、iBeacon…1 個からできる IoT デバイス「コーヒー休憩お知らせマシン」を作成します。

必要なもの

Page 4: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

図 1 iOS:iBeacon について(https://support.apple.com/ja-jp/HT202880)

図 2 JR 東日本の駅構内ナビ(http://www.jreast-app.jp/s-navi/)

図 3 iBeacon と Bluetooth の違い

3

iBeacon って何?

iBeacon は iOS7 から搭載された近距離無線通信用の新技術または通信プロトコルの名称です。iBeacon は現在ワイヤレスのキーボードやマウス、ヘッドホンなどで利用している人も多いBluetooth を低電力での通信を可能に拡張した仕様の Bluetooth…Low…Energy(BLE) をベースとする技術のため、低電力で運用できることはもちろんのこと、その発信端末が低コストで導入できることもメリットの一つとしてあげられています。「iBeacon」の名称は先頭の小文字の「i」から連想される方も多いように、Apple 社が商標を持つ技術です。

iBeacon の活用事例

ここ1年で iBeaconに対応したスマートフォン端末が増えた背景もあり、多くの企業で iBeaconを利用したサービスが登場しています。特に、iBeaconは屋内の位置情報を取得することができるため、多くの公共施設や商業施設が、施設案内、情報提示アプリとしてリリースをしています。JR 東日本が 2014 年 12 月から 2015 年 2 月まで実証実験が行った「東京駅構内ナビ」では、東京駅の構内案内アプリとして、地下1階と 1階にiBeacon端末を約160個設置し、アプリを起動しているユーザーの現在地の周辺マップと、目的地までのルート案内をするナビゲーションアプリを提供しています。

iBeacon の利用が可能な端末や環境

iBeacon は、iPhone や iPad な ど で は、iOS7 以上…、Android ではAndroidOS4.3 から Bluetoothの BLE機能に関するAPI が利用可能になったので、Bluetooth デバイスが BLE 対応であればAndroidでも利用が可能になりました。

iBeacon のしくみ

iBeacon と Bluetooth の違いと他のビーコン端末の違いiBeaconでは、ビーコン信号を発信する発信機と、その信号を受信する受信機が必要となります。

1. iPhone の場合もっとも古い機種でiPhone4 が iOS7 の導入が可能

2. iPhone の場合もっとも古い機種でiPhone4 が iOS7 の導入が可能

よく間違いやすいのが、iBeacon は Bluetooth のようにデータの送受信はできず、発信端末は基本的にビーコン信号を発信するだけということです。

Page 5: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

表 2…iBeacon 情報設定の例

  1階 2階 3階UUID 7408A8BD-046B-43E0-95D4-0D5963984EF4Major 1 2 3

Minorエレベーター 10 10 10エスカレーター 20 20 20

階段 30 30 30

4

また、他のビーコン端末が各社から発売されていますが、iBeacon とそれら端末の違いは、iBeaconの規格に準拠しているかどうかです。iBeacon の規格では、少なくとも 100ミリ秒ごとに 1回以上のビーコン信号を発信する必要があります。このビーコン信号を発信することを、iBeacon では「アドバタイズ」と呼び、ビーコン信号の内容は端末の識別情報を発信することが定められています。

iBeacon のビーコン信号が発信する情報

proximity UUID128bit からなるビーコンの識別子です。128bit のUUID…で表現し、ビーコンそのものを識別するための IDや、法人などの組織などの識別に利用されることが想定されています。この値は必須の情報となります。

majorMacの場合、ターミナルの「uuidgen」コマンドで128bit のユニークなUUIDキーを作成することが可能です。16bit からなるビーコンの識別子です。Proximity…UUIDとは違い16bit の unsigned…integer 形式の値で、proximity…UUIDが組織などの単位に比べて、major はその中のグループ分け(例としてデパートで利用する際、proximityUUIDが

デパートの法人名、major がデパート内の階数に分けたグループなど)として利用想定されています。この値は任意の情報となります。

minor16bit からなるビーコンの識別子です。major 同様unsigned…integer の形式で、major よりもさらに細かくグループ分け (major がデパートの階だとすると、その階ごとに入っている店舗などを指定 )をする際などに利用想定しています。この値もmajor同様任意の情報となります。

Measured Powerビーコン発信機と受信機器の距離が1mだと仮定した場合の信号受信強度(RSSI:Received…Signal…Strength…Indicator)です。基本的に iBeaconではこの強度を元に発信機と受信機の距離を測定しています。

例として、とあるデパート内で、iBeaconを利用したアプリを使って、ユーザーがそれぞれエレベーター、エスカレーター、階段などの利用頻度を計測するようなシーンの場合は、下記のような表の構成で iBeacon端末を設定します。iBeacon発信端末から発せられるビーコン信号の強さ(距離)に応じて4種類の状態を取得できます。

Page 6: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

図 4…iBeacon の届く範囲とエリア分けのイメージ

5

iBeacon の届く範囲とエリア分け

Immediate エリアもっとも近い位置にいるときに受信できる状態です。電波強度によりますが、大体 10cm以内の距離に受信端末を近づけた場合にこの状態を取得できます。スマートフォンなどを iBeacon 端末にかざしてクーポンを利用するなどといった使い方ができます。

Near エリアImmediate よりも少し遠く、約 1m以内での状態を取得できます。店舗の入り口などに端末を設置して、人が出入りしたかなどを検出するといった利用が考えられます。

Far エリア距離を測ることのできるもっとも広い範囲のエリアがFarになり、約10m以内の状態を取得できます。Farは ImmediateやNear よりも範囲が広いため、屋内などでは建物の構造の影響で誤差がでるので気をつけましょう。店舗内に人がいるかどうかの判断や、店舗前を通り過ぎるユーザーに対して情報を発信するなどの使い方の他、複数の発信端末を一定の距離でおくことで、屋内のユーザーの位置を割り出すなどの使い方ができます。

Unknown エリアビーコン信号は受信できているが距離を測定できない状態で表示されます。Unknownは Far よりも遠ざかったときに検出される他、電波の干渉などで一時的に受信ができない場合やMeasured…Power が高すぎるなどの場合もUnknownとして判定されるので、アプリを開発する際は気をつける必要があります。

iBeacon の特徴まとめ

・Apple 社が商標を持つ BLE をベースとした近距離無線通信技術。 ・低コスト、低電力で運用が可能。 ・iBeacon を利用できるのは iOS では iOS7 から、Android では 4.3 から。 ・iBeacon1 つだけあっても何もできない。信号を受けて処理を行う端末・サービスが必要。 ・スマートフォンで利用するには Bluetooth をオンにする必要がある。 ・端末から発信されるビーコン信号は proximity UUID(必須)、major(任意)、minor(任意)の識別情報とMeasured Powerのビーコン信号強度。 ・iBeacon で取得できるエリアの状態はImmediate、Near、Far、Unknown の 4 つ。

Page 7: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

写真 2…USB ポートに Bluetooth デバイスを装着

写真 1…バッファロー…Bluetooth…4.0+EDR/LE 対応…USB マイクロアダプター

図 6……BlueZ のインストール

図 5…BlueZ……http://www.bluez.org/※ 2015年 4月現在の BlueZ最新版は 5.30 です。

6

ラズベリーパイで iBeacon を利用してみる

ラズベリーパイでiBeaconを利用してみましょう。その前にラズベリーパイで iBeacon を利用するための下準備をします。

必要なライブラリのインストール

ラズベリーパイで Bluetooth デバイスを扱うために、blueZというオープンソースの Bluetooth プロトコルスタックを利用します。BlueZは Linuxや Android などで手軽にBluetooth を制御するためのライブラリです。下記URL から最新の BlueZをダウンロードして、インストールします。インストール完了後、一度再起動してください。

$… sudo… aptitude… install… l ibglib2.0-dev…libdbus-1-dev… libudev-dev… libical-dev…libreadline6-dev$…wget…http://www.kernel.org/pub/linux/bluetooth/bluez-5.30.tar.xz$…tar…xvJf…bluez-5.30.tar.xz$…cd…bluez-5.30$… ./configure… –disable-systemd… –enable-library$…make$…sudo…make…install

Bluetooth デバイスをラズベリーパイにインストール

BlueZ のインストールが完了したら、Bluetoothデバイスをラズベリーパイに装着します。Bluetooth デバイスは低消費電力モード (BLE…-…Low…Energy…feature) 対応のものを利用してください。本マニュアルでは、バッファロー社のBluetooth…4.0+EDR/LE 対応…USB マイクロアダプターを利用します。

BlueZのインストール完了後の再起動が完了したことを確認して、Bluetooth デバイスが認識されているか確認します。図7のように「hciXX:」(XXには数字がはいる)の表示がされていればBluetooth デバイスが認識されている状態です。

Page 8: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

図 7…Bluetooth デバイスがインストールされているか確認

図 9…コマンド内のビーコン信号の割り当て

図 8…ラズベリーパイをビーコン発信端末として利用

ラズベリーパイを iBeacon としてビーコン信号を発信する(アドバタイジング)する

7

Bluetooth デバイスを確認する$…hciconfi…g

ラズベリーパイを iBeacon として動かす

Bluetooth デバイスの準備ができたら、下記BlueZのコマンドで iBeacon として動かします。BlueZでは基本的に下記のコマンドを利用します。

BlueZ の主なコマンドhciconfi…g-…Bluetooth デバイスの設定コマンドhcitool[ オプション ]…コマンド…[ パラメーター ]…-…通信を制御するためのコマンドdev…–…ローカルデバイスの表示scan…–…リモートデバイスを探索name…–…リモートデバイスの名前を取得info…–…リモートデバイスの情報を取得

Bluetooth デバイスを起動する$…sudo…hciconfi…g…hci0…up$…sudo…hciconfi…g…hci0…noscan$…sudo…hciconfi…g…hci0…leadv…3

これで、Bluetooth デバイスから電波の送受信が可能になったので、いよいよ iBeacon としてビーコン信号を送受信します。

Page 9: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

図 10…デバイスの起動から iBeacon 信号の送信

図 11…iBeacon…Scanner

写真 3…ラズベリーパイから iBeacon 信号をキャッチ

図 12…Immediate と Near を検出

8

ラズベリーパイを iBeacon 発信端末として利用する場合、下記のコマンドで、ビーコン信号を発信できます。

ビーコン信号の発信(アドバタイズ)$sudo…hcitool…-i…hci0…cmd…0x08…0x0008…1E…02…01…1A…1A…FF…4C…00…02…15…0A…CE…38…33…32…13…AA…E2…98…F1…34…6D…A3…F3…89…72…00…00…00…00…C8…00

信号の内容は図 9の通りです。色のついた部分を、各自定めた仕様に書き換えてご利用ください。また、下記コマンドにてアドバタイズを終了できます。

アドバタイズの終了$…sudo…hciconfi…g…hci0…noleadv

他の端末でビーコン信号を確認する

ラズベリーパイから正しくビーコン信号が発信されているかを確認します。iPhoneまたはAndroidで iBeacon を確認できるアプリの「iBeacon…Scanner」を使います。iBeacon…Scanner をインストールして起動すると、画面右下に緑色の枠のボタンがあるので、それを押すと周囲の iBeacon端末を探索できます。

ラズベリーパイとスマートフォンの距離を離したり、近づけたりすると Immediate ~ Far などへと状態が変わります。

Page 10: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

写真 4…MyBeacon…Fun

図 14…MyBeacon のOn/Off…制御のパターン表

図 15…MyBeacon 信号パターン 1

図 13…ラズベリーパイをビーコン受信端末として利用

ラズベリーパイを受信側で利用する場合

9

前項とは逆に、別の iBeacon から発信されているビーコン信号をラズベリーパイで受信する場合について解説します。

iBeacon チップを用意する

iBeacon の発信端末は、iPhone や Android でも比較的簡単なプログラムを書くだけで実装ができます。本マニュアルでは、電子工作に応用が可能なApplix 社のMyBeacon…Fun…MB005…Ac(以降MyBeacon…Fun)を利用します。MyBeacon…Fun では、センサやスイッチをつないで、任意のタイミングでビーコン信号を発信できる仕組みになっています。回路の接続方式によって、ビーコンの発信タイミングを変えられます。

MyBeacon Fun の信号パターンhttp://www.aplix.co.jp/?page_id=9351

MyBeacon…Fun はサイズが縦 34mm×横 34mm×高さ 4.4mmと非常にコンパクトで、必要な電源電圧がDC1.8V~ 3.6Vなので、電池で長期間駆動することが可能です。

今回は、MyBeacon のOn/Off…制御パターンの中で、パターン 1を利用します。パターン 1では、

WAKEに接続されているスイッチがOnになったタイミング(WAKEが立ち上がったとき)で、30秒間ビーコン信号が発信されるパターンとなります。

Page 11: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

写真 5…MyBeacon パターン 1回路

図 16…ビーコン信号を受信

コーヒー休憩お知らせマシンの実装

図 17…システム構成

10

この回路では、青色のリード線がスイッチになっています。リード線同士をつなげると、30秒間ビーコン信号が発信されます。

ラズベリーパイの受信コマンド

ラズベリーパイで iBeacon 信号を受信するには、下記のコマンドを使います。hcidumpコマンドで、Bluetooth デバイスのログを吐き出すように設定し、その後 hcitool…lescan でビーコン信号を発信している端末を探索します。

iBeacon 信号を受信する

$…sudo…hcidump…–R…&$…sudo…hcitool…lescan

コマンドを実行すると、発見できた iBeacon 信号の情報が表示されます。表示される内容は、図 16の通りです。

これで、受信ができるようになりましたが、このままでは他のプログラムから利用するのが大変なので、ログを整理するシェルスクリプトを利用して動作させます。

$…sudo…wget…http://developer.radiusnetworks.com/ibeacon/idk/ibeacon_scan$…sudo…chmod…755…ibeacon_scan$…sudo…apt-get…install…bc$…./ibeacon_scan

これでラズベリーパイを利用して、iBeacon の送受信ができるようになりました。

Page 12: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

写真 6…今回利用したコーヒーメーカー

写真 7…iBeacon 発信端末をコーヒーメーカーに装着

図 17…スイッチが入るしくみ

11

これまでの内容を踏まえて iBeacon を使った例を紹介します。コーヒーメーカーに iBeacon を設置し、オフィス内の誰かが休憩所でコーヒーを入れたことをスイッチで検知してビーコン信号を発信します。ビーコン信号は他の人のデスクなどに置かれた受信端末側で、ラズベリーパイを通じて誰かの休憩をコーヒーの香りで教えてくれるマシンを作成します。このデバイスでは、オフィス内の仲間と休憩のタイミングを「視覚」「音声」といった伝え方ではなく、「香り」という気配で、お知らせします。もともと、このデバイスは椎尾一郎氏、美馬のゆり氏らの「Meeting…Pot…Project」を参考にしています(http://siio.jp/projects/pot/)。Meeting…Pot…Project は 2001年に発表され、当時は独自のシステムで構築されていましたが、今回、iBeaconとラズベリーパイで電子工作しましょう。

iBeacon 発信側の準備

iBeacon 発信端末をコーヒーメーカーに装着します。スイッチ部分は下記図のように、コーヒーメーカーにカップが置かれたときの重さを利用して、スイッチが入るようにします。前項で紹介したように、MyBeacon の回路パターン 1を採用することで、スイッチが入ってから30秒間ビーコン信号は発信されます。ラズベリーパイで確認する前に、スマートフォンで信号が正しく受信できるか確認します。

受信側ラズベリーパイの準備

ラズベリーパイの準備をします。ケースには、加工のしやすいコーヒー用の紙コップを利用します。紙コップの中には、香りの元となるコーヒー豆(今回はインスタントコーヒーの粉を使いました)と、香りを送るためのファンを設置します。ファンとラズベリーパイの接続は GPIO ピンを利用します。(GPIO の利用についてはDevicePlus のラズベリーパイ連載第 9 回目 http://deviceplus.jp/hobby/ ラズベリーパイ _entry_009/ もしくは、ダウンロード資料初級編を参照してください。)香りを送風する PC ファンはラズベリーパイのGPIO の 6 番ピン(GND)と 2番ピン(GPIO2)に接続します。下記のコマンドでファンを制御します。Echo コマンドでGPIO の 2番ピンに対して、出力をオンオフします。

GPIO 利用準備~ファンを起動して 30 秒後停止$…echo…2…>…/sys/class/gpio/export$…echo…1…>…/sys/class/gpio/gpio2/value;…sleep… 30s;… echo… 0…>… /sys/class/gpio/gpio2/value

ファンの動作が確認できたら、実際にラズベリー

Page 13: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

12

パイで受信した時にファンが回るように先ほどの ibeacon_scan のコマンド内に組み込みます。

#!/bin/bash#…iBeacon…Scan…by…Radius…Networks

if…[[…$1…==…"parse"…]];…then……packet="echo…2…>…/sys/class/gpio/export"……capturing=""……count=0……while…read…line……do…………count=$[count…+…1]…………if…[…"$capturing"…];…then………………if…[[…$line…=~…^[0-9a-fA-F]{2}\…[0-9a-fA-F]…]];…then……………………packet="$packet…$line"………………else……………………if…[[…$packet…=~…^04\…3E\…2A\…02\…01\….{26}\…02\…01\….{14}\…02\…15…]];…then…………………………UUID=`echo…$packet…|…sed…'s/^.\{69\}\(.\{47\}\).*$/\1/'`…………………………MAJOR=`echo…$packet…|…sed…'s/^.\{117\}\(.\{5\}\).*$/\1/'`…………………………MINOR=`echo…$packet…|…sed…'s/^.\{123\}\(.\{5\}\).*$/\1/'`…………………………POWER=`echo…$packet…|…sed…'s/^.\{129\}\(.\{2\}\).*$/\1/'`… … … … … … … … … …UUID=`echo…$UUID… |… sed… -e… 's/\…//g'… -e… 's/^\(.\{8\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.\{12\}\)$/\1-\2-\3-\4-\5/'`…………………………MAJOR=`echo…$MAJOR…|…sed…'s/\…//g'`…………………………MAJOR=`echo…"ibase=16;…$MAJOR"…|…bc`…………………………MINOR=`echo…$MINOR…|…sed…'s/\…//g'`…………………………MINOR=`echo…"ibase=16;…$MINOR"…|…bc`…………………………POWER=`echo…"ibase=16;…$POWER"…|…bc`…………………………POWER=$[POWER…-…256]…………………………if…[[…$2…==…"-b"…]];…then… …………echo…"$UUID…$MAJOR…$MINOR…$POWER"…………………………else…………… …………echo…"UUID:…$UUID…MAJOR:…$MAJOR…MINOR:…$MINOR…POWER:…$POWER"…………………………fi… …packet…=…`echo…1…>…/sys/class/gpio/gpio2/value;…sleep…30s;…echo…0…>…/sys/class/gpio/gpio2/value`……………………fi……………………capturing=""……………………packet=""………………fi…………fi

…………if…[…!…"$capturing"…];…then………………if…[[…$line…=~…^\>…]];…then……………………packet=`echo…$line…|…sed…'s/^>.\(.*$\)/\1/'`……………………capturing=1………………fi…………fi……doneelse……sudo…hcitool…lescan…--duplicates…1>/dev/null…&……if…[…"$(pidof…hcitool)"…];…then…………sudo…hcidump…--raw…|…./$0…parse…$1……fifi

Page 14: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

写真 8…紙コップ内に設置するファン

写真 9…紙コップの中にインスタントコーヒーの豆

写真 10…コーヒー休憩お知らせデバイス完成!

図 18…ラズベリーパイとファンの回路

図 19…RaspberryPi2…ModelB の GPIO(http://www.element14.com/community/docs/DOC-73950/l/raspberry-pi-2-model-b-gpio-40-pin-block-pinout)

13

準備ができたら、実際に動作を確認してみます。コーヒーメーカーにカップを置いた瞬間 iBeacon信号が発信されて、紙コップのファンが回りコーヒーの良い香りがデスク周りに広がりました!休憩室が別室などの広いオフィスなどで利用した際は、デバイスからコーヒー香りが、ほどよい休憩タイミングを知らせてくれます。

まとめ

本マニュアルでは、ラズベリーパイを利用してiBeacon の送受信の方法と、iBeacon を利用して「コーヒー休憩お知らせデバイス」を作成しました。iBeacon は、低電力で低コストなため、手軽に面白いデバイスやサービスが実装できると思います。今回作成した「コーヒー休憩お知らせデバイス」は、スイッチ自体は簡単な仕組みですが、この仕組みを生活シーンに応用すると、部屋のドアの開閉を検知してラズベリーパイから指令を出す、光センサや温度センサと組み合わせて一定以上の温度になったら iBeacon を通じて熱中症予防アラートを発信するといった電子工作ができますね。今回利用したApplix社のMyBeacon…Fun…MAKERS…ZONEでは、上記にあげた例の他、ウェブサイトに応用例が紹介されているので、興味のある方はぜひご覧ください。

MyBeacon Fun MAKERS ZONEhttp://www.aplix.co.jp/?page_id=9351

Page 15: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

14

参考・関連リンク●…ラズベリーパイを iBeacon 化してみた。…-…気のむくままにhttp://jyun1.blogspot.jp/2013/12/i-beacon-make-by-raspberry-pi.html

●…ラズベリーパイで iBeacon を検知する…–…Qiitahttp://qiita.com/katsuyoshi/items/9d5417495a47c4b15ac1

●…ラズベリーパイ…で…iBeacon…を試してみよう!https://www.eyemovic.com/blog_it/4269.php

●…hcitool と hcidumpで確認http://rpd7.tomolog.info/knowledge/raspberrypi/07_hcitool.html

●…Meeting…Pot…アンビエントディスプレイによるコミュニケーション支援http://siio.jp/projects/pot/

Page 16: DevicePlus 電子工作マニュアル - ROHM · DevicePlus 電子工作マニュアル ~Raspberry Piを活用してみよう(上級編)~ iBeacon1個だけであらゆるモノをIoTデバイスに変身!

お問い合わせ[email protected]

掲載記事利用上のご注意掲載された回路、技術、プログラムなどを利用して生じた

全ての不利益、損害、事故などDevicePlus編集部・ローム株式会社は責任を負いかねます。