WIFI(2.4G/5G【实际5.8G】)
1. LAN、WAN、WLAN、WIFI解释
- LAN:局域网
- WAN:广域网
- WLAN:无线局域网
- WIFI: 是一种基于IEEE 802.11标准的无线局域网技术
2.常见术语
- a) WM(无线媒介):802.11标准通过无线媒介在STA之间传递帧,多种物理无线媒介中射频(RF , radio frequency)物理层应用最广泛。
- b) AP(无线接入点):一种特殊的Station,将BSS连接到DS(Distribuition system,分布式系统)。AP位于BSS中心,AP在哪儿,BSS就在哪儿。
- c) STA(站点):无线工作站,任何wireless设备都可以叫STA。比如正在使用无线网络的平板、手机、电脑等。
3.基于IEEE 802.11标准的无线局域网通信技术
-
2.4G传输速率最高300Mbps,5G传输速率最高600Mbps
4.WiFi网络框架 - 网络拓扑结构
### 基础网:

* WLAN网络的基本元素:BSS(基础服务集)
<!-- -->
* 基于AP组建的基础无线网络
<!-- -->
* 由AP创建,众多STA加入所组成
<!-- -->
* AP是整个网络的中心
<!-- -->
* 各STA间不能直接通信,需经AP转发
### 自组网:(手机热点---传输的数据量不是特别大)
* Ad-hoc模式也称为对等模式,允许一组具有无线功能的计算机或移动设备之间为数据共享而迅速建立起无线连接。
-
- 仅由两个及以上STA组成,网络中不存在AP。
- 各设备自发组网,设备之间是对等的。
- 网络中所有的STA之间都可以直接通信,不需要转发。
5.WIFI信道
- a) 也称为通道、频段,是以无线信号作为传输载体的数据信号传输通道
- b) 无线信道不是独占的,而是所有通信中的AP公用的
- c) 相同信道上工作的AP会降低吞吐率
-
实际的2.4GHZ WiFi信道
-
实用规定因为国家不同而有所差异
- 美国->11信道
- 欧洲、中国->13信道
- 日本->14信道
-
-
5GHZ WiFi信道分布
- 相邻信道之间有重叠,存在干扰
- 5.8G频率较高,速度快,但是在空间传输时衰减较为严重,如果距离稍远,性能严重降低
6.TCP/IP协议
- 是Internet最基础的协议,由网络层的IP协议和传输层的TCP协议组成
- TCP为保证数据的正确,每发出一个包,都要求接收方收到后返回一个确认包。发送端要对所有接收到的包进行确认。
- TCP流量控制,防止过程中接收缓冲区的溢出。
7.WIFI网络安全机制
- 跟有线网络不同,理论上无线电波范围内的任何一个站带你都可以监听并登录无线网络,所有发送或接收的数据,都有可能被截取。在生活中,你在外面商店当中发现免费不要密码的WiFi时,你开心连上,支付时就会发现手机提醒"当前wifi不太安全"
-
设置的参数
- 单独设置的参数:加密方式;SSID名称;接入限制;隐藏SSID
- 公用的参数:信道;功率;速率;其他物理参数
8.用户接入WIFI过程
- (1)通过无限扫描方式,可以发送可用网络。无限扫描有主动扫描和被动扫描,扫描速度快。用户主机在每个信道上发送探测请求帧,寻找与STA所相同SSID的AP。AP发送探测响应帧回应,其中包含的信息和信标帧类似。
- (2)用户选择网络。
-
(3)认证。认证是STA向AP证明其身份的过程,只有通过身份认证的站点才能进行无线接入访问,认证可以通过MAC地址进行,也可以通过用户名/口令进行。认证有开放系统认证和共享密匙认证两种。
- 开放型认证
- 共享密钥认证
- 开放型认证
9.WIFI模块--ESP8266
*
### 1.模块介绍:
* 串口型WIFI模块,速度比较低,主要用与数据量传输比较小的场合,比如说温度信息,一些传感器的开关量等。一次只能传输几千字节的数据,而且通信非常稳定,可满足大多数应用。
* 注意:由于是串口型,不能传输图像或者视频大容量数据
### 2.引脚接线
* VCC:3.3V 电源
<!-- -->
* RST:ES8266 复位管脚,可做外部硬件复位使用。
<!-- -->
* CH_PD:使能管脚,高电平有效。
<!-- -->
* UTXD:串口发送引脚
<!-- -->
* URXD:串口接收引脚
<!-- -->
* GND:GND 管脚
### 3. 三种工作模式
* STA模式:ESP8266模块作为站点设备,通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
<!-- -->
* AP模式: 模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。
<!-- -->
* STA+AP模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。
### 4. 模块正常测试
*
#### (1)接线
* 按照以下方式接上STM32
* VCC--\>3.3V
<!-- -->
* GND--\>GND
<!-- -->
* CH_PD--\>3.3V
<!-- -->
* TXD--\>URXD(开发板上USB转TTL模块)
<!-- -->
* RXD--\>UTXD(开发板上USB转TTL模块)
<!-- -->
*
#### (2)串口发送"AT",如果模块正常则会在串口助手上接收到"OK"

<!-- -->
*
#### (3) 使用手机扫描WiFi信号
* 打开手机设置,扫描周围的热点,若扫描到模块发出的热点,说明模块基本正常。热点一般是"OPEN"型的,也就是无密码的。 
### 5.AT指令

每条指令可以有细分四种命令形式
*
#### 基础AT指令
* AT 测试AT启动
<!-- -->
* AT+RST 重启模块
<!-- -->
* AT+GMR 查看版本信号
<!-- -->
*
#### 功能AT指令

<!-- -->
*
#### TCP/IP工具箱AT指令

### 6.实验测试

根据路由器的WiFi热点,用模块去连接该热点,并保证电脑也是连接在路由器下的网络,这样WiFi模块即可通过路由器与电脑实现网络通信。
*
#### (1)接线
* 单片机\<--(串口3)--\>PZ-ESP8266
<!-- -->
* 单片机\<--(串口1)--\>电脑
<!-- -->
*
#### (2)串口调试助手
* USB 线与开发板和电脑连接,打开电源开关。打开串口调试助手,实验过程中用户只需要按照串口调试助手打印的信息进行操作即可,以下是我在测试过程中的实验现象的部分截图,仅供参考 
<!-- -->
*
#### (3)模式选择
* 从上图可知,根据输出的结果,选择对应的测试编号,这里我选择编号"3",既可对模块的 STA 模式测试,又可对 AP 模式测试。因此,在输入对话框中输入:3。注意,要勾选"发送新行"。 
#### (4)WiFi自定义
* 按照输出提示信息,需要给模块创建 WIFI 热点名称、加密方式和密钥,其中输入格式为"名称字符+英文逗号+加密方式编号+英文逗号+密钥字符+空格" ,我按照规定格式输入:PRECHIN,4,12345678 
#### (5)连接WiFi
* 之前我们在第三步有设置模式为模式3,既可以为站点又为热点,因此第四步我们已经完成了热点相关设置,现在来设置站点
* 串口助手又输出提示信息,需要我们输入模块要连接的 WIFI 名称和密码,比如路由器产生一个 WIFI 热点,然后模块去连接这个热点,并且保证电脑也是连接在路由器下的网络,这样 WIFI 模块即可通过路由器与电脑实现网络通信。我测试时采用如下连接方式,并且,按照指定的格式输入:PUZHONG88,PUZHONG\*88(这里根据用户自己的路由器WIFI热点自行设置) 

* 若出现连接失败或超时,请再次发送该命令。
#### (6)设置服务器端口号
* 串口助手又输出提示信息,需要我们输入服务器要开启的端口号和超时时间,按照指定的格式输入:8088,1800 
#### (7)设置电脑端口号
* 串口助手又输出提示信息,需要我们输入电脑的 IP 和端口号,在串口助手软件输入之前,我们先在电脑端打开网络调试助手,并设置电脑 IP 和端口号,网络调试助手设置如下 
* 如果不知道自己电脑 IP 地址的,可以直接在命令窗口输入命令:ipconfig 
<!-- -->
* 然后,回到串口助手,按照指定的格式输入:192.168.1.52, 8080 ,串口输出信息如下: 
<!-- -->
* 串口输出信息后,同时在网络调试助手上也会有信息输出,如下: 
#### (8)安装手机端网络调试助手
* 手机安装一个网络调试助手 APP,然后用手机连接前面给模块设置的 WIFI 热点:PRECHIN,密码是 12345678。如下所示: 
<!-- -->
* 打开安装好的 APP,首先要新建一个主机,IP 地址设置为:192.168.4.1,端口设置为:8088。操作如下 

<!-- -->
* 手机连接成功后,串口输出如下,因为例程中手机连接作为 ID3,所以前面的 ID0、ID1、ID2 我们需要按照提示发送,以实现 ID3 的连接,这样手机 APP即可与模块实现数据收发,网络助手和模块即可实现数据收发。 



#### (9)电脑网络助手或手机网络助手实现数据收发
*
##### 手机网络助手
* 在手机 APP 中,我们发送了一条"你好"和一条"hello world",在串口助手上也分别显示出来,其中你好显示乱码,这个可能是。细心的朋友可能会发现,明明我发送的数据只有 hello world,怎么前面还显示了"+IPD,3,11:",这是因为模块固件里面自带发送对应的 ID 和消息长度,+IPD是固定的,3 表示此时发送数据的 ID 是 ID3,11 表示数据长度。 

<!-- -->
*
##### 电脑网络助手
* 我们还可以在电脑端网络调试助手上发送数据给模块,模块可通过串口打印输出。网络调试助手现在选择的客户端有 3 个,分别是 ID0、ID1、ID2,我们手机连接了 ID3。只要在网络助手上发送数据,可同时发给 ID0、ID1 和 ID2 的客户端。 