基于STM32F103和FreeRTOS的智能插座设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STM32F103和FreeRTOS的智能插座设计
摘要
设计并实现了一种基于Cortex-m3内核的STM32F103MCU的多功能智能插座,利用Zigbee 技术进行自动组网和无线收发,采用FreeRTOS操作系统进行多任务调度管理。给出了该智能插座的硬件设计方案和软件框架。该智能插座具有可靠性高、实用性强的特点,满足了智能家居的需要。
关键词:智能插座;zigbee;Cortex-m3;FreeRTOS
1.引言
随着电信、互联网等技术的发展,物联网概念应运而生,被看成是新一代信息技术的重要组成部分,在全球范围内得到重视。智能家居是物联网的主要应用之一,利用各种信息通信技术将家用电子设备集成,实现家庭日常事务的管理【1】。智能家居网络的构架包括家庭内部zigbee子网系统、智能家居网关以及智能家居网络与外部网络之间的数据通信系统三个部分。网关是智能家居系统的核心控制部分,将智能终端传输来的数据打包成网络数据流,再通过3G网络或者wifi实时传送到监控计算机中。用户可以通过计算机或者手持设备(手机或者Pad)远程登录智能家居管理系统对家庭用电设备进行信息查询和控制。
图1.智能家居系统结构
2.智能插座的功能设计
智能插座为家庭智能用电的节点,用于实现对家用电器的电量测量、状态监控、过压过流保护以及定时开、关控制。该节点通过Zigbee协议与家庭网关通信,实现家庭用电的智能化。系统结构如图2所示。
图2.家庭智能用电系统图
在设计智能插座时,遵循相关的国家标准,如:通信标准、插座标准、电缆标准等。在不影响可靠性和功能的前提下,尽可能降低造价。综合考虑各种使用中的不利因素,提高安全性和可靠性。设计的智能插座其主要功能有:
(1)插座型式。智能插座应为标准市电转换插座,采用常用的插座型式,可以当做普通插座使用。
(2)智能时控。用户可以通过按键自行设置多种定时控制的模式。
(3)电能计量。具备用电能累计功能与复位功能。用户可以随时查看当前累计使用的电能,也可随时清除累计电能重新开始进行电能累计。
(4)显示功能。智能插座上的LCD液晶屏可以用中文显示电压、电流、有功功率、累计用电量及时间、当前控制状态等主要信息。
(5)保护功能。电流过大或电压过高或过低时智能插座可自动切断电源,保护家用电器的安全。
(6)通信功能。采用Zigbee协议进行组网,实现各个节点与家庭网关通信。
(7)遥控功能。用户可以通过家庭网关对电器进行开关控制。
(8)时钟功能。节点有自己的时钟电路,超过半年以上市电断电的情况下,可以保持数据不丢失。
3.智能插座的设计和实现
3.1智能插座的硬件设计
Zigbee是基于IEEE802.15.4标准的低功耗个域网协议,是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。具有短时延、网络容量大、可靠、安全等特点【2】,非常适合作为智能插座与网关的通信方式。本文选用ZigBee无线收发芯片CC1101芯片为通信硬件;MCU采用具有ARM7Cortex-m3内核的STM32F103。智能插座的硬件结构图如图3所示。
图3.智能插座系统结构
图3中STM32F103微处理器为系统的核心负责协调各个模块之间的运行,CC1101负责完成无线通信和无线组网的功能。外围电路主要由电流/电压采样变换电路、电源电路、继电器电路、LCD显示电路、键盘输入电路等构成。其中电流/电压采样电路用于采集电路中的交流电流和电压,为数/模转换提供数值;电源电路主要负责将交流市电转化为稳定的直流电压,为其他模块供电;继电器电路用于插座、网关或其他远程控制设备对插座进行供断电的控制,并且在电流大于额定电流一定时间时切断受控插座的电源,对外设起到保护作用;LCD显示电路显示插座当前的运行状态并作为人机交互的界面;键盘输入电路可以让用户实现对插座的实时控制。MCU的管脚分配如图4所示。
STM32F103C
图4.STM32F103管脚分配
STM32F103C芯片是具有48位管脚的芯片。PB0~ PB7用于驱动LCD的数据线;PB12~PB15用于按键中断响应;PC14、PC15、PD0用于控制晶振电路;NRST连接复位电路;VBAT 用于连接电源接口电路;PA13-PA15连接JTAG接口电路;PA2-PA4用于连接Zigbee无线
收发电路;PB8、 SCLK 用于测量电路的读写时钟,PB9、SDO 用于测量电路的数据输出,PA13、SDI 用于测量电路的数据输入,PB11、INT 用于CS5460A 芯片的中断。 3.2智能插座的软件设计
3.2.1 FreeRTOS 操作系统基本原理
应用软件建立在FreeRTOS 嵌入式实时操作系统之上。FreeRTOS 是一个轻量级的嵌入式实时操作系统,具有免费、开源和微内核的特点。其代码树结构如图5所示。
图5 .FreeRTOD 代码树结构
从图5可以看到,FreeRTOS 主要由tasks.c, queue.c, list.c 以及和平台相关的Port.c 构成。FreeRTOS 提供了任务管理、时间管理、信号量、消息队列、内存管理等功能,可基本满足了嵌入式系统的需要。在FreeRTOS 中,每个执行线程都被称为“任务”,对任务的数量没有限制,可以根据系统的需要进行设置。任务可以运行在占先或协同方式,运行在占先方式下,处于就绪态的高优先级任务可以抢先使用CPU ,以保证系统的实时性要求;而在协同方式下,任务轮流使用CPU ,这样可以保证优先级相同的任务公平得到CPU 的使用权【3】
。
FreeRTOS 任务有五种状态:就绪、阻塞、运行、暂停、删除,如图6所示。
图6 FREERTOS 任务状态
FreeRTOS 首先为刚创建的任务分配所需内存,若分配成功,则初始化任务名称、堆栈深度和任务优先级,然后根据堆栈的增长方向初始化任务控制块的堆栈。接着,FreeRTOS 把当前创建的任务加入到就绪任务链表。当进行任务调度时,调度算法首