一、物联网系统概述
大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊物联网这个“老生常谈”却又常谈常新的话题。
说实话,我入行那会儿,物联网还没这么火。那时候大家管它叫“M2M”,机器对机器通信。现在呢?万物互联,概念满天飞。但不管怎么包装,核心的东西没变——采集数据、传输数据、处理数据、存储数据。嗯,就这么简单。
1.1 物联网定义与架构
物联网,英文叫Internet of Things,简称IoT。说白了,就是把物理世界里的“东西”连到网上,让它们能说话、能干活。
你想想看,一个温度传感器,它本来就是个死物件。但一旦连上网,它就能告诉你“我这儿38度了,快开空调”。这就是物联网的魔力。
我个人习惯把物联网架构分成四层,这样好理解:
| 层级 | 名称 | 典型设备/技术 | 我的经验 |
|---|---|---|---|
| 第一层 | 感知层 | 传感器、RFID、摄像头 | 这层最容易出问题,我踩过不少坑 |
| 第二层 | 网络层 | Wi-Fi、LoRa、NB-IoT、5G | 选型比技术本身更重要 |
| 第三层 | 平台层 | 云平台、边缘网关 | 别什么都往云上扔,边缘计算很香 |
| 第四层 | 应用层 | Web端、App、大屏 | 用户才不管底层怎么搞,界面好用就行 |
这里我要特别强调一下感知层。我在项目中遇到过很多次,传感器数据不准,结果上层分析全白费。所以啊,数据采集是物联网的“第一公里”,也是最容易被忽视的一公里。
1.2 数据采集系统组成
数据采集系统,说白了就是“怎么把数据搞到手”。它通常包含这几个部分:
- 传感器节点:负责感知物理量,比如温度、湿度、压力、振动
- 数据采集器:也叫网关,负责把传感器数据汇总、转换、上传
- 通信模块:负责数据传输,有线或无线
- 边缘处理单元:在靠近数据源的地方做初步处理
我曾经做过一个工厂项目,车间里装了200多个振动传感器。一开始设计时,所有数据都往云端送。结果呢?网络带宽扛不住,延迟高得离谱。后来我改了方案,在边缘网关做了一层滤波和聚合,只上传异常数据和统计结果。问题一下子就解决了。
核心原则:能本地处理的数据,绝不往云端送。这不仅是成本问题,更是实时性问题。
数据采集的频率也是个讲究。我见过有人把温度传感器设成每秒采集一次,结果一天下来数据量爆炸,但99%的数据都是重复的。你想想看,室温变化哪有那么快?
这里我给大家一个参考:
| 场景 | 推荐采集频率 | 说明 |
|---|---|---|
| 环境温湿度 | 1-5分钟/次 | 变化慢,没必要太频繁 |
| 设备振动 | 100-1000 Hz | 高频信号,需要高速采集 |
| GPS定位 | 1-10秒/次 | 看移动速度,静止时可降低 |
| 能耗监测 | 15分钟/次 | 行业标准,兼顾精度与成本 |
1.3 存储系统分类
数据采回来了,放哪儿?这就涉及到存储系统了。我根据多年的经验,把物联网存储系统分成三类:
- 关系型数据库:比如MySQL、PostgreSQL。适合结构化数据,比如设备信息、用户信息。优点是查询灵活,缺点是海量时序数据性能差。
- 时序数据库:比如InfluxDB、TimescaleDB。专门为时间序列数据设计,写入性能极高。我个人的项目里,90%的传感器数据都走时序库。
- 分布式存储:比如HDFS、MinIO。适合存原始数据、日志文件、图片视频。冷数据可以归档到这里,成本低。
我的建议:别指望一种数据库搞定所有。混合存储才是王道。热数据(最近7天)放时序库,温数据(最近3个月)放关系库,冷数据(更早的)放对象存储。
为什么会这样?因为不同数据的访问频率和查询模式完全不同。你想想看,一个设备昨天采集的数据,你可能天天查。但一年前的数据,可能一年才查一次。把它们放在同一个存储系统里,既不经济也不高效。
1.4 课程项目全景介绍
好了,理论说完了,咱们来点实际的。这门课会带着大家做一个完整的物联网数据采集与存储系统。项目长什么样?我给大家画个全景图:
传感器节点 → 边缘网关 → 消息队列(Kafka) → 流处理(Flink) → 时序库(InfluxDB)
↓
关系库(MySQL) ← 应用API(Flask)
↓
前端展示(Vue.js)
这个项目覆盖了从数据采集、传输、处理到存储、展示的全链路。做完它,你就掌握了物联网数据系统的核心技能。
我记得第一次带团队做类似项目时,大家最头疼的就是“数据丢了怎么办”。所以这次课程里,我会专门讲数据可靠性保障,包括重传机制、断点续传、数据校验等实战技巧。
避坑指南:我曾经因为没做数据校验,导致一批传感器数据全是乱码,排查了整整三天。后来发现是传感器和网关的字节序不一致。所以啊,数据格式约定和校验一定要在项目初期就定好。
另外,这个项目不是一次性的。我们会迭代三个版本:
- V1.0:单机版,用Python模拟传感器,数据存到SQLite。适合快速验证。
- V2.0:分布式版,引入Kafka和InfluxDB,支持高并发写入。
- V3.0:生产级,加入监控告警、数据备份、容灾恢复。
每个版本我都会给出完整的代码和部署方案。你跟着做就行,遇到问题随时在群里问我。
最后说一句,物联网这个领域,纸上谈兵没用,动手才是硬道理。咱们这门课,就是要让你从“知道”变成“会做”。准备好了吗?咱们开始吧。