aws iotでgo!

Post on 23-Jan-2017

1.000 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

AWS IoTでGO!電車でGO!コントローラを使い、arduino Yún + モーターシールドでNゲージを操作2016/2/16

瀧澤 与一 (Mail: yoicht@amazon.co.jp)

アマゾン ウェブ サービス ジャパン株式会社技術本部 エンタープライズソリューション部部長/シニアソリューションアーキテクト

瀧澤与一アマゾンウェブサービスジャパン株式会社

技術本部 エンタープライズソリューション部部長/ソリューションアーキテクト

金融機関をはじめとするエンタープライズ企業向けのAWS導入サポート

趣味:

オーディオ&ビジュアル、スキー、ドライブ、子供と遊ぶ。

About me

2

7歳

なぜか、鉄道好きに

踏切の音を聞いて、路線をあてられるレベル

「10歳になったらね」の約束を破り、Nゲージの道に。

うちのこども

3

Nゲージ ジオラマ・・

4

線路に最大12Vの電圧。

車両は線路に流れる電流を車輪で受け、モーターを駆動。

電圧により、車両の速度が変わる。

±を逆にすれば逆進。

一般的には、専用のコントローラ(パワーパック)で操作。

Nゲージの仕組み

5

arduinoにモータシールドを接続し、線路に流れる電圧をarduino経由で制御可能に。

arduinoをUSBシリアルでRaspberry piを接続し、Raspberry piにWebサーバを構築。

タブレット経由で車両の操作ができるようにした。

最初のトライ

しかし、うちの子供には不評。

ハンドルで操作したいとのこと。

6

「タブレットでのタッチ操作じゃリアリティがないんだよなー」

by うちのこども

7

電車でGO!64コントローラを改造

課題解決:そういうわけで、

8

構成図

Arduino Yún

モーターシールド

AWS IoT

SNSLambda CloudWatch

logs

S3

操作 速度データ

線路への電圧

9

HC148

電車でGO!64コントローラの分解

10

データシート

HC148

11

HC148データシート(続き)

コントローラの位置をA2,A1,A0ピンを使い2進数で出力。→ arduinoに入力

12

Arduino Leonardo(ATmega32u4)をベースとし、無線機能(WiFi)付きのLinuxボードを搭載したArduino。

技適認証あり。https://www.switch-science.com/catalog/2210/

AWS IoTのSDKあり。

Arduino Yún

13

Arduinoのアナログ出力は最大5V。

モーターシールドでは、12Vの外部電源を接続すると、最大5Vの入力に対して、最大12Vの出力をリニアに出力可能。電流も2Aまで。

シールド形状のため、Arduinoにかぶせるように接続可能。

モーターシールド

14

http://akizukidenshi.com/catalog/g/gM-06684/

AWS IoT

デバイスデータに対するいろいろなアクション

セキュアでスケーラブルなデバイスとクラウドの

双方向接続

誰でも簡単にはじめられる

さまざまなデバイスをAWSの各種サービスや他のデバイスにセキュアに接続し、デバイスデータに対する処理やアクションを実行することが可能

15

データフローとAWSサービスのマッピング

収集 処理 分析

保存

S3

Kinesis

DynamoDB

Data Collection

and Storage

AWS Lambda

KCL Apps

Event

Processing

EMR Redshift

MachineLearning

Data

Processing

Data

Analysis

IoT

AWS IoT Overview

17

18

19

20

Arduino Yúnのセットアップ

http://Arduino.localにアクセス。

WiFiの設定

21

1. SDKをダウンロードhttps://github.com/aws/aws-iot-device-sdk-Arduino-yun/インストールの詳細は、上記GitHUBのreadmeを参照。

2. AWS IoT CA file(ルート証明書)をダウンロード(here.)

ファイル名を「root-CA.crt」にしておく。

3. AWS IoTでダウンロードした証明書とルート証明書を「AWS-IoT-Arduino-Yun-SDK/AWS-IoT-Python-Runtime/certs」に保管。

4. インストールスクリプトを実行。chmod 755 AWSIoTArduinoYunInstallAll.sh /AWSIoTArduinoYunInstallAll.sh <Board IP> <UserName> <Board Password>

5. 「AWS-IoT-Arduino-Yun-SDK/AWS-IoT-Arduino-Yun-Library」ライブラリを「Documents/Arduino/libraries」にコピー。

Arduino Yúnのセットアップ・証明書コピー

22

AWS IoT SDKの使用。

モーターシールドで使うpinなどを設定。

コード(1/4)

23

電車でGO!コントローラの信号を読み取り、モーターシールドに出力する電圧を決定。

コード(2/4)

24

topic1でモーターシールドへの出力値を送信。

AWS IoTのサンプルコードを流用。

コード(3/4)

25

AWS IoTで「Connect Device」を実行した際に表示されるコードをペーストする。

コード(4/4)

26

aws_iot_confg.h

#ifndef config_usr_h

#define config_usr_h

// Copy and paste your configuration into this file

//===========================================================

====

#define AWS_IOT_MQTT_HOST "A3TCNQTE8Bxxxx.iot.ap-northeast-

1.amazonaws.com"

#define AWS_IOT_MQTT_PORT 8883

#define AWS_IOT_CLIENT_ID "traincontroller"

#define AWS_IOT_MY_THING_NAME "traincontroller"

#define AWS_IOT_ROOT_CA_FILENAME "root-CA.crt"

#define AWS_IOT_CERTIFICATE_FILENAME "5fa69bxxxx-certificate.pem.crt"

#define AWS_IOT_PRIVATE_KEY_FILENAME "5fa69bxxxx-private.pem.key"

//===========================================================

====

// SDK config, DO NOT modify it

#define AWS_IOT_PATH_PREFIX "../certs/"

(略)#endif

構成図

Arduino Yún

モーターシールド

AWS IoT

SNSLambda CloudWatch

logs

S3

操作 速度データ

線路への電圧

ここまで完成

27

rule

AWSIoT

28

Lambda function

29

CloudWatch Logs

30

構成図

Arduino Yún

モーターシールド

AWS IoT

SNSLambda CloudWatch

logs

S3

操作 速度データ

線路への電圧

31

うちのこどもには、とても好評!

AWS IoTは簡単。 コーディング最小でデバイスからのデータ送受が可能。

線路のどこを走っているかのセンサーの追加。

コントローラでポイント切替機の制御。

システム側からのNゲージ車両、ポイントの制御。

データの記録と分析。

まとめ・今後

32

Thank you

ソースコードは下記で公開します。http://qiita.com/yo1t

33

top related