Funpack3-5:基于Arduino UNO R4 WiFi的环境温湿度监控
该项目使用了Arduino UNO R4 WiFi开发板、C++语言以及多个Adafruit硬件组件,实现了一个环境监控系统的设计,它的主要功能为:读取传感器数据并在ST7789彩色TFT屏幕上直观显示当前温湿度,用户可通过物理开关选择WiFi模式或接入点模式,在Web界面查看实时数据及动态设置目标温湿度。。
标签
Funpack活动
开发板
LIFE
更新2025-01-15
112

项目总结报告

一、项目描述

项目名称:基于Arduino UNO R4 WiFi的环境监控系统

项目背景: 随着物联网技术的快速发展,环境监控系统成为智能家居、农业管理等领域的重要应用。本项目旨在基于Arduino UNO R4 WiFi开发一套温湿度监控系统,集成实时数据采集、动态显示和远程管理功能。通过硬件与软件的结合,实现环境数据的高效采集与可视化,提升用户的智能生活体验。

项目目标

  1. 通过温湿度传感器采集环境数据,并实现实时更新;
  2. 在彩色TFT屏幕上直观显示当前环境温湿度以及目标温湿度;
  3. 提供基于WiFi的远程访问功能,支持数据查看和目标温湿度设置;
  4. 具备WiFi模式与AP模式切换功能,灵活适配不同网络环境。

项目特色

  • 使用TFT屏幕呈现温湿度数据,配合动态视觉效果增强用户体验;
  • 提供双模式切换(WiFi模式与AP模式),满足多种网络使用场景;
  • 基于Web的用户界面,支持远程实时监控和参数配置。

硬件介绍

  1. Arduino UNO R4 WiFi
    • 集成WiFi模块,支持物联网开发。
    • 提供丰富的I/O接口,适合多种传感器和外设连接。
  2. Adafruit AHT20温湿度传感器
    • 提供高精度的温湿度数据采集。
    • I2C接口,易于与开发板集成。
  3. Adafruit ST7789 240×320彩色TFT显示屏
    • 高分辨率显示,适合数据的直观展示。
    • 支持丰富的图形库。

二、设计思路

系统架构

  1. 数据采集模块:利用AHT20传感器采集环境温湿度数据,并以结构化方式存储。
  2. 数据展示模块:通过Adafruit ST7789显示屏实时更新温湿度数据,同时显示目标温湿度值。
  3. 通信模块:基于Arduino UNO R4 WiFi的WiFi功能,搭建HTTP服务器,实现远程访问与参数设置。
  4. 用户交互模块:
    • 物理开关用于切换WiFi模式与AP模式。
    • Web界面支持实时查看数据和设置目标值。

软件逻辑

  1. 初始化硬件:包括传感器、显示屏和WiFi模块的初始化。
  2. 根据开关状态选择模式:WiFi模式连接现有网络,AP模式创建独立热点。
  3. 启动Web服务器:支持客户端请求处理,包括数据查询和目标值设置。
  4. 主循环:
    • 定期读取传感器数据并更新显示。
    • 处理客户端请求,返回实时数据或更新系统参数。

三、软件流程图及主要代码片段

软件流程图

+-----------------------+
| 系统初始化 |
+-----------------------+
|
v
+-----------------------+
| 检测模式并启动相应模块 |
+-----------------------+
|
v
+-----------------------+
| 启动Web服务器 |
+-----------------------+
|
v
+-----------------------+
| 主循环:读取数据并更新显示 |
+-----------------------+
|
v
+-----------------------+
| 处理客户端请求(查询或设置)|
+-----------------------+

主要代码片段及说明

  1. WiFi连接代码
void connectToWiFi() {
Serial.print("开始连接至");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("连接中...");
}
Serial.print("成功连接到WiFi,IP地址:");
Serial.println(WiFi.localIP());
}

功能说明:在WiFi模式下,连接指定的SSID和密码,并输出连接成功后的IP地址。

  1. 传感器数据读取与显示
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);
tft.setCursor(0, 80);
tft.setTextSize(3);
tft.setTextColor(ST77XX_WHITE);
tft.println("Temperature:");
tft.setTextColor(ST77XX_BLUE);
tft.println(String(temp.temperature) + " C");
tft.println("Humidity:");
tft.setTextColor(ST77XX_GREEN);
tft.println(String(humidity.relative_humidity) + " %");

功能说明:从AHT20读取温湿度数据并更新到TFT屏幕。

  1. HTTP请求处理
void handleDataRequest(WiFiClient client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: application/json; charset=utf-8");
client.println();
String json = "{";
json += "\"temperature\":" + String(enviro.temperature, 1) + ",";
json += "\"humidity\":" + String(enviro.humidity, 1);
json += "}";
client.println(json);
}

功能说明:处理客户端数据查询请求,返回当前环境数据的JSON格式。

四、功能展示及说明

功能展示

  1. TFT屏幕显示效果
    • 显示当前温湿度和目标值。
    • 动态更新,数据变化直观可见。
  2. Web界面展示效果
    • 浏览器中实时显示当前温湿度数据。
    • 提供目标温湿度设置表单。

五、心得体会

收获

  1. 深入掌握了Arduino生态下的开发流程,包括硬件模块集成和库的使用。
  2. 提升了对物联网系统的整体设计能力,从硬件选型到软件实现均有较深的理解。
  3. 学会了构建简易的Web服务器,实现设备与用户的远程交互。

挑战

  1. 在调试过程中,遇到过传感器通信失败和WiFi连接不稳定的问题,通过查阅文档和调整代码得以解决。
  2. Web界面设计中,为了兼顾不同设备的显示效果,花费了较多时间进行样式调整。

建议

  1. 活动中可以提供更多实际项目案例参考,帮助开发者更快上手。
  2. 引入更复杂的挑战任务,例如数据存储与分析,进一步提升活动的技术深度。

通过本次项目的开发,不仅完成了一个实用的环境监控系统,还为未来的物联网项目积累了宝贵经验。这次活动让我充分体会到单人完成一个完整项目的成就感,也激励我在未来的开发中不断突破自己的技术边界。

附件下载
EnviroNet_v1.1.ino
程序代码
团队介绍
本项目由独立开发者完成
团队成员
LIFE
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号