亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD

元器件清单

元器件数量预估价格备注
Arduino Nano R31$1.89紧凑型主控
DHT22 温湿度传感器1$3.00高精度、宽量程
BMP180 气压传感器1$2.00I2C 接口,可测海拔
1602 LCD (I2C 接口)1$3.00白字蓝背光,省引脚
万用板/焊盘板1-焊接固定
排针/排母、导线若干-连接用

工具:电烙铁、尖嘴钳、剥线钳
软件:Arduino IDE

项目背景

应老师邀请参加校园科技展,两天内制作教学演示项目。当地气温 34-40°C,决定制作便携气象站展示电子技术。本站测量温度、湿度、气压、海拔,成本约 $10,适合初学者和教学演示。

自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD

传感器选型解析

DHT22 vs DHT11 vs SHT1x

特性DHT11DHT22 (本项目)SHT1x
温度范围0-50°C-40~80°C0-50°C
温度精度±2°C±0.5°C±0.3°C
湿度精度±5% RH±2% RH±1.8% RH
价格最低中等较高
适用场景园艺、农业环境监测工业长期安装

DHT22 兼顾精度、量程和性价比,最适合本项目。

DHT22 接线

BMP180 原理与接线

BMP180 通过 I2C 通信(Nano: SDA→A4, SCL→A5),测量绝对气压。气压随天气和海拔变化:气压下降预示雨天,上升预示晴天。海拔计算公式:alti = 44330 * [1 - (p/p0)^(1/5.255)],其中 p0=1013.25 hPa(海平面标准气压)。

注意事项:

电路组装

在万用板上焊接 Nano 排母、DHT22 排母(含 10kΩ 上拉)、BMP180 排母、I2C LCD 排母。所有 I2C 设备共享 A4/A5 总线。预留一个插槽供后续扩展 RTC 时钟模块。

自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD

代码实现

需安装库:

#include 
#include 
#include 
#include 

SFE_BMP180 pressure;
#define ALTITUDE 20.56  // 你的当地海拔(米)
#define I2C_ADDR 0x27   // LCD I2C 地址,常见 0x27/0x3F
#define DHTPIN 2
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);  // 1602 LCD
float bmpTemp, dhtTemp;

void setup() {
  Serial.begin(9600);
  lcd.init(); lcd.backlight();
  lcd.print("Weather Station");
  delay(2000);
  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) {
      bmpTemp = T;
      status = pressure.startPressure(3);  // 最高精度
      if (status) { delay(status);
        status = pressure.getPressure(P, T);
        if (status) {
          p0 = pressure.sealevel(P, ALTITUDE);
          alt = pressure.altitude(P, p0);
          
          // 显示 BMP180 数据
          lcd.clear(); lcd.setCursor(0,0);
          lcd.print("BMP Temp: "); lcd.print(T,1); lcd.print(" C");
          delay(2000);
          lcd.clear(); lcd.setCursor(0,0);
          lcd.print("Pressure: "); lcd.print(P,1); lcd.print(" hPa");
          delay(2000);
          lcd.clear(); lcd.setCursor(0,0);
          lcd.print("Altitude: "); lcd.print(alt,0); lcd.print(" m");
          delay(2000);
        }
      }
    }
  }

  // 读取 DHT22 温湿度
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (!isnan(h) && !isnan(t)) {
    dhtTemp = t;
    lcd.clear(); lcd.setCursor(0,0);
    lcd.print("Humidity: "); lcd.print(h,1); lcd.print(" %");
    delay(2000);
    lcd.clear(); lcd.setCursor(0,0);
    lcd.print("DHT Temp: "); lcd.print(t,1); lcd.print(" C");
    delay(2000);
    // 显示双传感器平均温度
    lcd.clear(); lcd.setCursor(0,0);
    lcd.print("Avg Temp: "); lcd.print((bmpTemp+dhtTemp)/2,1); lcd.print(" C");
    delay(2000);
  }
}

原理图

自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD

扩展建议

制造工艺

  1. 树莓派 2 搭建户外气象站:接入 ADS‑WS1 串口气象站
  2. 树莓派自制气象站:每日邮件推送温湿雨数据
  3. 高级气象站 v2.0:BME280 实时监测温度/气压/湿度/海拔 (Windows 10 IoT Core)
  4. Arduino 自制 DCC 命令站:蓝牙控制模型铁路,免费 App 支持 CV 读写
  5. Arduino驱动的六发鸡尾酒自动调配站 – 打造你的专属智能调酒机
  6. Arduino 数字骰子:LCD 显示随机点数的电子骰子
  7. 用 Arduino 制作便携电容触控钢琴:分步指南
  8. DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
  9. 便携测距仪 DIY 套件:Arduino Nano + HC-SR04 + 18650 电池 + 3D 打印外壳
  10. Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
  11. 高性能 Arduino 气象气球数据记录器
  12. eDOT:基于 Arduino 的精密时钟与气象站,内置红外遥控