Arduino UNO、BMP280センサー、LCDで作るシンプルな気象観測ステーション
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | メインマイコンボード |
| Adafruit Standard LCD - 16x2 白文字/青背景 | 1 | 温度・気圧表示用 |
| GY-BMP280 (BMP280搭載モジュール) | 1 | 温度・気圧センサー |
| 抵抗 220Ω | 1 | LCDバックライト用 |
| ジャンパーワイヤー | 17本 | 配線用 |
使用ソフトウェア
- Arduino IDE
プロジェクト概要
Arduino UNOとBMP280センサー、16x2キャラクタLCDを使用した、シンプルな気象観測ステーションの第1版です。BMP280はI2Cインターフェースで温度と気圧を高精度に測定できます。
スポンサー: Utsource.net - 電子部品の調達に信頼できるサイトです。
現在、ワイヤレス化したv2.0を開発中です。アップデートをお楽しみに!
Arduinoスケッチ
以下のコードをArduino IDEで書き込むと、センサーから取得した温度と気圧をLCDに表示します。
#include <LiquidCrystal.h> // LCDライブラリ
#include <BMP280.h> // BMP280ライブラリ
BMP280 bmp; // センサーインスタンス
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // LCDピン設定 (RS, E, D4, D5, D6, D7)
#define P0 1013.25 // 標準大気圧 (hPa)
#define CONTRAST_PIN 9 // LCDコントラスト調整用PWMピン
#define BRIGHT_PIN 10 // LCD輝度調整用PWMピン
double temperature = 0;
double pressure = 0;
char measureStatus = 0;
void collectData() {
measureStatus = bmp.startMeasurment();
if (measureStatus != 0) {
delay(measureStatus); // 測定完了待ち
measureStatus = bmp.getTemperatureAndPressure(temperature, pressure);
if (measureStatus != 0) {
pressure += 17; // センサー誤差補正 (+17 hPa)
temperature -= 0.8; // センサー誤差補正 (-0.8℃)
lcd.clear();
lcd.print("T: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("P: ");
lcd.print(pressure);
lcd.print(" hPa");
} else {
lcd.print("Error.");
}
} else {
lcd.print("Error.");
}
}
void setup() {
lcd.begin(16, 2);
pinMode(CONTRAST_PIN, OUTPUT);
pinMode(BRIGHT_PIN, OUTPUT);
analogWrite(CONTRAST_PIN, 100); // コントラスト調整 (0-255)
analogWrite(BRIGHT_PIN, 255); // 輝度最大
if (!bmp.begin()) {
lcd.print("Init. failed.");
lcd.setCursor(0, 1);
delay(1000);
lcd.print("Check wiring.");
while (1); // 停止
} else {
lcd.print("Init. OK.");
}
bmp.setOversampling(4); // オーバーサンプリング設定
delay(2000);
collectData();
}
void loop() {
collectData();
delay(2000); // 2秒ごとに更新
}
回路図・配線
以下の配線で接続してください。BMP280はI2C接続 (SDA: A4, SCL: A5)、LCDは4ビットモードで接続します。
主な接続ポイント
- BMP280: VCC→5V, GND→GND, SDA→A4, SCL→A5
- LCD: RS→12, E→11, D4→5, D5→4, D6→3, D7→2, VSS→GND, VDD→5V, V0→ピン9(PWM), A→ピン10(PWM), K→GND
- 抵抗220Ω: LCDバックライトアノード(A)とピン10の間に直列接続
補足・改良ポイント
- 気圧値は海面更正済みの相対気圧として表示されます。標高に応じた補正が必要な場合は計算式を追加してください。
- センサーの個体差により温度・気圧にオフセットがある場合、コード内の補正値(pressure += 17, temperature -= 0.8)を調整してください。
- 屋外設置の場合は防水ケースとソーラーパネル+バッテリーでの自立動作化がおすすめです。
- v2.0ではESP8266/ESP32を用いたWi-Fi通信とクラウド連携を予定しています。
製造プロセス
- Raspberry Pi 2とADS-WS1で屋外気象観測ステーションを構築
- Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
- 高度気象ステーション v2.0:温度・気圧・湿度・高度のリアルタイム監視
- Arduino制御の6連ショット・ドリンクミキシングステーション – 自作カクテル自動製造機
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
- 高性能 Arduino 気象観測気球データロガーの製作ガイド
- 10ドルで作る携帯型Arduino気象観測ステーション – Nano、DHT22、BMP180、LCDで簡単DIY
- eDOT:高精度Arduino時計・気象ステーション(IRリモコン・自動輝度調整内蔵)
- Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム