はじめに
遠隔地の温度をリアルタイムで測定し、低消費電力かつ長距離通信が可能な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つのユニットで構成されます。
送信機の仕組み
- 温度センサー(DHT11/DHT22)が周囲の温度を測定。
- Arduinoがセンサーデータを取得し、LoRaモジュールに送信。
- LoRa通信を介してデータを受信機に送信。
受信機の仕組み
- LoRaモジュールが送信機からのデータを受信。
- Arduinoが受信データを解析し、ディスプレイに表示。
回路図と接続方法
送信機の配線(Arduino + LoRa + DHT22)
部品 | Arduinoピン |
---|---|
DHT22 VCC | 5V |
DHT22 GND | GND |
DHT22 DATA | D3 |
LoRa VCC | 3.3V |
LoRa GND | GND |
LoRa NSS | D10 |
LoRa MOSI | D11 |
LoRa MISO | D12 |
LoRa SCK | D13 |
受信機の配線(Arduino + LoRa + OLED)
部品 | Arduinoピン |
OLED VCC | 3.3V |
OLED GND | GND |
OLED SDA | A4 |
OLED SCL | A5 |
LoRa VCC | 3.3V |
LoRa GND | GND |
LoRa NSS | D10 |
LoRa MOSI | D11 |
LoRa MISO | D12 |
LoRa SCK | D13 |
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の届かない場所でも長距離通信が可能になり、農業や環境モニタリングに活用できます。さらなる応用として、湿度センサーや気圧センサーを追加することで、より高度な環境監視システムを構築できます。
コメント