マイクロチップのRN487xBluetoothモジュールを使用してデジタル入力とデジタル制御を構築する方法
マイクロチップモジュールを使用してデジタル入力およびデジタル制御周辺機器のプロトタイプを作成する方法を学びます。
この記事では、Microchip社のRN487x Bluetoothモジュールに関する3部構成のシリーズの第2部で、デジタル入力(スイッチ)とデジタル制御(LEDの)を作成する方法を紹介します。
RN487xモジュールの構成方法の背景と手順については、最初の記事を参照してください。
プロジェクト1:RN478xデジタル入力スイッチ
私たちのデザインパターンには、提供する必要のある3つのコンポーネントがあります。
- ハードウェア: デジタル信号を生成するためのタスク固有のハードウェア
- 構成: RN487xモジュールコマンドは、データベースに変数を割り当て、信号を変数にマッピングします
- アプリケーション: データベース値を受け入れるためのワークステーション上のスクリプト
以下はコンポーネントの内訳です。
デジタル入力ハードウェア
「デジタル入力」の役割は、スイッチによって簡単に提供されます。 SW1。
RN487xモジュールにはピンに内部プルアップがあるため、閉路時にアースに接続された常開スイッチにより、必要な2状態制御が可能になります。
1つの信号のみを管理し、PWMを使用していないため、RN4871を選択しました。回路は、AAA電池のペア、またはコイン電池でさえ電力を供給できます。
残りの回路要素は次のとおりです。
- C1: 電力を安定させるためのバイパスコンデンサ
- R1、C2: 電源投入時のプロセッサリセットの遅延
- J1: 構成用のシリアルポート
デジタル入力構成
この例の構成を作成する前に、モジュールが既知の状態にあることを確認してください。これについては、一般的な初期化に関する付録のセクションで説明しています。このステップをスキップしないでください!
センサーの状態を表すために必要なデータベースの特性は1つだけです。したがって、1つのサービスと、そのサービスに1つの特性を作成します。対応する2つのコマンドは次のとおりです。
PS、59c88760536411e7b114b2f933d5fe66 PC、59c889e0536411e7b114b2f933d5fe66,10,01
最初のコマンドPSは、サービスを作成します。 2番目のコマンドPCは、特性を作成します。どちらのコマンドでも、最初のパラメーターは、周辺機器が他のBluetooth周辺機器の世界に存在し、それでも一意にアクセスできるようにする識別子です。このパラメーターは、UUID標準に準拠している必要があります。示されている値の例を使用できます。また、標準のUUIDをいくつでも簡単に作成できます。
PCコマンドの2番目のパラメーターは、値の変更がクライアントにどのように到達するかをBluetoothレイヤーに指示します。この場合、パラメーター(10)は、値を変更すると、クライアントに即座に通知される可能性があることを示しています。これは、この例の意図の重要な部分です。最後に、PCコマンドで、3番目のパラメーターは値のサイズをバイト単位で定義します。この場合は1つだけ(01)。
構成のスクリプト部分は次のようになります:
@PW_ON SW、0A、09 @ PIO1H SHW、0072,01 @ PIO1L SHW、0072,00
このスクリプトには3つのメソッドがあり、それぞれに「@」というプレフィックスが付いています。各メソッドは、特定のシステムイベントで実行されます。
- PW_ON: 電源投入時に実行されます。この方法では、対象のピン(P1_2)を「トリガーされた」デジタル入力信号として構成します。
- PIO1H: トリガー信号がHighに遷移するたびに実行されます。このメソッドは、データベースに「1」を書き込みます。
- PIO1L: トリガー信号がローに遷移するたびに実行されます。このメソッドは、データベースに「0」を書き込みます。
デジタル入力アプリケーション
Pythonスクリプトはswitch.pyであり、ここにあります。スクリプトを編集し、サンプルのMACアドレスをデバイスのMACアドレスに置き換えます。次に、例を実行するには、周辺機器に電源を投入し、適切なBluetooth機能を備えたシステムでスクリプトを実行します。 Linuxでのこのセットアップのヘルプについては、付録を参照してください。スクリプトは、ペリフェラルへの接続中に進行状況を示すメッセージを発行します。周辺機器を接続したら、スイッチを数回押して放します。スイッチのすべての開閉イベントは、実行中のスクリプトからのメッセージで通知されます。
スクリプトは短く、すべての機能ブロックとGATTAPI呼び出しに対するコメントが含まれています。
この例に固有のBLE機能は通知です。
- コールバックメソッドを使用して、ペリフェラルからの信号変更が発生したときに処理します。信号の状態を知るために周辺機器をポーリングする必要はありません。
- システム特性に書き込むことにより、これらの通知が必要であることを周辺機器に通知する必要があります。
プロジェクト2:RN487xデジタル制御
デザインパターンには、提供する必要のある3つのコンポーネントがあります。
- ハードウェア: デジタル出力を表現するためのタスク固有のハードウェア
- 構成: RN487xモジュールコマンドは、データベースに変数を割り当て、変数を信号にマッピングします
- アプリケーション: ワークステーションでスクリプトを作成し、データベースの値を書き込みます
以下はコンポーネントの内訳です。
デジタル制御ハードウェア
「デジタル出力」の役割は、LEDによって簡単に提供されます。 D1。
RN487xモジュールの参照回路は、オープンコレクターGPIOを提案しているため、電流をシンクすることにより、それに応じてLEDを点灯します。
1つの信号のみを管理し、PWMを使用していないため、RN4871を選択しました。回路は、AAA電池のペア、またはコイン電池でさえ電力を供給できます。
残りの回路要素は次のとおりです。
- C1: 電力を安定させるためのバイパスコンデンサ
- R1、C2: 電源投入時のプロセッサリセットの遅延
- J1: 構成用のシリアルポート
デジタル制御構成
この例の構成を作成する前に、モジュールが既知の状態にあることを確認してください。これについては、一般的な初期化に関する付録のセクションで説明しています。
このステップをスキップしないでください!
センサーの状態を表すために必要なデータベースの特性は1つだけです。したがって、1つのサービスと、そのサービスに1つの特性を作成します。
対応する2つのコマンドは次のとおりです。
PS、59c88760536411e7b114b2f933d5fe66 PC、59c889e0536411e7b114b2f933d5fe66,08,01
最初のコマンドPSは、サービスを作成します。 2番目のコマンドPCは、特性を作成します。どちらのコマンドでも、最初のパラメーターは、周辺機器が他のBluetooth周辺機器の世界に存在し、それでも一意にアクセスできるようにする識別子です。このパラメーターは、UUID標準に準拠している必要があります。示されている値の例を使用できます。また、標準のUUIDをいくつでも簡単に作成できます。
PCコマンドの2番目のパラメーターは、値の変更が周辺機器にどのように到達するかをBluetoothレイヤーに指示します。この場合、パラメータ(08)は、値が変更されたときにペリフェラルがクライアントに確認を送信する必要があることを示しています。最後に、PCコマンドで、3番目のパラメーターは値のサイズをバイト単位で定義します。この場合は1つだけ(01)。
構成のスクリプト部分は次のようになります:
@CONN | O、08,72
このスクリプト「@CONN」にはメソッドが1つだけあります。クライアントがペリフェラルに接続するたびに実行されます。
単一のスクリプト行は「ハンドルアソシエーション」コマンドであり、非常に強力な結果が得られます。データベース変数をデジタルピン出力コマンドに関連付けます。 「08」パラメータは、LEDが接続されているピンを指定するビットマスクです。 「72」パラメータは、データベースで作成した特性に対する一意の永続的なハンドルです。したがって、クライアントが接続した後、クライアントがデータベース変数に新しい値を書き込むたびに、それに応じてLEDがオンまたはオフになります。
デジタル制御アプリケーション
Pythonスクリプトはlight.pyであり、ここにあります。スクリプトを編集し、サンプルのMACアドレスをデバイスのMACアドレスに置き換えます。次に、例を実行するには、周辺機器に電源を投入し、適切なBluetooth機能を備えたシステムでスクリプトを実行します。 Linuxでのこのセットアップのヘルプについては、付録を参照してください。スクリプトは、ペリフェラルへの接続中に進行状況を示すメッセージを発行します。周辺機器が接続された後、スクリプトは毎秒新しいコマンドを周辺機器に送信します。コマンドはLEDのオンとオフを切り替えます。
スクリプトは短く、すべての機能ブロックとGATTAPI呼び出しに対するコメントが含まれています。この例に固有のBLE機能は、ハンドルの関連付けです。
この例全体の実際の動作は、添付のプロジェクトビデオで見ることができます。
次のステップ
これで、RN487xモジュールに関する3部構成のシリーズのパート2は終わりです。
パート3では、同じ設計パターンに従って、アナログセンサーとアナログコントロールを作成します。また、すべてのサンプルプロジェクトに適用されるさらなる研究のためのいくつかのトピックも含まれます。
モノのインターネットテクノロジー
- 自由のように無料ですか、それとも無料のビールですか? ...どうですか:使用、構築、調査は無料です!
- C# の基本的な入力と出力
- 要約:BluetoothLEとXLEが資産の追跡と監視の未来である方法
- Bluetooth +超音波=RTLSの精度の向上とコストの削減
- 予防保守スケジュールを作成して最適化する方法
- Microchip社のRN487xBluetoothモジュールを使用したセンサーとコントロール
- 顧客が望んでいる(そしてお金を払っても構わないと思っている)ソリューションを構築する方法
- 水力発電を管理する方法:水力発電所の管理と維持
- タンク監視IoTテクノロジーを使用してよりスマートな運用を構築する方法
- ビッグデータを理解する方法:RTUとプロセス制御アプリケーション
- リーンデジタルとは何ですか?それを統合する方法は?