基于arduino uno r3主控的环境监测系统设计-2
Arduino环境监测系统分析与设计
系统分析概述
基于Arduino Uno R3的环境监测系统,集成了多种传感器和模块,可实时采集、显示并记录空气质量数据。
代码功能结构分析
详细代码功能注释
#include <Wire.h> // I2C通信库
#include <LiquidCrystal_I2C.h> // I2C LCD库
#include <SoftwareSerial.h> // 软串口库
#include <SdFat.h> // SD卡库
#include "RTClib.h" // RTC库// 引脚定义
#define TVOC_RX 2 // TVOC传感器RX
#define TVOC_TX 3 // TVOC传感器TX
#define SD_CS_PIN 10 // SD卡片选
#define ENC_CLK 5 // 编码器CLK
#define ENC_DT 6 // 编码器DT
#define ENC_SW 7 // 编码器按钮
#define RECORD_BTN 4 // 记录按钮
#define LED_BUILTIN 8 // LED指示灯// 创建对象
SoftwareSerial tvocSerial(TVOC_RX, TVOC_TX); // TVOC传感器软串口
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C LCD对象
SdFat SD; // SD卡对象
RTC_DS1307 rtc; // RTC对象// 数据结构
struct SensorData {uint16_t tvoc = 0; // TVOC值uint16_t hcho = 0; // 甲醛值uint16_t eco2 = 0; // CO2值bool valid = false; // 数据有效标志
} currentData; // 当前传感器数据struct LastRecord {uint16_t tvoc; // 最后记录的TVOCuint16_t hcho; // 最后记录的甲醛uint16_t eco2; // 最后记录的CO2char time[9]; // 记录时间(HH:MM:SS)uint32_t unixTime; // UNIX时间戳
} lastRecord = {0, 0, 0, "--:--:--", 0}; // 初始化最后记录
核心功能设计
硬件状态管理设计
用户交互设计
系统思维导图
### 环境监测系统
├─ 传感器采集
│ ├─ TVOC传感器(软串口)
│ ├─ 数据帧解析(9字节)
│ ├─ 校验和验证
│ └─ 数据结构化存储
│
├─ 数据存储
│ ├─ SD卡管理
│ │ ├─ 物理状态检测
│ │ ├─ 功能状态验证
│ │ └─ 自动恢复机制
│ └─ 文件操作
│ ├─ CSV格式数据记录
│ ├─ 文件头创建
│ └─ 最后记录缓存
│
├─ 用户界面
│ ├─ LCD显示控制
│ │ ├─ 3屏信息展示
│ │ ├─ 自定义字符(SD图标)
│ │ └─ 实时刷新(500ms)
│ └─ 用户输入
│ ├─ 旋转编码器操作
│ │ ├─ 旋转检测
│ │ ├─ 短按(切换屏幕)
│ │ └─ 长按(时间设置)
│ └─ 记录按钮
│ └─ 记录状态切换
│
├─ 时间管理
│ ├─ RTC初始化
│ ├─ 时间设置模式
│ ├─ 年月日时分秒调节
│ └─ 智能边界控制(闰年/每月天数)
│
└─ 系统诊断├─ LED状态指示├─ 串口调试输出└─ 硬件状态监控(5秒间隔)
设计改进建议
关键函数说明
-
**
initSDCard()
**- 功能:初始化SD卡并验证功能状态
- 流程:尝试最多3次初始化 → 验证读写功能 → 确保数据文件存在
-
**
checkSDStatus()
**- 功能:监测SD卡状态变化
- 特性:双状态检测(物理/功能)→ 自动恢复机制 → 状态变化时刷新显示
-
**
logSensorData()
**- 功能:记录传感器数据到SD卡
- 格式:UNIX时间戳,日期时间,TVOC,HCHO,CO2值
- 错误处理:失败时标记SD卡为功能异常
-
**
adjustTimeValue()
**- 功能:调整时间设置值
- 智能处理:月份天数自动调整(含闰年判断)→ 时间范围约束
-
**
updateDisplay()
**- 功能:更新LCD显示内容
- 三屏布局:
- 屏幕0:实时TVOC和甲醛值
- 屏幕1:CO2值与日期时间
- 屏幕2:最后记录的数据和系统状态
系统运行流程图
该环境监测系统实现了全面的空气数据采集、存储和展示功能,具有良好的硬件兼容性和用户交互体验,特别适合室内空气质量监测应用。
完整测试代码
https://download.csdn.net/download/Medlar_CN/91477067