一、物联网系统概述

大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊物联网这个“老生常谈”却又常谈常新的话题。

说实话,我入行那会儿,物联网还没这么火。那时候大家管它叫“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 存储系统分类

数据采回来了,放哪儿?这就涉及到存储系统了。我根据多年的经验,把物联网存储系统分成三类:

  1. 关系型数据库:比如MySQL、PostgreSQL。适合结构化数据,比如设备信息、用户信息。优点是查询灵活,缺点是海量时序数据性能差。
  2. 时序数据库:比如InfluxDB、TimescaleDB。专门为时间序列数据设计,写入性能极高。我个人的项目里,90%的传感器数据都走时序库。
  3. 分布式存储:比如HDFS、MinIO。适合存原始数据、日志文件、图片视频。冷数据可以归档到这里,成本低。

我的建议:别指望一种数据库搞定所有。混合存储才是王道。热数据(最近7天)放时序库,温数据(最近3个月)放关系库,冷数据(更早的)放对象存储。

为什么会这样?因为不同数据的访问频率和查询模式完全不同。你想想看,一个设备昨天采集的数据,你可能天天查。但一年前的数据,可能一年才查一次。把它们放在同一个存储系统里,既不经济也不高效。

1.4 课程项目全景介绍

好了,理论说完了,咱们来点实际的。这门课会带着大家做一个完整的物联网数据采集与存储系统。项目长什么样?我给大家画个全景图:

传感器节点 → 边缘网关 → 消息队列(Kafka) → 流处理(Flink) → 时序库(InfluxDB)
                                                      ↓
                                              关系库(MySQL) ← 应用API(Flask)
                                                      ↓
                                              前端展示(Vue.js)

这个项目覆盖了从数据采集、传输、处理到存储、展示的全链路。做完它,你就掌握了物联网数据系统的核心技能。

我记得第一次带团队做类似项目时,大家最头疼的就是“数据丢了怎么办”。所以这次课程里,我会专门讲数据可靠性保障,包括重传机制、断点续传、数据校验等实战技巧。

避坑指南:我曾经因为没做数据校验,导致一批传感器数据全是乱码,排查了整整三天。后来发现是传感器和网关的字节序不一致。所以啊,数据格式约定和校验一定要在项目初期就定好。

另外,这个项目不是一次性的。我们会迭代三个版本:

  • V1.0:单机版,用Python模拟传感器,数据存到SQLite。适合快速验证。
  • V2.0:分布式版,引入Kafka和InfluxDB,支持高并发写入。
  • V3.0:生产级,加入监控告警、数据备份、容灾恢复。

每个版本我都会给出完整的代码和部署方案。你跟着做就行,遇到问题随时在群里问我。

最后说一句,物联网这个领域,纸上谈兵没用,动手才是硬道理。咱们这门课,就是要让你从“知道”变成“会做”。准备好了吗?咱们开始吧。