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. 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突

    ================声明===================== 本文原创,转载请保持文章的完整性(含本声明),并显要的著名作者和出处. 本文链接:http://blog.csdn.ne ...

  2. APACHE重写去除入口文件index.php

    下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index.php/index 改变后的路径是: localhost/ind ...

  3. [分享]4412开发板Android教程——Android开发环境搭建

    分享视频链接:http://pan.baidu.com/s/1o6tgEeQ 本文转载:www.topeetboard.com 下载和安装Android应用的开发环境 新建Android虚拟环境 An ...

  4. 移动web在ios和android下点击元素出现阴影问题

     移动web开发经验总结 1.-webkit-tap-highlight-color:rgba(255,255,255,0)可以同时屏蔽ios和android下点击元素时出现的阴影.备注:transp ...

  5. [编]IoT The Internet of Things (IoT) 物联网

    物联网是新一代信息技术的重要组成部分.其英文名称是“The Internet of things”.由此,顾名思义,“物联网就是物物相连的互联网”.这有两层意思:第一,物联网的核心和基础仍然是互联网, ...

  6. Golang 实现简单的滚动读取文本更新

    这个小程序要实现的效果,简单地说,就是将目标文件的内容读取输出到终端,并且目标文件并不是静态的,而是随时会添加新的内容.我们的目标就是一旦目标文件添加了新的内容,就把它读取出来并且显示到终端上. 实现 ...

  7. HDU 1171 Big Event in HDU --暴力+生成函数

    题意:给n种房子,每种房子有一个值val和个数cnt,现在要把这些房子分成两部分,争取两部分总值相等,如果不能相等,让A>B,且A-B最小. 解法:先跑一次生成函数,c[n]表示组成总值为n的方 ...

  8. 获取本机的IP地址(局域网)与主机名称

    编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...

  9. Volley(三)—— ImageRequest & Request简介

    Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...

  10. ajax技术的应用?

    1,百度输入后的提示 2,新浪登录之后只刷新用户名