1 简介

WiFi 是什么?能用来做什么?

都 2021 年了,相信您对 WiFi 一定不陌生了。

可以参考这里的百度百科释义:【百度百科 - WiFi(https://baike.baidu.com/item/Wi-Fi/151036?fromtitle=WIFI&fromid=803834&fr=aladdin)】

那 WiFi 能用来干什么呢?

以手机为例,很明显有两个功能:

开启 WiFi ,连接到路由器;开启热点(AP),让别人连接到由自己设备 WiFi 开出来的路由;这两个场景,在实际中已经很常见了。

本次 WiFi 驱动移植,应用场景是什么呢?

简单的说,就是我有一块控制板,现在需要增加 WiFi 模块,让设备可以通过 WiFi ,正常连接到网络。

应用场景也有很多,比如这些:

对安装环境要求较高的地方(尽可能少的接线);不易连接有线网络的地方;低成本,不想用 4G 的地方;仅用作局域网通信;...说到这里,还有一个比较重要的场景,就是设备端作为一个 Web 服务器,可以接入其他设备,比如手机 APP 等,进行功能参数的配置。这块考虑后边单独写一篇文章总结。

设备怎么与 WiFi 模块通信?有哪几种方式?

目前主流的方案有两种:USB 和 SDIO ;

不过由于 USB 方案,适配相对简单,因此选用 USB 方式的芯片。

生活中常见的 USB 无线网卡,类似的也是这种方式。

备注:具体使用哪种接口,还要结合实际情况选择。

关于 USB 方式和 SDIO 方式,可以看看这份参考资料,WIFI的USB和SDIO接口是什么??(https://zhidao.baidu.com/question/117152584.html)

硬件怎么连接?是否需要天线?如果不需要天线有什么问题?天线不适配又有什么问题?

使用 USB 方式的 WiFi 模组,硬件接线较为方便,如下图所示

截图源自创凌官网由上图可以看到,引脚功能如下:

D+:USB接口+D-:USB接口-ANT:天线接口而且整体尺寸很小,图中尺寸单位为 毫米(mm)。

下一个问题,肯定是需要天线的,否则 WiFi 无法发射出来信号。现象就是:AP 模式下,搜索不到路由。

如果天线不适配,则不能达到最大利用率。实际现象:WiFi 网速慢,网络连接不稳定,ping 丢包等。

2 整体流程

这一部分,就回顾一下,从拿到 WiFi 模块,到最后产品交付的全流程,然后复盘总结一下。

我把整个过程大致分为三个阶段,图示如下:

其实在这之前,还应该有一个硬件环境准备阶段。为了尽量详细,简要描述如下:

(如果您已了解,可直接看下一部分)

硬件连接图,简要图示如下:

2.1 基础移植

此阶段的终极目的:使系统检测到 WiFi 网卡。为什么呢?

USB WiFi 的基本操作,都是通过 命令行 实现,因此必须要先检测到 WiFi 网卡,才能针对此网卡,进行特定操作。本质与操作有线网卡 eth0 类似。这里首先要做的就是 驱动移植 ,将官方的驱动,移植到现有内核中,这样才能在内核菜单中看到对应模块。

接着需要修改内核选项,使能所用的 WiFi 模块。

可以参考文章「详细记录丨Realtek RTL8188FU WiFi 驱动移植」

最后肯定是要编译,生成新的内核文件,可以使用挂载内核的方式,验证一下新编译的文件是否正常运行。

如果可以看到 WiFi 网卡驱动,则表示内核编译无误;否则,需要重复上述步骤,进行检查;

PS:一定要确保硬件连线无误,没有断路、短路、接反等问题。

2.2 命令交叉编译

经过上个阶段,我们已经可以正常检测到网卡了。

这个阶段,主要是准备一些 工具,也就是一些用来操作 WiFi 的命令、依赖的库文件等;

这个阶段可以参考文章:「详细记录丨Realtek RTL8188FU WiFi 命令编译」

最后记得把编译生成的命令,放到文件系统中的对应路径。

注意命令权限,正常应该是 755 ,一定要有可执行权限!!!

当我们准备好所需命令后,就可以编写一些自动化的脚本,这样在程序中,只需调用对应脚本文件即可。

当然了,一些特殊文件,比如保存 WiFi 名称密码的文件,由于需要经常修改,因此还需要在程序中进行写文件操作。

我的做法是先在文件系统中,给一个默认的初始文件,当参数有改变时,重新再写一次文件。

其实也可以单独修改文件中的某一部分,但是经过评估,发现数据量不大,直接擦了重写,更加简单方便!

2.3 业务开发

第一个应用场景:连接路由

即需要控制 WiFi 模块,连接到特定的路由,进行网络通信、数据交互等。

此时可以参考文章:「详细记录丨Realtek RTL8188FU WiFi 连接路由」

第二个应用场景:开启 AP 热点

也就是设备本身,需要发射出来信号,以供其他设备连接。

此时可以参考文章:「详细记录丨Realtek RTL8188FU WiFi 开启热点」

其实还有另外一个应用场景:Web服务器,不过我想后边单独出一篇文章来写。

是什么呢?简单说就是一个 HTTP Server ,这个 Server 可以处理 POST 请求,进而实现与其他移动端设备的数据交互。

结合本项目,是用于 APP 给设备配置功能参数。

3 问题汇总

由于自己在做这一块的时候,遇到太多坑了,因此觉得很有必要再总结一下,希望能帮到您~

WiFi 配置为 AP 模式需要做什么?注意什么?

WiFi 开启 AP 模式,说白了,就两点要求:找得到,连得上;

找得到:我们总得能看到这个 WiFi 热点吧?连得上:我们即使看到了,也得能正常连上去吧?这里进一步延伸,就有两个技术点

必须要选择合适的天线,否则信号较难发射出来,又或者信号不好;服务端需要有 DHCP 功能,确保设备可以正常连接,正常获取到 IP 地址;其实脚本文件中的这一步,就是自动分配 IP 地址的过程。

如果没有开启 DHCP 功能,有什么异常?

我实际遇到的异常是:手机打开 WiFi 开关,点击连接 WiFi ,发现一直处于 获取 IP 地址的过程中,始终无法连接上去,后经查找资料,才发现还需要服务端自动分配 IP 地址。

WiFi 开启 AP 模式,信道选择有什么注意的?

关于这个问题,强烈推荐这篇教程 为什么WiFi自动信道选到的信道多数在1/6/11(https://blog.csdn.net/linuxjourney/article/details/39828553)

经过实际测试,发现修改为信道 11 ,效果要好一点。当然,这个还是要结合实际情况来定

具体表现就是:可以更快的找到 WiFi 热点,连接也比较稳定。

PS:自我感觉了解的不是很充分,如果您有不同见解,欢迎留言指出,十分感谢!比心

如果信道选择的不对,造成的问题,具体表现有这几种

WiFi 信号强度不好;WiFi 信号稳定性不好;找到 WiFi 路由,需要的时间较久;WiFi 模块天线选择问题

这个问题,极其重要。

刚开始拿到样品后,我们使用现有的其他天线,有好几种不同的,发现测试结果总是不尽人意。

一个 8M 的文件,传输过程需要好几分钟;实际测到的速度,也就几十 kb ,用起来也很糟心。

后来我们的硬件工程师,单独把我们的样机,送到天线厂商那做了适配,回来后,发现效果还真是不错。

因此,一款合适的天线,还是极其重要的!!!

WiFi 模块相关问题,是否跟驱动有关系?

这个问题,我目前还没有测试。

但是之前把问题反馈给供应商的时候,他们是给了一个新的 WiFi 驱动程序,让再测试一下。

因此,自我感觉,还是有一定影响的。

天线安装位置问题

由于我们的设备,是集成在一个很小的外壳里边,而且有大部分面积,都是金属材料。

然后设备还有 4G 、WiFi 、两个蓝牙模块,这些无线模块之间,信号频段又会互相造成干扰。

因此安装位置一定要找好,多考虑考虑。

4 总结

第一次做这样的总结复盘,如有不适之处,烦请提出您的宝贵意见,谢谢您!

我一直相信「 兼听则明,偏听则暗」,所以有问题请一定记得给我留言哈~

然后这篇文章,也算断断续续写了两周时间,期间在忙工作、也在忙一些其他的事情。经过这几天的加班加点,总算赶出来了。

我是一个积极乐观的程序开发者,您可以叫我一声 小二,亦或者,叫我一声 Boom ,都行,随您开心。

最后祝您一切顺利,身体健康!

我们下期见~

温馨提示

由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,可以在每次阅读后,在页面下方点一个「赞」或「在看」,这样每次推送的文章才会第一时间出现在您的订阅列表里。

版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

举报/反馈

wifi模块服务器项目心得,一次关于WiFi 驱动移植的总结复盘相关推荐

  1. 用wifi模块开发项目

    一.写在前面 继上次的文章wifi模块esp8266的学习后,我们就可以利用自己手上的esp8266-01 模块做一些小项目啦.网上有关利用wifi模块来开发项目的资料,我百度了,但是觉得很少,大多是 ...

  2. wifi模块 服务器通讯协议,模块之间通信协议

    模块之间通信协议 内容精选 换一换 IEC61499 是分布式工业测量,控制和监控系统的功能块标准,既然它是面向工业测量和控制的系统,对系统的确定性(Deterministic)要求必然也比较高.确定 ...

  3. 天问51单片机结合WIFI模块上传温度数据到TCP服务器

    目 录 一.前言 二.项目准备 三.设计思路 四.项目主要代码 五.项目成果 一.前言: 天问51系统单片机作为增强型51单片机,它比传统的51单片机性能提升很多,而公司开发的天问BLOCK软件编程也 ...

  4. 【STM32】ESP8266 WiFi模块实时上报温湿度及控制LED灯项目笔记

    ESP8266 WiFi模块实时上报温湿度及控制LED灯项目笔记 一.ESP8266模块 1.模块介绍 2.AT指令介绍 2.硬件连接 二.串口转发及调试 1.串口转发流程 2.串口转发程序实现 ST ...

  5. 【程序】Marvell 88W8782/88W8801 WiFi模块创建或连接热点,并使用lwip2.1.3建立http服务器(20220213版)

    本程序所用的单片机型号为:STM32F103RE.STM32F407ZG或STM32H743ZI. 复位引脚(PDN)应连接到STM32F1/F4的PA15引脚或STM32H7的PE6引脚.不连接PD ...

  6. 千兆双频无线服务器,详细介绍:千兆双频WiFi模块SKW78性能参数

    众所周知,传统连接技术无法满足物联网智慧城市对于覆盖率广.数据传输快.成本适中的海量连接需求.而物联网的主要特征之一便是节点的海量性,人.服务器.物品.设备.传感器都是终端节点,数据流源源不断.因此覆 ...

  7. wifi模块和云端服务器的协议,wifi模块连接云端服务器的尝试(esp8266连thingSpeak)

    本帖最后由 gada888 于 2017-3-31 13:28 编辑 前几天看到一个贴子说想用无线方式浇花,本人还和人家探讨,后来一想,自己都没做过,说的不跟空话一样,于是就是试着调试了一下wifi模 ...

  8. Marvell 88W8686/88W8782/88W8801 WiFi模块驱动程序的编写

    本文以STM32F1系列的单片机为例,详细讲解Marvell公司的88W8686/88W8782/88W8801 WiFi模块驱动程序的编写.编写程序时为了代码简短起见,直接用寄存器操作,不使用STM ...

  9. 【教程】Marvell 88W8686 WiFi模块驱动程序的编写(一)

    本文以STM32F1系列的单片机为例,详细讲解Marvell公司的88W8686 WiFi模块驱动程序的编写.编写程序时为了代码简短起见,直接用寄存器操作,不使用STM32库函数.IDE采用Keil ...

最新文章

  1. 《编程之美》读书笔记19: 3.9 重建二叉树
  2. spring核心之AOP学习总结二
  3. 应用容灾中,MySQL数据表是否需要跨云同步?
  4. 记录 CAP定理和BASE特性
  5. android wear iphone7,iOS 10.1可修复iPhone7系列与Android Wear配对问题
  6. H3C telnet 配置
  7. tensorflow没有代码提示的问题
  8. HP LaserJet P1007 装不到驱动
  9. 做好固定资产管理,提升行政的工作绩效
  10. 不能注册 DLL/OCX:Regsvr32失败的解决办法
  11. 对比找出两张Excel表的不同数据
  12. 智能DNS - 免费智能DNS解析服务-迄今为止最好用的智能DNS
  13. Selenium系列教程 - AutoIt命令行参数
  14. 向境外支付软件测试费,支付宝怎么打开境外支付?境外支付有手续费吗?
  15. 富格林金业:贵金属投资的优势体现在哪里
  16. getPhoneNumber:fail Error: 用户绑定的手机需要进行验证,请在客户端完成短信验证
  17. 3D目标检测学习笔记
  18. 【SSE-HARD】
  19. 计算机切换输入法Word关闭,电脑office编辑文字输入法快捷键不能切换怎么办
  20. 研发效能度量标准与实践

热门文章

  1. pcfg 自然语言处理_自然语言处理的笔记
  2. cubic算法优化_安卓cpu优化 tcp拥塞算法cubic和reno怎么选择
  3. 如何快速解决 Mybatis 异常:Invalid bound statement (not found)
  4. 槽函数获取sender_Qt QObject::sender()用法
  5. Hinton 最近提出的 Capsule 计划
  6. 软件智能:aaas系统 基于本体论的AI通用框架
  7. html 向左箭头图标css,使用css实现箭头图标
  8. 收视率和收视份额的区别
  9. 微信小程序 三角形实现 (评论三角形)
  10. DBCO-PEG-DPPE DBCO-二棕榈酰基磷脂酰乙醇胺-聚乙二醇