awsIoT
AWS IoTDay 1

AWS IoT for Arduino SDKについて

More than 1 year has passed since last update.

AWS IoTのAdvent Calendar 2015の1日目を担当します(@saicologic)です。

AWS IoT使ってますか?

AWS IoTとは、さまざまなデバイスの管理やデータ通信の保護、デバイスのオフライン状態などを管理できる、AWSのクラウドサービスの一つです。まだ2015年10月8日にリリースしたばかりでβ版の状態です。

さて、このAWS IoT、他のAWSのサービスと違ってPythonとかPHPのSDKがありません。IoT用ですからね、もちろん動作させる先は、さまざまなデバイスの上です。デバイスっていうと入門的なデバイスとしてRaspberry Pi、Arduino、Intel Edison、ESP8266があります。そして、用意されているSDKは、組み込み用(Embedded C)、Javascript(Node.js)、Arduinoの3つです。

僕はさっそく手元にあるArduinoを使ってAWS IoTを早速試してみようと思いました。
みなさんも手始めにArduinoが同梱されているスターターキットを買ったのでないでしょうか?
私も買って手元に一台あります。しかし、同梱されているのはArudino Unoです。
しかし、残念ながらこのタイプのArduinoはAWS IoTで動きません! 
AWS IoTで対応しているのは、しっかりとArduino YUNって書いてあります。こちらAWS IoT デバイス SDKに記載されています。Arduinoだったら何でも動くんちゃうのって思ってたんですが、調べると、Support for ESP8266 and Arduino?に、書いてありました。

The AWS IoT device SDK needs an existing TCP/IP stack, TLS implementation and crypto library. The C-SDK (aws-iot-device-sdk-embedded-C) shows how to modify the C-SDK to run on either mbedTLS or openSSL. The implementation of TLS1.2 with mutual authentication using client certificates (as used by AWS IoT platform) requires a certain amount of memory that only few Arduinos meet.

The Arduino Yun features a 2 processor architecture where only the application sketch runs on the smaller ATmega processor while TLS, MQTT and crypto tasks are offloaded to the large controller. Thereby the Arduino Yun SDK is very specific for this particular board.

あーなんか、暗号処理のために、一定量のメモリーが必要って書いてありますね。また、TLS、MQTT、暗号化に必要な処理は、large controllerへオフロードしていると書いてあります。

ところで、Arduino Yunってなに?

詳細はこちらのArduino Productsに掲載されています。
Arudino UNOは、ENTRY LEVEL。
Arduino Yunは、INTERNET OF THINS
にカテゴリー分けされてますね。

チップと価格比較はこちら

  Arduino UNO R3 Arduino YUN
Microcontroller ATmega328P ATmega32U4
Price(スイッチサイエンス) 3240円 9990円

AVRマイコン自体はだいたい一緒ですが、YUNには、AVRマイコンの他に、Linux Microprocessorが搭載されています。このチップがあるおかげでAWS IoTが使えるんですね。ということで、Raspberry Piを持っている人は、Node.jsが動くので、aws-iot-device-sdk-jsがおすすめです。手元にたまたまArduino YUNを持っているか、Arduino IDEで試したい!という人は、Arduino Yunを買ってaws-iot-device-sdk-arduino-yunを試すのがいいでしょう。
私は、Raspberry Piも持っているので、次回は、aws-iot-device-sdk-jsを試して見た記事を書きたいと思います!