基于S3C2410的智能家居控制器设计与实现

发布者:不懂之人最新更新时间:2023-01-03 来源: elecfans关键字:S3C2410  智能家居控制器  设备 手机看文章 扫描二维码
随时随地手机看文章

  如何将家庭里相对独立的设备连接成一个系统,从而方便进行本地和远程控制?本文通过采用ARM构成智能家居控制器来实现这个目标。智能家居控制器使用S3C2410、SIM100-E等元件来组成硬件平台,再将Linux系统移植到硬件平台上,然后设计好相应的驱动程序和应用程序,最后将软件下载到硬件平台来对家电进行本地和远程控制。


  随着数字化家用电器的飞速发展,如何对家庭中相对独立的家用电器进行智能化管理和操作?这是人们非常关心的一个问题。智能家居控制器能够将许多相对独立的家用电器构成一个统一的系统,从而方便对家用电器进行本地操作,也可通过互联网或GPRS系统对家用电器实现远程控制等等。本文主要讨论智能家居控制的设计和实现。


  1 智能家居控制器的硬件设计

  在设计智能家居控制器时,考虑到系统的稳定性和扩展性,因此将控制器硬件设计成核心板和控制板2部分。核心板主要用来构成一台嵌入式计算机系统,控制板主要是一些外围接口。系统硬件如图1所示。

  

  图1 智能家居硬件结构图

  核心板采用三星公司生产的S3C2410微处理器。ROM采用SAMSUNG K9F1208芯片构成64MNAND FLASH,将FLASH芯片连接到系统的nGCS0,所以它的起始地址为:0x00000000。RAM采用2片HY57V561620AT-H构成64M ,将它连接到系统nGCS6,所以它的起始地址为:0x03000000。为了让系统从NAND FLASH启动,要将S3C2410的OM0和OM1引脚都接地。最后将S3C2410处理器的串口控制信号、USB主机控制信号、LCD控制信号、触摸屏信号、数据总线、地址总线、控制总线、外部中断等信号全部连接到核心板上的200芯插座上。


  GPRS模块采用SIMCOM公司生产的SIM100-E芯片。通过第三个串口信号线TXD2和RXD2和处理器相连接。


  LCD直接由CPU来控制,不过要增加驱动电路。

  触摸屏采用4线电阻式,直接将它和CPU的nYPON、YMON、nXPON、XMON相连。

  传感器接口的输出信号连接到CPU的EINT9外部中断引脚上,当传感器接收到某个信号时,就可以通过外部中断引脚向CPU申请服务。

  家电控制接口的输入控制信号连接到CPU的GPIO端口,当要对某个家电进行控制时,只需向指定的端口写入0或1,然后再由家电控制接口发遥控信号去控制相应的家电。


  2 智能家居控制器操作系统的移植及裁剪

  考虑到成本,以及系统对实时性的要求不高等因素,所以决定选用Linux操作系统。目前发行的Linux操作系统都能支持ARM机的体系结构,所以只要根据平台的具体结构进行移植。移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和内核编译4等个环节。


  2.1 建立交叉编译环境

  交叉编译是指利用运行在某台计算机上的编译器编译某个源程序生成在另一种结构计算机上运行的目标代码的过程。编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译。建立交叉编译环境就是将ARM使用的编译器(如:arm-linux-gcc)和函数库(如:glibc)安装到指定目录,并使用configure配置好Makefile文件。


  2.2 修改内核源代码

  修改内核源代码主要包括启动代码的修改、内核的链接及装入、参数传递和内核引导几个部分。Linux内核分为体系结构相关部分和体系结构无关部分。在Linux启动的第一阶段,内核与体系结构相关部分首先执行,它会完成硬件寄存器设置,内存映射等初始化工作。


  然后把控制权转给内核中与系统体系结构无关的部分。在移植工作中要修改的代码主要集中在与体系结构相关的部分。ARM芯片的体系结构在arch/arm目录下。首先根据芯片手册修改boot/init.S文件中的:片选组基地址寄存器、DRAM存储配置寄存器、DRAM片选寄存器、中断屏蔽寄存器等。然后修改内核的链接及装入ELF。最后将系统中可用页面的数目、文件系统大小等信息以参数形式从启动代码传给内核,完成设置陷阱,初始化中断,初始化计时器,初始化控制台等一系列操作而使内核正常启动。


  2.3 内核裁剪和编译

  内核裁剪是根据控制系统的要求将不需要的模块从内核中裁剪了,Linux内核的裁剪有好几个版本,可以使用命令make menuconfig对系统进行裁剪。

  内核裁剪之后,最后要进行交叉编译生成内核映象文件zImage。具体命令如下:

  make clean //清理编译环境

  make dep //编译依赖文件

  make zImage //编译内核


  3 驱动程序的设计

  智能家居控制器要多个设备驱动程序,有的驱动程序可以采用标准的驱动程序,有的要专门设计。芯片SIM100-E是通过第三个串口与S3C2410相连的,所以可以直接使用标准的串口驱动程序。传感器接口和家电控制接口要设计专用的驱动程序。控制器的处理器通过外部中断来检测传感器,通过GPIO端口来控制家电,虽然它们的工作原理有所不同,但驱动程序设计的方法没有很大差别,因为在嵌入式Linux系统中设备驱动程序有一个标准的框架,设计驱动程序的大部分工作就是根据硬件结构来“填写”框架中的函数。主要的函数包括open()、read()、write()、ioctl()、release()、module_init()和module_exit()等等。

  下面以传感器接口驱动程序设计为例,简介驱动程序的“填写”过程。


  3.1 设备初始化模块和退出模块

  设备初始化模块的主要功能是:设置和申请中断、向内核注册设备等。设备退出模块的主要功能是:释放设备所占

  用的资源。具体函数如下:

  int __init s3c2410_int_init(void)

  {┅

  set_external_irq(IRQ_EINT9, ┅);//设置外部中断

  request_irq(IRQ_EINT9,demo_int_handler, ┅);//申请外部中断

  ret = register_chrdev(0, DEVICE_NAME, &s3c2410_exio_fops); //申请主设备号

  devfs_int_demo= devfs_register(NULL, “int_demo”, ┅); //注册设备文件

  ┅}

  void __exit s3c2410_int_exit(void)

  {┅

  free_irq(IRQ_EINT9,NULL);//释放中断

  devfs_unregister(devfs_int_demo); //删除设备文件

  unregister_chrdev(exioMajor, DEVICE_NAME); //释放主设备号

  ┅}

  3.2 打开模块和释放模块

  打开模块的主要功能是:初始化一些变量。具体实现函数如下:

  staTIc int s3c2410_int_open(struct inode *inode, struct file *filp)

  { init_MUTEX(&demodev.lock);//初始化自旋锁

  init_waitqueue_head(&(demodev.wait));初始化队列

  MOD_INC_USE_COUNT;//使用计数加1

  ┅}

  staTIc int s3c2410_int_release(struct inode *inode, struct file *filp)

  { MOD_DEC_USE_COUNT; //使用计数减1

  ┅}

  3.3 读数据模块

  读数据模块的主要功能是:使线程休眼,然后等待中断来唤醒。具体实现函数如下:

  staTIc int s3c2410_int_read(struct file *filp,char *buffer,size_t count,loff_t *ppos)

  {┅

  copy_to_user(buffer,(char *)&bak,sizeof(bak)); //内核态到用户态

  interrupTIble_sleep_on(&demodev.wait);//进入休眠

  ┅}

  3.4 中断处理模块

  中断处理模块的主要功能是:唤醒正在休眼的线程。具体实现函数如下:

  static void s3c2410_int_handler(int irq, void *dev_id, struct pt_regs *reg)

  {wake_up(&demodev.wait);//中断唤醒

  ┅}

  驱动程序设计完成后,再编写Makefile文件,通过make命令生成目标文件,最后利用insmod命令向内核加载驱动程序。

  4 应用程序的设计

  为了提高应用程序的运行速度,以及程序运行的稳定性,所以将应用程序设计成多线程结构,如图2所示。应用程序由7个线程和一个共享数据结构组成。

  

  如图2 应用程序结构框图

  共享数据主要用于存放家电开启和关闭时间,发送短信的电话号和短信内容等信息。共享数据是通过2个设置线程来修改的。家电控制线程主要是根据控制数据、检测短信线程的内容和操作线程的内容来进行操作。发送短信线程主要是根据控制数据、检测传感器线程的内容和操作线程的内容来进行操作。应用程序的具体内容如下。

  #include &nb

  sp; //线程库头文件

  ┅

  int main()

  {┅

  pthread_creat(&th_a,NULL,send_msg,0); //创建发送短信线程

  pthread_creat(&th_b,NULL,control_driver,0); //创建家电控制线程

  ┅

  pthread_join(th_b,&retval); //等待家电控制线程结束

  pthread_join(th_a,&retval); //等待发送短信线程结束

  ┅}

  /*发送短信线程*/

  int send_msg()

  {┅

  tty_init(); //初始化串口

  gprs_init(); //初始化GPRS模块

  tty_writecmd(“at”,strlen(“at”)); //发送AT命令

  tty_writecmd(“at+cmgf=1”,strlen(“at+cmgf=1”));//发送修改字符集命令

  tty_write(“at+cmgs=”,strlen(“at+cmgs=”)); //发送短信命令

  tty_writecmd(msg.send_tel,strlen(msg.send_tel)); //发送电话号码

  tty_writecmd(msg.send_text,strlen(msg.send_text)); //发送短信内容

  tty_end();

  ┅

  return 0;

  }

  其它线程的设计方法有很多相似之处。应用程序设计完成之后,再经过交叉编译就可生成目标文件。


  5 结束语

  将移植好的系统、驱动程序和应用程序下载到智能家居控制器上。经过测试,系统具有操作方便、可靠性高和抗干扰能力强等优点。本文的创新点是:通过智能家居控制器将家电、传感器、手机等许多独立的设备连接成为一个系统,从而方便本地和远程控制。


关键字:S3C2410  智能家居控制器  设备 引用地址:基于S3C2410的智能家居控制器设计与实现

上一篇:基于S3C2440A芯片Linux系统实现MJPEG网络摄像机的搭建
下一篇:基于S3C2440处理器拳击娱乐系统设计

推荐阅读最新更新时间:2024-11-10 00:12

科技造福人类,ARM Powered®创新设备掀开智能医疗新篇章
医疗健康,恐怕是除了“衣食住行”之外人们最关注的话题了。伴随着智能科技的介入,医疗设备也在便携性和功能方面实现了全新的突破。凭借出色的底层技术保障,ARM powered智能设备拥有强大的安全支持、始终在线、时时提醒,为更多患者的病情监控和日常生活带来便利。 【Mobicuff血压测量仪:家庭血压测量好帮手】 http://safeheartus.com/mobicuff/ 根据世界卫生组织的统计,高血压每年会导致9百万人死亡。通常而言,绝大多数的家庭都会备一台血压测量仪,但是传统的测量仪个头笨重,使用繁琐,无法准确的记录数据。而现在,Mobicuff血压测量仪在智能技术的发展下应运而生。它小巧的身材以及便捷的使用模式非常适
[医疗电子]
柯尼卡美能达推出“全球最轻”的无线数字X线成像设备
    柯尼卡美能达将于2013年7月开始销售号称“全球最轻”的无线型数字X线成像设备(DR:Digital Radiography)“AeroDR 1012HQ”。该设备重1.7kg,摄影范围为10×12英寸,是“AeroDR”系列中最小的。标准价格为2098万日元(约132万元人民币)。           由于尺寸小,方便对手等较小部位拍摄X光片,还能够轻松安装到婴儿保温箱及婴幼儿摄影台的暗盒架上。整形外科在对膝盖及肩膀等部位拍X光片时,需要患者手举数字X线成像设备,因此减轻设备重量可减轻患者负担。      柯尼卡美能达已在销售能够实现DR长尺寸成像的“AeroDR长尺寸系统”。该公司指出,通过此次扩充产品线,再加上A
[医疗电子]
串口设备的CAN总线方式远距离解决方案
CAN总线是ISO国际标准化的串行通信协议。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达lMbps。现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业 自动化 、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供强而有力的技术支持。 CAN属于工业现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性。 工业计算机PC多为串口接口,在实际布线使用中
[嵌入式]
领邦仪器创新设备为磁材行业注入正能量
近期,北京领邦仪器创新研发的“钕铁硼工件尺寸外观检测设备”引起行业瞩目,大到中科三环这样的上市大企业,小至只有十几人的工厂,对这样的智能自动设备兴趣盎然。业内人士表示,该设备面世后带动了磁性材料行业的革新风潮,让生产厂家们意识到,利用自动化检测设备提高检测效率和产品出厂合格率的重要性。 根据多家钕铁硼工厂反馈的信息能看出,他们急于采购自动化检测设备的初衷,多是由于产品数量大、人工检测难度大、效率低,导致生产与质检脱节、产品出厂合格率低,不时遭到客户退货,给他们造成了很多困扰。 再看看某永磁行业龙头企业,早已意识到人工检测的弊端,率先建立了自动化检测设备研发中心,在检测环节严格把关,收到了一些效果,但是因为检测设备
[工业控制]
领邦仪器创新<font color='red'>设备</font>为磁材行业注入正能量
Maxim面向USB Type-C™设备推出灵活的Buck转换器
电子网消息,Maxim推出MAX77756 24V、500mA、低静态电流(Iq) buck转换器,为多单元、USB Type-C产品的开发者提供灵活的选项,满足其更高电流、双路输入及I2C支持等需求。 USB Type-C产品必须产生一路3.3V的常开电源,以检测USB插入事件。利用MAX77756降压转换器可以从Type-C供电 (PD)电压(5V至20V)产生一路常开输出电压(1.8V/3.3V/5.0V),用作端口控制器的数字电源。MAX77756的静态电流低至20μA,大幅降低空闲模式下的功耗,进而延长电池寿命。为简化系统设计,MAX77756采用双输入理想二极管构成的“或”电路,允许芯片由外部USB电源供电(
[半导体设计/制造]
CES2018上看智能可穿戴设备 还能玩出哪些新亮点
  近年来,伴随着物联网、人工智能技术的发展,智能化热潮已经席卷传统行业。其中,新兴的智能 可穿戴设备 可以说是备受关注,从智能手环到智能手表、各种革命性的新产品层出不穷。但是,经历过野蛮生产阶段, 可穿戴设备 却迎来了一个低谷,市场给出的答卷也是断崖式下跌。下面就随嵌入式小编一起来了解一下相关内容吧。   无可否认,智能 可穿戴设备 距离下一个科技革命尚有距离,但是可穿戴设备的前景却也并非一蹶不振。本届 CES 2018展会上,人工智能、物联网、AR/VR、自动/无人驾驶依旧是毫无疑问的关键词。而可穿戴设备通过与其相结合之后,也爆发出新力量,科技厂商们也带来了众多智能可穿戴设备新品。在这里,OFweek可穿戴设备网为大家盘点下
[嵌入式]
小米汽车新专利:可通过穿戴设备控制车辆
2月1日,盖世汽车从企查查App处获悉,近日,小米汽车科技有限公司公布了多项专利,其中包括“穿戴设备以及穿戴设备的数据处理方法”、“车辆的控制方法、装置、电子设备及存储介质”专利。 具体来看,“穿戴设备以及穿戴设备的数据处理方法”的专利摘要显示,该穿戴设备包括显示屏、第一蓝牙模块以及处理器。 其中,第一蓝牙模块用于建立穿戴设备与车辆之间的通信连接;处理器用于获取穿戴设备与车辆之间的距离,并在距离小于设定的距离阈值时,自动切换显示屏的界面,来控制所述车辆的一个或多个控件。 图片来源:企查查 总的来说,就是该穿戴设备能够在距离车辆较近时,自动显示用于控制车辆的控件。这样,用户可以便捷地通过所述控件对车辆进行控制,
[汽车电子]
小米汽车新专利:可通过穿戴<font color='red'>设备</font>控制车辆
2GHz WCDMA终端设备射频测试介绍(五)
WCDMA是一个宽带直扩码分多址(DS-CDMA)系统,即通过用户数据与由CDMA扩频码得来的伪随机序列相乘,从而把用户信息比特扩展到宽的带宽上去。使用3.84Mcps的码片速率的WCDMA系统需要大约5MHz的载波带宽,而带宽为1MHz的DS-CDMA系统,如IS-95,相比之下,通常称为窄带CDMA系统。受移动通信频谱资源限制,相关标准对终端工作时占用带宽和频谱发射时的干扰情况有严格要求。本期摩尔实验室(MORLAB)将继续为您介绍2GHz WCDMA终端设备射频测试之占用带宽和频谱发射模板这两项测试。 (一)占用带宽(Occupied Bandwidth) 占用带宽是指包含发射频谱99%总能量所使用的带宽。 1. 测试目
[测试测量]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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