Arduino の Bluetooth を使用すると、さまざまなデバイスをワイヤレスで接続できます。 ArduinoのセンサーやコントローラーからAndroidデバイスにメッセージを送信したり、その逆にBluetooth経由でスマートフォンからコマンドを受信したりできます。 この記事では、人気があり、それほど安価ではない Bluetooth モジュール HC05 および HC06 を使用して、Arduino プロジェクトのワイヤレス操作を構成する方法を学びます。 信じられないかもしれませんが、Bluetooth モジュールの接続とプログラミングはまったく難しい作業ではなく、初心者でも簡単に行うことができます。 これを確認しましょう。
多くの場合、プロジェクトでは、電話やその他のデバイスからのリモート制御やデータ転送が必要になります。 最も一般的で便利な方法の 1 つは、Bluetooth を介したデータ交換です。 UART (シリアル) インターフェイスは、Arduino ボードとコンピューター間の通信に使用されます。 どの Arduino ボードにも少なくとも 1 つの UART シリアル ポートがあるため、Bluetooth モジュールを接続するために特別なライブラリや回路は必要ありません。
最も人気のあるモジュールは、BC417 チップをベースにしたデバイスです。 このシリーズをHCと呼びます。 モジュール HC-03 および HC-05 は、接続サーバーとしてもクライアントとしても機能し、幅広い AT コマンドを備えています。
PC に接続するには、Bluetooth モジュール、Arduino ボード、接続ワイヤ、およびコンピュータが必要です。 スマートフォンとコンピューターを介して Arduino ボードを制御するためのスケッチは同じになります。どちらの場合も、データは UART プロトコルを介してマイクロコントローラーに送信されるためです。 Bluetooth モジュールをボードに接続するための図を図に示します。 Arduino の RX ピンは TDX に、TX は RDX に、GND は GND に、5V は VCC に接続されています。
スケッチをアップロードするときは、Bluetooth モジュールを無効にする必要があります。無効にしないと、Arduino へのアクセス エラーが表示されます。 また、モジュールにデータを送信するには、Android OSをサポートするスマートフォンまたはタブレットにアプリケーションをインストールする必要があります。 アプリケーションをインストールした後、スケッチをダウンロードし、モジュールを Arduino ボードに接続する必要があります。 LED フラッシュのコード例:
整数型; void setup() ( Serial.begin(9600); pinMode(13, OUTPUT); // ピン 13 は LED であり、出力として宣言されています ) void loop() ( if (Serial.available()) // 送信されたコマンドをチェックします( val = Serial.read(); if (val == "1") (digitalWrite(13, HIGH);) // 1 で LED が点灯します if (val == "0") (digitalWrite(13, LOW) );) // 0 では LED がオフになります ) )
次に、電話とモジュール間の接続を設定する必要があります。 接続を確立するには、電話の設定に移動し、Bluetooth をオンにする必要があります。 デバイスが見つかったら、パスワード (通常は「1234」または「0000」) を入力する必要があります。 この後、アプリケーションに移動し、「Bluetooth に接続」ボタンをクリックして、目的のデバイスを選択する必要があります。 ペアリングが成功すると、モジュールの LED がゆっくりと点滅し始めます (約 2 秒に 1 回)。
スケッチでは、数字「1」と「0」を受信すると LED が点灯または消灯します。 数字に加えて、大文字と小文字が区別されるラテンアルファベットの文字も使用できます。
同様に、コンピュータを使用してモジュールに接続できます。 これを行うために、COM ポートに接続するさまざまなプログラムがあります。 プログラムが開始されると、ポート番号、速度、接続タイプが尋ねられます。 接続が成功すると、端末フィールドが画面に表示され、そこにキーボードから数字/文字を入力して LED を点灯させる必要があります。
既存のすべてのタイプの Bluetooth モジュールには独自の特徴がありますが、機能と操作は似ています。 モジュールの 1 つのタイプは Bluetooth HC 06 です。Arduino 側から見ると、モジュールは通常のシリアル インターフェイスのように見えるため、コンピュータ上のデバイスとの対話をすぐに確立できます。
モジュールの主な特徴:
モジュールには次の接点があります。
HC-06 モジュールはスレーブ モードでのみ使用されます。つまり、他の Bluetooth デバイスに独立して接続することはできません。 接続に関する「パスワード、データ転送速度」の設定はすべてATコマンドを使用して変更できます。
モジュールパッケージには接続ワイヤは含まれていません。
HC 05 および HC 06 モジュールは最もよく使用されており、他のモジュールよりも頻繁に販売されています。 これらのモジュールの動作原理は似ており、両方のモジュールは同じチップに基づいていますが、重要な違いもあります。 まず、HC 05 モジュールは、マスターとスレーブの両方として 2 つの動作モードで動作できます。
どちらのモジュールも 2 枚のはんだ付けされた基板です。 そのうちの 1 つはマイクロ回路が工場で取り付けられており、もう 1 つは自家製デバイスに必要で、標準ピッチ 2.54 mm の GPIO ピンと電圧安定器が装備されています。
HC-05モジュールは少し高価ですが、より便利な操作機能が付いています。
HC-05 モジュールのピン配置:
AT コマンドのデフォルトの送信レートは、HC-05 では 38400、HC-06 では 9600 です。重要な点は、HC-05 の AT コマンドの最後には CRLF 文字が必要であることです。
HC-05の主な特徴:
両方のモジュールの Arduino ボードへの接続は同じです。
ディバイダを使用してモジュールを接続するオプションは Arduino Nano 用に提供されていますが、Uno ボードでも機能します。
この記事では、最も一般的な Arduino モジュールのいくつかを接続して操作するためのオプションについて説明しました。 Bluetooth HC05、HC06。 これらのモジュールには特に問題はありません。ハードウェアまたはソフトウェア UART でピンに接続し、従来のライブラリ (ピン 0、1 に接続されたモジュールの場合はシリアル、他のモジュールに接続する場合はソフトウェア シリアル) を使用するだけです。
Bluetooth を Arduino プロジェクトに接続すると、他のデバイスとの通信能力が大幅に向上します。 コントローラーを再起動せずにセンサーの状態を監視し、システム パラメーターを変更できるようになります。 もちろん、Arduino を使用してロボットや車を簡単に作成し、スマートフォンから Bluetooth 経由で制御することもできます。 この記事を読んだ後に最初のプロジェクトを作成できることを願っています。
HC-05 Bluetooth モジュールは UART バス経由で接続し、AT コマンドを実行できます。 AT コマンドは、「AT」という文字で始まる文字列です(英語から) で注意 - 「注意」)。 モジュールは受信したコマンドを実行し、応答 (コマンドの結果) を送り返します。これも文字列です。 HC-05 Bluetooth モジュールでは、各コマンド (および応答) は改行文字「\r\n」で終わる必要があります。
HC-05 Bluetooth モジュールは、次のシリアル ポート パラメータが正しく設定されている場合にのみコマンドを受信できます。
Termite プログラムでこれらのパラメータを設定するには、「設定」ボタンをクリックします。 同じウィンドウでロシア語を設定できます。
Arduinoを使用する場合、「ツール」タブにポート番号が表示されます。 データ転送設定はデフォルトで使用されます。 NL および CR 文字を追加するには、シリアル モニターの右下隅にあるメニューを使用します。
電源を接続した後、またはモジュールを再起動した後、コマンドを送信する前に、モジュール ボタンを短く押す必要があります。 モジュールにボタンがない場合は、ピン K に短時間 High レベルを適用します。その後、モジュールは通常モードのままですが、AT コマンドを受け入れます。 通常モードに加えて、モジュールはATコマンドモードで動作することができます。 このモードに入る方法と通常モードとの違いについては、以下の注記セクションで説明します。
Bluetooth モジュールとの通信を確認するには、テスト コマンドを送信します。 で(テキストを入力してください で Enter キーを押します)。 接続が正しく確立されている場合、モジュールは応答します。 わかりました。 この後、他の AT コマンドを送信できます。
ターミナル プログラムで記号 CR & LF または NL & CR を追加するように指定されている場合、記号「\r\n」をコマンドに挿入する必要はありません。
コマンドは通常: AT+COMMAND\r\n 、クエリ: AT+COMMAND?\r\n 、または設定: AT+COMMAND=PARAMETER(S)\r\n です。
ATコマンド: | 答え: | 目的: | |
---|---|---|---|
で | で\r\n | OK\r\n | テストコマンド: モジュールとの通信を確認するために使用します。 |
リセット | AT+リセット\r\n | OK\r\n | モジュールのソフト リセット コマンド: モジュールは、短時間の停電後と同様に動作します。 |
バージョン | AT+バージョン?\r\n | +バージョン: バージョン\r\n OK\r\n |
モジュールファームウェアのバージョンをリクエストします: モジュールはバージョンを最大 32 バイトの文字列として返します。 応答例: +VERSION:hc01.comV2.1\r\n OK\r\n |
AT+ORGL | AT+ORGL\r\n | OK\r\n | ユーザー設定をリセットします。 モジュールは次の設定をリセットします。 CLASS=0、IAC=9e8b33、ROLE=0、CMODE=0、UART=38400,0,0、PSWD=1234、NAME=hc01.com。 |
アドレス | AT+アドレス?\r\n | +アドレス: 住所\r\n OK\r\n |
モジュールアドレスリクエスト: モジュールは、コロンで区切られたアドレス NAP:UAP:LAP の 3 つの部分を返します。 各部分は 16 進数で構成されます。 応答例: +ADDR:1234:56:789ABC\r\n OK\r\n |
名前 | AT+名前?\r\n | +名前: 名前\r\n OK\r\n |
モジュール名のクエリ/設定: モジュール名は最大 32 バイトの文字列で表されます。 応答例: +NAME:iArduino\r\n OK\r\n インストール例: AT+NAME=iArduino\r\n 一部のモジュールは、モジュール ボタンが押されたとき、または K 入力が High のときにのみ AT+NAME?\r\n コマンドに応答します。 |
AT+名前=名前\r\n | OK\r\n | ||
RNAME | AT+RNAME?住所\r\n | +R名: 名前\r\n OK\r\n |
見つかった Bluetooth デバイスの名前を要求します。 アドレスはスペースの後に入力され、アドレスの各部分 (NAP、UAP、LAP) はカンマで区切られます。 モジュールは、アドレスがリクエストに含まれていた、カバレッジ エリア内で見つかった Bluetooth デバイスの名前を返します。 クエリ例: AT+NAME? 1234.56.789ABC\r\n 応答例: +RNAME:iArduino\r\n OK\r\n |
役割 | AT+ロール?\r\n | +役割: 役割\r\n OK\r\n |
モジュールの役割を要求/設定します: モジュールの役割は番号で表されます。 サイクル内の 0 - スレーブ、1 - マスター、2 - スレーブ*。 答えの例: +ROLE:1\r\n インストール例: AT+ROLE=0\r\n |
AT+役割=役割\r\n | OK\r\n | ||
クラス | AT+クラス?\r\n | +クラス: タイプ\r\n OK\r\n |
デバイスタイプのクエリ/設定: デバイス タイプは 32 ビットの数値で表され、これによってモジュールの目的 (Bluetooth キーボード、Bluetooth マウス、ヘッドセットなど) を判断できます。 設定例:AT+CLASS=0\r\n |
AT+クラス=タイプ\r\n | OK\r\n | ||
IAC | AT+IAC?\r\n | +IAC: コード\r\n OK\r\n | GIAC 共有アクセス コードのリクエスト/設定: コードは 32 ビットの数値として表され、Bluetooth デバイスの検出に使用されます。 マスターの役割では、このコードを使用して、モジュールは他の Bluetooth デバイスにアクセスして検索 (問い合わせ) し、スレーブの役割では、このコードを使用して、他の Bluetooth デバイスからモジュールをポーリングするためのアクセスが提供されます。マスターたち。 応答例: +IAC:9e8b33\r\n OK\r\n インストール例: AT+IAC=9e8b33\r\n |
AT+IAC=コード\r\n | OK\r\n または 失敗しました\r\n |
||
INQM | AT+INQM?\r\n | +INQM: モード,コル,時間\r\n OK\r\n |
モジュールポーリングモードのクエリ/設定: 使用するパラメータは、他の Bluetooth デバイスの検索コマンド (ポーリング) の設定です。 - 検索モードは数値で表されます。 0-標準、1-信号強度による検索。 - 数量は、検出される Bluetooth デバイスの最大数を決定する数値で表され、その数を超えると検索を停止する必要があります。 - 検索時間は、検索が停止するまでのタイムアウトを設定します。 実際の検索時間 (秒) は、指定した数値に 1.28 を乗算したものと等しくなります。 応答例: +INQM:1,1,48\r\n OK\r\n インストール例: AT+INQM:1,1,48\r\n |
AT+INQM=モード、カウント、時間\r\n | OK\r\n または 失敗しました\r\n |
||
PSWD | AT+PSWD?\r\n | +PSWD: コード\r\n OK\r\n |
PIN のリクエスト/設定: アクセスコードは最大 16 バイトの文字列として表されます。 スレーブの役割のモジュール コードは、現在のモジュールへのアクセス パスワードです。 マスターデバイスとしてのモジュールコードは、外部 Bluetooth デバイスへのアクセスパスワードです。 応答例: +PSWD:1234\r\n OK\r\n インストール例: AT+PSWD=1234arduino\r\n |
AT+PSWD=コード\r\n | OK\r\n | ||
UART | AT+UART?\r\n | +UART: スコル,停止,証明\r\n OK\r\n |
UART 速度のクエリ/設定: 速度はビット数/秒で表されます ストップ ビットは数字で表されます: 0 - 1、1 - 2 チェックは数値で表されます: 0 - チェックなし、 1 - 奇数パリティ チェック、2 - 偶数パリティ チェック。 応答例: +UART:38400,0,0\r\n OK\r\n インストール例: AT+UART=38400,0,0\r\n |
AT+UART=速度、停止、確認\r\n | OK\r\n | ||
CMODE | AT+Cモード?\r\n | +CMOD: モード\r\n OK\r\n |
接続モードの要求/設定: モードは数値で表されます。 0 - モジュールはマスターとして、AT+BIND コマンドでアドレスが指定された Bluetooth デバイスにのみ接続します。 1 - モジュールはマスターとして任意の Bluetooth スレーブ デバイスに接続します。 2 - スレーブとしてのモジュールはサイクルで動作します* 応答例: +CMOD:0\r\n OK\r\n インストール例: AT+CMOD=1\r\n |
AT+Cモード=モダンな | OK\r\n | ||
練る | AT+バインド?\r\n | +バインド: 住所\r\n OK\r\n |
固定アドレスをリクエスト/設定します。 モジュールがマスターの役割 (ROLE=1) にあり、固定アドレスへの接続モードが設定されている場合 (CMODE=0)、このコマンドでアドレスが指定された Bluetooth デバイスにのみ接続します。 アドレスの一部を入力します。設定時はカンマで区切られ、返信時はコロンで区切られます。 応答例: +BIND:1234:56:789ABC\r\n OK\r\n インストール例: AT+BIND=0,0,0\r\n |
AT+バインド=住所\r\n | OK\r\n | ||
ポーラー | AT+ポーラー?\r\n | +極性: ログ,ログ\r\n OK\r\n |
LED をオンにするアクティブなロジック レベルをクエリ/設定します。 極性は、アクティブな論理レベルに対応する数値 0 または 1 で表されます。 1 番目のパラメータは PIO8 端子に接続された LED (動作モードを表示) を点灯するための論理レベルを指定し、2 番目のパラメータは PIO9 端子に接続された LED (接続状態を表示) を点灯するための論理レベルを指定します。 回答例: +POLAR:1,1\r\n OK\r\n インストール例: AT+POLAR=1,1\r\n |
AT+極=ログ、ログ\r\n | OK\r\n | ||
PIO | AT+PIO=番号、レベル\r\n | OK\r\n | PIO ロジック レベルの設定: PIO ピンのロジック レベルを設定できます。 ピン番号は 8 と 9 を除く 2 ~ 11 の数字で表されます。レベルは 0 または 1 の数字で表されます。 インストール例:AT+PIO=11.0\r\n |
MPIO | AT+MPIO?\r\n | +MPIO: 番号\r\n OK\r\n |
PIO ロジック レベルのクエリ/設定: すべての PIO ピンのロジック レベルを一度に確認または設定できます。 レベルは 16 進数で表され、各ビットが PIO 端子のレベルに対応します。 応答例: +MPIO:1F0\r\n OK\r\n インストール例: AT+MPIO:CFC\r\n |
AT+MPIO=番号\r\n | OK\r\n | ||
IPSCAN | AT+IPSCAN?\r\n | +IPSCAN: あ,B,で,G\r\n OK\r\n |
IP スキャン パラメータを要求/設定します。 A - スキャン間隔 B - スキャン期間 B - ページ間隔 G - ページ数 応答例: +IPSCAN:1024,512,1024,512\r\n OK\r\n インストール例: AT+IPSCAN:1024,512,1024,512\r\n |
AT+IPSスキャン= A、B、C、D\r\n | OK\r\n | ||
匂いを嗅ぐ | AT+スニフ?\r\n | +匂いを嗅ぐ: あ,B,で,G\r\n OK\r\n |
省エネモードのパラメータを要求/設定します。 A - 最大時間 B - 最小時間 B - 繰り返し周期 G - タイムアウト 応答例: +SNIFF:0,0,0,0\r\n OK\r\n インストール例: AT+SNIFF=0,0,0,0\r\n |
AT+スニフ= A、B、C、D\r\n | OK\r\n | ||
アンスニフ | AT+エンスニフ=住所\r\n | OK\r\n | 省エネモードへの切り替え: コマンド例: AT+ENSNIFF=1234,56,789ABC\r\n |
エクススニフ | AT+EXSNIFF=住所\r\n | OK\r\n | 省エネモードを終了する: アドレスの一部をカンマで区切って入力します (NAP、UAP、LAP) コマンド例: AT+EXSNIFF=1234,56,789ABC\r\n |
センム | AT+SENM?\r\n | +SENM: 秘密,暗号\r\n OK\r\n |
セキュリティパラメータのクエリ/設定: プライバシー モードは次の数字で表されます。 0 - 無効 1 - 安全でない接続 2 - サービスレベルでの保護 3 - 接続レベルの保護 4 - 不明モード 暗号化モードは数値で表されます。 0 - 暗号化なし 1 - PTP トラフィックのみが暗号化されます 2 - すべてのトラフィックが暗号化されます 応答例: +SENM:0,0\r\n OK\r\n インストール例: AT+SENM:0,0\r\n |
AT+SENM=秘密、暗号\r\n | OK\r\n | ||
PMSAD | AT+PMSAD=住所\r\n | OK\r\n | ペアリング リストからデバイスを削除するには: Bluetooth デバイスをリストから削除すると、そのデバイスに接続するために再ペアリングする必要があります。 削除するデバイスのアドレスの一部をカンマ区切りで入力します(NAP、UAP、LAP) コマンド例: AT+PMSAD=1234,56,789ABC\r\n |
RMAAD | AT+RMAAD\r\n | OK\r\n | ペアのリストからすべてのデバイスを削除します。 このリストをクリアすると、Bluetooth デバイスに接続するためにそのデバイスと再ペアリングする必要があります。 |
FSAD | AT+FSAD=住所\r\n | OK\r\n または 失敗しました\r\n |
ペアのリストでデバイスを検索します。 指定されたアドレスを持つ Bluetooth デバイスがリストにある場合、モジュールは OK\r\n を返し、それ以外の場合は FAIL\r\n を返します。 アドレスの一部をカンマで区切って入力します (NAP、UAP、LAP) リクエストの例: AT+FSAD=1234,56,789ABC\r\n |
ADCN | AT+ADCN?\r\n | +ADCN: 量\r\n OK\r\n |
ペアのリスト内のデバイスの数をクエリします。 マスターとスレーブのペアが形成されると、そのペアに関するデータが自動的にペアのリストに追加され、その後の接続では (停電後であっても) ペアを再確立する必要はありません。 応答例: +ADCN:10\r\n OK\r\n |
MRAD | AT+MRAD?\r\n | +MRAD: 住所\r\n OK\r\n |
ペアのリストからデバイス アドレスを要求します。 モジュールは、最後に正常に接続されたペアのリストから Bluetooth デバイスのアドレスを返します。 アドレスの一部はコロンで区切られます (NAP:UAP:LAP) 応答例: +MRAD:1234:56:789ABC\r\n OK\r\n |
州 | AT+状態?\r\n | +状態: 状態\r\n OK\r\n |
モジュールステータスのクエリ: モジュールは現在の状態を文字列として返します。 INITIALIZED - 初期化 準備完了 - 準備完了 PAIRABLE - ペア形成 PAIRED - カップルが形成されます お問い合わせ - リクエスト 接続中 - 接続 接続済み - 接続済み 切断済み - 切断されました NUKNOW - 不明な状態 応答例: +STATE:CONNECTED\r\n OK\r\n |
初期化 | AT+初期化\r\n | OK\r\n または 失敗しました\r\n |
SPP プロファイルの初期化: SPP プロファイルはシリアル ポートをエミュレートします。 |
INQ | AT+INQ\r\n | +INQ:アドレス、タイプ、信号\r\n +INQ:アドレス、タイプ、信号\r\n ... +INQ:アドレス、タイプ、信号\r\n |
Bluetooth デバイスを検索 (ポーリング) します。 モジュールは範囲内の Bluetooth デバイスを検索し、見つかった各モジュールを新しい行に表示します。 検索 (質問) モードは AT+INQM コマンドで設定され、質問コードは AT+IAC コマンドで設定され、検索されるデバイスのタイプは AT+CLASS コマンドで示されます。 検索は、検出された Bluetooth デバイスの最大数に達するか、タイムアウトに達するか、または AT+INQC コマンドによって終了します。 回答例: +INQ:1234:56:789ABC,240404,7FFF |
INQC | AT+INQC\r\n | OK\r\n | Bluetooth デバイスの検索 (ポーリング) を終了します。 AT+INQ コマンドによって開始された Bluetooth デバイスの検索を予定より早く終了します。 |
ペア | AT+ペア=アドレス、タイムアウト\r\n | OK\r\n または 失敗しました\r\n |
Bluetooth デバイスとペアリングします。 Bluetooth デバイスのペアリングまたはペアリングは、マスター デバイスによって開始されます。 タイムアウトは秒単位の 10 進数で指定します。 ペアが作成されると、そのペアに関する情報がペアのリストに自動的に記録され、モジュールは OK と応答します\r\n。AT+LINK コマンドを使用して Bluetooth デバイスに接続できるようになります。 ペアが作成されていない場合 (たとえば、PIN コードが一致しないか、タイムアウトになった場合)、モジュールは FAIL\r\n で応答します。 コマンド例: AT+PAIR=1234,56,789ABC,10\r\n |
リンク | AT+リンク=住所\r\n | OK\r\n または 失敗しました\r\n |
Bluetooth デバイスに接続します。 このコマンドを実行すると、接続されているBluetoothデバイスと通信できるようになります。 このコマンドは、リーダーとしてモジュールで使用できます。 コマンド例: AT+LINK=1234,56,789ABC\r\n |
ディスク | AT+ディスク\r\n | +ディスク: 結果\r\n OK\r\n |
Bluetooth デバイスから切断します。 このコマンドは、接続が確立されている Bluetooth デバイスから切断するようにモジュールに指示します。 Bluetooth デバイスを切断すると、そのデバイスに関する情報がペアのリストに保存されます。 このデバイスに再度接続する必要がある場合、ペアリングは必要ありません (Bluetooth デバイスがペアのリストから意図的に削除されない限り)。 コマンドを実行すると、モジュールは実行結果を返します。 成功 - 成功 LINK_LOSS - 接続が失われました NO_SLC - SLC なし TIMEOUT - タイムアウトが経過しました エラー - エラー 応答例: +DISC:SUCCESS\r\n OK\r\n |
* ループ内のスレーブ- これはモジュールのスレーブの役割であり、マスターから受信したすべてのものを送り返します。
** モジュールは、モジュール ボタンが押されたとき、またはピン K に High レベルがあるときのみ、一部のコマンドに応答します。
モジュールが知らないコマンド、実行できないコマンド、またはコマンドの引数が正しくないコマンドを送信すると、モジュールは文字列「ERROR:(」を返します。 番号)」、指定された 16 進数によって、モジュールが何を「宣誓」するかを決定できます。
エラー番号 | エラーの説明 |
---|---|
0 | 無効なATコマンド(そのようなコマンドはありません) |
1 | デフォルトの結果 |
2 | パスワードの保存中にエラーが発生しました |
3 | デバイス名が長すぎます (32 バイトを超えています) |
4 | デバイス名が指定されていません |
5 | NAP アドレスの一部が長すぎます (16 進数が 4 桁を超えています) |
6 | UAPアドレス部分が長すぎます(16進数2桁以上) |
7 | アドレスのLAP部分が長すぎます(16進数で6桁を超えています) |
8 | PIOポートマスクが指定されていません |
9 | PIO ピン番号が指定されていません |
あ | デバイスタイプ(クラス)が指定されていません |
B | デバイスタイプ(クラス)が長すぎます |
C | 一般的な IAC アクセスコード (Inquire Access Code) は指定されていません |
D | IAC(アクセスコード照会)が長すぎます |
E | 無効な問い合わせアクセス コードです |
F | パスワードが指定されていません (またはパスワードが空です) |
10 | パスワードが長すぎます(16バイト以上) |
11 | 無効なモジュールの役割 |
12 | 無効なボーレート |
13 | 無効なストップビットサイズです |
14 | 無効なパリティビット設定 |
15 | デバイスがペアリスト (ペアリングされた Bluetooth デバイスのリスト) にありません |
16 | シリアル ポート プロファイル (SPP) が初期化されていません |
17 | SPPプロファイル(SPP、シリアルポートプロファイル)の再初期化 |
18 | 無効な Bluetooth デバイスのポーリング モードです |
19 | ポーリング時間が長すぎます |
1A | Bluetooth デバイスのアドレスが指定されていません |
1B | 無効なセキュリティ モード (機密) |
1C | 無効な暗号化モード |
モジュールの電源が入った(電源が供給された)瞬間に、ボタンを押すか、K 入力にハイレベルを適用すると、モジュールは AT コマンドモードに切り替わります。 このモードでは、モジュールは他のモジュールと接続しませんが、このモードの速度は 38400 bps に固定されています。 セットアップ中に、モジュールの通常の動作モードでモジュールの速度を決定できなかった場合は、このモードに入り、新しい速度を設定できます。 新しく設定された速度は通常モードでのみ有効です。これを行うには、ボタンを押したままにせず、スイッチをオンにした瞬間に K 入力に高レベルを適用せずにモジュールを再起動する必要があります。 通常モードでは、電源投入後 (または再起動後) 0.5 秒以内に、ボタンを短く押すか、モジュールの K 入力に短期間の高レベルを印加する必要があることに注意してください。そうしないと、AT が受け入れられません。コマンド。
プログラムでボタンを「押す」ことができるようにしたいが、モジュールに K ピンがない場合は、次のコマンドを使用します。 AT+PIO=11、レベル\r\n ここで、レベルは、設定された論理レベルに対応する数値 1 または 0 で表されます。 ( AT+PIO=11.0\r\n - ボタンを放した , AT+PIO=11.1\r\n - ボタンが押されました)。
一部のモジュールには、電源を制御し、Vcc に接続される En ピンがあります。 En ピンに Low 論理レベルが適用されると、チップへの電源がオフになります。 このピンを使用して、プログラムで AT コマンド モードに入ることができます。 En ピンから Low レベルを除去した直後にコマンド AT+PIO=11,1\r\n を発行すると、これはボタンを押してモジュールをオンにするのと同じになります。
再起動後 0.5 秒以内に (コマンドを使用して) AT+リセット\r\n ) ボタンを短く押すか、モジュールの K 入力に短期間の高レベルを適用する必要があります。そうしないと、モジュールは新しい AT コマンドを受け入れません。
主導的な役割を持つモジュールが、名前ではなくアドレスによってスレーブ モジュールに接続されている場合、この (スレーブ) モジュールのアドレスは、AT+ADDR?\r\n コマンドを実行することで見つけることができます。
プロジェクトでは、電話機からのリモート制御やデータ転送が必要になることがよくあります。
Bluetooth を介したデータ交換の最も一般的で広く普及している方法の 1 つ .
今日は Bluetooth の接続方法の簡単な例を見ていきます。 モジュールを Arduino に接続し、携帯電話からリモート制御を設定します。
必要なものは次のとおりです。
Bluetoothを接続する Arduino マイクロコントローラーへのモジュールは、MALE-MAMALE 配線を使用するのが最も便利です。
Arduino | ブルートゥース |
---|---|
ピン 1 (TX) | RXD |
ピン0 (RX) | テキサス州 |
GND | GND |
5V | VCC |
注意してください、接続する必要があります テキサス州 -> RXD ,処方箋 -> テキサス州 .
次に、プログラムのテスト コードを書き留める必要があります。
スケッチをロードするときは、Bluetooth モジュールが Arduino マイクロコントローラーから切断されている必要があります。 そうしないと、Bluetooth での接続が切断されるため、スケッチは記録されません。 モジュールは、USB と同じ RX および TX ポートを介して通信します。
整数型; int LED = 13; void setup() ( Serial.begin(9600); pinMode(LED, OUTPUT);digitalWrite(LED, HIGH); ) void loop() ( if (Serial.available()) ( val = Serial.read(); / / 文字が「1」の場合、LED が点灯します if (val == "1") (digitalWrite(LED, HIGH); ) // 文字が「0」の場合、LED が消灯します if (val == "0") (digitalWrite(LED, LOW ); ) ) )
スケッチが記録され、Bluetooth が使用された後 モジュールが Arduino に接続されたら、次のステップに進むことができます。
Arduinoの電源としてUSBではなく、外部9V電源を使用することをお勧めします。
次に、Bluetooth ターミナルを携帯電話にダウンロードする必要があります。 Android プラットフォームの例を見ていきます。
異なる Bluetooth 端末をインストールできます。原則として、設計が異なるだけであり、機能は変わりません。 iOS 製品用のターミナルも見つかります。
ターミナルをインストールしたら、ターミナルを起動し、Bluetooth モジュール HC-06 を選択して接続します。
プロジェクトを実際に試してみましょう。 端末に数字「0」を書き込んで送信します。 Arduino ボード上のピン 13 の隣にある LED L が消灯するはずです。 ここで、端末を介して数字「1」を送信すると、L LED が点灯するはずです。
作品のデモンストレーション:
宿題:
異なるデバイス間で近距離で情報をワイヤレスで交換するには、Bluetooth テクノロジを使用できます。 これらの目的のために、中国の業界はさまざまな Bluetooth モジュールを製造しており、その中で HC-05 および HC-06 モデルが広く普及しています。 かつて、私は Aliexpress で HC-06 を購入しました。これでさらなる実験を行い、中国製の Arduino に接続します。
直接 Bluetooth モジュール自体。 この形状では、基板に直接はんだ付けされるため、さまざまなデバイスで使用できます。 このモジュールには 34 個のピンがあり、UART 経由でコンピュータに接続するためのピン、PCM (パルス コード変調) 方式を使用したオーディオ送信、アナログ入出力、USB コネクタに接続するためのピン、SPI インターフェイス、および一般的なピンが含まれます。目的のポート。 実際、これらのピンのすべてが使用できるわけではありません。オーディオ送信ピン (5 ~ 8)、アナログ入力および出力 (9、10)、および USB に接続するための接点グループ (15、10) にアクセスできます。 20) ブロックされています。
HC-06 は、Bluetooth V2.0 仕様の BC417 チップ (BlueCore4-外部デバイス) 上に構築されています。 26 MHz クォーツと 8 MB フラッシュ メモリも搭載されています。 電源は3.3Vから供給されます。
設計には、接続に必要な接点が表示されるブレッドボード付きのモジュールを使用するのが最も便利です。また、5 ボルトから電力を供給できる電圧安定器もあります。
このようなモジュールを購入する場合、異なるマーキングが表示される場合があります。 基本的に、これは同じデバイスですが、モジュール モード (マスター/スレーブ) を決定するファームウェアが異なります。
HC-05 と HC-06 の違いは、HC-05 はマスターまたはスレーブとして使用できることです。 これらのモードは AT コマンドを使用して設定されます。 モジュール基板上のボタンでATコマンド入力モードに切り替わります。 マスターモードでは、モジュールがそのようなデバイス自体を検出し、それとの通信を組織することができます。 HC-06 モジュールは 1 つの固定スレーブ モードでのみ動作できます。
HC-03、HC-04というモデルもありますが、こちらは工業用として生産されています。
HC-06基板上の接点の指定。
州- モジュールのステータスを確認します。 このピンは、ボードに組み込まれた LED によって表示される信号を複製します。 非常に速く点滅する場合、モジュールはアクティブ状態にあります。 通信モードでは、電流は 30 ~ 40 mA です。 モジュールが別のデバイスとの通信を確立すると、LED が点灯するだけです。 データ転送モードでは、電流は 8 mA です。
処方箋- データ受信中。
テキサス州- データ転送。
GND- アースに接続します。
+5V- 電源 +5 ボルト
JP- モジュールのオン/オフを切り替えます。 この接点に論理 1 (5 ボルト) を適用すると、モジュールはオフになります。論理 0 を適用するか、この接点に接続しないと、モジュールは動作します。
デフォルトでは、HC-06 には他のデバイスによる検出用の名前が付いています。 HC-06"、PINコード付き" 1234 ».
このデータを変更するには、モジュールをコンピュータに接続し、ターミナル プログラムを使用して AT コマンドを入力する必要があります。 これは、TTL レベルの USB - COM アダプタを使用して実行できます。 これらの目的には、PL2303HX、CH340G、またはその他の同様のアダプターが適しています。 この時点までに、USB アダプターのドライバーがコンピューターにすでにインストールされているはずです。
次のように連絡先を接続します。
HC-06 | USB - COMアダプター |
+5V | +5V |
GND | GND |
処方箋 | テキサス州 |
テキサス州 | 処方箋 |
このアセンブリをコンピュータに接続すると、Bluetooth モジュール ボード上の赤い LED が速く点滅し始めます。 AT コマンドを入力するには、任意のターミナル プログラムを使用できます。私はこの目的で Arduino IDE を使用します。
設定で、USB アダプターが接続されている仮想 COM ポートの番号を選択します。私の場合は COM44 です。 窓を開けましょう」 シリアルポートモニター».
コマンドは大文字で入力してください。 で"、デバイスが正常に接続された場合、応答が返されるはずです。" わかりました」 デフォルトのデータ交換レートは 9600 ボーです。
ファームウェアのバージョンを確認するには、コマンド「 AT+バージョン「私の場合は答えが返ってきました」 OKlinvorV1.8».
チーム " AT+NAMEyyy"、 どこ おお- ラテン語の任意の文字セット。Bluetooth デバイス モジュールが検索される名前を変更できます (デフォルトでは HC-06)。 私の例では、「」と入力しました。 AT+NAMEフォックス」とレスポンスが返ってきます OKセット名.
チーム " AT+PINxxxx"、 どこ xxxx– ランダムな数字のセット。PIN コード (デフォルトは 1234) を変更できます。 答えは返ってくるよ」 OKsetPIN».
チーム " AT+BAUDx"、 どこ バツ– 1 ~ 9 の値で、ボーレートを変更できます (デフォルトは 9600)。
1 - 1200
2 - 2400
3 - 4800
4 - 9600
5 - 19200
6 - 38400
7 - 57600
8 - 115200
9 - 230400
たとえば、「」コマンドを実行すると、 AT+ボー8"、8 は 115200 ボーの速度で、応答が返されます。" OK115200».
HC-06をArduinoに接続します。
例1.スケッチを Arduino にアップロードして、Bluetooth モジュールを介して、Arduino のピン 13 にはんだ付けされた LED をオンまたはオフにします。
int データ; int LED = 13; void setup() { シリアル.begin(9600); pinMode(LED, 出力); デジタル書き込み(LED、HIGH); } ボイドループ() { if (Serial.available()) { データ = Serial.read(); if (データ == "1") { デジタル書き込み(LED、HIGH); } if (データ == "0") { デジタル書き込み(LED、LOW); } } } |
ボード上にこの LED がない場合は、図に従ってピン 13 に接続します。抵抗値は 220 オームから 1 kオームの範囲で選択できます。
Arduino の電源を切り、HC-06 を接続します。 接触 テキサス州モジュールを接点に接続します 処方箋 Arduino (UNO ボードのピン 0)、およびピン 処方箋、 連絡する テキサス州(ピン1)。 連絡先 +5Vそして GND、対応するArduinoピンに接続します。
組み立てられた構造。 Arduino に電力が供給されると、HC-06 の LED が素早く点滅します。
コンピューターを使用してHC-06経由でArduinoを制御します。
Windows XP での例を示します。 USB Bluetooth アダプターはコンピューターに接続され、ドライバーがインストールされている必要があります。
私の場合はこのアダプターを使用しました。
PC に接続すると、対応するアイコンがトレイ (時計の近く) に表示されます。
このアイコンを右クリックして「 Bluetooth デバイスを追加する».
スイッチを設定してください」 デバイスはインストールされており、検出できる状態になっています「」をクリックして「」 さらに遠く».
Bluetooth モジュールは、前に変更した新しい名前で、検出されたデバイスのリストに表示されます。 それを選択して「」をクリックします さらに遠く».
次のウィンドウで、「」を選択してモジュールに接続するための PIN コードを入力します。 ドキュメントのアクセス キーを使用します。». デフォルトは「1234」です「9999」に変更しました。 クリック " さらに遠く».
Bluetooth モジュールがコンピュータと正常に通信したことが、対応するウィンドウに表示されます。 2 つの Bluetooth デバイス間で接続が形成されると、コンピュータ上に 2 つの新しい仮想 COM ポートが作成され (デバイス マネージャーに表示されます)、1 つは送信データ用、もう 1 つは受信データ用であることに注意してください。 送信データ用のポートが必要になります。私の場合は COM45 です。
もう一度ターミナル プログラムを開いてみましょう。Arduino IDE を使用します。 設定で、送信ポート (COM45 を使用) を選択し、「」を開きます。 シリアルポートモニター"、コマンドを入力してください" 1 " そして " 0 」 コマンド「1」のときLEDが点灯し、「0」のとき消灯します。
スマートフォンを使ってHC-06経由でArduinoを制御します。
おそらく、最新のスマートフォンにはすでに Bluetooth が組み込まれています。 残っているのはターミナル プログラムをインストールすることだけです。 私の場合は使用していました ルミア640DS、インストール済み Windowsモバイル10。 ターミナルプログラムとして「」を使用します。 Android スマートフォンでも同様に使用できます。 Bluetooth端子».
Apple スマートフォンの所有者は、Bluetooth モジュール HC-05 および HC-06 (Bluetooth V2.0) を使用することはできません。BLE (Bluetooth Low Energy) テクノロジー、Bluetooth 4.0 仕様のアダプターを使用する必要があります。 。 代表的なものは HM-10 モジュールです。
HC-06とスマートフォンのBluetoothをペアリングします。
1.「」で パラメーター» スマートフォンで項目を選択 « デバイス».
2.次へ」 Bluetooth およびその他のデバイス».
3. スマートフォンの Bluetooth スライダーをオンにして、「」をクリックします。 プラス二乗» 新しい Bluetooth デバイス (この場合は HC-06) を検索して追加します。
4.セクション「 デバイスを追加"選択する ""。
5. スマートフォンはエリア内の Bluetooth デバイスを検索し、その名前を表示します。 私の例では、HC-06 モジュールが見つかり、名前を「」に変更しました。 キツネ».
6. 接続しているデバイスのPINコードを入力し、「」ボタンを押します。 接続する».
ターミナル プログラム「」をインストールして起動します。 スマートフォンに接続されているHC-06モジュールがリストに表示されるので選択します。
コマンドを入力する欄と送信ボタンが表示されます。 交互に入力してください」 1 " そして " 0 」そしてピン 13 の LED が点灯したり消えたりするのを観察してください。
例 2。 3 つの LED を Arduino に接続し、HC-06 Bluetooth モジュール経由で制御してみます。
LED をピン 9、11、13 に接続しました。他のピンを使用する場合は、スケッチで示す必要があります。
int データ; int LED1 = 9; int LED2 = 11; int LED3 = 13; void setup() { シリアル.begin(9600); ピンモード(LED1、出力); ピンモード(LED2、出力); ピンモード(LED3、出力); デジタル書き込み(LED1、HIGH); デジタル書き込み(LED2、HIGH); デジタル書き込み(LED3、HIGH); } ボイドループ() { if (Serial.available()) { データ = Serial.read(); if (データ == "1") { デジタル書き込み(LED1、HIGH); } if (データ == "2") { デジタル書き込み(LED1、LOW); } if (データ == "3") { デジタル書き込み(LED2、HIGH); } if (データ == "4") { デジタル書き込み(LED2、LOW); } if (データ == "5") { デジタル書き込み(LED3、HIGH); } if (データ == "6") { デジタル書き込み(LED3、LOW); } } } |
スケッチをアップロードするときは、コンピューターと Bluetooth の両方が UART 経由で動作するため、HC-06 モジュールを Arduino から切断する必要があります。 Arduino は 1 つの UART 上で複数のデバイスを動作させることはできません。
ターミナル プログラムを起動し、スケッチを実際に動作させてみます。 LED 制御の意味は次のとおりです。LED が 3 つあり、それぞれがオンまたはオフになります。 結果的に6チームになりました。 チームは 1 から 6 までの番号です ( 1, 3, 5 - LED 1、2、3 を点灯します。 2, 4, 6 -返済するため)。 数字は一度に 1 つずつ入力することも、組み合わせて入力することもできます。 例えば: 145 - 最初に点灯し、2 番目に消灯し、3 番目に点灯します。
例 3。 記事「」のリレーモジュールをArduinoに接続し、Bluetooth経由で強力な負荷を制御してみます。 本質的には、「スマートソケット」ができることになります。 さまざまな負荷 (電球、ポンプ、ファン) をリレー モジュールに接続し、リモートで制御できます。
この例のスケッチは間もなく公開されます。
Arduino には、マイクロコントローラーの機能を大幅に拡張できるさまざまなモジュールが多数あります。 別のクラスには、ワイヤレス インターネットを介した通信などの長距離でのデータ送信と、Bluetooth モジュールなどの短距離でのデータ送信用のチップが含まれています。 このようなデバイスは、同じ名前のプロトコルを使用して双方向無線通信を確立することを目的としています。
Arduino Bluetooth はマイコンベースのデバイスをリモート制御するのに便利ですが、それが何なのか、また Bluetooth モジュール hc 05 および hc 06 の特徴を見てみましょう。
Bluetooth プロトコルは、短距離での高速データ転送に必要です。 しかし、より多くの場合、近距離からマイクロコントローラーの制御を確立するためにプロジェクトで使用されます。 したがって、同じスマートホームを構築する場合には、ハードウェア部分をスマートフォン上のアプリケーションで補完すると便利です。
したがって、Arduino Bluetooth の主な目的は、適切なプロトコルを使用して PC や Android と通信することです。 これにより、マイクロコントローラー上のさまざまなセンサーを制御できるだけでなく、必要に応じてファームウェアを更新することもできます。
これを使用してデバイスを完全に再フラッシュすることはできません。 さらに、Android Arduino Bluetooth は、複数のマイクロコントローラーとデバイス間の通信を提供できます。 当然のことながら、このためには、それぞれに独立したモジュールをインストールする必要があります。 HC-05 を使用すると、USAR-bluetooth-USART タイプを使用して複数の橋を敷設できます。 この場合、デバイス自体は USART に応答していると認識されます。 そして、コミュニケーションはプロジェクトのハードウェアによって組織されます。
Arduino の Bluetooth モジュールには、他のマイクロコントローラーの標準アドオンに比べていくつかの利点があります。
RC カー Arduino Bluetooth の応用範囲は広大であり、あなたの想像力によってのみ制限されます。 たとえば、普通の中華製ヘッドセットを購入し、Arduino 用のモジュールをいくつかはんだ付けして、MK がなくても機能するので、既製のライブラリの 1 つをロードすることができます。 このような操作の後、ヘッドフォンをワイヤレスで使用できるようになり、ワイヤーのもつれや曲がりの問題はなくなります。 これは、このプロトコルをプロジェクトに実装する際のありふれた問題の 1 つであり、実際には何千もの問題があります。
Bluetooth オーディオ モジュールは、その特性により家庭用および商用使用を目的としています。 将来的に同じ名前のプロトコルを使用して PC と通信する予定がある場合、ほとんどの最新のデバイスでは USB 経由で Bluetooth を購入する必要があることも考慮する価値があります。 ただし、MK からはんだ付けして、コンピューター用の独自の Bluetooth モジュールを作成することもできます。 当然のことながら、これは同じ名前の送信機がインストールされているラップトップには当てはまらず、いかなる方法でも変更する必要はありません。
ボード上のピンは次の役割を果たします。
このようなBluetoothモジュールがPCやさまざまなプロジェクトに対してどのような特徴を持っているかを詳しく見てみましょう。 開発者自身は、hc 05 の商用基準を満たしていると主張しています。したがって、デバイスを制御するには、センサーからのデータを送受信できるスマートフォンまたはコンピューター上の特別なプログラムで十分です。 ただし、アンプを使用せずに安定した信号をキャッチできるのはチップから 9 メートルだけであるため、アプリケーション分野には制限があります。 これらは生の数値であり、波の進路上の障害物は考慮されていないことに注意してください。
hc チップ自体は、SPP をサポートするアダプターと完全に互換性があります。 デバイスの基板自体には小さなアンテナがあり、ヘビのようなトラックの形で最上層にはんだ付けされています。 装置の特徴は次のように述べられています。
プリント基板には、デバイスの端にいくつかのはんだ接点があります。 ただし、ワイヤをデバイスの接点に直接接続しないでください。ボードには、デバイスの寸法をシステムにできるだけコンパクトに収めることができる特別なテクノロジーが使用されているためです。
モジュールは十分にしっかりと取り付ける必要があり、標準の MK またはプラグ コネクタを使用する特殊なボードが適しています。 ただし、hc シリーズ デバイス用に別のボードを購入することも、電子ボードを設計および作成するスキルがある場合は自分で作成することもできます。
このようなデバイスには、接続コネクタ/配線用の特別な穴、および電流が流れているかどうか、およびデバイスが動作しているかどうかを判断するのに役立つ LED が必要です。 とりわけ、スタビライザー、ファームウェアをリセットするための特別なスイッチ、およびご要望に応じてインターフェースコンバーターが必要です。
初めて接続するときは、スマートフォンまたは PC がこれに適しているかどうかを確認することが重要です。 モジュールに電流を流して、適切なデバイスでスキャンするだけです。
チップを構成するには、USART-Bluetooth 経由でペアリングを確立する必要があります。ピン 34 は共通のワイヤに接続されます。 この後、必要に応じて、標準の AT コマンドを発行したり、マイクロチップを再フラッシュしたりできます。
初期状態では、インターフェイスに接続するためのパスワードは 1234 ですが、データ交換速度は 38400 ボーに制限されています。 HC 05 用の既製のライブラリはあまりありませんが、その応用の方向性は非常に狭いため、既存のソフトウェアをニーズに適合させることができます。