嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)
在 http://www.cnblogs.com/heat-man/p/4564539.html中,在嵌入式Linux开发板上我们从最底层实现了一个智能家居的远程控制系统,然而采取的是用网线连接到交换机上的,感觉老土。巧的是,来北京找工作,找到一家做Wifi模组的公司,这几天老大给我的任务是在min210上开发板上跑我们的Wifi模块,以便熟悉环境,好不容易昨天刚搞好,就把自己写的服务器架上试了试,md,无线的感觉就是不一样呀!
下面整理一下思路:
首先你需要一些硬件设施: ARM开发板,计算机(Ubuntu系统,虚拟机也可),wifi模块(当然,任何家公司的都可以,当然是带驱动的以及一些添加了对该模块支持的一些开源软件)。
嵌入式环境搭建:首先要将arm开发板烧录Linux系统。
有了上面的准备就可以进入实质性的准备了,下面分步骤总结:
1 要想自己的嵌入式系统支持wifi功能,我们有了wifi模块,还需要对应的驱动,第一步需要先编译出模块对应的驱动。(一般模块供应商会提供对应的驱动程序包,按照说明编译即)
2 加载驱动。 (至此,我们的嵌入式Linux系统便可以进行一些无线操作了,然而我们什么也没有做,相当于买了个wifi模块按照说明书,加载上了驱动)
3 用hostapd开源软件将我们的wifi打造成为一个热点。 (这样,联网终端就可以扫描到我们的嵌入式Linux系统,从而访问我们的智能家居控制系统)
4 开启dhcp服务,实现动自动分配IP。 (原谅我,我是第一次听说这个玩意,但是用一次就爱上了,再也不用手动设定IP啦!)
5 开启智能家居服务系统,其他联网终端通过Wifi访问智能家居服务系统。 (测试一下下)
上面五个步骤中,第一个步和wifi供应商联系密切,操作按照说明一般没什么大问题,这里不做说明,这里主要记录hostapd和dhcp两大开源软件的配置和使用。
因此,我们直接就到了第三步,此时你的嵌入式系统已经具备wifi功能,我们要用hostapd将它打造成为一个master。(wifi热点)
hostapd--制造无线路由器
关于hostapd,官网优雅而简洁的说这是一款用于接入点控制和认证服务的用户空间守护进程。翻译一下就是,这是一款关于接入点控制和认证服务的服务,那么管理接入点和认证服务尼玛这听起来不就是路由器的功能吗?原谅我的无知吧!我就认为这个hostapd就是造一个路由器吧!(专业语言应该这样说:“hostapd能够将wifi切换为master模式,能够模仿路由器的功能,打造一个软ap”)。
hostapd是一款开源软件,你在使用它的时候务必要查询它是否支持你机器上的无线网卡,公司用的hostapd是添加了对公司模块的支持的,所以从晚上下载的hostapd并没有卵用,不过后面的配置还是差不多的,只是wifi模块供应商提供的hostapd内添加了对自己模块的支持。
总之,无论是从模块供应商或者是网上获得的hostapd,务必确认支持你的无线网卡。
获得源码后,交叉编译得到hostapd、hostapd_cli两个命令,把这俩个命令拷贝到目标板的/bin下。这样我们就获得了开启hostapd的命令。
开启hostapd服务,我们还需要一个参数,因为你打造一个路由器,需要名字,需要密码,需要加密方式。。。。,这些参数被集中到一个配置文件中,当然了文件的名字你可以随便命名,后缀最好是.conf。我擦,说的这么easy,配置文件无从下手呀!有没有一个demo呢?答案是肯定的,看来linux下的开源也是服务很周到的。这个文件就是存在于hostapd源文件目录下的hostapd.conf。我们要打造一个什么样的路由器,就要看里面的各个参数了。
里面关于每一项的配置项都是有说明的,当然都是鸟语啦!以后足够牛逼啦,就可以添加自己的鸟语在里面啦。
诸如 ssid:设定你热点的名称 interface:网卡接口 wpa 设置你认证相关的,根据你的需要设置里面的参数,你就拟出了一份路由器设置方案。
将你的路由器设置方案,也即hostapd.conf拷贝到目标板的/etc下,然后就可以开启服务了:
./hostapd /etc/hostapd.conf -B
以上命令执行,就按照你设置的信息创建了一个wifi热点,-B代表后台运行。(假定你创建了一个名称为heat的热点,名称,这样你掏出手机后者打开电脑的网路无线列表就会发现heat赫然在目,然而你连接呀链接,总tm的超时,why?)
原来这是,ip不在一个网段在作怪,即你创建wifi的主机的ip和你的手机和电脑并不在一个局域网,so,接下来手动设置电脑和wifi热点所在主机的ip为同一个网段,果然通了,然而你要每一个连你wifi的人都要手动设置ip吗?关键是你要知道不是每个人都能熟练设置ip的,而且客户是上帝,一次必须能让客户的联网终端自动分配ip。
dhcp--动态分配ip给接入点
怎么样才能做到呢?答案就是在我们的嵌入式Linux系统上开启dhcp服务,关于dhcp服务大家可以看看鸟哥的书,讲得都比较清楚,这个服务主要目的是,能让连接你网络的终端自动分配出和你能够联通的ip。这个命令在sbin/的目录下,名字叫做udhcp,你可以通过配置busybox得到相关的命令,同时在内核的配置中也要选中支持该功能。
那么,ip自动分配,它的范围是多少,最大连接时长是多少,这些东西在哪设置呢?答案依然是配置文件,道理和hostapd.conf很相似,就不多说了,至于如何配置网上很多教程。
接下来就可以启动dhcp服务了,在启动过程中,请务必执行ifconfig wlan0 up命令,同时还要为wlan0分配ip。
接下来执行:
udhcpd -fS /etc/udhcpd.conf
然后会报错说在某某目录下缺少某文件,直接用touch命名创建继续执行上面命令即可!
接下来:终端会打印出udhcpd 服务已经启动:然后就看起来没有反应的样子。。。
其实,你已经成功啦~ 用手机或者电脑连接你的wifi热点,才会打印分配ip的信息。
最后,开启我的智能家居控制系统,通过手机和电脑连接上wifi热点,成功的可以看到系统的首页,欧耶!无线服务器就这么在嵌入式linux系统下跑起来了。
这样,就可以用手机控制家中用电器的开关啦!如果能做个app就更加高大上啦~~
嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)的更多相关文章
- Linux中用postfix搭建邮件服务器实战详解
Linux中用postfix搭建邮件服务器实战详解 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.Postfix试图更快.更容易管理.更安全,同时 ...
- linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》
本文摘自本人拙著 <嵌入式Linux驱动模板精讲与项目实践> 初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别.事实上做一段时间驱动之后回首看来主要就是下面几点 ...
- 00.嵌入式Linux开发环境搭建
3.虚拟机上网配置 虚拟机如果要从网上获取资源,就要能够访问外网.虚拟机有三种上网方式:桥接上网,NAT上网,单主机模式[没用过].本节从原理和操作2个方面讲了NAT方式和桥接方式这2种不同的虚拟机 ...
- linux云服务搭建Minecraft服务器
1 准备工作 以下内容全部要在root用户内完成 1.1 安装文件传输工具 为了方便传文件到服务器上,这里先装一个远程传输工具. yum -y install lrzsz 1.2 安装java Min ...
- CentOS利用postfix搭建邮件服务器
之前我用nodemailer通过163邮箱来发送邮件,不过没过几天就一直ETIMEDOUT,不知道什么原因,想着还是自己搭一个来发邮件可能靠谱点(flag?) 安装postfix CentOS 7 自 ...
- Windows和Linux环境下搭建SVN服务器
--------------------------Windows下搭建SVN服务器----------------------------- 一.安装SVN服务端 软件包Setup-Subversi ...
- 腾讯云服务器linux centOS7.4 搭建ftp服务器 vsftpd
腾讯云服务器linux centos 7.4 搭建ftp服务器 vsftpd 在centos 7.3测试也是OK的,其它版本没有实验 # 安装 vsftpd $ yum install vsftpd ...
- 利用Serv-U搭建FTP服务器
以前在学校的时候,学校的整个宿舍楼都是在一个局域网中,经常有人用个人电脑搭个网站或者FTP啊什么的,主要是进行一些影视资源的传播活动.不乏 有些资源充沛的有志青年利用业余时间翻译某岛国影视资源,利用局 ...
- linux系统快速搭建ftp服务器——实现匿名用户和创建用户访问服务器
一.准备工作: linux系统为CentOS Linux release 7.5.1804 (Core) 可以使用 lsb_release -a 命令查看 window系统中安装 SecureCR ...
随机推荐
- PL/SQL之--存储过程
一.存储过程 存储过程是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.oracle可以把PL/SQL程序储存在数 ...
- 烂泥:LVM学习之逻辑卷、卷组及物理卷删除
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上篇文章,我们介绍了有关LVM的逻辑卷及卷组的空间缩小.这次我们来介绍下如何删除一个逻辑卷及卷组. 删除逻辑卷需要以下几个步骤: 1. 卸载已经挂载的逻 ...
- hdu 2196 Computer 树形dp模板题
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- html3秒跳转
<script> setTimeout( 'window.location= "home.jsp " ',3000) ;//注意,此处“;”可加可不加</ ...
- R语言画图布局摆放(layout)
require(ggplot2) require(Cairo) require(grid) p = ggplot(iris,aes(x = Species,y = Sepal.Length,colou ...
- 打造属于自己的vim利器
毋庸置疑vim很强大,然而没有插件的话对于大多数人来说他的界面是很不友好的.下面简单写一下我对vim的配置 这是我的vim配置,装的插件不是很多,对我来说已经够用.左边的侧边栏是NERD插件提供的,还 ...
- 探索 OpenStack 之(14):OpenStack 中 RabbitMQ 的使用
本文是 OpenStack 中的 RabbitMQ 使用研究 两部分中的第一部分,将介绍 RabbitMQ 的基本概念,即 RabbitMQ 是什么.第二部分将介绍其在 OpenStack 中的使用. ...
- python中BeautifulSoup库中find函数
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#contents 简单的用法: find(name, at ...
- Redis安装,mongodb安装,hbase安装,cassandra安装,mysql安装,zookeeper安装,kafka安装,storm安装大数据软件安装部署百科全书
伟大的程序员版权所有,转载请注明:http://www.lenggirl.com/bigdata/server-sofeware-install.html 一.安装mongodb 官网下载包mongo ...
- HDU 5033 Building --离线+单调栈
题意:给一些建筑物,x表示横坐标,h表示高度,然后查询某些坐标x,问从该点看向天空的最大张角是多大. 解法:离线操作,读入所有数据,然后按x升序排序,对每一个查询的x,先从左到右,依次添加x坐标小于x ...