基于物联网的智能冰箱的设计与实现
3 软件设计
3.1 系统软件框图
基于Windows CE 5.0 的智能冰箱的软件框图如图6 所示。
图6 软件框图
3.2 应用程序开发
(1)RFID 实现过程。
运用RFID 的API 函数中ReadID 读取在冰箱内的RFID 卡,连续多次读取RFID 卡。读取期间运用防碰撞算法将读取到的相同的RFID 卡信息排除,然后将得到的RFID 卡信息保存在数据结构内,以便以后用数据结构跟数据库资料核对。完成读取后,断开RFID 连接并且开始跟数据库对比资料。
这里我们采用了目前广泛的二进制树防碰撞算法。读写器与应答器之间进行数据交换时,往往要传输序列号的部分或者全部位,此时的传输顺序定义为:先发送低位,再发送高位。在读写器或者应答器内部,对数据进行比较时,遵循这样的原则,即按位依次比较,先比较低位,再比较高位,约定0<1,根据这个比较顺序,在判断大小时,低位数据优先,即两数A,B 相比较,从低位开始的第一个不相等位的大小决定了两数的大小,只有当两个数的全部位均相等时,两数才相等。二进制树算法执行过程中, 读写器会多次发送把应答器分成两组并且多次分组后得到唯一的一个应答器命令给应答器, 而且在这个分组过程中命令参数以节点的形式存储起来成一个数据的分叉树,从而形成"二进制树".智能冰箱的二进制树防碰撞算法在应答器内进行比较,因为读写器可以有多个,而最后读写器读到的数据发送给应答器, 因此选择应答器作为防碰撞算法的烧录地方, 这样可以在应答器接受了读写器读到的标签排除相同后传输标签数据到主控平台PXA270。
图7 RFID 读取流程图
(2)GPRS 实现过程
当收到数据库对比后请求购物的清单,通过QT 运行以C++代码编写的GPRS 程序。首先从QT 里得到需要发送到客户的信息数据, 然后用OnBnClickedBtnOpen () 配置RS-232 串口连接配置GPRS, 等待GPRS 连接成功。
当连接成功后GPRS 会返回"AT+OPENAT=MODE:3#" 数据确认连接成功。然后通过OnBnClicked -BtnSend (string) 这个函数发送信息到GPRS, 然后GPRS 会根据信息内容发送到客户的手机内。发送成功后GPRS 会待机5 分钟等待客户发送回复确认购买。
倘若5 分钟内客户尚未回复确认购买, 则会自动取消这次食物的购买并且断开与GPRS 连接; 若5 分钟内客户回复确认购买, 则程序会返回一个确认购买的信息并且断开GPRS 连接。
图8 GPRS 算法流程图
(3)压力传感器实现过程当冰箱打开的时候,PXA270 对压力传感器通电。压力传感器第一次工作时会记录初始时候重力。当冰箱关闭时候, 测量压力传感器的重力并对比初始时候重力,是否变化,若未变化过则关闭压力传感器并断开压力传感ID 读写器。
图9 压力传感器算法流程图
(4)控温实现过程
由于PXA270 外接插口问题, 温度传感器基于单片机操作,不需要嵌入PAX270 开发板上。温度传感器会伴随着冰箱的启动而启动。当温度传感器测到的数据发送给单片机时, 单片机会先将冰箱内的温度与设置的冰箱的温度对比, 若高于冰箱的温度则开启制冷装置。制冷期间也不断测量先冰箱的温度并且比较设定的冰箱温度值;若小于等于冰箱的设定的温度值则关闭制冷装置。单片机继续接受从温度传感器传来的冰箱的温度并且比较设定的冰箱温度值以准备随时开启制冷保持冰箱的温度。当冰箱断电时候单片机才会停止运行直接冰箱通电后再次开启并从头初始化单片机。
图10 控温算法流程图
(5)网上购物过程
在这一过程中, 我们指定了冰箱能够直接访问的物联网超市网站,从而进行对接。因此,我们本项目中,自己搭建了一个购物网站(ASP),为的就是与该类产品进行交互。通过调用系统自带的头文件<wininet.h>中函数HINTERNET InternetOpenUrl()来打开一个完整的FTP、Gopher 或HTTP 网址的资源, 从而可以获取商品相关信息。
另外,用户需要登录购物网站才能实现下单操作,这里, 我们默认每台智能冰箱都配有一个专用的账号来绑定登录,通过POST 方式提交页面。当冰箱登录成功后,可以实现购买商品并下单。
(6)数据库实现
通过SQLite, 冰箱保存着食物的各种资料以便于查找。
表4 NowTab1
NowTab1 保存着上一次冰箱的食物表格, 方便于与这次RFID 读取到得数据比对其中的变化,并且适当删除或者添加NowTab1 数据以便下一次的对比, 也可以显示出现冰箱内有的食物。
表5 HistoryTab3
HistoryTab3 保存着从冰箱曾经存放过的食物,以便于客户可以查找曾经买过的食物。
表6 SureTab2
SureTab2 保存着冰箱基本需求的食物表。这表是为了确认如果NowTab1 表的食物缺少一定量时跟SureTab2 对比,某食物缺少了超过界
- 非接触式RFID的读写器系统设计(03-09)
- 一种新颖的RFID防冲突算法(05-06)
- RFID芯片的攻击技术分析及安全设计策略(11-26)
- 基于Linux平台上S3C2440的物流配送系统设计(01-22)
- 基于ATMEGA64L和TRH031M的RFID读卡器设计 (02-15)
- 一种基于RFID的便携式智能语音播放器设计(08-02)