質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Q&A

解決済

4回答

7340閲覧

BLEを用いたスマホ接近の自動検知機能の作成方法について

yusukechief

総合スコア16

Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

0グッド

0クリップ

投稿2019/01/10 00:50

編集2019/01/10 01:47

BLE初心者です。

登場人物は以下です。
・マイコン+BLE受信機(以下デバイスA)
・スマホ(iOS,Android)

デバイスAからスマホが離れた時マイコンがそれを検知し、さらにスマホがデバイスAに近づいたときマイコンがそれを検知できるようにしたいです。ここで「離れた」というのはBLEの検知範囲の最大距離を指します。スマホだと環境にもよりますが、最大30mぐらいだと思います。

例えば、赤ちゃんにデバイスAを装着して、スマホ持ちの親が近づいたときに、デバイスA内のマイコンが検知します。

上記のやり方が全く分かりません。自分が経験があるのはiBeaconぐらいで、そのときはBeaconからの通信をキャッチするだけ(ペアリングもしない)だったので簡単でした。

わかる方いればぜひ教えていただきたいです。

追記

目的は違いますが、以下の商品と同じ機能を実装したいです。

https://alterlock.net

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

失礼ながら、現状ですとご質問内容がザックリしすぎているように思いますので、まずはAndroid端末で既成のアプリを使って試し、動作イメージをつかんでみることをおススメします。それから何かしらAndroidのBLEサンプルソースを流用して試すと目的を達成するのが早くなると思います。

Google PlayでBLE関連のAndroidアプリを検索すると大量に出てきますので悩みますが、Androidなら以下のものが実績があって信頼置けるかな、と。(変なアプリを入れると、無用な端末情報を要求されるので)これらは私も使っています。

  1. nRF Connect - BLEデバイスでも有名なNordic社のもの

nRF Connect for Mobile

  1. LightBlue - Androidのみならず、macOSやiOSでも昔からよく使われているかんじ。

LightBlue

iBeaconもそうですが、一般にビーコンと呼ばれるものはBLEペリフェラルデバイスから発せられる「アドバタイジング」パケットと呼ばれるもので、このパケットに端末情報(ID相当のもの)や電波強度、その他必要な情報を載せて定周期で発信し続けます。そのパケットをBLEセントラルであるiOS端末やAndroid端末で受信して目的の処理を行うわけです。

iBeaconはそのフォーマットが決まっていて、
iBeaconとは
このフォーマットを使うと既成の受信側アプリが流用し易いメリットはありますが、実験レベルでは必ずしも同じフォーマットを使う必要はありません。なお、iBeaconに限らずBLEでは通常のBluetoothで必要なペアリングは行いません。


送信/受信方向について追記:2019-01-10 11:00

・マイコン+BLE受信機(以下デバイスA)

他回答者様の回答を読んで見落としに気がつきましたが、赤ちゃん側は言うなればBLEセントラル(受信側)を想定されていましたね。先の私の回答は、一般的な、デバイスがビーコン発信側、スマホが受信側な形態を想定していました。

もし、スマホをBLEビーコンの送信側にしたいのであれば、スマホがBLEペリフェラルで動作する必要がありますが、端末のAndroidのバージョンやBluetoothのチップによってそもそもスマホがBLEペリフェラルになれない、あるいは動くはずだけどうまく動かないケースが過去、散見されましたので、その点注意しておくと良いです。

投稿2019/01/10 01:25

編集2019/01/10 02:01
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

やり方としては発信側が定期的になにかメッセージを送信し続け、受信側でそれが受信できるか否かで判断する、ということになろうかと思います

iBeaconができると言うならまずはそれで実験してみては。

投稿2019/01/10 01:01

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

デバイスAがadvertiseで
スマホがscanでもできますね。
scanの方が電池消費しますのでこっちのほうが良いかもしれません。

投稿2019/01/10 01:54

hillacken

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yusukechief

2019/01/10 03:46 編集

この場合、スマホは常にスキャンし続けないといけないのですが、そのような設定にできるのでしょうか?画面が長時間オフのときでも行う必要があります。 また、最終的にデバイスA内のマイコンに処理をさせたいので、スマホ側がデバイスA側からのble信号をキャッチしたとき、どうやってスマホ側からデバイスA側に信号を送るのでしょうか?
hillacken

2019/01/10 05:46

スマホでデバイスを発見したら、 スマホからデバイスに対してconnectします、 そうするとデバイス側でconnectされたかどうかわかると思います、 同様にdisconnectもわかると思います。 >この場合、スマホは常にスキャンし続けないといけないのですが、そのような設定にできるのでしょうか? advertiseにしろscanにしろどちらにしても常に動き続けるように工夫しなければいけませんね。 そのような要求ですので。
yusukechief

2019/01/10 13:36

ご回答ありがとうございます! するとどのみち、デバイスAは常にscanし続ける必要があるということでしょうか?スマホからのconnectを受け取る必要があるので
hillacken

2019/01/10 23:04

デバイスがscanの場合はデバイスからスマホへ対してconnectします。 スマホは常にadvertiseです。 スマホがscanの場合はスマホからデバイスへ対してconnectします。 デバイスは常にadvertiseです。
guest

0

スマホは常に__advertise__している必要がありますね。
長時間画面OFFでもserviceが死なないようにする必要がありますね。

デバイスAは常に__scan__し続ける必要がありますね。
デバイスAの電池は常に__scan__すると結構消費します。

デバイスAは__scan__でスマホを見つけたら、__connect__すると良いでしょう。
アプリケーションでデータ送受信を行わなくても、BLEの仕様で__connect__しているかどうかのやり取りをしてくれているはずです。
範囲外に出たらデバイスAの__disconnect__ステータスでわかると思います。
大抵のBLEモジュールで__disconnect__ピンがあると思います。

投稿2019/01/10 01:46

hillacken

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問