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