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. MapReduce形象总结

    We want to count all to the books in the library.You count up shelf #1,I count up shelf #2. That's a ...

  2. [实践] ubuntu下编译安装ambari

    ambari是一个Hadoop套件的管理工具,可以方便部署.管理及监控.最初开发时使用的就是RH系的Linux,只支持RHEL.CentOS5/6.OEL.SLES,暂不支持Ubuntu:可我的需求就 ...

  3. Palindrome subsequence

    Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65535 K (Java/ ...

  4. Start cluster zookeeper in shell script

    cat start-zookeeper.sh #!bin/sh for node in namenode01 datanode01 datanode02 do         echo "s ...

  5. Hadoop Yarn core concepts

    The fundamental idea of YARN is to split the two major responsibilities of the JobTracker—that is, r ...

  6. 【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍

    转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考 ...

  7. [树莓派]安装node环境

    本文并非node的编译安装,据说这要花很长时间,所以一开始我就是拒绝的.本文展示的是如何部署ndoe的编译好的执行文件. node的官网上下载目录里本身就有针对arm的编译好的执行文件.地址在这里:h ...

  8. codeforces 480B B. Long Jumps(贪心)

    题目链接: B. Long Jumps time limit per test 1 second memory limit per test 256 megabytes input standard ...

  9. Codeforces Round #258 E Devu and Flowers --容斥原理

    这题又是容斥原理,最近各种做容斥原理啊.当然,好像题解给的不是容斥原理的方法,而是用到Lucas定理好像.这里只讲容斥的做法. 题意:从n个容器中总共取s朵花出来,问有多少种情况.其中告诉你每个盒子中 ...

  10. UESTC 31 饭卡(Card) --背包问题

    背包问题. 思路:如果m<5,此时也不能消费,所以此时答案为m m>=5: 求出背包容量为m-5,买前n-1样便宜的菜(排个序)的最大价值(即最大消费,即消费完后剩余值最接近5)最后减去最 ...