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