基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)
本文提出了一種基于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用戶登錄,打開(kāi)“應(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等文件的類(lèi)型取決于開(kāi)發(fā)環(huán)境、應(yīng)用硬件及源碼版本。這需要對(duì)開(kāi)發(fā)環(huán)境進(jìn)行了解,才能進(jìn)行正確的配置。使用makedefconfigmakeprereqmakemenuconfig進(jìn)入配置界面(menu-config),如下圖所示。
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)開(kāi)發(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。
編寫(xiě)的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 接口上,路由器改造完成。
- 第 1 頁(yè):基于OpenWrt的物聯(lián)網(wǎng)服務(wù)器設(shè)計(jì)
- 第 2 頁(yè):智能服務(wù)器網(wǎng)絡(luò)組建
本文導(dǎo)航
非常好我支持^.^
(0) 0%
不好我反對(duì)
(5) 100%
相關(guān)閱讀:
- [電子說(shuō)] 亞馬遜云科技宣布Amazon Trainium2實(shí)例正式可用 2024-12-06
- [電子說(shuō)] 物聯(lián)網(wǎng)如何改變智慧城市 2024-12-05
- [電子說(shuō)] 創(chuàng)新微推出基于Nordic nRF54L系列的ME54BS01低功耗藍(lán)牙模塊 2024-12-05
- [電子說(shuō)] 智能包裝制袋機(jī)遠(yuǎn)程監(jiān)控運(yùn)維物聯(lián)網(wǎng)方案 2024-12-05
- [電子說(shuō)] 虛擬化數(shù)據(jù)恢復(fù)—VMware ESX服務(wù)器常見(jiàn)故障的數(shù)據(jù)恢復(fù)方案 2024-12-05
- [電子說(shuō)] 常用的服務(wù)器負(fù)載均衡多少錢(qián)一臺(tái)? 2024-12-05
- [電子說(shuō)] 兆芯亮相2024數(shù)字科技生態(tài)大會(huì) 2024-12-05
- [電子說(shuō)] 西井科技如何助力物流行業(yè)實(shí)現(xiàn)降本提質(zhì)增效 2024-12-05
( 發(fā)表人:李建兵 )