欢迎进入铭港建筑智能化j9集团官网! |关注铭港| 网站地图

基于zigbee和stm32的智能家居控制系统的设计与实现|智能家居生活百科 -九游会入口

t_pic

铭港服务热线:400-775-6159

热门搜索关键词:智能窗帘轨道智能家居控制器整体智能家居智能家居设计智能家居价格

当前位置: 九游会入口-j9集团 » 铭港物联新闻中心 » 铭港新闻中心 » 智能家居生活百科 » 基于zigbee和stm32的智能家居控制系统的设计与实现

基于zigbee和stm32的智能家居控制系统的设计与实现

文章出处:   责任编辑:   发布时间:2019-02-26 10:48:47    点击数:-   【 】
zigbee核心板ds18b20模块(温度传感器)mq_2(烟雾传感器)客厅led流水灯(模拟真实环境)蜂鸣器dht11(温湿度传感器)卧室led灯光敏传感器hcsr501(人体热释电)系统检测灯mcu(stm32f103c8t6)

μc/os-ii是一个可裁剪的、可固话的、可移植的、抢占式实时多任务系统内核,适用于多种微处理器和微控制器,能够移植到超过100多种微处理器应用开发中。本次下位机中就移植了这样一个小型的嵌入式操作系统,使得整个系统显示十分的流畅,而且也很好管理。

μc/os-ii的移植这里就不说了,网上有好多的介绍,其中正点原子和野火的讲的都比较详细,可以去看看,首先说明,我的这个工程也是参考他们的。一下是我的整个工程的结构,整体上还算比较详细的:

通过代码可以很清晰的看出来各个传感器的 驱动、数据的读取等细节,这里主要说说系统多的任务的实现。

主函数开始后进行了一些列的初始化操作,随后初始化了μc/os-ii系统,并且创建了一个开始任务:


30a2f0616d68d5f303cb05671da3f560


各个模块初始化操作:

创建开始任务:

开始任务创建成功后便会在开始任务里边进行其他任务的初始化操作:

可以很清楚的看到,开始任务里边创建了多个任务,接着,各个任务创建成功后边会挂起任务,退出临界区,开始各个任务的轮训操作。

上面各个任务创建时,都指定了任务优先级,堆栈大小等信息。在app.h文件中可以看到:

任务的优先级决定了任务在被打断时执行的顺序,优先级越高,越有优先权。

在单片机开发过程中串口的操作可以算是最普通也是最基础的操作了,好多东西都是需要通过串口进行输出,这样可以对程序执行过程中的一些中间数据进行输出。这里主要说说串口数据的读取。

数据的读取使用中断的方式进行交互,这样效率很高。这里执行看核心代码即可:

这里接收数据时对帧头进行了一个简单的判断,正确后接着接收,碰到帧尾后将数据拷贝到了一个缓冲区中,然后清空接收缓冲。整个过程就这么简单。

数据解析

前一部分介绍了数据的接收,这里再说说对数据的解析。从上面的代码中可以看出来有个函数:cpynbyte2buffer(),该函数是吸纳对数据的解析操作,如下所示:

在上面对数据结构体进行了赋值后便开始了整整的数据或者命令的执行,如?recv_data(protocol *protocol)所示:


健康智能家居系统包含哪些产品?


数据打包发送

数据发送任务函数:

上面是数据发送任务里调用的发送函数,该函数中对各个传感器采集到的数据进行了打包并发送操作。可以看打包发送函数:

void pack_send_data(u8 drive, u8 drive_cmd, u8 data_len, u8 *data)

这里列出来核心代码,具体实现代码请看工程。打包发送函数中主要做了2件事情:一:对数据成员初始化,二:判断一帧数据的大小!数据大小值很重要的,这在数据解析过程可需要用到。


您还在等什么呢?马上拿起您的手机订购吧!铭港订购热线:400-775-6159


网站地图