今回はAWS IoTとArduinoロボットをNode.jsとMQTTで連携する方法をご紹介したいと思います。

今回の概要図を描いてみました。イメージとしてはこんな感じです。

AWS SNSとAWS IoTの設定

今回はArduinoロボットに取り付けたセンサデータをメールで送信するために、「AWS SNS」と「AWS IoT」を使用します。
以下の記事の方法でAWS SNSとAWS IoTの設定を行います。

AWS IoTでArduinoからのセンサのデータをメールで通知する方法

Node.jsのソースの編集

今回はデバイス側とAWS IoTを連携させるために「Node.js」と「MQTT」を使用します。

以下のときに作成した「app.js」を編集します。

ArduinoとXBeeとNode.jsを使用してWeb画面からラジコンを操作できるようにしてみた!

AWS IoTにデータを送信するために、8行目~20行目のソースを「app.js」に追記します。

Arduinoからデータを受信したときに、20行目~23行目のソースを追記してAWS IoTのほうにも送信します。

証明書・プライベートキー・ルートの用意

app.jsと同じフォルダにダウンロードしてきた「証明書・プライベートキー・ルート」を配置します。Node.jsには「keyPath:~」、「certPath:~」、「caPath:~」の部分に指定します。

❏関連資料・記事
AWS IoTでArduinoからのセンサのデータをメールで通知する方法
Rubyの「arduino_firmata」を使ってArduinoのLチカをやってみた!
ArduinoとXBeeとNode.jsを使用してWeb画面からラジコンを操作できるようにしてみた!

「aws-iot-device-sdk」のインストール

Node.jsからAWS IoTを呼び出すために「aws-iot-device-sdk」をインストールします。
コマンドプロンプトから以下のコマンドを実行します。

ロボットを操作し、センサデータをAWS IoTへ送信する

上記の手順が完了したら、Node.jsでapp.jsを起動し、ブラウザからのコントロールパネルからロボットを操作してみます。
①コマンドプロンプトを起動し、app.jsがあるフォルダで以下のコマンドを実行します。

②ブラウザを立ち上げてロボットを操作してみます。「F」ボタンが押されるとロボットが前進するとともに、測距モジュールからのデータが送信されてくるので、ブラウザに距離が表示されます。

③ブラウザにデータが表示されたら、設定した自分のメールアドレスにもセンサデータの値が送信されてきていることが確認できます。

以上、今回はAWS IoTとArduinoロボットをNode.jsとMQTTで連携する方法についてご紹介させていただきました!

今後はインターフェースでAWSの人工知能などを使用していけたらいいかなと思います!