基于物联网的智能冰箱设计与实现
发布时间:2015-1-15 15:16
发布者:designapp
0 引言 随着人民生活水平的飞速发展, 生活节奏不断加快,冰箱在家庭中起的作用也越来越大,但整理起来麻烦, 同时也经常弄不清楚食品是否用完或者遗忘某些食品在冰箱而造成各种生活麻烦。 本设计采用射频识别(RFID,Radio Frequency Identification)技术,并结合互联网和信息处理技术,建立智能冰箱食品监管系统,实现对冰箱内的食品记录。那么冰箱内食品可以通过查询数据 库在冰箱的液晶屏上显示,也可以通过手机发短信到冰箱查询家里的食物,并且通过手机购买冰箱食物,满足未来智能家居的需求。 随着物联网的发展, 物联网方向智能家居的投入正在迅速扩大,RFID 标签的成品也不断地降低, 将来可能取代条形码成为食品外包, 而且RFID标签以其耐用、持久、免维护着称。随着大多数人的家庭已达到小康水平的条件,渴望着更为方便、省事得家用电器。而本系统虽然只是雏形,但价格适中,而且采 用较为前沿的技术,比传统的冰箱更为省事,为都市人群忙碌的生活提供了便捷,解决众多生活琐碎事情,推向市场将为大部分人所接受。 1 系统总体方案设计 1.1 系统总体方案 根据智能冰箱终端的功能与技术要求情况, 决定采用"硬件+软件"的系统结构来设计智能冰箱终端,应用层在OS的基础上根据项目的不同需求来编写,各部分简要介绍如下: 系统选用基于采用Intel Xscale PXA270 的硬件开发平台,该平台是以Intel XScale 架构的ARM 处理器。 嵌入式操作系统选用Windows CE 5.0.Windows CE 是高度模块化的嵌入式操作系统, 用户可以根据自己的设备需求通过Platform Builder 工具进行定制和裁减。 应用程序框架:qt-embedded-wince-opensource4.6具有丰富的标准库,动态引擎,具有Widget 样式表,强大的图形布画和多线程功能; 在Windows CE 上实现高性能、占位小等特点。 本系统是作为一个家居电器,通过网络可随时对食品进行查询和上网,用户可以通过短信了解到冰箱食品信息,决定是否网上购买。系统总体方案图1如下。 ![]() 1.2 系统模块 根据设计方案, 我们将整个系统划分为三个主要模块,如图2所示。 ![]() 1.3 模块功能详细描述 (1)食品状态模块。 ![]() (2)网上购物模块。 ![]() (3)菜谱模块。 ![]() 2.硬件设计 ![]() 2.1 RFID 读写器、天线模块 ISO18000-6C I 系列读写器是深圳市先施科技股份有限公司自主开发的新一代远距离电子标签读写器,读写器所支持的标签主要是遵从ISO18000-6C (以下简称"6C") 协议的无源电子标签。用户可以使用本读写器对6C 电子标签进行读、写、锁定等功能操作。该读写器有主从、定时和触发三种读电子标签的工作方式,连接主机和控制器的通信接口有RS-232、RS-485 和Wiegand 接口。可以直接与具有标准韦根W26 或W34接口的控制设备连接, 也可以通过标准通信接口与控制器或PC 相连,进行数据通信与交换;另外还有四路触发信号输入接口。当压力传感器检测冰箱内压力发生变化时, 触发相应的函数使读写器扫描冰箱内的食品标签。同时,该模块提供一次读写多个标签,适合本项目设计。 2.2 GPRS/GSM 模块 该模块采用鸿鹏电子有限公司DU600, 它支持多种连接模式,可以实现手机通信的基本功能。智能冰箱的GPRS 模块只需要短信收发并且解译收到的短信信息,只需要DU600 选择唤醒模式等待接收短信并且可以通过解译短信后得到的指令发送控制指令到PXA270实现购买功能和查询功能。 ![]() 2.3 压力传感器模块 通过89C51 单片机,集成了LCD 模块、串口模块、24 位ADC 模块。该模块主要负责感应压力的变化,通过串口传送中断信号到中控平台。 压力传感器HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D转换器芯片。当压力传感器传来变化时候才会发送信号到核心板说明冰箱内有变化并开启RFID 扫描。 2.4 控温模块 本模块是基于单片机的制冷控制系统, 实时温度显示,制冷温度可调,最低可达零下10 度。 本模块的温度传感器采用DS18B20.根据DS18B20的通信协议,主机(单片机)控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM 指令,最后发送RAM 指令, 这样才能对DS18B20 进行预定的操作。复位要求主CPU 将数据线下拉500 微秒,然后释放,当DS18B20 收到信号后等待16~60 微秒左右,后发出60~240 微秒的存在低脉冲, 主CPU 收到此信号表示复位成功。同时,本模块采用了半导体制冷片,实现模拟冰箱保鲜功能。 ![]() 3 软件设计 3.1 系统软件框图 基于Windows CE 5.0 的智能冰箱的软件框图如图6所示。 ![]() 3.2 应用程序开发 (1)RFID 实现过程。 运用RFID 的API 函数中ReadID 读取在冰箱内的RFID 卡,连续多次读取RFID 卡。读取期间运用防碰撞算法将读取到的相同的RFID 卡信息排除,然后将得到的RFID 卡信息保存在数据结构内,以便以后用数据结构跟数据库资料核对。完成读取后,断开RFID 连接并且开始跟数据库对比资料。 这里我们采用了目前广泛的二进制树防碰撞算法。读写器与应答器之间进行数据交换时,往往要传输序列 号的部分或者全部位,此时的传输顺序定义为:先发送低位,再发送高位。在读写器或者应答器内部,对数据进行比较时,遵循这样的原则,即按位依次比较,先比 较低位,再比较高位,约定0 (5)网上购物过程 在这一过程中, 我们指定了冰箱能够直接访问的物联网超市网站,从而进行对接。因此,我们本项目中,自己搭建了一个购物网站(ASP),为的就是与该类产品进行交互。通过 调用系统自带的头文件中函数HINTERNET InternetOpenUrl()来打开一个完整的FTP、Gopher 或HTTP 网址的资源, 从而可以获取商品相关信息。 另外,用户需要登录购物网站才能实现下单操作,这里, 我们默认每台智能冰箱都配有一个专用的账号来绑定登录,通过POST 方式提交页面。当冰箱登录成功后,可以实现购买商品并下单。 (6)数据库实现 通过SQLite, 冰箱保存着食物的各种资料以便于查找。 ![]() NowTab1 保存着上一次冰箱的食物表格, 方便于与这次RFID 读取到得数据比对其中的变化,并且适当删除或者添加NowTab1 数据以便下一次的对比, 也可以显示出现冰箱内有的食物。 ![]() HistoryTab3 保存着从冰箱曾经存放过的食物,以便于客户可以查找曾经买过的食物。 ![]() SureTab2 保存着冰箱基本需求的食物表。这表是为了确认如果NowTab1 表的食物缺少一定量时跟SureTab2 对比,某食物缺少了超过界限时,就会启动购物程序并且购买缺少的食物防止冰箱食物缺少。 ![]() NameTab4 保存着与编号相对应的名称。NameTab4是为了方便从RFID 读到的信息中得出此食物的名称。 若查到不到名称, 则可以通过编号网上查找到名称并且添加到AddrTab5 表中以便以后查找之用。 ![]() AddrTab5 可以根据地址编号得出地址名。AddrTab5是为了方便从RFID 读到的信息中得出此食物的生产地址。若查到不到地址,则可以通过地址编号网上查找到地址并且添加到AddrTab5 表中以便以后查找之用。 ![]() 可以根据Cookbook5 先列出冰箱可以烹饪的食材跟菜谱。Cookbook5 是数据库存储的菜谱,方便从冰箱现有食材中查找到可以烹饪的菜谱。Cookbook5 可以通过网上下载菜谱保存到数据库中。 ![]() 可以通过RDCookbook6 得到推荐的食谱。RDCookbook6是冰箱现有食材根据Cookbook5 的菜谱得出现在最有可能烹饪的的菜谱罗列出来。 (7)GUI 界面设计 本系统GUI 采用QTE 实现。 1,简要设计概述在主界面的左边入放置了一个groupBox 控件,里面加入了四个pushBotton,它们分别代表:主界面、食品状态、网上购物和食谱推荐。主界面的右边放置的是stackedWidget 控件, 一共添加了五个页面来实现对不同功能模块的显示。通过信号和槽连接按钮实现相应功能界面的跳转。 2,主要设计实现方法。 隐藏标题栏 his->setWindowFlags(Qt::FramelessWindowHint); this->setWindowModality(Qt::ApplicationModal); 日历的显示 //显示日期 curFile=QDateTime::currentDateTime()。toString("dd"); ui->label_9->setStyleSheet("font-size:30px"); ui->label_9->setText(curFile); //显示年月 curFileyear=QDateTime::currentDateTime()。toString("2011-MM"); ui->label_8->setStyleSheet("font-size:18px"); ui->label_8->setText(curFileyear); 动态更新时间。 QTimer *timer=new QTimer(); connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate())); timer->start(1000); void icebox::timerUpDate() { curFiletime=QDateTime::currentDateTime()。toString("hh:mm:ss"); ui->label_7->setText(curFiletime); } 4 结语 RFID 冰箱可以发挥射频识别技术的优点,为现代家庭的健康生活提供保障,减少了社会资源浪费,符合当代社会绿色环保的理念,可以应用于智能家居。但是目前,超市 的商品还没使用RFID 标签,所以每一样食品都需要加贴标签,将会是一个繁琐的过程,而且标签费用也可能会超过食品本身, 这是智能冰箱投入实用遇到的难题。但是随着超市物流RFID 技术的普及,标签价格的进一步下降,智能冰箱必然会走进每个家庭,成为智能家居的主角。 |
网友评论