10ドルで作る携帯型Arduino気象観測ステーション – Nano、DHT22、BMP180、LCDで簡単DIY
必要な部品と材料
| 部品 | 数量 | 目安価格 |
|---|---|---|
| Arduino Nano R3 | 1 | $1.89 |
| DHT22 温湿度センサー | 1 | $3.00 |
| BMP180 気圧センサー | 1 | $2.00 |
| I2C接続 16x2 LCDディスプレイ(白文字/青背景) | 1 | $3.00 |
| ユニバーサル基板、ピンヘッダー、配線材 | 1式 | - |
合計: 約$10(約1,500円)
必要な工具
- はんだごて
- ニッパー/ペンチ
- 配線用ワイヤー
プロジェクト概要
大学の科学展示用に2日で制作した携帯型気象観測ステーションです。温度、湿度、気圧、標高を測定し、LCDに順次表示します。コンパクトなNanoベースで持ち運び可能です。

センサー選定の理由
DHT22(温湿度)
- デジタル出力で扱いやすい
- 温度範囲 -40〜80°C、精度 ±0.5°C
- 湿度 0〜100%、精度 ±2%RH
- DHT11より高精度・広範囲、SHT1xより安価
BMP180(気圧・標高)
- I2C接続で配線が簡単(SDA=A4、SCL=A5)
- 気圧から標高を算出可能(海面気圧1013.25hPa基準)
- 3.3V駆動、5V直結厳禁(レギュレーター付きモジュール推奨)
配線と組み立て
接続まとめ
| センサー | ピン | Arduino接続先 |
|---|---|---|
| DHT22 | VCC | 5Vまたは3.3V |
| GND | GND | |
| DATA | D2 | |
| BMP180 | VCC | 3.3V |
| GND | GND | |
| SDA | A4 | |
| SCL | A5 | |
| I2C LCD | VCC | 5V |
| GND | GND | |
| SDA | A4(BMP180と共用) | |
| SCL | A5(BMP180と共用) |
※DHT22のDATAピンには10kΩプルアップ抵抗を推奨

必要なライブラリ
- SFE_BMP180ライブラリ
- Adafruit DHTライブラリ
- LiquidCrystal_I2Cライブラリ(Arduino IDEのライブラリマネージャからインストール可)
スケッチ(整理版)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <SFE_BMP180.h>
SFE_BMP180 pressure;
#define ALTITUDE 20.56 // 設置場所の標高(m)に書き換え
#define I2C_ADDR 0x27 // LCDのI2Cアドレス(0x3Fの場合も)
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);
float tempBMP, tempDHT;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.print("Weather Station");
delay(3000);
dht.begin();
pressure.begin();
}
void loop() {
char status;
double T, P, p0, alt;
// BMP180: 気温
status = pressure.startTemperature();
if(status) { delay(status); status = pressure.getTemperature(T); }
if(status) {
tempBMP = T;
show("BMP Temp:", String(T,1)+" C");
delay(2000);
}
// BMP180: 気圧・標高
status = pressure.startPressure(3);
if(status) { delay(status); status = pressure.getPressure(P,T); }
if(status) {
show("Pressure:", String(P,1)+" hPa");
delay(2000);
p0 = pressure.sealevel(P, ALTITUDE);
alt = pressure.altitude(P, p0);
show("Altitude:", String(alt,0)+" m");
delay(2000);
}
// DHT22: 湿度・温度
float h = dht.readHumidity();
float t = dht.readTemperature();
if(!isnan(h) && !isnan(t)) {
tempDHT = t;
show("Humidity:", String(h,0)+" %");
delay(2000);
show("DHT Temp:", String(t,1)+" C");
delay(2000);
show("Avg Temp:", String((tempBMP+tempDHT)/2,1)+" C");
delay(2000);
}
}
void show(String line1, String line2) {
lcd.clear();
lcd.setCursor(0,0); lcd.print(line1);
lcd.setCursor(0,1); lcd.print(line2);
}
注意点
- BMP180は風通しの良い場所に置く(密閉ケース不可、強風も避ける)
- 急激な温度変化や熱源から離す
- 湿気・光(チップ上部の穴から入る)を避ける
- 標高定数
ALTITUDEは実際の設置場所の標高(m)に書き換えてください
製造プロセス
- Raspberry Pi 2とADS-WS1で屋外気象観測ステーションを構築
- Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
- 高度気象ステーション v2.0:温度・気圧・湿度・高度のリアルタイム監視
- Arduinoで作る模型鉄道DCCコマンドステーション 〜Bluetooth制御・無料アプリ付き〜
- Arduino制御の6連ショット・ドリンクミキシングステーション – 自作カクテル自動製造機
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- Arduinoで携帯型静電容量タッチピアノを自作:MPR121シールド活用・ステップバイステップ
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- ポータブル距離検出器:Arduino Nano自作キット(HC-SR04、18650電源、3Dプリントケース付き)
- Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
- 高性能 Arduino 気象観測気球データロガーの製作ガイド