forked from aws/amazon-freertos
-
Notifications
You must be signed in to change notification settings - Fork 6
ElasticSearchを使用しRX65Nに接続されたセンサデータをAWSで可視化
kazuki.mochizuki edited this page Mar 27, 2020
·
1 revision
- デバイスをAWS IoTに登録する
- Amazon FreeRTOSをダウンロードする
- Amazon FreeRTOSを設定する
- Amazon FreeRTOSを実行し、RX65NをAWS IoTに接続する
-
センサデータアップロードのサンプルプログラムは Renesas RX65N Cloud Kit で動作確認を行います
-
Renesas RX65N Cloud Kit には以下の3種類のセンサが実装されているので、これらのセンサから取得したデータをAWSにアップロードします。
- Light Sensor (ISL29035)
- Environmental Sensor (BME680)
- Inertial Sensor(BMI160)
- e2 studio のプロジェクトエクスプローラーから、aws_demos -> application_code -> common_demos -> source -> aws_demo_runner.c を開く
-
aws_demo_runner.c
の以下のソースコードを変更する-
vStartRenesasSensorDataUploadDemoTask()
を新規に作成する
-
// aws_demo_runner.c[変更前]
/* extern void vStartDeviceDefenderDemo( void ); */
/* extern void vStartGreenGrassDiscoveryTask( void ); */
/* extern void vStartMQTTEchoDemo( void ); */
/* extern void vStartOTAUpdateDemoTask( void ); */
extern void vStartShadowDemoTasks( void );
/* extern void vStartSimpleTCPServerTasks( void ); */
/* extern void vStartSubpubDemoTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SeparateTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SingleTasks( void ); */
/*-----------------------------------------------------------*/
/**
* @brief Runs demos in the system.
*/
void DEMO_RUNNER_RunDemos( void )
{
/* vStartDeviceDefenderDemo(); */
/* vStartGreenGrassDiscoveryTask(); */
/* vStartMQTTEchoDemo(); */
/* vStartOTAUpdateDemoTask(); */
vStartShadowDemoTasks();
/* vStartSimpleTCPServerTasks(); */
/* vStartSubpubDemoTasks(); */
/* vStartTCPEchoClientTasks_SeparateTasks(); */
/* vStartTCPEchoClientTasks_SingleTasks(); */
}
// aws_demo_runner.c[変更後]
/* extern void vStartDeviceDefenderDemo( void ); */
/* extern void vStartGreenGrassDiscoveryTask( void ); */
/* extern void vStartMQTTEchoDemo( void ); */
/* extern void vStartOTAUpdateDemoTask( void ); */
/* extern void vStartShadowDemoTasks( void ); */
/* extern void vStartSimpleTCPServerTasks( void ); */
/* extern void vStartSubpubDemoTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SeparateTasks( void ); */
/* extern void vStartTCPEchoClientTasks_SingleTasks( void ); */
extern void vStartRenesasSensorDataUploadDemoTask( void );
/*-----------------------------------------------------------*/
/**
* @brief Runs demos in the system.
*/
void DEMO_RUNNER_RunDemos( void )
{
/* vStartDeviceDefenderDemo(); */
/* vStartGreenGrassDiscoveryTask(); */
/* vStartMQTTEchoDemo(); */
/* vStartOTAUpdateDemoTask(); */
/* vStartShadowDemoTasks(); */
/* vStartSimpleTCPServerTasks(); */
/* vStartSubpubDemoTasks(); */
/* vStartTCPEchoClientTasks_SeparateTasks(); */
/* vStartTCPEchoClientTasks_SingleTasks(); */
vStartRenesasSensorDataUploadDemoTask();
}
- 下記ファイルを解凍して
${base_folder}\demos\renesas\rx65n-cloud-kit-uart-sx-ulpgn\common\application_code
に格納
rx65n_cloud_kit_sensor_upload_demo.zip
-
e2 studio 上でプロジェクトエクスプローラーの aws_demos を右クリックしてから、プロパティを開く
-
表示される画面から、C/C++ビルド -> 設定 -> Compiler -> ソース を開く
- インクルード・ファイルを検索するフォルダの追加ボタンを押す
- 表示される画面で、ディレクトリーに
"${workspace_loc:/${ProjName}/application_code}"
を入力して OK をクリックし、Apply and Close をクリック
- e2 studio のプロジェクトエクスプローラーから、aws_demos.scfg をダブルクリック
- スマートコンフィグレータの画面下部から、コンポーネントを選択
- コンポーネントの追加をクリック
- 他のソフトウェアコンポーネントをダウンロードするをクリック
- すべて選択をクリックして、ダウンロードをクリックするこにより、最新版のRDPをダウンロード
- r_riic_rx を選択して終了をクリック
- コンポーネントで r_riic_rx を選択してから、右のプロパティで RIIC0 にチェックを入れてから、SCL0端子とSDA0端子にチェックを入れる
- 端子タブをクリック
- ハードウェアリソースで RIIC0 をクリックしてから、右の端子機能で SCL0 に P12、SDA0 に P13が割り当てられていることを確認
- 右上のコードの生成をクリック
- src -> smc_gen 以下に r_riic_rx が生成されていることを確認
- e2 studio 上でプロジェクトエクスプローラーの aws_demos を右クリックしてから、プロパティを開く
- 表示される画面から、C/C++ビルド -> 設定 -> Library Generator -> 構成 を開いて、
math.h
にチェックを入れて Apply and Close をクリック
- プロジェクト -> すべてをビルド -> 0 errors を確認
- AWS マネジメントコンソールから、すべてのサービス -> 分析 -> Elasticsearch Service をクリック
- 新しいドメインの作成をクリック
- 開発およびテストにチェックを入れて、Elasticsearch のバージョンを 7.1 に設定する。その後、次へをクリック
- Elasticsearch ドメイン名を入力してから、インスタンスタイプを t2.small.elasticsearch に変更して下へスクロール
- 次へをクリック
- パブリックアクセスを選択してから、下へスクロール
- ドメインアクセスポリシーをカスタムアクセスポリシーに設定、IPv4アドレスを選択、自身のPCのグローバルIPアドレスを入力してから、許可に設定する(グローバルIPアドレスはインターネットで「グローバルIPアドレス 確認方法」でサーチして確認する)
- 次へをクリック
- 確認画面で内容を確認してから、確認をクリック
- Elasticsearch のドメインが作成されます。ドメインのステータスがアクティブになるまで10分程度かかります。
- ドメインのステータスがアクティブになったら、Kibana のURLにアクセス
- 以下のような画面が表示されたら、Explore on my own をクリック
- 左側のメニューから、Dev Tools をクリック
- Get to work をクリック
- 左側のコンソールに以下のコードを入力
PUT /sensor?include_type_name=true
{
"mappings": {
"sensor": {
"properties": {
"timestamp": {
"type": "long",
"copy_to": "datetime"
},
"datetime": {
"type": "date",
"store": true
},
"temperature": {
"type": "long"
},
"light": {
"type": "long"
},
"humidity": {
"type": "long"
},
"pressure": {
"type": "long"
},
"accel": {
"properties": {
"x": {
"type": "long"
},
"y": {
"type": "long"
},
"z": {
"type": "long"
}
}
},
"gyro": {
"properties": {
"x": {
"type": "long"
},
"y": {
"type": "long"
},
"z": {
"type": "long"
}
}
}
}
}
}
}
- コンソール右上の click to send request をクリック
- 以下のレスポンスが返却されることを確認
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "sensor"
}
- IoT Core コントロールパネルに移動して、ACT -> ルール -> ルールの作成 をクリック
- ルールの名前を入力してから、ルールクエリステートメントに以下のコードを入力
SELECT *, timestamp() as timestamp FROM 'freertos/demos/sensor'
- アクションの追加をクリック
- Amazon Elasticsearch Service にメッセージを送信するを選択してアクションの設定をクリック
- ドメイン名に Amazon Elasticsearch Service で作成したドメイン名を入力して、ID に
${newuuid()}
、索引にsensor
、タイプにsensor
を入力する
- ロールの作成をクリックしてから、ロールの名前を入力してロールの作成をクリックする
- 作成したロールが選択されていることを確認してから、アクションの追加をクリック
- アクションが追加されたことを確認してから、ルールの作成をクリック
- e2 studio 画面右上の虫アイコンを押す
- パースペクティブの切り替えの確認は「はい」を選択
- PowerON_Reset_PC の下側に緑色の帯(プログラムカウンタの現在位置)が表示されることを確認
- Restart ボタンを押す
- main() にブレークすることを確認する
- Restart ボタンを押す
- Kibana に移動して、左のメニューから Management をクリックする
- Index Patterns をクリックしてから、Index pattern に sensor と入力して、> Next step をクリックする
- Time Filter field name に datetime を選択してから、Create index pattern をクリックする
- 左のメニューから Visualize をクリックする
- Create a visualization をクリックする
- Line をクリックする
- sensor* をクリックする
- 右上のカレンダーマークから、Refresh every を 5 seconds に設定して Start をクリックする
- Metrics で Y-Axis の Aggregation を Average、Field を light に設定する
- Buckets で X-Axis の Aggregation を Date Histogram、Field を datetime、Interval を Second に設定する
- Apply changes をクリックする
- センサデータのグラフを確認する。Renesas RX65N Cloud Kit に手をかざすことで光センサの値が小さくなることを確認する
- Amazon Elasticsearch Service は起動していると課金されるので、使用しない場合は忘れずに削除してください
- デバイスをAWS IoTに登録する
- Amazon FreeRTOSをダウンロードする
- Amazon FreeRTOSを設定する
- Amazon FreeRTOSを実行し、RX65NをAWS IoTに接続する
- ソフトウェアアーキテクチャ
- 機能ブロックとAPIプロトタイプ
- RXマイコンにおける実装(システムタイマとソフトウェア割り込み)
- スリープ機能
- タスク切り替えと割り込み発生時のレイテンシ
- ネットワークインタフェースとデバイスドライバの結合
- Amazon FreeRTOS Qualification Program
- Amazon FreeRTOS ROM/RAM容量考察
- Amazon FreeRTOS でFreeRTOS+TCPのみ使う方法
- シミュレータで動作させる
- 乱数生成