GahooChan
GahooChan
Skip to content

跨平台智能家居系统

2019.05 — 2019.11 · 毕业设计

这是个什么项目

学校没硬性要求做毕业设计,但我那时候比赛打得比较多,实训室随便进,就自己立项做了这个智能家居系统。从 5 月干到 11 月,前后半年。

核心思路很简单——用 Zigbee 无线网络把各种传感器和执行器连起来,然后通过上位机统一管理和展示。

硬件架构

网络拓扑

通信协议:Modbus

整条链路统一走 Modbus,支持三种模式:

模式方向触发方式
主机轮询上位机 → 节点定时或手动查询
主动上报节点 → 上位机传感器检测到异常时推送
指令下发上位机 → 执行节点用户操作触发

单片机程序

所有节点的固件都是我从零写的。有个遗憾——地址和控制逻辑全是写死的,没做成可配置。一来做可配置化工作量太大,单片机端要加配置解析,前端还要配对应的界面;二来这半年也不是每天都有空——台达杯的比赛跟这个项目时间上冲突,中间还穿插了一些省市级的小比赛,实际能花在项目上的时间远没有表面看起来那么多。光把基础功能跑通就已经焦头烂额了。

另外有个细节——为什么搞了 RS485 集线器这一路?因为实训室的 CC2530 开发板数量有限,不够给每个设备都单独挂一块 Zigbee 节点,所以用集线器走 Modbus 协议来分发控制,把多个执行器挂在同一个 Zigbee 网关板下面。

软件架构

WPF 上位机(C#)

当时受限于技术视野,没想到前后端进程隔离这个概念,所以整个工程是前后端一体的 WPF 应用。WPF 一关,整个系统就停了。

它负责这些事:

  • Modbus 协议帧的组装与解析
  • 设备在线/离线状态管理,数值缓存
  • 数据持久化到本地数据库
  • 实时数据曲线图表展示
  • 异常阈值判断 + 弹窗报警

Android 客户端(Java)

局域网内的移动端 companion app:

  • 实时查看各传感器当前读数
  • 接收来自上位机的报警推送消息
  • 远程控制各类家电设备(开关、模式切换)
  • 查看历史数据和设备信息

App 和 PC 端之间通过 局域网 Socket 通信 同步数据。当时对这块研究得比较多。

技术栈

层级技术说明
硬件层CC2530 Zigbee 开发板学校提供的现成板子
通信协议Modbus RTU统一的数据交换协议
串口通信RS232 / RS485物理链路
上位机C# / WPF前后端一体,Modbus 解析 + UI + 存储
移动端Java / Android局域网 Socket 通信
局域网通信TCP SocketApp ↔ PC 数据同步

回过头看

这个项目虽然技术上有很多不成熟的地方(前后端没分离、配置写死、WPF 一关全停),但它是我第一次独立完成一个从硬件组网到软件开发的完整系统。Zigbee 组网、Modbus 协议、串口通信、多端联动……这些概念都是在这次实践中真正理解的,不是看书看会的。