基于OpenWrt的物联网服务器设计

服务器

7人已加入

描述

本文提出了一种基于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 测试是否能进入服务器管理界面。整个系统的组成框图如下图所示。

服务器

智能服务器组成

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分