Arduino MKR FOX 1200とSigfoxで作る低消費電力IoT気象ステーション
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino MKR FOX 1200(Sigfoxモジュール内蔵) | 1 |
| DHT11 温湿度センサー(3ピン)または DHT22 | 1 |
使用アプリ・オンラインサービス
- Sigfox 開発者アカウント(バックエンド)
- ThingSpeak アカウント(データ可視化)
- Arduino IDE / Arduino Web Editor / Arduino IoT Cloud
プロジェクト概要
Sigfoxはフランス発のLPWAN(低消費電力広域ネットワーク)技術で、868MHz(欧州)/ 902MHz(米国)のISMバンドを使用し、超狭帯域変調で遠距離・低消費電力通信を実現します。本プロジェクトでは、Arduino MKR FOX 1200とDHT11/DHT22センサーを用い、Sigfoxネットワーク経由でThingSpeakダッシュボードへ温湿度データを送信する気象ステーションを構築します。Wi-Fi不要で、電池駆動・屋外/地下設置にも適しています。
ステップ1:Arduino MKR FOX 1200のセットアップ
- 公式ガイド Arduino MKR FOX 1200 Guide を参照
- Sigfoxボード登録:SigFox First Configuration に従い、backend.sigfox.com/activate でデバイスをアクティベート
- この手順を完了しないと、ThingSpeak等へのデータ転送ができません
ステップ2:ThingSpeakアカウント作成とチャネル設定
- ThingSpeak でアカウント作成
- 新規チャネル作成(Field 1: 温度, Field 2: 湿度 等)
- API Keys ページの「Write API Key」を控える
- SigfoxバックエンドのコールバックURLにこのAPIキーを組み込む(ステップ4参照)
ステップ3:ハードウェア接続
DHT11(またはDHT22)の接続:
- VCC → 5V(または3.3V)
- GND → GND
- Data → Arduino MKR FOX 1200 のピン 1
- ※ベアセンサーの場合、VCCとData間に10kΩプルアップ抵抗が必要。シールド版なら直結可
DHTライブラリのサンプルでシリアルモニタに温湿度が正常表示されるか確認してから次へ進みます。
ステップ4:Sigfox開発者ポータルでコールバック設定
- Sigfoxバックエンド にログイン
- Device Type → Callbacks → New Callback
- Type: DATA, Channel: URL, Direction: Uplink
- Custom payload config に以下を設定:
status::uint:8 temp::int:16:little-endian t::int:16:little-endian h::int:16:little-endian - HTTP Method: GET
- Callback URL に以下を設定(
###############をThingSpeak Write API Keyに置換):
https://api.thingspeak.com/update?api_key=###############&field1={customData#temp}&field2={customData#t}&field3={customData#h}&field4={snr}
ステップ5:コードとソフトウェア
必要ライブラリ(Arduino IDEのライブラリマネージャからインストール):
ArduinoLowPowerSigfoxDHT
主要コード抜粋
#include <ArduinoLowPower.h>
#include <Sigfox.h>
#include <DHT.h>
// ペイロード構造体(Sigfoxコールバックのpayload configと対応)
struct SigfoxMessage {
uint8_t status;
int16_t temp; // 温度 ×100 等のスケーリング
int16_t t; // モジュール温度等
int16_t h; // 湿度 ×100
// ...
} msg;
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
// floatをint16に変換(スケーリング例)
msg.temp = convertFloatToInt16(t, 60, -60); // 範囲 -60〜60℃
msg.h = convertFloatToUInt16(h, 110); // 範囲 0〜110%
msg.moduleTemperature = convertFloatToInt16(internalTemp, 60, -60);
// Sigfox送信(12バイト)
SigFox.beginPacket();
SigFox.write((uint8_t*)&msg, 12);
SigFox.endPacket();
// 低消費電力スリープ(例:10分)
LowPower.sleep(600000);
}
完全なコードはGitHubで公開:
https://github.com/masteruan/SigFoxThingSpeak
運用のポイント
- 電池駆動で長期間稼働可能(送信間隔とスリープで調整)
- Wi-Fi不要で、屋外・地下・移動体(ボート等)でも通信可能
- Sigfoxの制限:1日140メッセージ上り、ペイロード最大12バイト
- ThingSpeakでグラフ化・アラート設定・API連携が容易
製造プロセス
- 高度気象ステーション v2.0:温度・気圧・湿度・高度のリアルタイム監視
- Arduinoで作る模型鉄道DCCコマンドステーション 〜Bluetooth制御・無料アプリ付き〜
- Arduino制御の6連ショット・ドリンクミキシングステーション – 自作カクテル自動製造機
- Bluetooth操作のArduinoスパイボットを自作する
- 10ドルで作る携帯型Arduino気象観測ステーション – Nano、DHT22、BMP180、LCDで簡単DIY
- eDOT:高精度Arduino時計・気象ステーション(IRリモコン・自動輝度調整内蔵)
- ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム
- MKR GSM 1400で実現するリアルタイムIoT圧力監視:Arduino Cloud+Google Sheets連携
- Arduino MKR FOX 1200とSigfoxで作る低消費電力IoT気象ステーション
- DHT センサで作る信頼性の高い Arduino 気象ステーション
- ArduinoでChrome恐竜ゲームを実機操作 – ジャンプ/しゃがみを身体でコントロール