基于OpenWrt的物聯網服務器設計 - 全文
本文提出了一種基于OpenWrt操作系統的智能服務器,它可用于廚房電器的無線互聯和智能化改造。通過利用本智能廚電服務器,實現了對微波爐的智能化改造,并將智能手機通過WiFi網絡連接到服務器成功對微波爐進行了遠程控制。
本設計可以作為智能廚電的基礎物聯網平臺,可以對該平臺進行合理的擴展,使智能家居成為可能。
OpenWrt的編譯
OpenWrt是基于Linux系統,為編譯OpenWrt需要搭建Linux平臺。利用VMwareWorkstation裝載Ubuntu14.04虛擬機搭建Linux編譯環境。Ubuntu14.04系統安裝完成,連接上網絡,以非root用戶登錄,打開“應用程序—附件—終端”,在終端下利用sudoapt-getinstall命令語句,加載如下的軟件包:gccg++binutilspatchbzip2flexbisonmakeautoconfgettexttexinfounzipsharutilssubversionlibncurses5-devzlib1g-dev,利用sudoapt-getupdate命令語句更新以上軟件包。獲取OpenWrt源代碼和安裝包。在終端中輸入命令語句svncheckoutsvn://svn.openwrt.org/openwrt/trunk,將會在OpenWrt代碼托管網站上下載OpenWrt最新工程文件。
feeds是OpenWrt環境所需要的軟件包套件。通過feeds.conf.default文件檢查需要包含在環境中的軟件包。下載所需要的軟件包,使用[openwrt@localhosttrunk]$./scripts/feedsupdate-a./scripts/feedsinstall-a更新feeds的配置文件,添加新的軟件包用于生成系統。使用交叉編譯,生成的SDK以及image等文件的類型取決于開發環境、應用硬件及源碼版本。這需要對開發環境進行了解,才能進行正確的配置。使用makedefconfigmakeprereqmakemenuconfig進入配置界面(menu-config),如下圖所示。
OpenWrt編譯配置界面
在TargetSystem和TargetProfile下選擇合適的目標即可。本文設計選擇TP-LINKTL-WR703N作為目標。選擇BuildtheOpenWrtImageBuilder和BuildtheOpenWrtSDK即可在編譯中產生相關二進制和SDK文件。
保存好選項,退出配置界面返回終端,利用[openwrt@localhosttrunk]$makepackage/cups/compileV=99語句進行OpenWrt的編譯。編譯過程中會自動從OpenWrt源碼托管網站下載相關的系統文件。等待編譯結束后,產生相應的Image和SDK文件。在SDK中添加自己的packages進行智能服務器系統開發。
對于新建的package,可以作為一個可選軟件包,利用SDK環境來單獨編譯,編譯生成一個ipk的文件包,最后在OpenWrt系統下安裝即可。
在本文設計中利用了socket接口通信協議和ser2net服務。實現方法如下:
com_init();//端口初始化
//設置一個socket地址結構
structsockaddr_inserver_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family=AF_INET;//服務器IP
server_addr.sin_addr.s_addr=htons(INADDR_ANY);
server_addr.sin_port=htons(SERVER_PORT);//控制端口//數據發送
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);
}
本文采用的服務器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
執行 make 生成 openwrt - server. ipk 文件,將文件 上 傳 到 路 由 器。利 用 opkg install 安 裝 ser2net. ipk 和 openwrt - server. ipk。
至此,OpenWrt 智能服務器系統編譯完成。
TP - Link Wr70n改造
本設計選擇 TP - Link Wr70n 作為中繼服務器,負責智能手機與廚房電器之間的通信。TP - Link Wr703n 是一款基于 ARM 構架的無線路由器。本文利用 TP - Link Wr703n 的串口與廚房電器進行通信,該款路由器默認未將串口引出。對 TP - Link Wr703n 的改造,讓 OpenWrt 系統成功與其適配也是該設計的重點。Wr703n 路由器的版圖如下圖所示。
Wr703n 電路版圖
圖中 A 部分是 Wr703n 的控制 AR9331 的位置, B 部分是 Flash 所在位置。通過對 Wr703n 的電路改造引出 TTL 串口。
取下原有的 4 MB Flash 芯片,將芯片更換為Hynix HY27UF084G2B 64 MB Flash 芯片。通過原理圖找到 Wr703n 處理器的串口引腳,利用跳線引出串口到 USB 接口上,路由器改造完成。
智能服務器網絡組建
在組建服務器之前先對 Wr703n 路由器進行系統移植,即將 Ubuntu 虛擬機中編譯完成的 OpenWrt 二進制服務器系統文件燒錄到路由器的 Flash 中。
Wr703n 路由器插上網線,連接好 TTL 設備和路由器的串口。打開計算機上的 Putty 軟件,連接類型選為串口,輸入端口號( TTL 設備的虛擬 COM 口,可在設備管理器中查看) ,通信波特率設為
115 200。配置如下圖 所示。
Putty 軟件配置界面
建立連接后,連接上路由器電源線,進入控制臺界面,如下圖所示。
輸入: setenv serverip 192. 168. 1. 2
setenv ipaddr 192. 168. 1. 1
tftp 0x80000000 openwrt - sever. bin
進行系統燒錄。燒錄完成后,重啟路由器,計算機連接到 Wr703n 的 WiFi 網絡,瀏覽器中輸入
192. 168. 1. 1 測試是否能進入服務器管理界面。整個系統的組成框圖如下圖所示。
智能服務器組成
- 第 1 頁:基于OpenWrt的物聯網服務器設計
- 第 2 頁:智能服務器網絡組建
本文導航
非常好我支持^.^
(0) 0%
不好我反對
(5) 100%
相關閱讀:
- [電子說] 亞馬遜云科技宣布Amazon Trainium2實例正式可用 2024-12-06
- [電子說] 物聯網如何改變智慧城市 2024-12-05
- [電子說] 創新微推出基于Nordic nRF54L系列的ME54BS01低功耗藍牙模塊 2024-12-05
- [電子說] 智能包裝制袋機遠程監控運維物聯網方案 2024-12-05
- [電子說] 虛擬化數據恢復—VMware ESX服務器常見故障的數據恢復方案 2024-12-05
- [電子說] 常用的服務器負載均衡多少錢一臺? 2024-12-05
- [電子說] 兆芯亮相2024數字科技生態大會 2024-12-05
- [電子說] 西井科技如何助力物流行業實現降本提質增效 2024-12-05
( 發表人:李建兵 )