Contents
IoTの基本概念と初心者が押さえるべき用語
IoT(Internet of Things)は、日常の「モノ」をインターネットに接続し、データの取得・送信・活用を可能にする技術です。この記事では、開発を始める前に知っておくとスムーズになる3層構造と、初心者が混同しやすい専門用語を整理します。
3層構造:デバイス・エッジ・クラウド
IoT システムは大きく デバイス(端末) → エッジ → クラウド の三段階で構成されます。
- デバイス はセンサーやアクチュエータなど、現実世界の情報を電気信号に変換したハードウェアです。
- エッジ はデバイスから送られた生データを一時的に処理し、帯域幅やレイテンシーを抑える役割を担います。
- クラウド は大量の蓄積データを長期保存・分析し、他サービスとの連携や可視化を行う基盤です。
よく使われる専門用語解説
| 用語 | 簡易説明(初心者向け) | 主な利用シーン |
|---|---|---|
| センサー | 温度・光・加速度など、物理量を電気信号に変換する部品。 | データ取得の第一歩 |
| アクチュエータ | 電気信号でモーターやLEDを動作させる部品。 | 取得した情報に基づく出力 |
| MQTT ブローカー | 軽量な publish/subscribe 型メッセージサーバー。デバイスは「トピック」にデータを送信し、クラウドや他デバイスが購読して受け取ります。 | 省電力デバイス同士の双方向通信 |
| OTA(Over‑The‑Air)更新 | Wi‑Fi や BLE 経由でファームウェアを書き換える仕組み。現地に行かなくてもソフトウェアを最新版に保てます。 | デバイスの長期運用・機能追加 |
| BLE(Bluetooth Low Energy) | 超低消費電力の近距離無線規格。スマートフォンと簡単にペアリングできる点が特徴です。 | スマホ連携型センサーやビーコン |
| Wi‑Fi | 高速・広帯域の無線規格で、インターネット直結が前提となります。 | 大容量データ送信・クラウド直接接続 |
入門者向けおすすめ開発キット比較
ここでは、2024 年時点で公式サイトや主要販売店が公表している情報をもとに 4 つの代表的なキット を紹介します。価格は「参考価格レンジ」であり、購入時期・販売チャネルによって変動する可能性があります。
キット別概要
| キット | 主な特徴 | プログラミング環境 | 通信方式(公式) | 参考価格 (円) |
|---|---|---|---|---|
| obniz Starter Kit | JavaScript ベースのクラウド IDE が標準装備。Wi‑Fi と BLE を同時に搭載した obniz B2 が本体。 | obniz Cloud(JavaScript)※ブラウザ上でコード編集・デバッグ可能 | Wi‑Fi + BLE (MQTT 対応) | 5,800〜7,200【1】 |
| micro:bit V2 | 教育向けに最適化された 32 bit ARM ボード。内蔵スピーカーとタッチセンサーが追加。 | Microsoft MakeCode(ブロック)/MicroPython | BLE (無線) + USB (PC 直結) | 4,500〜6,000【2】 |
| M5StickC Plus | ESP32 をベースにディスプレイ・タッチボタン・バッテリを一体化。OTA 更新が公式サポート。 | UIFlow(ブロック)/Arduino IDE(C++) | Wi‑Fi + BLE | 6,200〜8,000【3】 |
| IchigoJam Pro | 日本製のシンプル 8 ビットマイコン。拡張ボードで I2C・SPI が利用可能。 | BASIC (公式エディタ)/外部エディタで Python | USB(シリアル)+拡張ボードで Wi‑Fi/BLE 可 | 3,800〜4,500【4】 |
注記:価格は2024 年 10 月時点の主要オンラインショップ(Amazon、公式ストア等)を参考にしています。実際の購入時には最新情報をご確認ください。
比較ポイントまとめ
| 項目 | obniz | micro:bit V2 | M5StickC Plus | IchigoJam Pro |
|---|---|---|---|---|
| 敷居(初心者向け度) | 中〜高(JavaScript が必要) | 低(ブロックと Python 両方利用可) | 中(Arduino/C++ が中心) | 中(BASIC は学習しやすいが、外部ツールが必要) |
| 通信の柔軟性 | Wi‑Fi と BLE の同時利用が可能 | 主に BLE、USB で PC 直接接続 | 高速 Wi‑Fi と BLE をフル活用 | USB が主流だが拡張ボードで無線化可 |
| 公式サポート体制 | フォーラム・Discord 活発、英語ドキュメント充実 | Microsoft Learn と国内フォーラム多数 | M5Stack 公式サイトと YouTube チュートリアルが豊富 | 日本語掲示板・書籍が多く、初心者向け教材が揃う |
| 拡張性 | 約30 種類の公式モジュール+ I2C/SPI 汎用ピン | 25 種類程度(I2C は制限あり) | 約35 種類の拡張ボード、GPIO が豊富 | 約20 種類の拡張ボード、追加で I2C/SPI 拡張可 |
簡単プロジェクト例と学習ステップ
実際に手を動かすことで概念が定着します。ここでは「LED 点灯」→「温湿度取得」→「クラウド通知」の三段階で学べるサンプルコードと手順を示します。
LED 点灯チュートリアル
以下の表は、各キットで最もシンプルな LED 点灯 を行う際の推奨言語・IDE とコード例です。実機に接続し、正しく点灯すれば次のステップへ進めます。
| キット | 推奨言語/IDE | コード抜粋 |
|---|---|---|
| obniz | JavaScript(obniz Cloud) | await obniz.io0.output(true); |
| micro:bit | MakeCode ブロック | 「LED」→「オン」ブロックを配置 |
| M5StickC Plus | UIFlow(ブロック) | digitalWrite(10, HIGH); |
| IchigoJam | BASIC | POKE 0x8000,1 |
実施手順
1. 各キットの公式 IDE をインストールまたはブラウザで起動。
2. コードを貼り付け、デバイスに書き込み(OTA または USB)。
3. LED が点灯したら ✅、点灯しなければ配線・ピン設定を再確認。
温湿度取得サンプル
温度と湿度を測定できる代表的センサー DHT11 と BME280 を例に、データ取得からシリアルモニタ表示までの流れを示します。以下は obniz キットで JavaScript を使ったコードです。
|
1 2 3 4 5 6 7 8 |
// DHT11 のインスタンス作成(GPIO0 に接続) const dht = new obniz.DHT({ io: 0, type: "11" }); setInterval(async () => { const { temperature, humidity } = await dht.get(); console.log(`Temp:${temperature}°C Hum:${humidity}%`); }, 2000); |
ポイント解説
- await を使うことで非同期処理がシンプルに記述できます。
- setInterval により 2 秒ごとに測定結果を取得し、コンソールへ出力しています。
- 他キットでも同様のロジックは MicroPython や Arduino C++ で実装可能です(コード例は公式リファレンス参照)。
クラウド連携・通知(LINE Notify)
取得したセンサーデータをインターネット上の MQTT ブローカーへ送信し、さらに LINE Notify にプッシュ通知する流れを示します。M5StickC Plus の Arduino 環境での実装例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <WiFi.h> #include <PubSubClient.h> const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqttServer= "test.mosquitto.org"; // 公開ブローカー例 const int mqttPort = 1883; WiFiClient espClient; PubSubClient client(espClient); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); client.setServer(mqttServer, mqttPort); } void loop() { if (!client.connected()) reconnect(); client.loop(); // センサー値取得(擬似コード) float temp = readTemperature(); float hum = readHumidity(); // MQTT で送信 String payload = "{\"temp\":" + String(temp) + ",\"hum\":" + String(hum) + "}"; client.publish("home/room1", payload.c_str()); // LINE Notify へ POST(HTTPS 必要) sendLineNotify(payload); delay(10000); } void reconnect() { while (!client.connected()) { if (client.connect("M5StickC")) break; delay(500); } } |
- MQTT ブローカー は軽量で省電力デバイスに最適です。トピック
home/room1に JSON 形式で温湿度を送ります。 - LINE Notify の Webhook URL(個別取得)へ HTTPS POST すると、スマートフォンに通知が届きます。
この一連の流れは「LED 点灯 → センサー取得 → クラウド通知」の学習サイクルとして推奨され、IoT 開発全体像を短時間で把握できます。
学習を続けるためのチェックリストと次のステップ
実践した項目を可視化することで、学習の抜け漏れを防げます。以下の表に沿って進捗を ✅ か ❌ で管理してください。
| ステップ | 確認項目 | 完了判定 |
|---|---|---|
| 1. キット選定 | 目的・予算・拡張性を比較し、最適なキットを決定したか | ✅ / ❌ |
| 2. 購入手続き | 公式サイトまたは正規販売店から購入し、付属品が揃っているか | ✅ / ❌ |
| 3. LED 点灯 | IDE のインストール・コード書込み・LED が点灯したか | ✅ / ❌ |
| 4. センサー取得 | 温湿度センサーモジュールを接続し、値が正しく取得できたか | ✅ / ❌ |
| 5. クラウド通知 | MQTT または LINE Notify にデータ送信できたか | ✅ / ❌ |
| 6. 拡張計画 | 次に挑戦したいサービスシナリオを書き出し、必要なモジュールやプラットフォームを洗い出したか | ✅ / ❌ |
次のステップ例
- IoT ダッシュボード構築:Node‑RED や Grafana で可視化。
- セキュリティ学習:TLS/SSL 設定や認証トークン管理を体験。
- バッテリー駆動最適化:スリープモード・OTA 更新の組み合わせで省電力設計。
参考情報・出典
- obniz Official Site – 「obniz Starter Kit」製品ページ、2024 年 10 月閲覧。URL: https://obniz.io/ja/products/starter-kit (アクセス日:2024‑10‑12)
- micro:bit Japan – 「micro:bit V2」仕様・価格情報、2024 年 9 月閲覧。URL: https://microbit.org/ja/education/v2/ (アクセス日:2024‑09‑30)
- M5Stack Official – 「M5StickC Plus」製品ページ、2024 年 11 月閲覧。URL: https://docs.m5stack.com/en/core/m5stickc_plus (アクセス日:2024‑11‑05)
- IchigoJam公式サイト – 「IchigoJam Pro」仕様・販売価格、2024 年 10 月閲覧。URL: https://ichigojam.net/ja/pro/ (アクセス日:2024‑10‑20)
※本稿で使用した価格帯は「参考情報」であり、実際の購入時には最新の公式発表をご確認ください。また、本記事に記載されたコード例は動作保証を目的とした簡易サンプルです。製品ごとのライブラリバージョンや開発環境によっては微調整が必要になる場合があります。