使用 Arduino UNO、BMP280 传感器与 LCD 构建简易气象站
元器件与物料
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控板 |
| Adafruit 标准 LCD - 16x2 白字蓝底 | 1 | 显示屏 |
| GY-BM E/P 280 (BMP280 模块) | 1 | 气压/温度传感器 |
| 电阻 221 欧姆 | 1 | LCD 对比度/背光调节 |
| 跳线 (通用) | 17 | 连接用 |
| UTSOURCE 电子元器件 | 1 | 赞助商提供 |
软件与在线服务
- Arduino IDE
项目简介
这是一个基于 Arduino UNO、BMP280 传感器和 16x2 LCD 的简易气象站首个版本。该项目由 UTSOURCE 赞助,作者表示正在开发 v2.0 无线版本,敬请关注更新。
代码
Arduino 代码 (C/C++)
以下代码可将传感器数据发送至 LCD 显示:
#include <LiquidCrystal.h> // LCD 库
#include <BMP280.h> // BMP280 传感器库
BMP280 bmp; // 初始化传感器
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 初始化 LCD,请确保接线正确
#define P0 1013.25 // 标准大气压 (hPa)
#define contrast 9 // 对比度调节引脚
#define brightness 10 // 背光亮度调节引脚
double T = 0; // 温度初值
double P = 0; // 气压初值
char measure = 0;
void collectData() {
measure = bmp.startMeasurment();
if (measure != 0) {
delay(measure);
measure = bmp.getTemperatureAndPressure(T, P);
if (measure != 0) {
P = P + 17; // 传感器误差修正:+17 hPa
T = T - 0.8; // 传感器误差修正:-0.8°C
lcd.clear();
lcd.print("T: ");
lcd.print(T);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("P: ");
lcd.print(P);
lcd.print(" hPa");
} else {
lcd.print("Error.");
}
} else {
lcd.print("Error.");
}
}
void setup() {
lcd.begin(16, 2);
pinMode(contrast, OUTPUT);
pinMode(brightness, OUTPUT);
analogWrite(contrast, 100); // 对比度建议值,可自行调整
analogWrite(brightness, 255); // 亮度建议值,可自行调整
if (!bmp.begin()) {
delay(1000);
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 秒刷新一次
}
原理图
按以下接线图连接即可避免问题:
制造工艺
- 树莓派 2 搭建户外气象站:接入 ADS‑WS1 串口气象站
- 树莓派自制气象站:每日邮件推送温湿雨数据
- 高级气象站 v2.0:BME280 实时监测温度/气压/湿度/海拔 (Windows 10 IoT Core)
- Arduino驱动的六发鸡尾酒自动调配站 – 打造你的专属智能调酒机
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
- Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
- 高性能 Arduino 气象气球数据记录器
- 自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD
- eDOT:基于 Arduino 的精密时钟与气象站,内置红外遥控
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- Arduino + ThingSpeak 实时气象监测站