基于物聯(lián)網(wǎng)的智能冰箱設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:基于RFID 技術(shù),通過(guò)互聯(lián)網(wǎng)實(shí)現(xiàn)智能管理冰箱內(nèi)的食品。以PXA270 為平臺(tái),采用WindowsCE 5.0 為操作系統(tǒng), 使用QT、Visual Studio 2005 等開(kāi)發(fā)工具, 冰箱所涉及的技術(shù)有RFID 技術(shù)、GPRS 技術(shù)、有線(xiàn)網(wǎng)絡(luò)接入、SQLite 數(shù)據(jù)庫(kù)等技術(shù),通過(guò)不同的傳感器觸發(fā)完成不同的功能,實(shí)現(xiàn)人性化智能化的冰箱管理。
0 引言
隨著人民生活水平的飛速發(fā)展, 生活節(jié)奏不斷加快,冰箱在家庭中起的作用也越來(lái)越大,但整理起來(lái)麻煩, 同時(shí)也經(jīng)常弄不清楚食品是否用完或者遺忘某些食品在冰箱而造成各種生活麻煩。
本設(shè)計(jì)采用射頻識(shí)別(RFID,Radio Frequency Identification)技術(shù),并結(jié)合互聯(lián)網(wǎng)和信息處理技術(shù),建立智能冰箱食品監(jiān)管系統(tǒng),實(shí)現(xiàn)對(duì)冰箱內(nèi)的食品記錄。那么冰箱內(nèi)食品可以通過(guò)查詢(xún)數(shù)據(jù)庫(kù)在冰箱的液晶屏上顯示,也可以通過(guò)手機(jī)發(fā)短信到冰箱查詢(xún)家里的食物,并且通過(guò)手機(jī)購(gòu)買(mǎi)冰箱食物,滿(mǎn)足未來(lái)智能家居的需求。
隨著物聯(lián)網(wǎng)的發(fā)展, 物聯(lián)網(wǎng)方向智能家居的投入正在迅速擴(kuò)大,RFID 標(biāo)簽的成品也不斷地降低, 將來(lái)可能取代條形碼成為食品外包, 而且RFID 標(biāo)簽以其耐用、持久、免維護(hù)著稱(chēng)。隨著大多數(shù)人的家庭已達(dá)到小康水平的條件,渴望著更為方便、省事得家用電器。而本系統(tǒng)雖然只是雛形,但價(jià)格適中,而且采用較為前沿的技術(shù),比傳統(tǒng)的冰箱更為省事,為都市人群忙碌的生活提供了便捷,解決眾多生活瑣碎事情,推向市場(chǎng)將為大部分人所接受。
1 系統(tǒng)總體方案設(shè)計(jì)
1.1 系統(tǒng)總體方案
根據(jù)智能冰箱終端的功能與技術(shù)要求情況, 決定采用"硬件+軟件"的系統(tǒng)結(jié)構(gòu)來(lái)設(shè)計(jì)智能冰箱終端,應(yīng)用層在OS 的基礎(chǔ)上根據(jù)項(xiàng)目的不同需求來(lái)編寫(xiě),各部分簡(jiǎn)要介紹如下:
系統(tǒng)選用基于采用Intel Xscale PXA270 的硬件開(kāi)發(fā)平臺(tái),該平臺(tái)是以Intel XScale 架構(gòu)的ARM 處理器。
嵌入式操作系統(tǒng)選用Windows CE 5.0.Windows CE 是高度模塊化的嵌入式操作系統(tǒng), 用戶(hù)可以根據(jù)自己的設(shè)備需求通過(guò)Platform Builder 工具進(jìn)行定制和裁減。
應(yīng)用程序框架:qt-embedded-wince-opensource4.6具有豐富的標(biāo)準(zhǔn)庫(kù),動(dòng)態(tài)引擎,具有Widget 樣式表,強(qiáng)大的圖形布畫(huà)和多線(xiàn)程功能; 在Windows CE 上實(shí)現(xiàn)高性能、占位小等特點(diǎn)。
本系統(tǒng)是作為一個(gè)家居電器, 通過(guò)網(wǎng)絡(luò)可隨時(shí)對(duì)食品進(jìn)行查詢(xún)和上網(wǎng), 用戶(hù)可以通過(guò)短信了解到冰箱食品信息, 決定是否網(wǎng)上購(gòu)買(mǎi)。系統(tǒng)總體方案圖1 如下。
圖1 系統(tǒng)框圖
1.2 系統(tǒng)模塊
根據(jù)設(shè)計(jì)方案, 我們將整個(gè)系統(tǒng)劃分為三個(gè)主要模塊,如圖2 所示。
圖2 系統(tǒng)模塊圖
1.3 模塊功能詳細(xì)描述
?。?)食品狀態(tài)模塊。
表1
?。?)網(wǎng)上購(gòu)物模塊。
表2
?。?)菜譜模塊。
表3
2.硬件設(shè)計(jì)
圖3 系統(tǒng)硬件框圖
2.1 RFID 讀寫(xiě)器、天線(xiàn)模塊
ISO18000-6C I 系列讀寫(xiě)器是深圳市先施科技股份有限公司自主開(kāi)發(fā)的新一代遠(yuǎn)距離電子標(biāo)簽讀寫(xiě)器,讀寫(xiě)器所支持的標(biāo)簽主要是遵從ISO18000-6C (以下簡(jiǎn)稱(chēng)"6C") 協(xié)議的無(wú)源電子標(biāo)簽。用戶(hù)可以使用本讀寫(xiě)器對(duì)6C 電子標(biāo)簽進(jìn)行讀、寫(xiě)、鎖定等功能操作。該讀寫(xiě)器有主從、定時(shí)和觸發(fā)三種讀電子標(biāo)簽的工作方式,連接主機(jī)和控制器的通信接口有RS-232、RS-485 和Wiegand 接口??梢灾苯优c具有標(biāo)準(zhǔn)韋根W26 或W34接口的控制設(shè)備連接, 也可以通過(guò)標(biāo)準(zhǔn)通信接口與控制器或PC 相連,進(jìn)行數(shù)據(jù)通信與交換;另外還有四路觸發(fā)信號(hào)輸入接口。當(dāng)壓力傳感器檢測(cè)冰箱內(nèi)壓力發(fā)生變化時(shí), 觸發(fā)相應(yīng)的函數(shù)使讀寫(xiě)器掃描冰箱內(nèi)的食品標(biāo)簽。同時(shí),該模塊提供一次讀寫(xiě)多個(gè)標(biāo)簽,適合本項(xiàng)目設(shè)計(jì)。
2.2 GPRS/GSM 模塊
該模塊采用鴻鵬電子有限公司DU600, 它支持多種連接模式,可以實(shí)現(xiàn)手機(jī)通信的基本功能。智能冰箱的GPRS 模塊只需要短信收發(fā)并且解譯收到的短信信息,只需要DU600 選擇喚醒模式等待接收短信并且可以通過(guò)解譯短信后得到的指令發(fā)送控制指令到PXA270實(shí)現(xiàn)購(gòu)買(mǎi)功能和查詢(xún)功能。[!--empirenews.page--]
圖4 讀寫(xiě)器和電子標(biāo)簽的工作示意圖
2.3 壓力傳感器模塊
通過(guò)89C51 單片機(jī),集成了LCD 模塊、串口模塊、24 位ADC 模塊。該模塊主要負(fù)責(zé)感應(yīng)壓力的變化,通過(guò)串口傳送中斷信號(hào)到中控平臺(tái)。
壓力傳感器HX711 采用了海芯科技集成電路專(zhuān)利技術(shù),是一款專(zhuān)為高精度電子秤而設(shè)計(jì)的24 位A/D轉(zhuǎn)換器芯片。當(dāng)壓力傳感器傳來(lái)變化時(shí)候才會(huì)發(fā)送信號(hào)到核心板說(shuō)明冰箱內(nèi)有變化并開(kāi)啟RFID 掃描。
2.4 控溫模塊
本模塊是基于單片機(jī)的制冷控制系統(tǒng), 實(shí)時(shí)溫度顯示,制冷溫度可調(diào),最低可達(dá)零下10 度。
本模塊的溫度傳感器采用DS18B20.根據(jù)DS18B20的通信協(xié)議,主機(jī)(單片機(jī))控制DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM 指令,最后發(fā)送RAM 指令, 這樣才能對(duì)DS18B20 進(jìn)行預(yù)定的操作。復(fù)位要求主CPU 將數(shù)據(jù)線(xiàn)下拉500 微秒,然后釋放,當(dāng)DS18B20 收到信號(hào)后等待16~60 微秒左右,后發(fā)出60~240 微秒的存在低脈沖, 主CPU 收到此信號(hào)表示復(fù)位成功。同時(shí),本模塊采用了半導(dǎo)體制冷片,實(shí)現(xiàn)模擬冰箱保鮮功能。
圖5 控溫模塊局部原理圖
3 軟件設(shè)計(jì)
3.1 系統(tǒng)軟件框圖
基于Windows CE 5.0 的智能冰箱的軟件框圖如圖6 所示。
圖6 軟件框圖
3.2 應(yīng)用程序開(kāi)發(fā)
(1)RFID 實(shí)現(xiàn)過(guò)程。
運(yùn)用RFID 的API 函數(shù)中ReadID 讀取在冰箱內(nèi)的RFID 卡,連續(xù)多次讀取RFID 卡。讀取期間運(yùn)用防碰撞算法將讀取到的相同的RFID 卡信息排除,然后將得到的RFID 卡信息保存在數(shù)據(jù)結(jié)構(gòu)內(nèi),以便以后用數(shù)據(jù)結(jié)構(gòu)跟數(shù)據(jù)庫(kù)資料核對(duì)。完成讀取后,斷開(kāi)RFID 連接并且開(kāi)始跟數(shù)據(jù)庫(kù)對(duì)比資料。
這里我們采用了目前廣泛的二進(jìn)制樹(shù)防碰撞算法。讀寫(xiě)器與應(yīng)答器之間進(jìn)行數(shù)據(jù)交換時(shí),往往要傳輸序列號(hào)的部分或者全部位,此時(shí)的傳輸順序定義為:先發(fā)送低位,再發(fā)送高位。在讀寫(xiě)器或者應(yīng)答器內(nèi)部,對(duì)數(shù)據(jù)進(jìn)行比較時(shí),遵循這樣的原則,即按位依次比較,先比較低位,再比較高位,約定0<1,根據(jù)這個(gè)比較順序,在判斷大小時(shí),低位數(shù)據(jù)優(yōu)先,即兩數(shù)A,B 相比較,從低位開(kāi)始的第一個(gè)不相等位的大小決定了兩數(shù)的大小,只有當(dāng)兩個(gè)數(shù)的全部位均相等時(shí),兩數(shù)才相等。二進(jìn)制樹(shù)算法執(zhí)行過(guò)程中, 讀寫(xiě)器會(huì)多次發(fā)送把應(yīng)答器分成兩組并且多次分組后得到唯一的一個(gè)應(yīng)答器命令給應(yīng)答器, 而且在這個(gè)分組過(guò)程中命令參數(shù)以節(jié)點(diǎn)的形式存儲(chǔ)起來(lái)成一個(gè)數(shù)據(jù)的分叉樹(shù),從而形成"二進(jìn)制樹(shù)".智能冰箱的二進(jìn)制樹(shù)防碰撞算法在應(yīng)答器內(nèi)進(jìn)行比較,因?yàn)樽x寫(xiě)器可以有多個(gè),而最后讀寫(xiě)器讀到的數(shù)據(jù)發(fā)送給應(yīng)答器, 因此選擇應(yīng)答器作為防碰撞算法的燒錄地方, 這樣可以在應(yīng)答器接受了讀寫(xiě)器讀到的標(biāo)簽排除相同后傳輸標(biāo)簽數(shù)據(jù)到主控平臺(tái)PXA270。
圖7 RFID 讀取流程圖[!--empirenews.page--]
(2)GPRS 實(shí)現(xiàn)過(guò)程
當(dāng)收到數(shù)據(jù)庫(kù)對(duì)比后請(qǐng)求購(gòu)物的清單,通過(guò)QT 運(yùn)行以C++代碼編寫(xiě)的GPRS 程序。首先從QT 里得到需要發(fā)送到客戶(hù)的信息數(shù)據(jù), 然后用OnBnClickedBtnOpen () 配置RS-232 串口連接配置GPRS, 等待GPRS 連接成功。
當(dāng)連接成功后GPRS 會(huì)返回"AT+OPENAT=MODE:3#" 數(shù)據(jù)確認(rèn)連接成功。然后通過(guò)OnBnClicked -BtnSend (string) 這個(gè)函數(shù)發(fā)送信息到GPRS, 然后GPRS 會(huì)根據(jù)信息內(nèi)容發(fā)送到客戶(hù)的手機(jī)內(nèi)。發(fā)送成功后GPRS 會(huì)待機(jī)5 分鐘等待客戶(hù)發(fā)送回復(fù)確認(rèn)購(gòu)買(mǎi)。
倘若5 分鐘內(nèi)客戶(hù)尚未回復(fù)確認(rèn)購(gòu)買(mǎi), 則會(huì)自動(dòng)取消這次食物的購(gòu)買(mǎi)并且斷開(kāi)與GPRS 連接; 若5 分鐘內(nèi)客戶(hù)回復(fù)確認(rèn)購(gòu)買(mǎi), 則程序會(huì)返回一個(gè)確認(rèn)購(gòu)買(mǎi)的信息并且斷開(kāi)GPRS 連接。
圖8 GPRS 算法流程圖 圖9 壓力傳感器算法流程圖 (4)控溫實(shí)現(xiàn)過(guò)程 由于PXA270 外接插口問(wèn)題, 溫度傳感器基于單片機(jī)操作,不需要嵌入PAX270 開(kāi)發(fā)板上。溫度傳感器會(huì)伴隨著冰箱的啟動(dòng)而啟動(dòng)。當(dāng)溫度傳感器測(cè)到的數(shù)據(jù)發(fā)送給單片機(jī)時(shí), 單片機(jī)會(huì)先將冰箱內(nèi)的溫度與設(shè)置的冰箱的溫度對(duì)比, 若高于冰箱的溫度則開(kāi)啟制冷裝置。制冷期間也不斷測(cè)量先冰箱的溫度并且比較設(shè)定的冰箱溫度值;若小于等于冰箱的設(shè)定的溫度值則關(guān)閉制冷裝置。單片機(jī)繼續(xù)接受從溫度傳感器傳來(lái)的冰箱的溫度并且比較設(shè)定的冰箱溫度值以準(zhǔn)備隨時(shí)開(kāi)啟制冷保持冰箱的溫度。當(dāng)冰箱斷電時(shí)候單片機(jī)才會(huì)停止運(yùn)行直接冰箱通電后再次開(kāi)啟并從頭初始化單片機(jī)。 圖10 控溫算法流程圖 (5)網(wǎng)上購(gòu)物過(guò)程 在這一過(guò)程中, 我們指定了冰箱能夠直接訪問(wèn)的物聯(lián)網(wǎng)超市網(wǎng)站,從而進(jìn)行對(duì)接。因此,我們本項(xiàng)目中,自己搭建了一個(gè)購(gòu)物網(wǎng)站(ASP),為的就是與該類(lèi)產(chǎn)品進(jìn)行交互。通過(guò)調(diào)用系統(tǒng)自帶的頭文件<wininet.h>中函數(shù)HINTERNET InternetOpenUrl()來(lái)打開(kāi)一個(gè)完整的FTP、Gopher 或HTTP 網(wǎng)址的資源, 從而可以獲取商品相關(guān)信息。 另外,用戶(hù)需要登錄購(gòu)物網(wǎng)站才能實(shí)現(xiàn)下單操作,這里, 我們默認(rèn)每臺(tái)智能冰箱都配有一個(gè)專(zhuān)用的賬號(hào)來(lái)綁定登錄,通過(guò)POST 方式提交頁(yè)面。當(dāng)冰箱登錄成功后,可以實(shí)現(xiàn)購(gòu)買(mǎi)商品并下單。 (6)數(shù)據(jù)庫(kù)實(shí)現(xiàn) 通過(guò)SQLite, 冰箱保存著食物的各種資料以便于查找。 表4 NowTab1 NowTab1 保存著上一次冰箱的食物表格, 方便于與這次RFID 讀取到得數(shù)據(jù)比對(duì)其中的變化,并且適當(dāng)刪除或者添加NowTab1 數(shù)據(jù)以便下一次的對(duì)比, 也可以顯示出現(xiàn)冰箱內(nèi)有的食物。 表5 HistoryTab3 HistoryTab3 保存著從冰箱曾經(jīng)存放過(guò)的食物,以便于客戶(hù)可以查找曾經(jīng)買(mǎi)過(guò)的食物。 表6 SureTab2 SureTab2 保存著冰箱基本需求的食物表。這表是為了確認(rèn)如果NowTab1 表的食物缺少一定量時(shí)跟SureTab2 對(duì)比,某食物缺少了超過(guò)界限時(shí),就會(huì)啟動(dòng)購(gòu)物程序并且購(gòu)買(mǎi)缺少的食物防止冰箱食物缺少。 表7 NameTab4[!--empirenews.page--] NameTab4 保存著與編號(hào)相對(duì)應(yīng)的名稱(chēng)。NameTab4是為了方便從RFID 讀到的信息中得出此食物的名稱(chēng)。 若查到不到名稱(chēng), 則可以通過(guò)編號(hào)網(wǎng)上查找到名稱(chēng)并且添加到AddrTab5 表中以便以后查找之用。 表8 AddrTab5 AddrTab5 可以根據(jù)地址編號(hào)得出地址名。AddrTab5是為了方便從RFID 讀到的信息中得出此食物的生產(chǎn)地址。若查到不到地址,則可以通過(guò)地址編號(hào)網(wǎng)上查找到地址并且添加到AddrTab5 表中以便以后查找之用。 表9 Cookbook5 可以根據(jù)Cookbook5 先列出冰箱可以烹飪的食材跟菜譜。Cookbook5 是數(shù)據(jù)庫(kù)存儲(chǔ)的菜譜,方便從冰箱現(xiàn)有食材中查找到可以烹飪的菜譜。Cookbook5 可以通過(guò)網(wǎng)上下載菜譜保存到數(shù)據(jù)庫(kù)中。 表10 RDCookbook6 可以通過(guò)RDCookbook6 得到推薦的食譜。RDCookbook6是冰箱現(xiàn)有食材根據(jù)Cookbook5 的菜譜得出現(xiàn)在最有可能烹飪的的菜譜羅列出來(lái)。 (7)GUI 界面設(shè)計(jì) 本系統(tǒng)GUI 采用QTE 實(shí)現(xiàn)。 ?、俸?jiǎn)要設(shè)計(jì)概述在主界面的左邊入放置了一個(gè)groupBox 控件,里面加入了四個(gè)pushBotton,它們分別代表:主界面、食品狀態(tài)、網(wǎng)上購(gòu)物和食譜推薦。主界面的右邊放置的是stackedWidget 控件, 一共添加了五個(gè)頁(yè)面來(lái)實(shí)現(xiàn)對(duì)不同功能模塊的顯示。通過(guò)信號(hào)和槽連接按鈕實(shí)現(xiàn)相應(yīng)功能界面的跳轉(zhuǎn)。 ②主要設(shè)計(jì)實(shí)現(xiàn)方法。 ●隱藏標(biāo)題欄。 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); ●動(dòng)態(tài)更新時(shí)間。 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 結(jié)語(yǔ) RFID 冰箱可以發(fā)揮射頻識(shí)別技術(shù)的優(yōu)點(diǎn),為現(xiàn)代家庭的健康生活提供保障,減少了社會(huì)資源浪費(fèi),符合當(dāng)代社會(huì)綠色環(huán)保的理念,可以應(yīng)用于智能家居。但是目前,超市的商品還沒(méi)使用RFID 標(biāo)簽,所以每一樣食品都需要加貼標(biāo)簽,將會(huì)是一個(gè)繁瑣的過(guò)程,而且標(biāo)簽費(fèi)用也可能會(huì)超過(guò)食品本身, 這是智能冰箱投入實(shí)用遇到的難題。但是隨著超市物流RFID 技術(shù)的普及,標(biāo)簽價(jià)格的進(jìn)一步下降,智能冰箱必然會(huì)走進(jìn)每個(gè)家庭,成為智能家居的主角。