私は Android と Arduino のプロジェクトに取り組んでおり、Arduino 側で Bluetooth が接続されているかどうかを確認する方法を見つけようとしています。
これらのBluetooth モジュールの 1 つを使用して接続しています。Android 経由でコマンドを送信できることはわかっていますが、接続時にアクションを自動的に実行し、可能であれば Android でバックグラウンド アプリケーションを実行する必要がないようにしています。
私は Android と Arduino のプロジェクトに取り組んでおり、Arduino 側で Bluetooth が接続されているかどうかを確認する方法を見つけようとしています。
これらのBluetooth モジュールの 1 つを使用して接続しています。Android 経由でコマンドを送信できることはわかっていますが、接続時にアクションを自動的に実行し、可能であれば Android でバックグラウンド アプリケーションを実行する必要がないようにしています。
付属のモジュールを使用するだけで、他にできないことはありません。モジュールには 4 つのコネクタがあることに注意してください。
このインターフェイスを考えると、Bluetooth モジュールがペアリングされているかどうかを判断する唯一の方法は、ペアリングされたデバイスに何かを送信し、接続されていることを Arduino が認識できるように応答させることです。たとえば、Android プログラムが文字列を受信したときに常に応答する場合"Hi there!"
、Arduino はそれが Android スマートフォン/タブレットとペアリングされていることを認識します。Arduino は 1 分ごと (または 5 秒ごと) にポーリング (質問文字列を送信) して、デバイスとペアリングされているかどうかを確認できます。"Hello?"
"Hello?"
より良い方法がありますが、一部はんだ付けする必要があります。モジュールが HC-03/HC-05 ベースの場合、PIO9 ピンは「ペアリング インジケータ LED」です (データシートはこちらを参照してください)。そのピンを Arduino 入力ピンに接続してレベルを読み取ることができます。1
デジタルを読み取るとデバイスがペアリング0
されていることを示し、デジタルを読み取るとペアリングされていないことを示します。確かではありませんが、モジュールのピンにラベルが付いている可能性がありますSTATE
はまさにこの種類のピンです。つまり、ペア状態を示します。不運にも。このピンはヘッダーに接続されていないため、ワイヤを正しいポンディング パッドにはんだ付けして Arduino に接続する必要があります。最初に電圧モードのマルチメーターをそのパッドに接続してテストし、ペアリングされた状態とペアリングされていない状態でそのパッドとグランドの間の電位を測定する必要があります。これがペアリング状態に応答するピンである場合、あなたはゴールデンです. 電源を示している可能性があります (HC-03/05がオンのPIO8
ときに点滅するように)。それが判明した場合、STATE
ピンがペアリング ステータスではない場合は、サプライヤにデータシートを要求し、それを使用してステータス LED 接続を見つけてください。存在する可能性があります。正しいパッドが見つかったら、電圧計を使用してその機能を再度確認します。次に、その接続にワイヤをはんだ付けし、Arduino から読み取ります。
重要: Arduinoが、Bluetooth モジュールのステータス ピンに接続された Arduino ピンにデジタル信号を出力しないようにしてください。これらの Bluetooth モジュールは 3.3V で動作し、保護されていないピンを 5V に接続すると損傷します。1
購入したモジュールでは、Vcc ピンと Txd ピンは電圧シフトされていますが、LED/ステータス ラインはそうではない可能性があります。そのため、Bluetooth モジュールの「ステータス」に接続されている Arduino ピンが出力として構成されdigitalWrite(HIGH)
ていて、それに接続すると、Bluetooth モジュールが損傷する可能性があります。
HC-05 データシートから、接続ステータスは PI09 からの出力に依存することがわかります。どうやら「AT+BIND?」を送信しているようです。モジュールにPI08とPI09のステータスを「+ POLAR = PI08、PI09」の形式で返しますが、これを取得するにはATモードに入る必要があり、ATモードに入るとペア接続が中断されるため、これは意味がありません、したがって、常に「未接続」とマークされた PI09 を送信します。
したがって、接続がまだ arduinos POV からライブであるかどうかを確認するには、2 つの実行可能な方法しか確認できません。
AT+STATE?
接続の現在の状態を返します。はい、at モードに入る必要があります。これは、HC05 モジュールのピン 11 を HIGH にすることによって行われます。はんだ付けが必要ですが、それだけの価値があります。次に、デバイスの完全な AT 制御を許可し、LOW に設定して通常の動作モードに戻します。
私が完全には理解していない別のオプションは、AT+MPIO?
コマンドです。これは、すべてのピンの状態を、まだ理解していない奇妙なマスク形式で返します。
上記の最初のオプションを使用して、携帯電話から HC05 にターミナル (Bluetooth) し、HC05 の LED/リレーなどをオンにします (つまり、ピン 2 を HIGH にします)。これには、AT モード (ピン 11 HIGH) に入り、コマンドAT+PIO=2,1
を送信してから、ピン 11 を LOW に設定して通常の動作モードに戻す必要がありました。
注: ハイ コマンドと AT コマンド、および LOW コマンドの間に 200 ミリ秒の遅延を挿入する必要があることに気付きました。アンジェラのソリューションは素晴らしいです-私は安価なXBEE Bluetoothモジュール(Arduino uk2015用のBluetooth XBeeを備えたHC-05 Bluetooth Beeマスターおよびスレーブモジュール)を使用します。XBEE形式でレイアウトされた5Stg用の2ユニット(HC05 / 6)-3.3に便利v。
残念ながら、 はHC-05
ペアになると状態が切り替わりますが、実際に何かに接続されるまで 1 を出力しません。
たとえば、携帯電話と のHC-05
ペアリングを解除し、もう一度ペアリングすると、LED の状態が変わりますが、STATE ピンの出力は 0 のままです。アプリを開いて手動でデバイスに接続すると、LED、と STATE ピンの状態が変化します。LED は定期的に 2 回点滅し、STATE ピンは 1 を Arduino に出力します。
STATE ピンの値を読み取りたい場合は、ワイヤーを arduino の入力のいずれかに接続し、ワイヤーであるコードSerial.println(digitalRead(inputPin));
inputPin
を Arduino の入力に接続します。
私は何ヶ月もこのことと戦ってきましたが、このことを自分の電話に自動的に接続させる方法をまだ見つけていません。HC-05
Androidにアプリをダウンロードしない限り、携帯電話からに接続することさえできません。を特定のアドレスにバインドすることは可能HC-05
ですが、これでもうまくいきませんでした。コマンドをいじりたいのです"AT+CLASS"
が、命令の背後にあるドキュメントがこれまでのところ私を妨げています。