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

Arduino Nano 迷你气象站:温湿度气压三合一,ST7735 彩屏显示

组件与物料清单

组件数量
Arduino Nano R31
DHT11 温湿度模块1
BMP280 气压传感器模块1
1.44 英寸 ST7735 TFT 彩屏 (128x128)1
3D 打印外壳1
USB 转 Mini USB 线1

所需工具

软件与服务

项目介绍

引言

实时采集物理环境数据充满乐趣。本项目集成温度、湿度、大气压三大核心气象参数,并在 1.44" TFT 彩屏上实时显示,体积小巧可放入口袋。

工作原理与选型说明

电路与编程要点

Arduino Nano 迷你气象站:温湿度气压三合一,ST7735 彩屏显示

关键库:SPI.h、Wire.h、Adafruit_GFX.h、Adafruit_ST7735.h、Adafruit_BMP280.h、DHT.h。

结构组装与测试

Arduino Nano 迷你气象站:温湿度气压三合一,ST7735 彩屏显示
Arduino Nano 迷你气象站:温湿度气压三合一,ST7735 彩屏显示
Arduino Nano 迷你气象站:温湿度气压三合一,ST7735 彩屏显示
Arduino Nano 迷你气象站:温湿度气压三合一,ST7735 彩屏显示

结论

项目成本低、制作简单、实用性强,是一个随身携带的迷你气象站,极适合电子爱好者入门练手。

完整代码

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11
#define TFT_RST 8
#define TFT_CS 10
#define TFT_DC 9
#define BMP280_I2C_ADDRESS 0x76

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
Adafruit_BMP280 bmp280;
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  dht.begin();
  tft.initR(INITR_144GREENTAB);
  tft.fillScreen(ST77XX_BLACK);
  tft.drawFastHLine(0, 15, tft.width(), ST77XX_CYAN);
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(25, 5);
  tft.print("WEATHER BUDDY");

  if (!bmp280.begin(BMP280_I2C_ADDRESS)) {
    tft.setTextColor(ST77XX_RED, ST77XX_CYAN);
    tft.setTextSize(2);
    tft.setCursor(5, 76); tft.print("Connection");
    tft.setCursor(35, 100); tft.print("Error");
    while (1);
  }

  tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN);
  tft.drawFastHLine(0, 95, tft.width(), ST77XX_CYAN);
  tft.setTextColor(ST77XX_RED, ST77XX_BLACK); tft.setCursor(30, 20); tft.print("TEMPERATURE");
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); tft.setCursor(40, 60); tft.print("HUMIDITY");
  tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK); tft.setCursor(40, 100); tft.print("PRESSURE");
  tft.setTextSize(2);
}

void loop() {
  char buf[8];
  float temp = bmp280.readTemperature();
  float hum = dht.readHumidity();
  float pres = bmp280.readPressure(); // Pa

  // 温度
  if (temp < 0) sprintf(buf, "-%02u.%02u", (int)abs(temp), (int)(abs(temp)*100)%100);
  else sprintf(buf, " %02u.%02u", (int)temp, (int)(temp*100)%100);
  tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
  tft.setCursor(11, 34); tft.print(buf);
  tft.drawCircle(89, 34, 2, ST77XX_YELLOW); // 度符号
  tft.setCursor(95, 34); tft.print("C");

  // 湿度
  sprintf(buf, "%02u ", (int)hum);
  tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK);
  tft.setCursor(45, 74); tft.print(buf);
  tft.setCursor(75, 74); tft.print("%");

  // 气压 (Pa -> hPa)
  sprintf(buf, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres % 100));
  tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK);
  tft.setCursor(3, 112); tft.print(buf);
  tft.setCursor(91, 112); tft.print("hPa");

  delay(1000);
}

3D 打印外壳文件

STL 文件已包含在项目文件中,可直接导入切片软件打印。

参考资料

制造工艺

  1. 树莓派 2 搭建户外气象站:接入 ADS‑WS1 串口气象站
  2. 树莓派自制气象站:每日邮件推送温湿雨数据
  3. 树莓派 3 配合 PubNub 实现远程气象监测
  4. 高级气象站 v2.0:BME280 实时监测温度/气压/湿度/海拔 (Windows 10 IoT Core)
  5. DIY Photoshop 硬件控制台:Arduino Nano RP2040 实现快捷键外设
  6. 用 Arduino Pro Mini 与 DS1302 RTC 打造精准七段数码管时钟
  7. 自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD
  8. eDOT:基于 Arduino 的精密时钟与气象站,内置红外遥控
  9. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
  10. Arduino + ThingSpeak 实时气象监测站
  11. Arduino Nano 多传感器气象站:BMP280 + DHT11 + GUVA-S12SD + DS3231 + OLED
  12. DIY Arduino USB 触控板 —— 将废旧笔记本触控板改造为现代输入设备