潘權(quán)威,黎曉云,宋新宇
(電子科技大學(xué) 物理電子學(xué)院,成都 610054)
?
基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)
潘權(quán)威,黎曉云,宋新宇
(電子科技大學(xué)物理電子學(xué)院,成都610054)
摘要物聯(lián)網(wǎng)技術(shù)近年發(fā)展飛速,各類家電無(wú)線互聯(lián),極大地方便了人們的生活。該文提出了一種廚房電器服務(wù)器的設(shè)計(jì)方案。該智能廚房電器服務(wù)器是基于OpenWrt開源嵌入式系統(tǒng)設(shè)計(jì)的,通過(guò)對(duì)TP-Link Wr703n路由器的改造,引出相關(guān)控制端口,將編譯適配后的OpenWrt系統(tǒng)移植到路由器上。智能手機(jī)通過(guò)WiFi網(wǎng)絡(luò)與路由器連接,形成智能服務(wù)器網(wǎng)絡(luò)。利用該智能廚房電器服務(wù)器可與微波爐建立連接,并通過(guò)實(shí)際測(cè)試驗(yàn)證了相關(guān)功能的可靠性與實(shí)用性。
關(guān)鍵詞OpenWrt; 物聯(lián)網(wǎng); WiFi; 廚房電器
物聯(lián)網(wǎng)技術(shù)在近些年飛速發(fā)展,它的出現(xiàn)給社會(huì)生活的發(fā)展指出了一個(gè)全新的方向——各類家電之間無(wú)線連接,智能控制。該技術(shù)讓電器更具智能化,使人與電器之間的交流溝通成為可能。
在人們的經(jīng)濟(jì)生活日漸豐富的今天,基于物聯(lián)網(wǎng)的智能廚具鮮有所見。本文提出了一種基于OpenWrt操作系統(tǒng)的智能服務(wù)器,它可用于廚房電器的無(wú)線互聯(lián)和智能化改造。通過(guò)利用本智能廚電服務(wù)器,實(shí)現(xiàn)了對(duì)微波爐的智能化改造,并將智能手機(jī)通過(guò)WiFi網(wǎng)絡(luò)連接到服務(wù)器成功對(duì)微波爐進(jìn)行了遠(yuǎn)程控制。
本設(shè)計(jì)可以作為智能廚電的基礎(chǔ)物聯(lián)網(wǎng)平臺(tái),可以對(duì)該平臺(tái)進(jìn)行合理的擴(kuò)展,使智能家居成為可能。
1OpenWrt SDK介紹
OpenWrt是一個(gè)用于嵌入式設(shè)備的GNU/Linux發(fā)行版,具有強(qiáng)大的擴(kuò)展性。
OpenWrt具備高度模塊化、高度自動(dòng)化,擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、電話、小型機(jī)器人、智能家居、路由器以及VOIP設(shè)備中。它對(duì)無(wú)線路由器的支持友好,同時(shí),它還提供了100多個(gè)已編譯好的軟件,而且數(shù)量還在不斷增加。
通過(guò)在Linux系統(tǒng)下對(duì)OpenWrt源碼的編譯可以產(chǎn)生OpenWrt SDK。
OpenWrt SDK是一個(gè)可再定位的、預(yù)編譯的OpenWrt工具鏈,是適用于無(wú)須從頭開始編譯整個(gè)系統(tǒng)的前提下,針對(duì)一個(gè)特定平臺(tái)交叉編譯單個(gè)用戶空間包。OpenWrt SDK保證了原系統(tǒng)的二進(jìn)制特性和兼容性,針對(duì)特定的發(fā)行版編譯自定義軟件,更新版本指定的包含文件。使用自定義補(bǔ)丁,或者不同特性來(lái)重新編譯已經(jīng)存在的OpenWrt SDK簡(jiǎn)化了軟件開發(fā)的工序,為進(jìn)一步開發(fā)相關(guān)軟件和功能提供了可能。
2OpenWrt的編譯
OpenWrt是基于Linux系統(tǒng),為編譯OpenWrt需要搭建Linux平臺(tái)。利用VMware Workstation裝載Ubuntu 14.04虛擬機(jī)搭建Linux編譯環(huán)境。
Ubuntu 14.04系統(tǒng)安裝完成,連接上網(wǎng)絡(luò),以非root用戶登錄,打開“應(yīng)用程序—附件—終端”,在終端下利用sudo apt-get install命令語(yǔ)句,加載如下的軟件包:gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfounzip sharutils subversion libncurses5-dev zlib1g-dev,利用sudo apt-get update命令語(yǔ)句更新以上軟件包。獲取OpenWrt源代碼和安裝包。在終端中輸入命令語(yǔ)句svn checkout svn://svn.openwrt.org/openwrt/trunk,將會(huì)在OpenWrt代碼托管網(wǎng)站上下載OpenWrt最新工程文件。
feeds是OpenWrt環(huán)境所需要的軟件包套件。通過(guò)feeds.conf.default文件檢查需要包含在環(huán)境中的軟件包。下載所需要的軟件包,使用[openwrt@localhost trunk]$ ./scripts/feeds update -a./scripts/feeds install -a更新feeds的配置文件,添加新的軟件包用于生成系統(tǒng)。使用交叉編譯,生成的SDK以及image等文件的類型取決于開發(fā)環(huán)境、應(yīng)用硬件及源碼版本。這需要對(duì)開發(fā)環(huán)境進(jìn)行了解,才能進(jìn)行正確的配置。使用make defconfig make prereq make menuconfig進(jìn)入配置界面(menuconfig),如圖1所示。
圖1 OpenWrt編譯配置界面
在Target System和Target Profile下選擇合適的目標(biāo)即可。本文設(shè)計(jì)選擇TP-LINK TL-WR703N作為目標(biāo)。選擇Build the OpenWrt Image Builder和Build the OpenWrt SDK即可在編譯中產(chǎn)生相關(guān)二進(jìn)制和SDK文件。
保存好選項(xiàng),退出配置界面返回終端,利用[openwrt@localhost trunk]$ make package/cups/compileV=99語(yǔ)句進(jìn)行OpenWrt的編譯。編譯過(guò)程中會(huì)自動(dòng)從OpenWrt源碼托管網(wǎng)站下載相關(guān)的系統(tǒng)文件。等待編譯結(jié)束后,產(chǎn)生相應(yīng)的Image和SDK文件。在SDK中添加自己的packages進(jìn)行智能服務(wù)器系統(tǒng)開發(fā)。
對(duì)于新建的package,可以作為一個(gè)可選軟件包,利用SDK環(huán)境來(lái)單獨(dú)編譯,編譯生成一個(gè)ipk的文件包,最后在OpenWrt系統(tǒng)下安裝即可。
在本文設(shè)計(jì)中利用了socket接口通信協(xié)議和ser2net服務(wù)。實(shí)現(xiàn)方法如下:
com_init(); //端口初始化
//設(shè)置一個(gè)socket地址結(jié)構(gòu)
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET; //服務(wù)器IP
server_addr.sin_addr.s_addr
= htons(INADDR_ANY);
server_addr.sin_port
= htons(SERVER_PORT);//控制端口
//數(shù)據(jù)發(fā)送
void send_cmd(unsigned char cmd){
int len;
intn= 0;
char write_buf[50];
n= 0;
len = 3;
bzero(write_buf,sizeof(write_buf));write_buf[0]=0xfe;
write_buf[1]=0x00;
write_buf[2]=cmd;
n= write(fd,write_buf,len);
}
本文采用的服務(wù)器IP為192.168.1.1,端口為2001。
編寫的makefile文件如下:
#buildopenwrt-serverexecutablewhenuserexecutes"make"
openwrt-server:openwrt-server.o
$(CC) $(LDFLAGS)openwrt-server.o-oopenwrt-server
openwrt-server.o:openwrt-server.c
$(CC) $(CFLAGS) -copenwrt-server.c
#removeobjectfilesandexecutablewhenuserexecutes"makeclean"
clean:
rm*.oopenwrt-server
執(zhí)行make生成openwrt-server.ipk文件,將文件上傳到路由器。利用opkginstall安裝ser2net.ipk和openwrt-server.ipk。
至此,OpenWrt智能服務(wù)器系統(tǒng)編譯完成。
3TP-Link Wr703n改造
本設(shè)計(jì)選擇TP-LinkWr70n作為中繼服務(wù)器,負(fù)責(zé)智能手機(jī)與廚房電器之間的通信。TP-LinkWr703n是一款基于ARM構(gòu)架的無(wú)線路由器。本文利用TP-LinkWr703n的串口與廚房電器進(jìn)行通信,該款路由器默認(rèn)未將串口引出。對(duì)TP-LinkWr703n的改造,讓OpenWrt系統(tǒng)成功與其適配也是該設(shè)計(jì)的重點(diǎn)。Wr703n路由器的版圖如圖2所示。
圖2 Wr703n電路版圖
圖中A部分是Wr703n的控制AR9331的位置,B部分是Flash所在位置。通過(guò)對(duì)Wr703n的電路改造引出TTL串口。
取下原有的4MBFlash芯片,將芯片更換為HynixHY27UF084G2B64MBFlash芯片。通過(guò)原理圖找到Wr703n處理器的串口引腳,利用跳線引出串口到USB接口上,路由器改造完成。
4智能服務(wù)器網(wǎng)絡(luò)組建
在組建服務(wù)器之前先對(duì)Wr703n路由器進(jìn)行系統(tǒng)移植,即將Ubuntu虛擬機(jī)中編譯完成的OpenWrt二進(jìn)制服務(wù)器系統(tǒng)文件燒錄到路由器的Flash中。
Wr703n路由器插上網(wǎng)線,連接好TTL設(shè)備和路由器的串口。打開計(jì)算機(jī)上的Putty軟件,連接類型選為串口,輸入端口號(hào)(TTL設(shè)備的虛擬COM口,可在設(shè)備管理器中查看),通信波特率設(shè)為115 200。配置如圖3所示。
圖3 Putty軟件配置界面
建立連接后,連接上路由器電源線,進(jìn)入控制臺(tái)界面,如圖4所示。
圖4 Putty軟件控制臺(tái)界面
輸入:setenvserverip192.168.1.2
setenvipaddr192.168.1.1
tftp0x80000000openwrt-sever.bin
進(jìn)行系統(tǒng)燒錄。燒錄完成后,重啟路由器,計(jì)算機(jī)連接到Wr703n的WiFi網(wǎng)絡(luò),瀏覽器中輸入192.168.1.1測(cè)試是否能進(jìn)入服務(wù)器管理界面。
整個(gè)系統(tǒng)的組成框圖如圖5所示。
圖5 智能服務(wù)器組成
通過(guò)Wr703n引出的串口與微波爐連接,組成微波爐控制系統(tǒng)。同時(shí)在智能手機(jī)上安裝適配的“S.M.Oven.apk”軟件,通過(guò)相關(guān)的配置連接到路由器即可。
利用整個(gè)智能廚電服務(wù)器系統(tǒng),通過(guò)實(shí)際的測(cè)試,得到了幾種食品的健康合理烹調(diào)方案,并建立了對(duì)應(yīng)的食物烹飪數(shù)據(jù)庫(kù)。
將這些數(shù)據(jù)轉(zhuǎn)化為實(shí)際的加熱信息后,編寫了相應(yīng)的加熱方案程序。手機(jī)連接到Wr703n路由器WiFi,打開軟件,在IP欄輸入通信地址:192.168.1.1:2001。成功連接后會(huì)提示:Client:已經(jīng)連接到server!圖6為智能手機(jī)連接界面。
圖6 手機(jī)連接到服務(wù)器
經(jīng)過(guò)實(shí)際測(cè)試,手機(jī)成功與微波爐建立了連接,實(shí)現(xiàn)了手機(jī)對(duì)微波爐的遠(yuǎn)程智能控制,整個(gè)服務(wù)器系統(tǒng)達(dá)到設(shè)計(jì)目標(biāo)。
5結(jié)束語(yǔ)
本文提出了一套智能廚電系統(tǒng)物聯(lián)網(wǎng)服務(wù)器的建立方案,并實(shí)際測(cè)試驗(yàn)證了該方案的實(shí)用性和可靠性。該系統(tǒng)具有良好的穩(wěn)定性,可移植程度高,可以作為智能廚房電器相關(guān)領(lǐng)域的參考。
參 考 文 獻(xiàn)
[1]苗敬利,李騰. 基于OpenWrt的智能家居服務(wù)器的設(shè)計(jì)[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014 (11): 197-198.
[2] 李義,晉磊,程正瑞,等. 基于OpenWrt和TCP/IP協(xié)議的Android遠(yuǎn)程無(wú)線智能機(jī)械彈琴手系統(tǒng)[J]. 數(shù)字化用戶,2014,20(11):11-14.
[3]滕泓虬. 基于OpenWrt的移動(dòng)機(jī)器人系統(tǒng)設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(1): 50-52.
[4]KELLYSDT,SNRYADEVARANK,MUKHOPADHYAYSC.TowardstheimplementationofIoTforenvironmentalconditionmonitoringinhomes[J].IEEEJournalofSensors,2013,13(10): 3846-3853.
[5]FAINELLIF.TheOpenWrtembeddeddevelopmentframework[C]//ProceedingsoftheFreeandOpenSourceSoftwareDevelopersEuropeanMeeting.[S.l.]:[s.n.],2008.
[6]TMOMAS.OpenWrtWiki[EB/OL].[2015-08-01].http://wiki.openwrt.org.
Design of IoT Server Based on OpenWrt System
PAN Quanwei,LI Xiaoyun,SONG Xinyu
(School of Physical Electronics,University of Electronic Science and Technology of China,Chengdu 610054,China)
AbstractWith the rapid development of Internet of Things(IOT) technology in recent years,all kinds of house appliances have been connected by wireless network,which facilitates human’s life. This paper proposes a design of kitchen appliance server to compensate for the lack in this field. The smart server for kitchen appliances is based on OpenWrt (an open source embedded system). Via the transformation of TP-Link Wr703n router and extracting associated control port,the compiled OpenWrt system can be migrated to the router. Smart phones can connect with the router via WiFi networks,and they all constitute the smart server network. The smart kitchen appliances server and microwave can establish a connection,and the reliability and practicality of the smart server have been verified.
Key wordsOpenWrt; Internet of Things; WiFi; kitchen appliance
收稿日期:2015-09-17
作者簡(jiǎn)介:潘權(quán)威(1994-),男,本科,電子信息科學(xué)與技術(shù)專業(yè)。
中圖分類號(hào)TN915.5
文獻(xiàn)標(biāo)志碼A
doi:10.3969/j.issn.1672-4550.2016.02.016