応募する
Blog

ブログ

Technical

2023/09/12

【IoT入門】個人で開発できるIoTアプリケーションの事例を紹介

近年、IT業界で大きな注目を集めているIoT。人々の生活を豊かにするIT技術の一つとして高い成長可能性が見込まれていますが、具体的な活用例と仕組みについて正しく理解されていることが少ないのが現状です。
そこで今回は「IoT入門」としてIoTの定義と意義、個人で開発できるIoTアプリケーションの事例についてご紹介します。

「IoTの概要や活用事例について知りたい」「自分で開発してみたい」という方は、ぜひ参考になさってください。

そもそもIoTとは何なのか?

IT企業のホームページや転職サイトを眺めていると「IoT技術で生活をより豊かに!」「最先端のIoT技術に触れられます」といったフレーズを頻繁に目にしますが、そもそもIoTとは一体何なのでしょうか。

IoT=”モノ”が“インターネット”につながること!

IoT(アイオーティー)とは「Internet of Things」の略称で、モノがインターネットに接続されて相互に情報交換できる仕組みのことをいいます

IoTでモノがインターネット接続されることにより、さまざまな面で生活が便利になったり、モノとインターネットを掛け合わせによる新しいビジネスが誕生したりするのですが……これではいまいちピンとこないと思いますので、具体的なIoT活用事例を挙げていきましょう。

IoTの活用事例

IoTの活用事例としては、

  • ・外出先からスマートフォンを操作してエアコンの温度を調節する
  • ・スマートロックを使って玄関のカギを遠隔操作で施錠・解錠する
  • ・部屋に設置したネットワークカメラで侵入者の温度を感知する

以上のようなものがあります。
IoTという言葉の意味を知らなくとも、すでに利用している方がいらっしゃるのではないでしょうか。
このように、インターネットが普及した現代社会に生きる私たちは、知らず識らずのうちにIoTを生活に取り入れ、その恩恵を受けているのです。

個人でIoT開発するために必要なモノ

上記の通り、IoTはモノとインターネットを接続させることで「遠隔操作・自動制御・自動認識」が可能となる技術です。
活用事例を見ていると「IoTを使った開発は高額な費用がかかって大企業じゃないと難しいのでは?」「個人で開発するなんて夢のまた夢じゃない?」などと思われそうですが、実はArduinoRaspberry Piといった小型のコンピューターと接続するセンサーさえあれば自宅でもIoT開発が可能なのです。

Arduino(アルディーノ)

Arduino(アルディーノ)とは上の写真の通り、手の平サイズの小さな電子基板にコンピューターとして最低限必要な要素が実装されたマイコンです。
USBケーブルとPCを接続できたり、単体でWi-Fiに接続したりすることもできますので、インターフェースとしてセンサーを取り付けてモノとインターネットを繋ぐための架け橋として活用できます。
値段は安いモデルなら3千円程度。秋葉原やAmazonで簡単に購入できます。

Raspberry Pi(ラズベリーパイ)

1枚のプリント基板の上に最低限のCPUや入出力インターフェース、コネクタを付けた小型コンピューターです。
写真の見た目から「Arduinoと同じようなモノなのでは?」と思われがちですが、ArduinoはOS未搭載なのに対し、Raspberry PiにはOSが搭載されています。
そのため、Raspberry Piは様々なインターフェースに接続してネットを見たり、音楽を聴いたりできます。
Raspberry Piも秋葉原やAmazonで購入できますが、小さなコンピューターに近い仕様なので、最低モデルでも1万5千円程度の相場になっています。

GROVEセンサー

GROVEセンサーとは、Seeed Studioが開発している「挿すだけ」で扱えるセンサーがあるモジュールです。
センサーの開発にはブレッドボード上にはんだ付けが必要な電子回路を組む必要があるため、ハードウェアの知識がない初心者にとっては敷居が高めです。この点、GroveセンサーはArduinoに「挿すだけ」なので、ハードウェアの開発効率を短縮してプログラムのみに集中できるというメリットがあります。
また、GROVEスターターキットV3には、タッチセンサー・音センサー・光センサー・ブザー・温度センサー・LCDディスプレイがあり、センサーの種類としても多彩です

(出典:https://www.switch-science.com/products/1812))

入退室管理システムのIoT開発事例

小型コンピューターとセンターを用意したら、次はいよいよ開発です。
今回開発するのは、ArduinoとGROVEの光センサーを接続した入退室管理Webアプリケーション。
IoT入退室管理システムを実現させるため、以下の開発が必要になります。

  • ・部屋の照明を監視して光センサー情報をサーバーに送信する
  • ・ブラウザで入退室情報を監視する

1. インターフェースの概要を確認

インターフェース概要は以下の通りです。

 

① 入退室情報を管理するIoTデバイスとして、Grove光センサーを使用する
② 取得した光センサーの値をJSON形式でWebアプリに送信する
③ 光センサーの値と日時をDBに保存する
④ Webアプリケーションのブラウザ上で入退室情報を確認する

入退室管理は、部屋のドアの開閉や人感センサーを使って温度を監視する方法などさまざまな方法が考えられるのですが、今回は前提要件として、電気の照明を監視したシステムになっています。
また、あくまで「個人で開発できる」をテーマにした開発事例になっていますので、厳密に入退室を監視するIoTシステムを開発したい場合には、前述したセンサーを複数使用したシステムを検討してみるのもいいでしょう。

2. IoTデバイスを作成

作成したインターフェース仕様書の通り、光センサーを利用して入退室情報を管理するWebアプリケーションを開発していきましょう。
まずはArduinoとGROVEの光センサーを接続してIoTデバイスを作成します。
前述で説明した通り、以下のようにArduinoの基盤にGROVEセンサーを挿し込むだけで完成です。

3. 光センサーの情報をサーバー側で取得

作成したIoTデバイスとPCと接続するだけではPC側でセンサーを取得できません。
そこで、Arduinoで光センサー情報をサーバーに送信するプログラムを作成する必要が出てきます。ArduinoはC言語やJavaScriptなど様々な言語に対応していますが、今回はC言語にて以下のソースコードの通り実装しています。

光センサー情報取得ソースコード(Grove_Light_Sensor.ino)

#include <math.h>
 
#define PORT 3000
char trans[20];
const int ledPin = 3;
float Rsensor;
 
void setup() {
    Serial.begin(115200);
    pinMode(ledPin, OUTPUT);
}
 
void loop() {
    int sensorValue = analogRead(0);
    memset(trans, 0, 20);
    char * json = & trans[0];
    int sendTemData = (int)(sensorValue);
    // 送信用のJSONデータの作成
    sprintf(json, "{\"temp\":%d, \"led\":%d}", sendTemData, sensorValue);
    Serial.println(json);
    delay(1000);
}

 

プログラムを作成後はボードに書き込み、光センサー情報が送信されることをデバッグ機能で確認。

受信側で加工しやすいように、データはJSON形式で送信します。
上記の通り、光センサーから取得した値が確認できれば、IoTデバイスの動作確認としては成功です。

4. IoT×Webアプリケーション開発

今回は、サーバー側から取得した光センサーの情報はMEANを使用してブラウザで監視できるシステムを開発します。
MEANとは、LAMP(Linux、Apache、MySQL・MariaDB、Perl・PHP・Python)のようなソフトウェアバンドルの一種で、以下の4機能を使用して開発する手法です。

MEAN 機能 詳細
M MongoDB jsonを扱うことができるドキュメント指向DB
E Express Node.js上で動作するバックエンドフレームワーク
A AngularJS フロントエンドjsフレームワーク
N Node.js サーバサイドjs環境

 

DB側のMの通り、MongoDBを使用してサーバーから取得したJSON形式のセンサー情報をリアルタイムで保存できるようにします。


フロントエンド側はAngularJSとNode.jsを使用し、MongoDBから取得したセンサー情報はChartjsを使ってリアルタイムでグラフ描画できるようにしたり、電球のONとOFFの画像を用意して光センサーから受け取った値の強さによって切り替えられるようにしたりしましたが、今回はソースコードの掲載は省略します。

駆け出しエンジニアの方はサーバー側の処理だけでなく、フロントエンド側も独自で画面UIを考えてコーディングすることでポートフォリオの作成にもなりますので、IoT×Webアプリケーションの開発に、ぜひチャレンジしてみてください。

5. 動作確認

MEANで開発したファイル構成にて動作確認してみると、IoTデバイスから光センサー情報を取得し、Webブラウザで入退室管理情報を確認できます。

 

 

部屋の明かりを消したとき、リアルタイムで電球が消灯しているアイコンが表示されます。

 

 

上記のようにArduinoとGROVEセンサーを組み合わせたIoTデバイスを作成することで、IoTのWebアプリケーション開発を個人で行うことが可能です。
今回の事例では光センサーを使っているので退室管理だけではなく、以下の情報を外出先からスマートフォンなどで知ることもできます。

  • ・照明をON、OFFにした時間帯は?
  • ・部屋の照明がどのくらいの明るさなのか?
  • ・部屋の照明と外からの光はどちらが明るい部屋なのか?
  • ・外出先からWebブラウザに接続して照明が消し忘れていないか?
  • ・不在の時に第三者によって照明が不正に利用されていないか?

上記の点を確認し、結果を分析してみるのも面白いでしょう。

まとめ

個人でできるIoT開発についてご紹介しました。
今回ご紹介した光センサー情報を監視するシステムですが、受け取ったセンサー情報のグラフ描画などを表示できるフロントエンド側を開発しておけば、IoTデバイスのセンサーの種類を温度や音を感知するモノに替えるだけで他のIoTデバイスとしても利用できるので、アイデア次第では生活を便利にするさまざまなIoTシステムが自宅で開発できるようになります。

また、駆け出しエンジニアの方はWebアプリケーション側の実装もできれば、単純なWebアプリケーションではなく、IoTアプリケーションとしてオリジナリティのあるポートフォリオを作成できますので、これを機にチャレンジしてみてはいかがでしょうか。

【アイ・ディ・エイチではSES事業のほか、テレワーク管理システム『RemoLabo』やコードレビューサービス『レビュマ』など自社開発も行っています。自社開発にご興味をお持ちの方は、ぜひ説明会にご参加ください。】