PR

【自作】Arduino×LoRaでワイヤレス温度計を作る!

arduino

はじめに

遠隔地の温度をリアルタイムで測定し、低消費電力かつ長距離通信が可能なLoRa(Long Range)通信を活用してデータを送信できるワイヤレス温度計を作成します。LoRaは、Wi-FiやBluetoothと比べて圧倒的に長距離通信が可能なため、農業、環境モニタリング、スマートシティなどの分野で広く活用されています。本記事では、ArduinoとLoRaモジュールを組み合わせたワイヤレス温度計の作り方を解説します。

  

必要な部品

本プロジェクトには以下の部品が必要です。

  • Arduino Uno / Arduino Pro Mini(送信機・受信機用)
  • LoRaモジュール(SX1278 / RFM95など)(送信機・受信機用)
  • DHT11またはDHT22温湿度センサー(送信機用)
  • ジャンパーワイヤー
  • ブレッドボード
  • バッテリー(18650リチウムイオン電池など)(送信機用)
  • ディスプレイ(OLED 0.96インチ 128×64など)(受信機用)

 

LoRa通信の特徴と利点

  • 長距離通信:都市部で数km、郊外では10km以上の通信が可能。
  • 低消費電力:バッテリー駆動のIoTデバイスに最適。
  • 低データレート:少量のデータを確実に届ける用途に向いている。
  • 非セルラー通信:SIMカード不要で運用可能。

 

システム構成

本システムは、**送信機(温度センサー+LoRaモジュール)受信機(LoRaモジュール+ディスプレイ)**の2つのユニットで構成されます。

送信機の仕組み

  1. 温度センサー(DHT11/DHT22)が周囲の温度を測定。
  2. Arduinoがセンサーデータを取得し、LoRaモジュールに送信。
  3. LoRa通信を介してデータを受信機に送信。

受信機の仕組み

  1. LoRaモジュールが送信機からのデータを受信。
  2. Arduinoが受信データを解析し、ディスプレイに表示。

 

回路図と接続方法

送信機の配線(Arduino + LoRa + DHT22)

部品Arduinoピン
DHT22 VCC5V
DHT22 GNDGND
DHT22 DATAD3
LoRa VCC3.3V
LoRa GNDGND
LoRa NSSD10
LoRa MOSID11
LoRa MISOD12
LoRa SCKD13

受信機の配線(Arduino + LoRa + OLED)

部品Arduinoピン
OLED VCC3.3V
OLED GNDGND
OLED SDAA4
OLED SCLA5
LoRa VCC3.3V
LoRa GNDGND
LoRa NSSD10
LoRa MOSID11
LoRa MISOD12
LoRa SCKD13

 

Arduinoのスケッチ(プログラム)

以下のコードをArduinoに書き込んで、送信機と受信機を動作させます。

送信機(LoRaで温度を送信)

#include <SPI.h>
#include <LoRa.h>
#include <DHT.h>

#define DHTPIN 3
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
  LoRa.begin(915E6);
}

void loop() {
  float temp = dht.readTemperature();
  Serial.print("送信: ");
  Serial.println(temp);
  LoRa.beginPacket();
  LoRa.print(temp);
  LoRa.endPacket();
  delay(5000);
}

受信機(LoRaで温度を受信しOLEDに表示)

#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  Serial.begin(9600);
  LoRa.begin(915E6);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}

void loop() {
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    String received = "";
    while (LoRa.available()) {
      received += (char)LoRa.read();
    }
    Serial.print("受信: ");
    Serial.println(received);
    display.clearDisplay();
    display.setCursor(0, 10);
    display.print("温度: ");
    display.print(received);
    display.print(" C");
    display.display();
  }
}

 

応用例

1. 農業向け環境モニタリング

畑の温度や湿度をLoRaでリアルタイム監視。

2. 遠隔地の温度監視

山小屋や温室など、Wi-Fiが届かない場所での温度モニタリング。

3. 防災システム

山火事や異常気象の兆候を検知し、長距離でデータを送信。

 

よくあるトラブルと解決策

1. LoRa通信が確立しない

対策

  • 送信機と受信機の周波数を合わせる(915E6など)。
  • アンテナの接続を確認。

2. 受信データが不安定

対策

  • LoRa.beginPacket()の前後で適切なディレイを挿入。
  • 電波干渉の少ない環境でテスト。

 

まとめ

ArduinoとLoRaを活用したワイヤレス温度計を作成しました。LoRaを使うことで、Wi-Fiの届かない場所でも長距離通信が可能になり、農業や環境モニタリングに活用できます。さらなる応用として、湿度センサーや気圧センサーを追加することで、より高度な環境監視システムを構築できます。

コメント

タイトルとURLをコピーしました