X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
DigiKey得捷技术专区
[经验分享] 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境监测
zygalaxy
2024-10-31 20:29
楼主
##【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境监测模块开发 ## 一、模块概述 本环境监测模块旨在通过温湿度传感器,实时监测室内温度和湿度,并将数据展示在LCD触摸屏和手机APP上。当温湿度参数超出正常范围时,系统会自动报警,提醒用户采取措施改善环境。
## 二、功能需求 1. **温湿度监测** - 利用空气温湿度传感器监测室内温度和湿度。 2. **环境信息展示** - 在LCD触摸屏和手机APP上实时展示温湿度等环境信息。 - 以直观的图表和数字形式呈现,方便用户查看。 3. **报警系统** - 当温湿度参数超出正常范围时,自动报警。 - 报警方式可以是声音、震动、推送通知等。 ## 三、硬件需求 1. **空气温湿度传感器**:监测室内温度和湿度。
2. **ESP32 评估板**:负责数据处理和传输。
3. **LCD 触摸屏显示器**:显示环境信息。
4. **手机 APP**:用户可以通过手机APP查看环境数据。
## 四、软件设计 1. **数据采集** - 通过温湿度传感器持续采集室内环境数据。 - 确保数据采集的准确性和稳定性。 2. **数据处理** - 对采集到的数据进行处理和分析,提取有用的环境信息。 - 计算温湿度的平均值、最大值和最小值等统计信息。 3. **数据传输** - 通过 ESP32 模块将处理后的数据传输至 LCD 触摸屏显示器和用户手机APP。 - 确保数据传输的实时性和可靠性。 4. **报警触发** - 当检测到温湿度参数超出正常范围时,自动触发报警。 - 根据不同的参数设置不同的报警阈值。 ## 五、用户界面设计 1. **LCD 触摸屏显示器界面** - 显示温湿度等环境信息。 - 提供简洁明了的图表和数字显示,方便用户查看。 - 可以设置报警阈值,当数据超出阈值时自动报警。 2. **手机 APP 界面** - 实时显示室内环境数据。 - 提供历史数据查询功能,用户可以查看过去一段时间的环境数据。 - 推送报警通知,当检测到异常情况时及时提醒用户。
## 六、部分代码 硬件代码: ```c // #include
#include
#include
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // WiFi network credentials const char *ssid = "ExclusiveForQuZhihang"; const char *password = "quzhihang1314!"; // MQTT broker settings const char *mqtt_server = "192.168.2.105"; const int mqtt_port = 1883; const char *clientId = "humidity_1"; const char *mqtt_user = "zygalaxy"; // 温湿度主题 const char *humidity_topic = "t/humidity"; // 'payload': '{"humidity": 57, "temperature": 25}' WiFiClient wifiClient; PubSubClient client(wifiClient); void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived on topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char)payload
); } Serial.println(); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect(clientId)) { Serial.println(" connected"); } else { Serial.print(" failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup() { Serial.begin(115200); while (!Serial) ; Serial.println("Ready"); Serial.println(F("DHTxx test!")); dht.begin(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nConnected to the WiFi network"); client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); } int a = 0; void loop() { if (!client.connected()) { reconnect(); } // 读取温湿度 float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Failed to read from DHT sensor!")); return; } client.loop(); // 定义发送的数据 String payload = "{\"humidity\":" + String(h) + ",\"temperature\":" + String(t) + "}"; client.publish(humidity_topic, payload.c_str()); delay(200); } ``` 软件代码: ```python # 温湿度 @app.route('/humidity', methods=['POST']) def humidity(): reply = {"result": "ok", "message": "success"} raw_data = request.get_json() print(raw_data) if raw_data['event'] == 'message.publish': device_id = raw_data['clientid'] device = DeviceInfo.query.filter_by(device_id=device_id).first() if device: if device.device_type == 'humidity': """ {'publish_received_at': 1723617041052, 'pub_props': {'User-Property': {}}, 'peerhost': '112.224.169.80', 'qos': 0, 'topic': 't/humidity', 'clientid': 'humidity_1', 'payload': '{"humidity": 57, "temperature": 25}', 'username': 'your_username', 'event': 'message.publish', 'metadata': {'rule_id': 'humidity_WH_D'}, 'timestamp': 1723617041052, 'node': 'emqx@172.17.0.4', 'id': '00061F9EDD75F3A432490013C2880018', 'flags': {'retain': False, 'dup': False}} """ # payload转化为 json payload = json.loads(raw_data['payload']) humidity_data = HumidityData( device_id=device_id, timestamp=datetime.utcnow(), user_id=device.user_id, humidity=payload['humidity'], temperature=payload['temperature'] ) print(humidity_data) db.session.add(humidity_data) db.session.commit() socketio.emit('message', '设备:' + device_id + ' 触发了温湿度检测') return json.dumps(reply), 200 ``` ### 总结 通过本项目,我们构建了一个基于温湿度传感器的环境监测模块,能够实时监测并展示室内温度和湿度。该系统不仅提供了直观的数据展示,还具备智能报警功能,确保用户能够及时了解并应对环境变化。结合LCD触摸屏和手机APP,用户可以随时随地获取最新的环境数据,为创造一个舒适健康的居住环境提供支持。
本帖最后由 zygalaxy 于 2024-10-31 19:56 编辑
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
随便看看
硬盘用SATA,它可以用PCI express吗
在下是新手,求LCD12864连接msp430g2553launchpad的电路原理图,感激不尽
PROTEL99SE实践操作教程
交流串机单片机PID调速
毕业设计---楼宇监控
此电路中的白色元器件是什么
430经常自动重启什么原因?
仿真器在线仿真正常,写入片子后工作不正常的问题
Ubuntu系统联网时出现“Disconnected-you are now offline”问题可行性方案
TIVA C Launchpad周计划——第一周(点亮LED)
8成新SMARTARM 2200开发板原价6.5折转让
Altium Designer PCB电路板设计步骤与技巧
jlink烧写nandflash出现这个错误,怎么回事啊?
求51单片机超声避障并用光电编码器测速程序
【Perf-V评测】之UART
弄了些加速度传感器,可免费提供芯片和PCB
基于FPGA的无线收发模块
新一期《模拟对话》免费下载ing!
AMD ElanSC520硬盘识别
有没有一步步添加自定义服务的说明?
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复