物联网实时监测:基于 IoT 传感器的数据采集与分析全流程实现
创作时间:
作者:
@小白创作中心
物联网实时监测:基于 IoT 传感器的数据采集与分析全流程实现
引用
CSDN
1.
https://blog.csdn.net/mmc123125/article/details/143933096
在物联网(IoT)领域,实时监测和数据分析是实现智能化的核心技术。通过部署传感器网络,我们可以实时采集环境、设备或过程中的数据,并对这些数据进行分析,为决策提供支持。本文将带你完成一个基于 IoT 的实时监测项目,从传感器数据采集、传输到分析和展示的完整流程。
物联网实时监测的架构概述
物联网实时监测的核心在于数据采集-传输-处理-展示的闭环。以下是一个典型的架构:
- 前端采集层:传感器负责采集物理数据(如温湿度、PM2.5 等)。
- 网络传输层:通过 MQTT 或 HTTP 协议将数据传输至云端或边缘计算节点。
- 数据处理层:服务端对数据进行存储、处理和分析。
- 展示与控制层:通过 Web 或移动应用展示数据,提供控制接口。
传感器数据采集模块实现
硬件选型
以 DHT11(温湿度传感器)为例:
- 特点:支持温湿度测量,精度适中,适合入门项目。
- 连接方式:通过 GPIO 接口与单片机或开发板连接。
采集程序实现
采用 Raspberry Pi 和 Python 实现 DHT11 数据采集:
import Adafruit_DHT
# 配置传感器类型和 GPIO 引脚
sensor = Adafruit_DHT.DHT11
pin = 4 # GPIO4
def read_sensor_data():
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
return {"temperature": temperature, "humidity": humidity}
else:
raise Exception("Failed to read data from sensor.")
# 测试采集
if __name__ == "__main__":
try:
data = read_sensor_data()
print(f"Temperature: {data['temperature']}°C, Humidity: {data['humidity']}%")
except Exception as e:
print(e)
数据传输与边缘计算优化
使用 MQTT 协议
MQTT 是轻量级的发布/订阅协议,适合低带宽场景。以下是数据发送的示例:
import paho.mqtt.client as mqtt
import json
broker = "mqtt.example.com"
port = 1883
topic = "iot/sensor/data"
client = mqtt.Client()
def publish_data(data):
client.connect(broker, port)
client.publish(topic, json.dumps(data))
client.disconnect()
if __name__ == "__main__":
sample_data = {"temperature": 23.5, "humidity": 60.2}
publish_data(sample_data)
边缘计算
在传输前对数据进行预处理(如过滤、聚合),减少带宽压力。
def filter_invalid_data(data):
if data["temperature"] < -10 or data["temperature"] > 50:
return None
if data["humidity"] < 0 or data["humidity"] > 100:
return None
return data
# 示例
raw_data = {"temperature": 25, "humidity": 110}
processed_data = filter_invalid_data(raw_data)
if processed_data:
publish_data(processed_data)
后端数据存储与处理的设计
数据库设计
使用 MongoDB 存储传感器数据:
{
"sensor_id": "sensor_01",
"timestamp": "2024-11-21T10:30:00Z",
"temperature": 22.5,
"humidity": 55.2
}
数据处理 API
基于 Flask 提供查询接口:
from flask import Flask, request, jsonify
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient("mongodb://localhost:27017/")
db = client.iot_database
@app.route("/data", methods=["GET"])
def get_data():
sensor_id = request.args.get("sensor_id")
data = list(db.sensor_data.find({"sensor_id": sensor_id}))
return jsonify(data)
if __name__ == "__main__":
app.run(debug=True)
实时监测可视化的实现
使用 Chart.js 构建前端页面,实时展示传感器数据:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="sensorChart" width="400" height="200"></canvas>
<script>
const ctx = document.getElementById('sensorChart').getContext('2d');
const sensorChart = new Chart(ctx, {
type: 'line',
data: {
labels: [], // 时间戳
datasets: [
{
label: 'Temperature (°C)',
data: [],
borderColor: 'rgba(255, 99, 132, 1)',
fill: false
},
{
label: 'Humidity (%)',
data: [],
borderColor: 'rgba(54, 162, 235, 1)',
fill: false
}
]
}
});
// 模拟数据更新
setInterval(() => {
fetch('/data?sensor_id=sensor_01')
.then(response => response.json())
.then(data => {
const timestamps = data.map(entry => entry.timestamp);
const temps = data.map(entry => entry.temperature);
const humids = data.map(entry => entry.humidity);
sensorChart.data.labels = timestamps;
sensorChart.data.datasets[0].data = temps;
sensorChart.data.datasets[1].data = humids;
sensorChart.update();
});
}, 5000);
</script>
</body>
</html>
项目示例:温湿度监测系统全流程代码实现
将采集、传输、存储、处理和展示串联起来,形成一个完整的系统架构:
- 传感器采集:DHT11 + Python GPIO 实现。
- 数据传输:MQTT 协议优化传输效率。
- 后端存储与 API:MongoDB + Flask 提供持久化与查询。
- 前端展示:使用 Chart.js 实现实时监测页面。
总结与扩展:应用场景与未来趋势
通过本文,你可以掌握 IoT 传感器实时监测的完整实现流程,这种架构不仅适用于温湿度监测,还可以扩展到工业设备监测、智能家居等多个场景。
热门推荐
清蒸石斑鱼、东平鸡饭……海陵岛三道美食制作全攻略
阳江开渔日:千帆竞发捕海鲜,渔家大宴迎丰收
海陵岛必吃美食:从海鲜大餐到地道小吃,三家餐厅推荐
无期徒刑:高墙内的规律生活与精神救赎
电视绿屏怎么办?从硬件检查到软件设置,多种实用解决方案帮你轻松应对这一常见故障。
LED电视机绿屏故障,你遇到过吗?
电视绿屏怎么办?一文教你轻松解决
通胀要来了?内行人:2024下半年,建议手握这2样东西,尽早准备
中金:核心通胀改善,但持续性仍待政策加力——2024年12月物价数据点评
京城三大钓鱼圣地:上庄水库、罗马湖、野鸭湖
沙河水库:北京冬季钓鱼胜地
翠湖国家湿地公园:北京周末生态休闲新去处
电视画面异常?这份实用指南手把手教你解决!
大蓟小蓟配伍:双管齐下治血症
最新检测:98%蔬菜安全,这样挑选和处理更放心
2024年蔬菜农残榜单发布,专家推荐5种清洗方法
从“致癌谣言”到健康饮食:专家详解蔬菜烹饪与食用指南
正确洗菜指南:4个误区要避免,5类蔬菜清洗有讲究
大名二毛烧鸡:一道菜,一座城的百年传奇
邯郸小炒:一道家常菜的走红之路
尼达尼布正确用法,特发性肺纤维化患者的福音
尼达尼布纳入医保,患者省钱有希望
尼达尼布医保报销全攻略:政策解读、流程指南与补充保障建议
脊髓损伤康复期,牛肉饺子可以吃吗?
从零到一教你包出完美牛肉饺子:选材到出锅全攻略
日本研究团队发现“龙宫”富含钠镁,揭示太阳系起源线索
胰腺癌晚期恶性还能治疗吗?怎样治能控制病情发展
地雷百年:从战场利器到和平年代的扫雷英雄
摄影进阶指南:四大要素助你从新手到专业摄影师
取消一、二级公路收费:降低出行成本,助力经济发展