您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>電腦硬件>服務(wù)器>

基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì) - 全文

2017年12月27日 14:27 電子發(fā)燒友整理 作者: 用戶評(píng)論(0

本文提出了一種基于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ò)展,使智能家居成為可能。

OpenWrt的編譯

OpenWrt是基于Linux系統(tǒng),為編譯OpenWrt需要搭建Linux平臺(tái)。利用VMwareWorkstation裝載Ubuntu14.04虛擬機(jī)搭建Linux編譯環(huán)境。Ubuntu14.04系統(tǒng)安裝完成,連接上網(wǎng)絡(luò),以非root用戶登錄,打開“應(yīng)用程序—附件—終端”,在終端下利用sudoapt-getinstall命令語(yǔ)句,加載如下的軟件包:gccg++binutilspatchbzip2flexbisonmakeautoconfgettexttexinfounzipsharutilssubversionlibncurses5-devzlib1g-dev,利用sudoapt-getupdate命令語(yǔ)句更新以上軟件包。獲取OpenWrt源代碼和安裝包。在終端中輸入命令語(yǔ)句svncheckoutsvn://svn.openwrt.org/openwrt/trunk,將會(huì)在OpenWrt代碼托管網(wǎng)站上下載OpenWrt最新工程文件。

feeds是OpenWrt環(huán)境所需要的軟件包套件。通過(guò)feeds.conf.default文件檢查需要包含在環(huán)境中的軟件包。下載所需要的軟件包,使用[openwrt@localhosttrunk]$./scripts/feedsupdate-a./scripts/feedsinstall-a更新feeds的配置文件,添加新的軟件包用于生成系統(tǒng)。使用交叉編譯,生成的SDK以及image等文件的類型取決于開發(fā)環(huán)境、應(yīng)用硬件及源碼版本。這需要對(duì)開發(fā)環(huán)境進(jìn)行了解,才能進(jìn)行正確的配置。使用makedefconfigmakeprereqmakemenuconfig進(jìn)入配置界面(menu-config),如下圖所示。

基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)

OpenWrt編譯配置界面

在TargetSystem和TargetProfile下選擇合適的目標(biāo)即可。本文設(shè)計(jì)選擇TP-LINKTL-WR703N作為目標(biāo)。選擇BuildtheOpenWrtImageBuilder和BuildtheOpenWrtSDK即可在編譯中產(chǎn)生相關(guān)二進(jìn)制和SDK文件。

保存好選項(xiàng),退出配置界面返回終端,利用[openwrt@localhosttrunk]$makepackage/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)

structsockaddr_inserver_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ā)送

voidsend_cmd(unsignedcharcmd){

intlen;

intn=0;

charwrite_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);

printf(“writedchars\n”,n);

}

本文采用的服務(wù)器IP為192.168.1.1,端口為2001。

編寫的makefile文件如下:

#buildopenwrt-serverexecutablewhenuserex-

ecutes“make”

openwrt-server:openwrt-server.o

$(CC)$(LDFLAGS)openwrt-server.o-o

openwrt-server

openwrt - server. o: openwrt - server. c

$ ( CC) $ ( CFLAGS) - c openwrt - server. c

# remove object files and executable when user executes “ make clean”

clean:

rm * .o openwrt - server

執(zhí)行 make 生成 openwrt - server. ipk 文件,將文件 上 傳 到 路 由 器。利 用 opkg install 安 裝 ser2net. ipk 和 openwrt - server. ipk。

至此,OpenWrt 智能服務(wù)器系統(tǒng)編譯完成。

TP - Link Wr70n改造

本設(shè)計(jì)選擇 TP - Link Wr70n 作為中繼服務(wù)器,負(fù)責(zé)智能手機(jī)與廚房電器之間的通信。TP - Link Wr703n 是一款基于 ARM 構(gòu)架的無(wú)線路由器。本文利用 TP - Link Wr703n 的串口與廚房電器進(jìn)行通信,該款路由器默認(rèn)未將串口引出。對(duì) TP - Link Wr703n 的改造,讓 OpenWrt 系統(tǒng)成功與其適配也是該設(shè)計(jì)的重點(diǎn)。Wr703n 路由器的版圖如下圖所示。

Wr703n 電路版圖

圖中 A 部分是 Wr703n 的控制 AR9331 的位置, B 部分是 Flash 所在位置。通過(guò)對(duì) Wr703n 的電路改造引出 TTL 串口。

取下原有的 4 MB Flash 芯片,將芯片更換為Hynix HY27UF084G2B 64 MB Flash 芯片。通過(guò)原理圖找到 Wr703n 處理器的串口引腳,利用跳線引出串口到 USB 接口上,路由器改造完成。

智能服務(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。配置如下圖 所示。

基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)

Putty 軟件配置界面

建立連接后,連接上路由器電源線,進(jìn)入控制臺(tái)界面,如下圖所示。

基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)

輸入: setenv serverip 192. 168. 1. 2

setenv ipaddr 192. 168. 1. 1

tftp 0x80000000 openwrt - sever. bin

進(jìn)行系統(tǒng)燒錄。燒錄完成后,重啟路由器,計(jì)算機(jī)連接到 Wr703n 的 WiFi 網(wǎng)絡(luò),瀏覽器中輸入

192. 168. 1. 1 測(cè)試是否能進(jìn)入服務(wù)器管理界面。整個(gè)系統(tǒng)的組成框圖如下圖所示。

基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)

智能服務(wù)器組成

非常好我支持^.^

(0) 0%

不好我反對(duì)

(5) 100%

( 發(fā)表人:李建兵 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?