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搭建无线服务器(物联网实践之无线网关)的更多相关文章

  1. Linux中用postfix搭建邮件服务器实战详解

    Linux中用postfix搭建邮件服务器实战详解 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.Postfix试图更快.更容易管理.更安全,同时 ...

  2. linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》

    本文摘自本人拙著 <嵌入式Linux驱动模板精讲与项目实践> 初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别.事实上做一段时间驱动之后回首看来主要就是下面几点 ...

  3. 00.嵌入式Linux开发环境搭建

     3.虚拟机上网配置 虚拟机如果要从网上获取资源,就要能够访问外网.虚拟机有三种上网方式:桥接上网,NAT上网,单主机模式[没用过].本节从原理和操作2个方面讲了NAT方式和桥接方式这2种不同的虚拟机 ...

  4. linux云服务搭建Minecraft服务器

    1 准备工作 以下内容全部要在root用户内完成 1.1 安装文件传输工具 为了方便传文件到服务器上,这里先装一个远程传输工具. yum -y install lrzsz 1.2 安装java Min ...

  5. CentOS利用postfix搭建邮件服务器

    之前我用nodemailer通过163邮箱来发送邮件,不过没过几天就一直ETIMEDOUT,不知道什么原因,想着还是自己搭一个来发邮件可能靠谱点(flag?) 安装postfix CentOS 7 自 ...

  6. Windows和Linux环境下搭建SVN服务器

    --------------------------Windows下搭建SVN服务器----------------------------- 一.安装SVN服务端 软件包Setup-Subversi ...

  7. 腾讯云服务器linux centOS7.4 搭建ftp服务器 vsftpd

    腾讯云服务器linux centos 7.4 搭建ftp服务器 vsftpd 在centos 7.3测试也是OK的,其它版本没有实验 # 安装 vsftpd $ yum install vsftpd ...

  8. 利用Serv-U搭建FTP服务器

    以前在学校的时候,学校的整个宿舍楼都是在一个局域网中,经常有人用个人电脑搭个网站或者FTP啊什么的,主要是进行一些影视资源的传播活动.不乏 有些资源充沛的有志青年利用业余时间翻译某岛国影视资源,利用局 ...

  9. linux系统快速搭建ftp服务器——实现匿名用户和创建用户访问服务器

    一.准备工作: linux系统为CentOS Linux release 7.5.1804 (Core)  可以使用 lsb_release -a  命令查看 window系统中安装 SecureCR ...

随机推荐

  1. Windows7下安装MongoDB(转)

    1.下载 地址:http://www.mongodb.org/downloads(32位还是64位自行选择). 我下载的是:mongodb-win32-x86_64-2.4.5.zip 2.解压 把m ...

  2. JSP 标准标签库(JSTL)之最常用的JSTL标签总结

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-t ...

  3. Hadoop 数据库 - HBase

    转自:http://blog.csdn.net/iAm333 1 什么是HBase? HBase,是Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.使用HBas ...

  4. Geoserver发布WMS服务出错分析

    使用Geoserver发布一个空间表,在图层预览的过程中没有任何问题,但是当我根据这个空间表传创建视图再发布wms服务,访问时就会报错,错误信息如下: Caused by: java.sql.SQLE ...

  5. Expect 入门

    一,      Expect的作用 Expect广泛应用于交互式操作和自动化测试的场景之中,用来实现自动和交互式任务进行通信,而无需人的干预. 二,      Ubuntu安装Expect sudo ...

  6. 使用jsonpath解析json内容

    JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容.下面我把官网介绍的每个表达式用代码实现,可以更直观的知道该怎么用它. 一.首先需要 ...

  7. 边工作边刷题:70天一遍leetcode: day 88

    Unique Word Abbreviation 要点: 简单题,主要是理解题意.no other words have the same abbreviation as the given word ...

  8. 创建自定义的Cocos2d-x场景

    操作步骤 1.创建cocos2d-x工程 2.新建 Scene1.cpp Scene1.h Scene1.h代码 #ifndef __SCENE1_H__#define __SCENE1_H__ #i ...

  9. 3D跑酷遇到的问题

    前言 项目名称:3D跑酷项目 写作目地:使用Asset Server进行多人协作开发过程中,记录遇到的问题 问题1:UIAtlas无法自动更新 描述:NGUI的Atlas图集(图片)无法自动更新 后果 ...

  10. canvas模仿微信抢红包功能

    1.原理:先创建一张img图片,用filter滤镜制作毛玻璃效果. 2.利用绝对定位,使canvas刚好盖在img上面. 3.利用canvas原生clip函数剪辑一个圆形. 地址:http://san ...