はじめに
Amazon Web Services(AWS)は、世界で最も包括的で広く採用されているクラウドプラットフォームであり、世界中のデータセンターから165を超えるフル機能のサービスを提供しています。急成長しているスタートアップ企業、大企業、主要な政府機関など、何百万人ものお客様が AWS を信頼して、インフラストラクチャの強化、俊敏性の向上、コストの削減を実現しています。このドキュメントでは、AWS IOTおよびAlexaスキルプロジェクトに周辺機器を追加するための簡単なアプローチを順を追って説明します。これは、次のリンクで確立されたデモの続きであり、このガイドを続行する前にこれを完了することが重要です。
Amazon Web Services へのLPC55S69の接続
前提条件
- AWSアカウント
「AWS_REMOTE_CONTROL_WIFI」の変更
この例では、シングルエンドADCペリフェラルを追加します。
1.まず、別の.cを作成しますと .hソースフォルダ内のファイルを整理します。
2.周辺機器を初期化します。これには、グローバル変数、ピン、クロック、割り込みハンドラ、およびその他の必要なペリフェラル構成が含まれます。
私のnew_peripherals.cでファイル、以下を追加します
2.1 定義:
2.2 グローバル変数:
2.3 Interrupt handler:
2.4 初期化機能:
2.5 ADC機能の読み取り:
3. ADC を有効にするために使用される 2 つの関数を含むヘッダー ファイルを作成し、必ず fsl_lpadc ドライバーを含めてください。
4. ピン構成ツールでADCピンを追加します。
4.1この例では、ADC0チャネル0にPIO0_23を使用しています。
5.メインADC_Init機能を追加します。
6.次に、「remote_control.c」を変更しましょう。ここでは、Thing のシャドウを ADC 値で更新する目的の JSON テキストを作成し、read 関数を追加し、最初のシャドウ ドキュメントの変数と DeltaJSON のキーワードを追加する必要があります。
6.1 まず、ADCインタラクションの実際の状態と解析された状態のグローバル変数を作成します。
6.2 ADCの値を読み取る外部機能を追加します。
6.3 シャドウは JSONシャドウドキュメント を使用してデータを保存および取得 。シャドウのドキュメントには、デバイスの状態の次の側面を説明する state プロパティが含まれています。
delta: AWS IoT は、delta オブジェクトで望ましい状態と報告された状態の違いを報告します。
6.4 ADCの初期状態をハードコードされた0で追加し、Thingのシャドウが新しい情報で初期化されていることを確認できるようにしました。
6.5 「void processShadowDeltaJSON(char *json, uint32_t jsonLength)」関数に、ADCの状態変化の条件を追加する必要があります。これにより、ADCを読み取るアクションがいつ要求されるかを特定できます。
6.6 最後に、「prvShadowMainTask」関数で、上記のリクエストに基づいてアクションを作成します。いくつかのPRINTFを追加して、アクションがシリアルコンソールを通じて適切に要求および処理されたことがわかります。
ご覧のとおり、ADC値は要求された場合にのみ更新したいと思います。つまり、ADCの状態または解析された状態の値が重要です。ADCを読み取った後、ゼロにクリアし、値が1の場合にのみ値を更新します。LEDState や parsedLEDState とは対照的に、LED がオン/オフする色を指すため、値が重要です。
これで、プロジェクトをビルドして実行できます。これで、Alexa SkillとAWS Lambdaの機能を追加できます。
AWS LAMBDA の変更
ラムダはLPCXpressoボードとAlexaスキルの間の接続になるため、新しいADCリクエストのハンドラーを追加する必要があります。
1. この例では、3 番目のリクエストタイプである ADC イベントと、使用するコールバック関数の名前を追加します。
2. コールバック関数 manage_ADC_request には、シャドウの読み取りと更新の属性が含まれているため、デルタ シャドウが変更されるため、LPC55S69 が ADC ピンを読み取ります。また、Alexaスキルに送信される発話や、Alexaにどのように応答してほしいかもここで定義します。
ご覧のとおり、この関数は JSON ペイロードを構築して、呼び出されたときにシャドウを "1" で更新し、led と加速度計の値を無視します。LPCが必要なフィールドのADC値を読み書きし、更新されたシャドウを送信できるように、2.5秒遅延します。その後、Lambdaはシャドウを読み取り、リターンメッセージを作成します。
これにより、Alexaの答えを構築します。
ALEXAスキルの変更
1. まず、カスタムの「インテント」を作成します。AWS Thingからアクションをリクエストするための発話の一般的な定義は次のとおりです。
1.1 名前は、Lambdaのイベントに使用される名前と一致する必要があります。この例では、ADC_INTENT
2. 発話を作成する前に、スロットタイプを作成しましょう。これは、ユーザーがADCからの読み取りを要求するように言うかもしれない頭に浮かぶ可能性のあるすべての単語のリストです。
2.1 スロットタイプの名前は重要ではありませんが、後で必要になりますのでご注意ください。
2.2 スロット値を追加します。必要と思われる数だけ追加できます。カスタムスロット値に関する推奨事項については、 サンプル発話のベストプラクティスを確認してください。
2.3 ADC_INTENTの一般ビューに戻り、下にスクロールして、スロットが発話にどのように含まれるかを追加します。この例ではadc_nameを使用していますが、ここでの名前も重要ではありません。
前に作成したスロットタイプリストを選択します。
2.4 次に、上にスクロールして戻り、サンプル発話の追加を開始します。これは、ユーザーがこのアクションを呼び出すために言うことができると思われる任意のコマンドにすることができます。ここにウェイクワードを含める必要はありません。括弧内にインテントスロットの名前を追加します(この場合は{adc_name})。
それです!モデルを保存して再構築できます。これで、テストする準備が整いました。これは、開発者コンソールの「テスト」タブから行うことができます。また、Alexaデバイスまたは SLN-ALEXA-IOTをお持ちの場合は、Alexaに直接話しかけてテストできます。LPCXpresso55S69では、3.3Vまたは0VをADCピンに接続できるため、要求ごとに値がどのように返されるかを確認できます。