嵌入式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 ...
随机推荐
- HTTPS(SSL/TLS) 原理之深入浅出
注:本文参考自网络上的多篇HTTPS相关文章,本人根据自己的理解,进行一些修改,综合. 1. 必要的加密解密基础知识 1)对称加密算法:就是加密和解密使用同一个密钥的加密算法.因为加密方和解密方使用的 ...
- 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL , ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
- zsh
一.简介 Zsh 也许是目前最好用的 shell,是 bash 替代品中较为优秀的一个. 二.优点 1)补全 zsh 的命令补全功能非常强大,可以补齐路径,补齐命令,补齐参数等. 按下 tab 键 ...
- 限制input输入类型(多种方法实现)
1.只能输入和粘贴汉字 <input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste= ...
- xcode 自定义include路径
- windows内核编程之常用数据结构
1.返回状态 绝大部分的内核api返回值都是一个返回状态,也就是一个错误代码.这个类型为NTSTATUS.我们自己写的函数也大部分这样做. NTSTATUS MyFunction() { NTSTAT ...
- 【jQuery Demo】jQuery打造动态下滑菜单
作者:漫凯维奇 来源:[教程]jQuery打造动态下滑菜单 Tip:这只是一个转载,源代码可以在上面的来源博文中下载 此教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单.效果如 ...
- mac os利用xampp实现apache下的cgi
折腾了两天终于把问题解决了,mac os是10.10.3..够新了吧 系统原生的apache配置cgi老是配不好,突然发现xampp也有macos版的,准备下下来试试. 安装完成后,打开apache服 ...
- 2014 Super Training #6 B Launching the Spacecraft --差分约束
原题:ZOJ 3668 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668 典型差分约束题. 将sum[0] ~ sum ...