LoginSignup
6
6

More than 5 years have passed since last update.

AWS IoTを通してRaspberry Pi 2のLチカを実装

Posted at

概要

さて、電子工作のHello Wordで有名なLチカ、LEDをつけてそれをチカチカさせるやつです。
これをAWS IoTを経由してやってみました。プログラム自体はnode.jsで書いています。

FullSizeRender.jpg

構成

手元のPCをクライアントとしてAWS IoTを経由して信号をラズパイに送り続けます。
ライトを点灯させたい時には「1」を。ライトを消滅させたいときは「0」を送信します。
これを繰り返して信号を送ることでチカチカさせるという仕組みです。

Untitled.png

クライアント側のコード

led-publish.js
var count=0;
device
  .on('connect', function() {
   const minimumDelay=100;
   timeout = setInterval( function() {
      count++;
      var led = count%2;
      device.publish('led', led.toString());
    }, Math.max(args.delay,minimumDelay) );
});

setIntervalでループを回します。led変数にはループの回数に応じで0と1が交互に入力されます。このデータをledというtopicでAWS IoTに送信します。

Raspberry側のコード

led-subscribe.js
var fs = require('fs');
device
  .on('connect', function() {
    console.log('connect');
    device.subscribe('led');
});

device
  .on('message', function(topic, payload) {
    console.log('message', topic, payload.toString());
    fs.writeFileSync('/sys/class/gpio/gpio18/value', payload.toString());
});

AWS IoTからの信号を受け取る側のプログラムです。ledというtopicをsubscribeします。
ここに1または0のデータが送信されてくるため、これをRaspberryのGPIOに渡すことでLEDをチカチカさせます

結果

AWS IoTでLチカ

はい、こんな感じでチカチカしてます。
通常、デバイス同士をつなくためにはnode.jsでサーバ立ててwebsocketで通信を確立したりって必要があるんですが、一切不要です。
AWS IoTが提供しているMQTTプロトコルを通したおかげで複雑な設定やプログラミングは一切不要でした。

また、AWS IoTで複数デバイスを管理接続できるので、1つの端末から数百台の端末に同時に命令を送ったりってことも可能になります。

まだまだ、いろんなことができそうっすね。それでは良いIoTライフを!

参考文献

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6