49 张图详解 WiFi 的 26 个知识点

过年时,把舅舅家的 WiFi 搞好了。其实发现的问题,都不算是 WiFi 问题,但是 WiFi 确实是每家每户都有了。估计各位小伙伴家里,也有些亲戚会让你帮忙搞下 WiFi ,其实 WiFi 的内容比较简单,只是无线产品更新换代的速度,对比有线网络快了很多,但是万变不离其宗,现在就专门讲讲什么是 WiFi ?

1、什么是 CSMA/CA ?

以太网用 CSMA/CD 进行传输控制,而 IEEE 802.11 的 WLAN 采用的是 CSMA/CA

CSMA/CD ,全称 Carrier Sense Multiple Access with Collision Detection ,即 载波侦听多路访问/冲突检测协议。

载波侦听( Carrier Sense ),是指网络中的各个设备在发送数据前,都要确认确认线路上有没有数据传输。如果有数据传输,就不发送数据;如果没有数据传输,马上发送数据。

多路访问( Multiple Access ),是指网络上所有设备收发数据,共同使用同一条线路,而且发送的数据是广播型。

冲突检测( Collision Detection ),是指设备在发送数据帧的同时,还必须监听线路情况,判断是否发生冲突。也就是说,同一时刻,有没有其它设备也在发送数据帧。

以太网的冲突域是指数据发送时,检测出冲突,当发生冲突时等待一段随机时间再次发送。而在 WLAN 中,如果遇到其它设备正在发送数据,那么就在设备发送完成后,再等待一段随机时间,采继续发送数据。这就是冲突避免( CA ,Collision Avoidance )。因为在对方设备发送完后直接发送数据,也有可能会造成无线传输冲突。

以太网中,传输介质是网线或光纤,能够通过电气信号检测冲突的发生。但由于无线网络不会产生电气信号,因此需要使用 CSMA/CA 来替代 CSMA/CD 。

2、WLAN 由什么组成?

STA ,全称 Station ,即 工作站,是指配有无线网卡的无线终端,比如:手机、电脑等。

AP ,全称 Wireless Access Point ,即 无线AP ,用来连接 STA 和有线网络的网络设备。

IBSS ,全称 Independent Basic Service Set ,即 独立基本服务集,包含一个及以上 STA 的无线网络,也叫做 ad-hoc 无线网络,无法访问 DS 时使用的模式。

BSS ,全称 Basic Service Set ,即基本服务集,由一个 AP 和一个及以上 STA 组成的无线网络。BSS 内所有的 STA 通信都是通过 AP 完成,AP 不仅能连接有线网络,还可以在 STA 和 其它 STA 或 DS 节点之间进行桥接。

ESS ,全称 Extended Service Set ,即扩展服务集,同一有线网络连接的、两个及以上的 AP 组成,和一个子网概念类似。

DS ,全称 Distribution System ,即分发系统,让不同 BSS 内的 AP 通过 DS 互连,STA 可以从一个 BSS 移动到另一个 BSS 。AP 之间可以是无线互连,也可以是有线互连,通常是使用有线互连。DS 是 BSS 之间进行逻辑连接的基础,让 STA 在 BSS 之间能够实现漫游。

3、WLAN 有几种拓扑结构?

WLAN 的拓扑结构分为两种,一种是终端之间直接互连的 ad-hoc 模式,另一种是通过 AP 连接有线网络的基础设施模式。

ad-hoc 模式,全称 ad-hoc mode ,即 IEEE 802.11 无线网络的 BSS ,在两台 STA 之间直接进行无线通信,而组成的网络,也叫做点对点的网络模式。通常是笔记本电脑和打印机进行无线连接或多台游戏机进行联机对战时使用。终端一般配置了无线网卡。这个模式下,终端是不能连接到互联网上的。

基础设施模式,全称 Infrastructure Mode ,是指 802.11 无线网络的 BSS 形式组网,通常是通过 AP 连接到互联网时使用。在这个模式下,除了有 STA 外,还需要有 AP 才能连接到互联网。

4、什么是 AP ?

有线网络通过有线线缆把终端和交换机连接起来,组成网络。而无线网络的基础设施模式中,是通过一种叫做 AP 的设备,把多台终端连接到有线网络中。AP 也叫做接入点,接入点通常有 RJ-45 网络接口,用来连接到交换机或路由器上,从而让无线网络的终端能够访问有线网络或互联网。

5、WLAN 有哪些标准?

和以太网一样,WLAN 的标准也是有 IEEE 组织制定的。以太网标准统称为 IEEE 802.3 ,而 WLAN 标准统称为 802.11 。

和 IEEE 802.3 一样,IEEE 802.11 在物理层和数据链路层之间也定义了 MAC 子层。定义了 WLAN 采用哪种频带和调制方式,传输速率达到多大等传输标准,还定义了安全性、QoS 、管理等相关内容。

以上都是 802.11 传输标准,还有一些其它类型的标准。

IEEE 802.11n

IEEE 802.11n 之前的标准已经不多见了,这里就不介绍了。IEEE 802.11n ,又叫做 WiFi 4 ,标准在 2009 年制定完成,最大传输速率是 600 Mbit/s ,使用 MIMO 多通道技术让传输速率大幅提升。也能向下兼容 IEEE 802.11a 、IEEE 802.11b 、IEEE 802.11g 。

IEEE 802.11ac

IEEE 802.11ac ,又叫做 WiFi 5 ,有两个版本,分别是:Wave 1 、Wave 2 。区别是 Wave 1 使用 80 Mhz 频宽和 SU-MIMO 技术,最大传输速率是 3.46 Gbit/s 。而 Wave 2 是使用 160 Mhz 频宽和 DL MU-MIMO 技术,最大传输速率是 6.93 Gbit/s 。频带和调制方式等都相同。

IEEE 802.11ax

IEEE 802.11ax ,又叫做 WiFi 6 ,标准在 2018 年制定完成,最大传输速率是 9.6 Gbit/s 。WiFi 6 同时支持 2.4G 和 5G 频段,完整涵盖低速与高速设备,覆盖范围更远。支持 WPA 3 安全协议,无线网络更安全。支持 TWT 技术,能够更省电。简单的说,就是速度更快、延时更低、容量更低、更安全、更省电。

6、什么是 WiFi ?

WiFi 是基于 IEEE 802.11 标准的、不同厂家为产品的品牌认证。既然有 IEEE 802.11 标准了,为什么还要有 WiFi 认证?这是因为 IEEE 802.11 正式标准推出的时间周期长,而无线网络发展迅猛,各个厂家等不及正式标准,自己组成了 WiFi 联盟,并完成互联互通的认证。

实际上,并不是每个 IEEE 802.11 产品都申请了 WiFi 联盟的认证,那么缺少 WiFi 认证的产品,并不一定兼容 WiFi 设备。但是经过 WiFi 认证的 STA 或 AP 都能无障碍的互联互通。

在酒店或公共场所中,经常看到 “ 免费 WiFi 上网 ” 的标识,这就表示这里的 AP 已经通过了 WiFi 认证。除了电脑和

  • 85
    点赞
  • 509
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
目前基于图像处理使用市场上监控摄像头二次开发的案例很多,包括海康威视萤石开源摄像头;还有使用自带FIFO的OV7725或者OV7670摄像头模块结合stm32进行图传;还有OPENMV+OV7725的图像处理方案;还有一种使用MIPS架构的路由器芯片例如RT5350加免驱MPJG摄像头方案。每一种方案价格都要达到50块以上,因为除了购买摄像头之外还有购买单片机,成本降不下来。 好消息的是,乐鑫科技推出的ESP32芯片能满足图传的需求,某宝基于该芯片出售的ESP32-cam摄像头模块能满足图传的需求,最低价格26块能买到手,性价比相当高,ESP32的运行速度和wifi速度都比ESP8266高。26块集成了ESP32最小系统板和OV2640摄像头和板载蓝牙wifi天线,买了也不亏,一个好点的USB摄像头都不只这个价格了!为啥很少人使用呢?原因是入门比较麻烦。要是使用乐鑫idf去搭建开发图传,很麻烦,很难成功。 国内某个测评网有详细简介:https://post.smzdm.com/p/amm03d0d/ 模块的原理图如下: 模块的全家福如下: 该模块在某宝很多家店铺有售,至于代工厂估计有很多家,但是根据原理图就那么多IO口,资料都是通用的。 经过我自己个人努力,半年时间内掌握了ESP32图传技术,采用的是Arduino开发环境开发,很多情况下使用库函数来快速实现图传的功能。搭建开发环境也花了不少时间,后面根据一个教程搭建成功了。 搭建视频链接:https://pan.baidu.com/s/1_xYw-Mg3LPb5vqMuVgiD2A 提取码:qdl2 搭建软件及素材:链接:https://pan.baidu.com/s/1eIES_hDWNgr5lZD4akP9Jw 提取码:zrwu 最后是我根据搭建环境自带的图传源码修改裁剪后的图传源码(在最后免费下载),该源码是我将三四个源码文件裁剪修改合成一个源码文件,实现了图传功能,代码精简利于阅读和学习,先进行配置和运行的说明: (1)整个工程就是一个9kb的源码,名字叫websocket.ino文件,然后修改热点的名称和密码: (2)找一个CH340的USB转TTL电平的模块,某宝几块钱有卖的,按照下图接上模块: 右边的模块就是USB转TTL模块,主要是用来下载程序和串口调试,左边接ESP32模块,右边接电脑。 个人建议给cam模块供电压5V在第一张原理图左下角的端口供电,免得电源不足,不要接错了! UoR就是RX端 UOT是TX端 这两个端跟CH340的RX、TX交叉连接,如图示 将IO0端口与GND连接上之后就可以马上下载程序了: (3)用Arduino下载程序:(如果下载过程中出现失败,可以尝试按下模块的RST按键) (4)创建一个热点,名称和密码都与(1)的步骤相同,让ESP32的wifi能连上,我就用笔记本电脑创建了一个热点,然后打开串口Arduino监视器或者打开一个串口调试助手,打开电脑与CH340链接的串口,拔掉cam模块中IO0与GND链接的线(第三张图灰色的线,不断开就不能启动程序只能不断下载),再按下一次cam模块的RST按钮松开,如下图: 从图上看出,RST按下时,第一次程序运行不对,第二次运行正确了,打印出IP地址。右下角显示有设备连上热点。多试试几次就能成功的! (5)打开谷歌浏览器,输入网址串口打印的网址:172.25.139.2(个人具体IP看打印为准)就可以看到摄像头采集的视频流,相当流畅,如下图所示:(其他浏览器可能失败) 由于摄像前面的保护膜没有撕掉,所以有点模糊,视频还是很流畅的。 总结:该项目演示了用ESP32作为一个STA模式连上路由器或者笔记本热点,在同一个局域网环境下用浏览器登录ESP32的IP地址就可以收看ESP32摄像头采集下来的图像信息。后期会陆续发布根据此源码升级成视频监控小车、视频监控智能控制摄像头、视频监控系统和手机客户端图传、stm单片机图传接收、机器人视觉人脸签到系统、远程MQTT图传手机app接收、局域网javaweb显示图传、等等项目,敬请期待。
以下是一个基本的五张图片轮播,带有六个li小点跟随的JavaScript代码: HTML代码: ``` <div class="carousel-container"> <div class="carousel-slide"> <img src="img1.jpg" alt="Image 1"> <img src="img2.jpg" alt="Image 2"> <img src="img3.jpg" alt="Image 3"> <img src="img4.jpg" alt="Image 4"> <img src="img5.jpg" alt="Image 5"> </div> <ul class="carousel-dots"> <li class="dot active"></li> <li class="dot"></li> <li class="dot"></li> <li class="dot"></li> <li class="dot"></li> <li class="dot"></li> </ul> </div> ``` CSS代码: ``` .carousel-container { position: relative; width: 100%; height: 400px; overflow: hidden; } .carousel-slide { display: flex; width: 500%; height: 100%; } .carousel-slide img { width: 20%; height: 100%; object-fit: cover; } .carousel-dots { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; justify-content: center; align-items: center; } .carousel-dots .dot { width: 10px; height: 10px; margin: 0 5px; border-radius: 50%; background-color: #ccc; cursor: pointer; transition: background-color 0.3s ease; } .carousel-dots .dot.active { background-color: #333; } ``` JavaScript代码: ``` const slide = document.querySelector('.carousel-slide'); const images = document.querySelectorAll('.carousel-slide img'); const dots = document.querySelectorAll('.dot'); // 设置初始值 let currentSlide = 1; let slideWidth = images[0].clientWidth; // 设置初始图片位置 slide.style.transform = `translateX(-${slideWidth * currentSlide}px)`; // 添加小点的点击事件 dots.forEach((dot, index) => { dot.addEventListener('click', () => { currentSlide = index + 1; updateSlide(); }); }); // 自动轮播 setInterval(() => { currentSlide++; updateSlide(); }, 5000); // 更新图片和小点的状态 function updateSlide() { // 更新图片位置 slide.style.transition = "transform 0.3s ease-in-out"; slide.style.transform = `translateX(-${slideWidth * currentSlide}px)`; // 更新小点状态 dots.forEach(dot => dot.classList.remove('active')); dots[currentSlide - 1].classList.add('active'); // 监听过渡完成事件,避免动画闪烁 slide.addEventListener('transitionend', () => { if (images[currentSlide].id === 'first') { slide.style.transition = "none"; currentSlide = 1; slide.style.transform = `translateX(-${slideWidth * currentSlide}px)`; } else if (images[currentSlide].id === 'last') { slide.style.transition = "none"; currentSlide = images.length - 2; slide.style.transform = `translateX(-${slideWidth * currentSlide}px)`; } }); } ``` 说明: 1. HTML代码中,`<div class="carousel-container">`是轮播容器,包含图片和小点;`<div class="carousel-slide">`是图片容器,包含五张图片;`<ul class="carousel-dots">`是小点容器,包含六个小点。 2. CSS代码中,`.carousel-container`是轮播容器的样式,设置了容器的宽高、位置和溢出隐藏;`.carousel-slide`是图片容器的样式,设置了图片容器的宽高和图片的宽高;`.carousel-dots`是小点容器的样式,设置了小点容器的位置和样式。这里使用了Flex布局。 3. JavaScript代码中,首先获取了图片容器、所有图片和所有小点的元素;然后设置了初始值和初始图片位置;接着添加了小点的点击事件和自动轮播的定时器;最后编写了更新图片和小点状态的函数。在更新图片位置时,使用了CSS3过渡实现动画效果;在更新小点状态时,使用了`classList`属性和`active`类名实现样式切换;在监听过渡完成事件时,使用了`transitionend`事件实现无缝滚动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值