SlideShare a Scribd company logo
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
SNS
Lambda 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
Machine
Learning
Data
Processing
Data
Analysis
IoT
AWS IoT Overview
17
18
19
20
Arduino Yúnの
セットアップ
http://Arduin
o.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
SNS
Lambda CloudWatch
logs
S3
操作 速度
データ
線路への
電圧
ここまで完成
27
rule
AWS
IoT
28
Lambda function
29
CloudWatch Logs
30
構成図
Arduino Yún
モーターシールド
AWS IoT
SNS
Lambda CloudWatch
logs
S3
操作 速度
データ
線路への
電圧
31
 うちのこどもには、とても好評!
 AWS IoTは簡単。
 コーディング最小でデバイスからのデータ送受が可能。
 線路のどこを走っているかのセンサーの追加。
 コントローラでポイント切替機の制御。
 システム側からのNゲージ車両、ポイントの制御。
 データの記録と分析。
まとめ・今後
32
Thank you
ソースコードは下記で公開します。
http://qiita.com/yo1t
33

More Related Content

PDF
RaspberryPiで作るガイガーカウンター
PDF
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
PDF
らくちん Go言語
PPTX
Go+revel
PDF
alphawing meets heroku
PDF
Goを知る
PDF
Go言語と過ごした一週間
PDF
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
RaspberryPiで作るガイガーカウンター
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
らくちん Go言語
Go+revel
alphawing meets heroku
Goを知る
Go言語と過ごした一週間
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)

Viewers also liked (20)

PPTX
Github第8章
PDF
Golang, make and robotics #gocon
PDF
Eureka go 2015_12_12
KEY
Chrome osとgo言語からgoogleの今後を妄想してみる
PDF
HighBatch
PPTX
マイクロサービスにおけるクエリー言語について
PDF
勉強会への一歩を踏み出すために
PDF
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
PDF
Dockerぐらし!
PDF
ISUCON2015 PHPで予選を戦ってみた
PDF
Jenkins study 7 2013-01-28
PDF
エンジニアと椅子
PDF
ちょっとだけさわってみる Go言語
PPTX
Gunosy Go lang study #6 net http url
PPTX
Go言語の紹介
PDF
インタフェースの実装パターン
PDF
綺麗なスライドを作るための11の原則
PPTX
2150117 infrastructure.nagoya
PDF
Goをえらんだ理由
PDF
ちょっとさわってみるGo言語ハンズオン
Github第8章
Golang, make and robotics #gocon
Eureka go 2015_12_12
Chrome osとgo言語からgoogleの今後を妄想してみる
HighBatch
マイクロサービスにおけるクエリー言語について
勉強会への一歩を踏み出すために
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
Dockerぐらし!
ISUCON2015 PHPで予選を戦ってみた
Jenkins study 7 2013-01-28
エンジニアと椅子
ちょっとだけさわってみる Go言語
Gunosy Go lang study #6 net http url
Go言語の紹介
インタフェースの実装パターン
綺麗なスライドを作るための11の原則
2150117 infrastructure.nagoya
Goをえらんだ理由
ちょっとさわってみるGo言語ハンズオン
Ad

AWS IoTでGo!