zigbee 无线通信与linux嵌入式操作系统是电子人都经常接触的,在这里我们设计了一种以ARM 芯片S3C2440 为硬件平台,基于linux 嵌入式操作系统所实现的CMU 控制器。通过zigbee 无线通信协议将CMU 与各个家电无线节点和传感器节点相连,并通过无线路由器连接以太网实现远程控制的智能家居网络系统。在硬件芯片选择和电路设计方面优化了系统的结构,大大降低了系统的成本,改善了系统的性能。


  伴随着数字化、网络化的进程。智能化的浪潮席卷了世界的每个角落,成为势不可挡的历史趋势,在这种形式下智能网络家居技术应运而生,它依靠3C技术(Computer TechnologyCommunicaTIon Technology Control Technology),并结合信息、家电的发展,为用户提供了一种更加安全、舒适、方便、快捷的智能化的自由生活空间。但在国内智能家居系统的研究没有一个统一的标准,各种研究方案都具有其优缺点,所以研究一套完善的智能家居系统就具有了现实的意义。


  本设计采用zigbee 无线通信标准将家庭中各个家电无线节点连接起来,舍去了实际线路连接时所产生的布线烦恼;另外zigbee 协议主要在低端8 位或16 位单片机上实现,而单片机的数据传输能力有限。如果采用PC 机不仅功耗大而且价格昂贵,对于传输率不大的传感器网络来说十分浪费资源。所以本设计开发基于ARM系列嵌入式芯片为核心处理器的中央管理单元。降低了成本,减小了功耗,并通过反复测试取得了良好的效果。


  1 系统的整体规划

  智能家居系统的设计主要由中央管理单元CMU(Central Mangement Unit)、传感器节点、无线路由器和家电设备组成。其中每台家电设备均添加有无线节点。系统整体结构如下图1 所示。

  基于zigbee与linux 的智能家居系统设计方案

  CMU 为整个系统的核心部分,扩展有射频模块,是实现智能家居内、外网连接的枢纽。


  CMU与每台家电设备和传感器节点通过zigbee无线通信协议组成了一个小型的家居“物联网”。各设备节点与CMU 互相通信,实现智能联动控制操作。如:家电智能控制方面,定时开关电器或者根据动态采集的室内温湿度数据,智能控制空调工作状态;灯光智能控制方面,根据不同的室内自然光强度,智能控制灯管的发光强度。


  同时,CMU 与无线路由器相连,无线路由器则通过以太网连接到WEB 上,实现远程控制。


  2 zigbee 无线通信结构

  无线通信的方式有多样,与蓝牙、Wi-Fi、GSM 移动通信方式相比,zigbee 联盟制定的zigbee 方式具有功耗低、数据传输可靠、兼容性好、实现成本低以及组网方便的优点,非常适合低速率传输的智能家居系统无线传感器网络。


  zigbee是专门为低速率控制网络指定的标准无线网络协议。它在物理层、MAC(MediaAccess Control )层和数据链接层上采用了IEEE802.15.4 协议标准,同时进行了完善和扩展。其网络层、应用汇聚层和高级应用规范接口(API)都由zigbee 联盟制定,整个协议的框架结构如下图2 所示。

  基于zigbee与linux 的智能家居系统设计方案

  3 硬件设计

  3.1 CMU总体硬件结构。

  CMU 采用三星ARM920T 内核处理器S3C2440A 芯片,工作主频为400MHZ,外部扩展64MB SDRAM,2MBNorFlash 和64MB NandFlash,通过UART 口扩展ATMEL 公司的Atmega128L 8 位系列单片机来实时控制射频芯片CC2420 来与外部网络进行连接。处理器外接3 寸TFT 触摸屏作为人机交互界面。在硬件PCB 设计上,系统采用核心板 + 底板的模式,核心板采用六层板工艺,主要分布系统的CPU、存储器、内核电源,底板主要分布各种接口,Atmegal 128L 单片机、CC2420 芯片。硬件结构框图如下图3 所示:

  基于zigbee与linux 的智能家居系统设计方案

  3.2 处理器单元

  目前 zigbee 协议主要在低端8 位或16 位单片机上实现。对于CMU 节点而言,其数据处理能力不强,且限于自身的硬件资源,很少能实现良好的人机交互界面。对功能要求较高的CMU,这种构架很难满足应用的需求。而基于PC机的CMU节点,不但体积大、价格高而且功耗大,对于传输率不大的传感器网络来说十分浪费资源,所以本设计开发基于ARM系列嵌入式芯片为核心处理器的CMU。选用韩国三星公司推出的S3C2440A 芯片作为处理器单元。


  S3C2440A 是32 位RISC 微处理器,其CPU 采用的是ARM920T 内核,具有丰富的片内外设,低价格低功耗,高性能等优点。具有16KB指令Cache,16KB数据Cache和存储器管理单元MMU。处理器结构图如下图4 所示:

  

  该芯片可运行主流的Linux、Windows CE、Andorid 等嵌入式操作系统。同时处理器提供丰富的系统外设控制器。一般情况下无需额外扩展系统组件,从而大大减小了系统的复杂度和成本,是智能家居控制处理器的绝佳选择。


  3.3 存储器扩展

  3.3.1 SDRAM 扩展

  本系统使用的嵌入式操作系统为Linux 操作系统,在编译、定制内核时,内核文件zImage.bin 文件大小为2.1MB,操作系统完全加载时文件系统root.bin 文件大小为34MB,加上上层应用程序运行时会消耗一部分内存,使用两片32MB 的内存为最佳选择。


  3.3.2 Flash 扩展

  本系统扩展的Flash 有两种,Nor Flash 为2M*16Bit,Nand Flash 为64*8Bit[4],Nor Flash写入、擦除速度较慢,读取速度较快,成本较高小容量存储,用于存储系统启动Bootloader代码,Nand Flash 特点正好与Nor Flash 相反,大容量存储。用于存储操作系统文件和应用程序。


  3.3.3 射频单元

  本设计射频芯片选用挪威Chipco 公司的cc2420 芯片。该芯片基于Chipco 公司Smart RF03 技术。以0.18um CMOS 工艺制成。只需极少外部元器件,性能稳定且功耗极低。cc2420的选择性和敏感性指数超过了 IEEE 802.15.4 标准的需求,可确保短距离通信的有效性和可靠性,利用此芯片开发的无线通信设备支持数据传输率高达250kbps,可以实现多点对多点快速组网。硬件应用电路如下图5 所示:

  基于zigbee与linux 的智能家居系统设计方案

  图5 CC2420 硬件电路

  4 软件设计

  通过天线接收设备无线节点传输过来的数据帧,经过CC2420 自动校验。若无误则经过解码、译码,然后经过SPI 接口送往ATmega128L,再经过串口UART1 送往S3C2440,经数据处理后显示于相应的LCD 触摸屏上。


  4.1 系统主程序设计

  CMU以及节点的程序流程图,分别见图6 和7。在CMU中先初始化LCD 及射频芯片,然后程序开始初始化协议栈并打开中断。之后程序开始格式化一个网络。最后处理函数apsFSM()(在APS 层上实现的FSM(有限状态机))监控中的zigbee 信号。如果现在有节点加入网络,则LCD 和串口输出都会给节点分配网络地址。同样函数apsFSM()里接收节点发送过来的温度传感器采集到的数值及一些按键操作,并在LCD 上显示处理,也同时从串口发送出来。

  基于zigbee与linux 的智能家居系统设计方案

  基于zigbee与linux 的智能家居系统设计方案

  4.2 处理器软件结构

  处理器采用嵌入式Linux 操作系统,在原Bootloader、Kernel 上修改文件系统,添加GUI应用程序,并修改系统启动脚本使应用程序在系统启动时自运行。软件结构如图8 所示。

  基于zigbee与linux 的智能家居系统设计方案

  5 测试与分析

  为了保证智能家居系统运行的稳定性,我们将主控设备装入模具中进行了一周高温测试,系统一直保持了稳定的工作状态,同时对CMU温度进行了测量,环境温度与CMU温度的比较如下图所示,理论情况下,CMU 工作的最大温度为45°C,由下图6.9 看出,CMU工作的温度属于正常范围。

  基于zigbee与linux 的智能家居系统设计方案

  同时对智能家居系统的家居设备无线节点进行了性能测试。测试条件为:1、用障碍物将CMU 模块与家居设备无线节点隔开;2、CMU 模块的波特率为250kbps;3、每一帧数据为64 字节;5、每次测试数据发送1000 帧,发送间隔为200ms 。实验结果如表1 所示,由表可以看出,系统如果要正常工作,需保持在200m距离范围内。

  基于zigbee与linux 的智能家居系统设计方案

  6 结论

  本文从智能家居系统设计的成本、功耗、性能等方面出发,设计出一种可行的智能家居系统的构建方案。以高性能、低功耗的S3C2440 芯片装载linux 嵌入式系统作为中央管理单元的处理器,用zigbee 无线通信协议实现CMU、无线家居设备节点、无线传感器节点的互联和互动,使之成为一个小型的家居“物联网”并且利用成熟的Internet网络实现了远程控制。并在硬件芯片选择和电路设计方面优化了系统的结构,使得系统性能得到了很大的改善,成本也降低了许多。


关键字:zigbee  linux  智能家居系统 引用地址:基于zigbee与linux 的智能家居系统设计方案

上一篇:基于ADV7125的嵌入式系统VGA接口设计
下一篇:基于一种可以用按键进行调节LCD背光亮度的解决方案

推荐阅读

智能制造已经成为全球制造业新趋势,而机器人作为实现智能制造的关键技术,拥有广阔的市场前景,深受资本市场的青睐。如今,机器人被广泛应用于汽车工业、电子制造、金属加工、化学和塑料以及食品加工等行业,并不断的向其它领域快速扩展。从工业机器人产业发展现状来看,政策和市场双重驱动,大量资本注入使得整个机器人产业步入了快车道。目前的工业机器...
近年来,随着自动化生产需求的持续释放,机器人产业迎来了迅猛发展,各种机器人技术都在商业化应用中找到了合适的落地,推动着各行各业的快速转型升级。反过来,由于行业应用的深化和下沉,也呼唤着机器人技术的高要求发展与进一步升级,人们对机器人技术智能化本质的加深,增强了大家对技术未来发展情况的殷切期待。2018年,机器人产业的火热发展,已经向...
Q1:1,MSP430进入LP 模式后,CPU 停止运行,那么,进入中断执行退出后,由于SR的恢复,导致还处于LP 模式,是否意味着,CPU 在退出中断后立即停止了呢?2,也就是说,进入LP 模式后,要让非中断流程运行的话,只能在中断退出前把保存在堆栈里面的SR 修改了?3,由于中断自动恢复保存的寄存器,要想在中断程序里面修改堆栈里面的保存的SR,只能用汇编了?Q2:1、是的...
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。本文所说的模拟串口, 就是利...

史海拾趣

问答坊 | AI 解惑

evc下窗口切换的问题

我在第一个对话框放了四个button按钮,然后插入了四个Dialog,我想分别点击这四个按钮,然后分别弹出这四个Dialog,我用了下面的代码实现了弹出这四个对话框,但弹出后,不能关闭,无论是点关闭按钮,还是点OK或者cancel按钮都不响应,请问怎么才能 ...…

查看全部问答∨

s3c2440的板子 在插着USB设备的情况下 不管是掉电启动还是热启动 均不能自动发现该设备了

问题如上,会不 会是硬件问题呢?还是说驱动问题,但我看了源代码,好像都是用三星提供的源码,应该没更改…

查看全部问答∨

关于PICC与中文汉字显示不兼容问题

哪位大侠碰到过PICC不兼容中文的情况? 之前用PICC16程序没问题,后来换了18系列的芯片,用UNIVERSAL TOOLSUITE PICC就出现问题了,PICC版本是9.63,MPLAB V8.40,错误提示是:illegal character (0xC9)。其实不换18的芯片,用UNIVERSAL TOOLSUITE P ...…

查看全部问答∨

问点关于modbus协议rtu协议程序中的一些疑问

最近下了点程序学习如下,有些看不明白,咨询一下 程序 #include \"main.h\" /****************************** 微控电子 www.mcuc.cn modbus RTU 的C51程序 单片机89S52 通信波特率 9600 8位数据 1位停止位 偶校验 485通位接口 单片机控制板 ...…

查看全部问答∨

工程师应该掌握的20个模拟电路

对模拟电路的掌握分为三个层次。初级层次是熟练记住这二十个电路,清楚这二十个电路的作用。只要是电子爱好者,只要是学习自动化、电子等电控类专业的人士都应该且能够记住这二十个基本模拟电路。中级层次是能分析这二十个电路中的关键元器件的作 ...…

查看全部问答∨

stm32f103t8 usb无法识别

用火牛开发板更改了HID源码可以跑通屏蔽了除了USB以外所有设备,重新制版了6M晶振已经更改PLL为12倍usb1.5分频 无法识别出设备来紧急求助!!…

查看全部问答∨

一片74AHCT14能驱动几片74HCT4094?

为什么CMOS器件数据手册里总是找不到输入电流的参数呢? 里边的Iik电流是干嘛用的?(翻译过来就是输入钳位电流)   [ 本帖最后由 bdhrui 于 2012-4-24 23:06 编辑 ]…

查看全部问答∨

下一代Windows可能命名为“Windows 9”,或“Blue”?

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 有意思的是有时候微软的人也会用“Windows vNext”或者“Windows Next”来指代下一代Windows,跟“The New iPad”一个风格。 对此,这里还有另一种说法:新版本Windows的内部开发代号 ...…

查看全部问答∨

MSP430测频为什么数码管显示不出频率

#ifndef TIMERA_H #define TIMERA_H void IO_CLR();//初始化IO void InittimerA();//定时器A初始化 //void KeeptimerA(unsigned char flag);//控制捕获模式运行 unsigned int Getcyc();//返回周期值函数 void delay();//延时函数 #endi ...…

查看全部问答∨

libcurl库的问题

我在linux下用eclipse编程,写了一个小程序 用到libcurl库,有个头文件出错 #include 请高手指教,如何解决?谢谢! …

查看全部问答∨
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved