IoTシステムの概要を知り、実際にデバイスを動かしてみよう
はじめに
「IoT(Internet of Things)」がバズワードとなって早数年が経ちました。普段IT業務に携わる人々にとってはすっかり聞き馴染みのある言葉となりつつありますし、最近ではIoTを活かしたサービスや業務改善の例も目にする機会が増えてきています。
先日アメリカで開催された「CES(Consumer Electronics Show) 2020」の基調講演では、「近年IoTが当たり前となってきており、IoTという言葉の定義自体が変わってきている」との言及もありました。
一方、ITとは直接的に関わりのない業種では、まだまだ遠い世界の話に聞こえるかもしれません。しかし、IoTで日常のちょっとしたデータを収集・分析し、最適なアクションを取ることで、あなた自身の仕事や生活の質を日々アップデートできる可能性があります。
「IoTはテクノロジーの総合格闘技」と言われるほど、さまざまな要素技術に対する知識が求められます。しかし、現在では開発やプロトタイピングを容易にするプロダクトも多く、小規模なIoTシステムであれば個人で開発・リリースすることも可能です。
ぜひ、本記事を参考に、IoTシステム開発の最初の一歩を踏み出してください。
今回開発するIoTシステム
今回はシンプルなIoTシステムとして「人を検知したらSlackへ通知するシステム」を開発します。
開発要素として、デバイスにはM5Stackを、クラウドにAWSを利用してシステムを構築します。また、クラウド上に構築したシステムをテストする際にmockmockを利用します。
M5Stack
M5StackはEspressif社のマイコンESP32を搭載したマイコンモジュールです。Wi-FiやBluetoothによる接続が可能で、IoTのプロトタイプ開発やPoCに適しています。
GPIOやGroveポートが用意されているので、特定のセンサーであればはんだ付けをせずに接続できます。また、ArduinoIDEと呼ばれる統合開発環境を利用できるため、ソースコードのコンパイルや書き込みが簡単に行なえます。さらに、Arduinoライブラリというエコシステムを利用できるといったメリットもあります。
AWS
Amazon Web Services(以下、AWS)は、Amazon.comが提供するクラウドコンピューティングサービスです。AWSではさまざまなサービスが提供されていますが、今回は以下のサービスを利用します。
IoT Core
M5Stackから送信されたデータをAWSの他のサービスにルーティングするマネージド型クラウドサービスです。M5StackとIoT CoreはMQTTを使用してメッセージを送受信します。
DynamoDB
AWSが提供する完全マネージド型key-valueおよびドキュメントデータベースです。M5Stackから送信されたデータの蓄積先として使用します。
Lambda
クラウド上で簡単にコードを実行できるコンピューティングサービスです。今回はRubyのスクリプトを実行し、Webhook経由でSlackにメッセージを送信する目的で使用します。
mockmock
mockmockはIoTテスト用仮想デバイス作成サービスです。通常、IoTシステムにおけるクラウドアプリケーションはデバイスからデータ受信したときに初めて動作します。mockmockを利用してデバイスの代わりに擬似データを送信することで、効率的にテストができます。
また、本記事では使用しませんが、デバイスでは発生させることが難しい異常系のテストも可能なほか、有料プランを利用することで大量のデバイスが必要な負荷テストも容易に実行できます。
デバイスの開発
開発環境のインストール
本記事ではArduino IDEを使って開発します。Arduino IDEのダウンロード・インストールの手順はGetting Started with Arduino productsを参照し、ご利用中のOSに対応した手順を実施ください。
インストールが完了したら、M5Stackをボードに追加した後でライブラリを追加する必要があります。具体的な手順はArduino IDE Developmentを参照ください。
ライブラリのインストール
今回動かすプログラムで使用するライブラリを事前にインストールする必要があります。メニューバーから、「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」をクリックします。
右上のテキストボックスに「pubsubclient」と入力し、PubSubClient
の「インストール」をクリックします。
M5Stackにセンサーを接続する
今回、人を検知するためにSeeed Technology Co.,Ltd.のGrove - PIR Motion Sensorを使用します。
センサーとM5Stackの接続方法に注意が必要です。GroveコネクタのセンサーなのでM5StackのGroveポートに接続するものと勘違いしがちですが、同じGroveコネクタであっても通信方式が異なるため、Groveポートに接続しても動作しません。
そのため、下記のように赤・黒・黃の各線をM5StackのGPIOに接続してください。
接続できたらアクリルケースに入れるなどして、センサーを固定しましょう。ケースに入れることで見栄えも良くなります。