关于开源项目「基于ZigBee和STM32的智能家居控制系统」的使用说明
作者:互联网
阅读本文大概需要 6.6 分钟
大家好,我是 devstone,很感谢大家对这个项目的喜爱和关心,自从该项目公开以来断断续续有很多人加我好友询问一些基础问题,我也回复过很多,当然了以后也可能会有人问到,为了不再重复回复,我今天专门写一篇文章,详细介绍下如何使用
本来早就该写了,一是因为自己平时忙,二是因为太懒惰,一直拖到现在
01 项目介绍
该项目的原型是自己当初的本科毕业设计,从零开始做的,其中包括硬件原理图、PCB,到后面元器件的焊接、下位机程序编写,上位机程序编写,ZigBee 无线通讯程序编写,各个模块联调测试修改问题
项目其实很简单,下位机采集各种传感器数据,这些数据采集后会进行汇总打包,然后通过串口发送给 ZigBee 终端节点,终端节点会发送给「协调器」,协调器收到后通过串口发送给上位机,上位机收到数据进行校验、解包然后根据不同类型数据分发到各个页面进行显示
上位机平台采用的是 ARM 开发板,说白了就是一个性能好点的带屏幕的单片机,支持触摸交互,上位机程序采用 C/C++/Qt 编写
下面就是整个小项目交互关系图
监控是双向的,数据从传感器发送到上位机,同时上位机也可以通过控制按钮下发对应的指令进行控制,比如控制 LED 灯的亮灭,控制传感器阈值,比如室内舒适温度为 22°,当传感器采集到的问题超过这个值时,触发警报,进行提示
下面是上位机程序部分界面部分截图
截图日期还是当时演示时截取的,现在想想好多年了,想起当时整个制作过程还是怀念的
看到这里可能很多人比较迷惑了,为啥会用到这么多 ZigBee节点和 STM32 啊,完全使用 ZigBee 就足够了,确实是这样的,因为采集传感器数据工作量不大使用 CC2530 就够用了,当时自己这样做是为了把学到的知识都用起来
详细说明下面会分为好几个部分进行介绍
02 上位机介绍
为了照顾到新人,我还是简单说下什么是上位机吧
上位机:就是可以发出控制控制命令的计算机。用大白话说就是运行在某个平台上(Windows,Linux,macOS等)的一个软件,你通过这个软件可以进行一些列的操作
当初的设计,上位机是运行在 ARM 平台上的,也就是一块板子上,你可以理解为一个平板电脑
那么有人就要问了,可以运行在其它平台吗?当然可以,你可以编译完直接运行在 windows、Linux 或者 macOS 上。目前代码中没有做任何限制
现在都明白了吧,我相信看了我上面的几幅卖相不好的图片大家应该能大概知道上位机这回事吧
如果你下载我的上位机代码后编译发现出现错误,欢迎留言,我再补充哈。正常情况下现在应该能正常编译和运行,不会有错误的
03 下位机介绍
明白了上位机,那么理解「下位机」应该容易很多。
下位机就是控制设备状态的一种计算机,说白话可以理解为你写程序控制单片机进行一些列的操作,比如点亮 LED 等,这些一些列的程序代码可以理解为下位机程序
下位机采用 STM32F103 VBT66 单片机,这是一个ARM® Cortex®-M3版本,ROM 仅有 128KB大小,控制程序全部跑在这块单片机上
记得当时为了装B,还移植了一款微型操作系统UCOSII (Micro-Controller Operating Systems),这是一款实时操作系统,完全采用 C 语言编写,基于抢占式优先级策略的一种多任务系统,也就意味着我们可以同时运行多个任务
移植完这款操作系统后,剩下程序编写就变的非常简单了,多个传感器采集数据工作可以当做不同的任务去做,具体如何轮训你用你操心了
STM32 在这里起到数据采集+打包中转的作用,某些传感器数据采集完通过打包流程封装成一包数据发送给串口,串口的另一端连接的是 ZigBee 终端,终端接收到数据后会通过 ZigBee 无线通信协议发送给 ZigBee 协调器
ZigBee 协调器另一端连接的是「上位机」,这样上位机就可以收到数据了
04 ZigBee 无线通讯介绍
ZigBee 是一种短距离无线通信协议,底层采用的是IEEE 802.15.4标准。主要特点有:低功耗、低成本、低速率、支持大量节点收发数据
通信的硬件采用的是 CC2530芯片,无线通讯大概可以分为三种:节点、路由器、协调器
其实在这个项目里面,我做了偷懒,并没有严格按照上述模式设计,在我的这个项目里面,ZigBee 只是起到到数据传输的作用,即采集到的数据由「终端节点」发送给「协调器」,在实际应用中不会这么大材小用的,一般协调器不光负责数据传输,也可以承担一部分的数据采集管理工作
ZigBee 相关代码介绍
在我开源分享的代码当中,zigbee无线传输部分是所有 ZigBee 通讯的代码,包含了终端节点和协调器,注意在下载程序时进行区分就行了
至于如何下载如何调试,还请自行百度
05 硬件 PCB 电路介绍
相信大家都看过了板子的外观了,很简陋,也没有任何美感,纯粹是为了完成功能的设计
学习过硬件设计的朋友这里不用看了,因为太基础了。如果你对这方面感兴趣,那么需要你系统的学习下基础的知识,学起来也挺快的,就跟搭积木一样
一块电路板是 怎么来的呢?
首先需要你自己使用软件绘制原理图,需要知道了解一些基础的电路知识,不过现在现成的东西也很多,网上看看也能抄过来用
其次,根据原理图生成 PCB,这一步很重要,生成后就需要自己去布线或者叫连线了,这一步比较繁琐和重要,很多初学者会偷懒选择自动布线,墙裂建议不要这样做,还是老老实实选择手动布线吧
什么是布线呢?大白话说就是把各个元器件的管脚使用特定的线连接起来,你原理图中绘制的某个元器件怎么和外部连接的,这里就需要重新用线进行连接,连接的原则是保持每条线间隔均匀、不重合、不绕路等
最后,画好了 PCB 后就可以导出这个 PCB 打包然后发送给厂商进行「打样」,现在越来越便宜了,直接在在某宝上搜评价好点的商家就可以了,还需要注意的是和卖家沟通清楚,自己要打样的板子要求,比如过孔覆油是否,油墨颜色,过孔大小等
一般一个礼拜左右就可以打样完成,剩下的时间就是自己买元器件进行焊接,这一步也很累很辛苦,注意别买错了,要和你当时画原理图时候的大小一致,比如 0603、0204 封装……
最最后就是测试电路板是否有问题,其实在开始焊接的时候,可以先焊接部分电路进行测试,没有问题再焊接完剩下的
总结
上面就是关于这个项目的几大部分内容说明,详细知识大家看我之前的博客和开源的代码资料就行了。
整体思路就是单片机采集传感器数据,然后通过无线通信发送给上位机进行显示,同时上位机还可以进行控制下位机中的硬件设施,比如点亮 LED灯,当然了这里用 LED 灯模拟显示环境中真正的灯光,如果要用在实际环境中,还需要对应的驱动电路才行
如果看到这里还有疑问,那就再继续交流吧,我完了把大家的疑惑都整理下发表出来,方便更多的初学者学习理解
如果这个小项目能够帮助到你,麻烦点个赞、在看,也算是对我的一种支持吧
关于如何学习
最后再给初学者一些个人建议吧,关于如何学习
大家有没有发现,初入社会后学习能力是多么的重要。可能你以前上学那会没有留意,平时上课学习都是老师带领你们学习,自己只要跟着老师的步伐即可
但是,等毕业工作后发现没有人带、教自己,全部都得自己去学习、研究、钻研,很多东西学不会、理解不了。
作为一个技术人,其实是很残酷的,技术变化太快,如果你停止学习可能短期内没有啥变化,但是随着时间越长越能感觉到自己和别人的差距,这种差距不仅体现在能力上,最直接体现在工资待遇上,你说你学不学?
- 学会使用搜索引擎
我们平时遇到的各种问题,99% 以上网络上面都有,所以如何正确搜索很关键。墙裂建议大家有条件一定要使用 Google 搜索,不要使用百度搜索
- 多分享总结
我们要相信一句话「利他就是利己」,多分享多付出,前期我们给别人创造价值,可能自己得不到回报或者很少,但是从长远来看,这些付出会成倍的回报给自己
- 学会提问
提问是一门艺术,很多人其实都没有注意。很多大佬都很忙,我们请教问题尽可能的一步到位描述清楚自己的问题,比如可以按照下面的模板来进行
我想做 xx 功能,遇到了 xxx 问题,我是这样想的……,自己尝试了 xxx 步骤后还是没有解决,您抽时间能帮忙看下吗
闲聊
当时机缘巧合下分享的这个小项目,没有想到受到很多朋友的喜欢,能够帮助到大家我很高兴。其实很多人会问一些很基础的问题,作为过来人我知道刚入门确实会有很多疑问,很多问号,只要我有时间,都一一进行了回复
下面顺手截取了部分朋友的反馈
最后,如果大家有问题,可以留言,有任何问题可以随时向我提问,但是,但是,但是,尽量一次性把问题描述清楚,不要问在不在?我可以问你问题吗?你忙吗?等等之类的问题,有问题直接问,对就是这么直接
自己平时工作也挺忙的,消息可能不会及时回复,但是我忙完一定第一时间回复你
标签:采集,ZigBee,发送给,可以,智能家居,STM32,上位,数据 来源: https://www.cnblogs.com/kevinlq/p/14630117.html