diff --git a/docs/Getting_started/zh/wifi-dev.md b/docs/Getting_started/zh/wifi-dev.md new file mode 100644 index 0000000000000000000000000000000000000000..aeec6a37c7c6481e78f38c3925f5bf66b18acabe --- /dev/null +++ b/docs/Getting_started/zh/wifi-dev.md @@ -0,0 +1,507 @@ +快速入门 Wi-Fi 上手文档大纲 + +## 概述 + +本文以 FCM360W模块为例,旨在通过介绍快速搭建 Wi-Fi 模组的开发环境,以及通过几个简单的示例,介绍如何使用FCM360W的Wi-Fi功能。 + +![descript](wifi-dev/media/fcab3fe94bac5b88e59e763b550f7c6a.png) + +QuecPython为FCM360W提供了以下功能: + +- 主频高达240MHz的单核处理器 +- 内存可用100 KB SRAM和1310 KB Flash +- 单频2.4GHz Wi-Fi6,支持AP/STA模式,符合WPA-PSK、WPA2-PSK及WAP3-PSK 安全协议标准,支持AES128位硬件加密算法。 +- 外设支持16\*GPIO、16\*ExtInt、2\*UART、1\*I2C、1\*SPI、1\*RTC、4\*Timer、1\*WDT、6\*PWM、3\*ADC +- 网络组件支持TCP/UDP socket、MQTT、HTTP +- 支持Modem Sleep低功耗休眠 +- 支持OTA差分升级 +- 支持RTOS以及LittleFS2 + +本文包括以下内容: + +**准备工作**:简要介绍开发板硬件资源和软件的环境搭建流程。 + +**应用开发流程**:简要介绍几种常用的结合Wi-Fi和socket功能的应用开发。 + +## 准备工作 + +本小节主要介绍FCM360W EVB硬件资源和软件的环境搭建流程,便于用户快速构建FCM360W的开发环境。 + +### 硬件 + +#### 必要硬件 + +- 1 \* FCM360W EVB +- 1 \* USB Type-C数据线 (USB-A转USB-C) +- 1 \* Windows电脑 + +> 注意:请使用具有数据传输功能的USB线,部分USB线不具备数据传输功能,推荐使用手机原装数据线。 + +#### + +#### FCM360W EVB介绍 + +![descript](wifi-dev/media/c06f046f905d72a8baaae0ea33634cac.png) + +| 主要组件 | 介绍 | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| FCM360WAAMD-1X/0L/0P-04 | FCM360WAAMD-1X-04除了PCB天线外还支持使用射频同轴连接器连接外部天线 ;FCM360WAAMD-0L-04只支持外置引脚天线;FCM360WAAMD-0P-04只支持PCB天线 。 | +| LED | 用户可使用的板载LED,由GPIO22驱动,Pin号为13。 | +| Power LED | 电源指示灯,EVB上电亮起。 | +| Type-C USB Port | 可为EVB供电,并且可以用于交互、调试和烧录固件。 | +| Reset Key | 复位按键,按下复位。 | +| User Key | 用户可使用的板载按键,由GPIO24驱动,Pin号15。 | +| USB-to-UART Bridge | CH342 USB转TTL芯片 | +| I/O Connector | 所有可用管脚已引出至排针,更多关于排针引脚的信息请前往[FCM360W EVB介绍](https://python.quectel.com/doc/Getting_started/zh/evb/fcm360w-evb.html) | + +#### 硬件连接方式 + +使用USB Type-C数据线将FCM360W Type-C接口与电脑连接。 + +#### + +#### 硬件开机流程 + +FCM360W上电后自动开机,无需特殊操作。 + +### 软件 + +#### 必要软件 + +- QPYcom (版本不低于V3.2.0) + +#### + +#### 必要驱动 + +- FCM360W EVB无需手动安装驱动,连接电脑后将自动安装驱动。 + +#### 简单使用 + +##### 软件配置 + +###### QPYcom + +- **Step1:进入QPYcom设置页面** + +![descript](wifi-dev/media/8b0ba527800fa5f21ddffb6fbbb15e0e.png) + +- **Step2:勾选串口参数配置选项** + +**![descript](wifi-dev/media/fbe2e0c97e7611bdfc62122ae029b79d.png)** + +- **Step3:在流控选项栏中选择RTS_FALSE** + +![descript](wifi-dev/media/679071523b664efb8bd102ebfb5682a0.png) + +- **Step4:点击确定,生效配置** + +![descript](wifi-dev/media/59285a1729faab2bc95570b15ce9a142.png) + +>注意:只有在未开启串口的情况下才能进行串口参数配置 + +##### 固件烧录 + +请前往[固件烧录](https://python.quectel.com/doc/Getting_started/zh/flash_firmware.html)查看详细步骤,将固件烧录至您的开发板。 + +> 注意:FCM360W通过USB连接电脑后,总共会显示两个串口:DEBUG PORT和REPL PORT。其中DEBUG PORT也用于固件烧录。由于电脑上显示的两个串口名并无明显区分,所以需要您使用QPYcom尝试并分辨出DEBUG PORT,以下是具体步骤: + +- **Step1:选择FCM360W EVB的任意一个串口,波特率设置为115200,然后使用QPYcom打开该串口** + +![descript](wifi-dev/media/b44ca4fab295c6dd83e26236f688ee69.png) + +- **Step2:按下FCM360W EVB上的复位按键,对其进行复位,若交互界面打印出如下调试信息,则当前打开的串口为DEBUG PORT** + +![descript](wifi-dev/media/1e385abc47a2ca3f0509b85464cf2b2a.png) + +##### 简单使用 + +使用QPYcom打开REPL PORT,按下EVB的复位按键对开发板进行复位,交互界面打印出如下信息表示QuecPython启动成功。 + +![descript](wifi-dev/media/a356483e1a567fea7af8ab36b53d16da.png) + +更多快速入门详细文档请前往 [快速入门文档](https://python.quectel.com/doc/Getting_started/zh/index.html) + +更多QuecPython API使用请参考[QuecPython API文档](https://python.quectel.com/doc/API_reference/zh/) + +## 应用开发流程 + +Wi-Fi 在嵌入式行业的应用场景基本分为三类:STATION 模式、AP 模式及 STATION 与 AP 共存模式。本节将分别讲述前两类应用场景的开发流程。 + +在开发之前,开发者需要明确两个方面的内容:Wi-Fi 连接过程中常见的事件有哪些、Wi-Fi 常见的配网方式有哪些。了解这两方面的内容,更有利于理解 Wi-Fi 软件开发的流程。 + +### Wi-Fi 连接过程中的常见事件 + +| 事件名 | 适用模式 | 说明 | +| ------------------------ | -------- | ------------------------- | +| EVENT_SCAN_DONE | STATION | 扫描AP结束 | +| EVENT_STA_SCAN_NO_AP | STATION | 扫描不到目标AP | +| EVENT_STA_START | STATION | STATION模式开启 | +| EVENT_STA_STOP | STATION | STATION模式关闭 | +| EVENT_STA_CONNECTED | STATION | 与AP建立连接 | +| EVENT_STA_DISCONNECTED | STATION | 与已连接的AP断开连接 | +| EVENT_STA_GOT_IP | STATION | 已获取IP | +| EVENT_STA_LOST_IP | STATION | 丢失IP | +| EVENT_AP_START | AP | AP模式开启 | +| EVENT_AP_STOP | AP | AP模式关闭 | +| EVENT_AP_STACONNECTED | AP | 有新station接入 | +| EVENT_AP_STADISCONNECTED | AP | 有station断开连接 | +| EVENT_AP_STAIPASSIGNED | AP | 已为新接入的station分配IP | + +### STATION 模式开发案例 + +#### 案例功能 + +连接 TCP echo 服务器,实现周期性向服务器发送数据并接收其回显数据的功能。 + +#### + +#### 开发流程 + +##### 连接Wi-Fi + +使用network.WLAN(network.STA_IF)方法创建STATION网卡对象。通过STATION模式,我们可以连接到附近的Wi-Fi,实现上网。开发指南[Wi-Fi无线网卡](https://python.quectel.com/doc/Application_guide/zh/network-comm/nic/wifi/index.html)小节对Wi-Fi的两种模式有更加详细的介绍。 +```python +import network +wl = network.WLAN(network.STA_IF) +``` +使用WLAN.connect()方法连接Wi-Fi。这里我们只需要指定目标Wi-Fi的SSID(Wi-Fi账号)和密码就可以了,执行该方法后,需要等待Wi-Fi连接,连接成功返回0,连接超时返回-1。连接超时的原因有很多,可以查阅本章**常见问题处理**小节。 +```python +wl.connect('your-ssid', 'your-password') +``` +连接成功后,我们可以通过WLAN.ifconfig()来查询当前分配到的IP、子网掩码、网关、DNS等信息。 +```python +wl.ifconfig() +``` +##### 创建TCP socket + +配置地址族为IPV4,协议为TCP。更多关于socket API使用的内容请参考[usocket模块](https://python.quectel.com/doc/API_reference/zh/stdlib/usocket.html)。 +```python +import usocket +client_socket = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) +``` + +##### 连接TCP echo Server + +使用connect方法连接目标服务器,220.180.239.212是移远TCP echo服务器的IP,8305是该服务器的端口。 +```python +client_socket.connect(("220.180.239.212", 8305)) +``` + +##### socket服务器/客户端数据交互 + +使用send()方法发送'hi QuecPython'至服务器,该方法执行结束后返回实际发送的字节数。 +```python +client_socket.send("hi QuecPython") +``` + +使用recv(bufsize)方法接收服务器返回的数据,bufsize是一次接收的最大数据量,返回值是一个字节对象,是接收到的数据。 +```python +client_socket.recv(1024) +``` + +##### 关闭socket + +使用close()方法可用于关闭socket。 +```python +client_socket.close() +``` + +#### 完整示例 +```python +import network +import usocket +import ujson +import utime as time + +SSID = "your-ssid" +PASSWORD = "your-password" + +# 连接WIFI +print("conneting WIFI...") +wl = network.WLAN(network.STA_IF) +wl.connect(SSID, PASSWORD) +time.sleep(1) +print(wl.ifconfig()) + +# 创建socket对象 +client_socket = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) + +# 连接TCP服务器,该示例使用Quectel TCP echo服务器 +print("connecting server...") +client_socket.connect(("220.180.239.212", 8305)) + +while True: + # 发送'hi QuecPython'至服务器 + client_socket.send("hi QuecPython") + # 接收服务器返回的数据 + r_data = client_socket.recv(1024) + print("recv: ", r_data) + time.sleep(1) + +# 关闭socket +client_socket.close() +``` + +#### + +#### 功能验证 + +本示例将上述代码命名为test.py,并将该文件通过QPYcom传输至FCM360W文件系统,在QPYcom中运行该代码,结果如下。更多QPYcom的使用教程请前往[开发指南](https://python.quectel.com/doc/Application_guide/zh/dev-tools/QPYcom/index.html)。 + +![descript](wifi-dev/media/444f734b30feb776af449e0ae94b1b3a.png) + +### AP 模式开发案例 + +#### 案例功能 + +模组开启AP,电脑连接该AP后,模组作为服务器,电脑作为客户端,实现TCP 数据交互功能。 + +>注意:该案例的目的是介绍如何在模组上建立一个TCP服务器,使用电脑对该服务器进行连接,并进行通信。由于该服务器是一个内网服务器,电脑如果想连接该服务器,必须和模组处于同一个网络下,共有两种方式可以达到这个要求: +> +> - 模组作为station连接电脑所连接的Wi-Fi(前提是电脑已连接Wi-Fi) +> - 模组作为AP,供电脑连接,建立连接后,两台设备处于同一个网络下 +> +> 本案例介绍第二种方式。 + +#### 开发流程 + +##### 配置并开启AP + +使用network.WLAN(network.AP_IF)方法创建AP网卡对象,通过AP模式,我们可以实现通过FCM360W开出一个热点,供其他设备连接。 +```python +import network +nic = network.WLAN(network.AP_IF) +``` + +使用WLAN.config()方法可以配置AP信息,包括SSID、密码、信道、是否隐藏等。 +```python +nic.config(ssid=SSID, channel=1, hidden=False, key=PASSWORD) +``` + +使用WLAN.active(True)方法开启AP网卡,建立AP。返回True表示开启成功,如果返回False说明AP建立失败,需要检查AP配置是否符合规范。 +```python +nic.active(True) +``` + +使用WLAN.status()可以查看AP网卡当前的状态。AP主要有两种状态: +- 启动状态 - WLAN.STAT_AP_STARTED +- 空闲状态 - WLAN.STAT_IDLE + +```python +nic.status() +``` + +使用WLAN.ifconfig()可以查看当前AP的IP、子网掩码、网关、DNS等信息。 +```python +nic.ifconfig() +``` + +##### 设备接入管理 + +使用WLAN.status("stations")方法可以查询当前所有与AP连接的station的MAC,这样就可以对接入设备进行管理了。 +```python +current_devices = nic.status("stations") +``` + +这里我们创建一个名为connected_devices的列表,用于存储当前已连接并已为其分配资源的TCP 客户端设备MAC。通过定期查询当前AP所连接的station来对socket设备进行管理,释放已断开连接的设备所产生的资源。 +```python +connected_devices = [] +``` + +遍历对比connected_devices与current_devices中的设备,如果某设备在connected_devices中存在,而在current_devices中不存在,则说明该设备已断开连接,那么就删除该不存在的设备,并释放为其分配的资源。 +```python +for device in connected_devices: + if device not in current_devices: + connected_devices.remove(device) +``` + +遍历对比connected_devices与current_devices中的设备,如果某设备在connected_devices中不存在而在current_devices中存在,则说明该设备是新接入的设备,则为其分配资源,并对其开启TCP监听,等待其建立TCP连接。 +```python +for device in current_devices: + if device not in connected_devices: + connected_devices.append(device) + on_device_connect(device, server_socket) +``` + +##### 创建socket TCP 服务器 + +创建TCP 服务器总共需要三步:创建socket对象、绑定套接字、设置最大监听数。更多有关socket的内容请前往[开发指南](https://python.quectel.com/doc/Application_guide/zh/network-comm/net-protocols/tcp-udp.html)。 + + +创建socket对象,IPV4,TCP套接字。 +```python +server_socket = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) +``` + +绑定套接字。IP设为0.0.0.0表示通过网络中所有的IP地址都可以访问到本服务器。port设置为8080,port可设置的范围为0-65535。 +```python +server_socket.bind(("0.0.0.0", 8080)) +``` + +设置最大监听数。 +```python +server_socket.listen(5) +``` + +##### 开启监听,等待客户端连接 + +使用accept()方法开启监听,这个方法是阻塞式的,直到客户端连接,返回一个客户端对象,可以通过这个对象与客户端通信,并返回客户端用于连接的IP和端口。 +```python +client_socket, ip, port = server_socket.accept() +``` + +##### 与客户端通信 + +与客户端通信需要用到accept()方法返回的客户端对象,可通过这个对象与对应的客户端通信,示例中client_socket为客户端对象。 + +使用recv(bufsize)方法可以获取到对应客户端发送过来的数据。返回值是一个字节对象,表示接收到的数据。一次接收的最大数据量由bufsize指定。 +```python +client_socket.recv(1024) +``` + +使用send()方法可以将数据发送给对应的客户端。 +```python +client_socket.send(data) +``` + +#### 完整示例 +```python +import network +import utime +import usocket +import _thread + +SSID = "quectel_wifi" +PASSWORD = "12345678" + + +class on_tcp_client: + def __init__(self, device, client_socket): + self.device = device + self.client_socket = client_socket + try: + self.id = _thread.start_new_thread(self.run, (self.client_socket,)) + except: + print("thread create failed!") + + def run(self, client_socket): + while True: + try: + # 从客户端接收数据 + data = client_socket.recv(1024) + if data: + print("Received:", data) + + # 向客户端发送数据 + client_socket.send(bytes(data)) + utime.sleep_ms(100) + except: + _thread.stop_thread(self.id) + break + + +class on_device_connect: + def __init__(self, device, server_socket): + self.id = _thread.start_new_thread( + self.run, + ( + device, + server_socket, + ), + ) + + def run(self, device, server_socket): + try: + print("New device connected: MAC Address -", device) + + # 开启监听 + client_socket, ip, port = server_socket.accept() + print("Connection from", ip, ":", port) + + # 开启一个新的线程,定期与客户端通信 + on_tcp_client(device, client_socket) + except: + print("accept failed") + finally: + _thread.stop_thread(self.id) + + +def main(): + # 创建AP网卡 + nic = network.WLAN(network.AP_IF) + + # 配置AP信息 + nic.config(ssid=SSID, channel=1, hidden=False, key=PASSWORD) + + # 开启AP + nic.active(True) + + # 查询AP状态 + print("waiting AP start", end="") + while nic.status() != nic.STAT_AP_STARTED: + print(".", end="") + utime.sleep(1) + + # 创建TCP socket对象 + server_socket = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) + # 绑定IP和端口 + server_socket.bind(("0.0.0.0", 8080)) + # 设置最大监听数 + server_socket.listen(5) + print("Socket Created") + + print(nic.ifconfig()) + print("Waiting for connection...") + + # 已连接设备列表 + connected_devices = [] + + while True: + # 获取当前所连接的station的MAC + current_devices = nic.status("stations") + + # 移除已断开连接的设备,释放资源 + for device in connected_devices: + if device not in current_devices: + connected_devices.remove(device) + + # 接入新的设备 + for device in current_devices: + if device not in connected_devices: + connected_devices.append(device) + on_device_connect(device, server_socket) + + # 延时 + utime.sleep(1) + + +if __name__ == "__main__": + main() +``` + +#### 功能验证 + +客户端发送‘12’,收到服务器返回的‘12’: + +![descript](wifi-dev/media/8bed7c15dc402473ec4b7e07112e4c81.png) + +FCM360W打印调试信息: + +**![descript](wifi-dev/media/dd1d7cb2d0f88b2c43f561e897f756a7.png)** + +## 常见问题处理 + +- 配置了SSID和密码但是连不上Wi-Fi + +注意FCM360W只支持2.4G频段的无线网络,如果是5G频段的无线网络,是无法连接的。另外,也要注意是不是SSID或者密码配置错了,或者不存在这个无线网络。 + +- AP和STA模式无法共存 + +目前还不支持AP+STA模式,请关注新版本固件发布。 + +- 执行网络业务时,模组多次异常重启 + +执行网络业务时,模组对电流的要求比较高,5V/2A可能满足不了正常运行的要求,请换用更大功率的电源。 + +更多问题请 [联系我们](https://python.quectel.com/contactus),欢迎一起使用QuecPython,让物联网产品迸发无限活力! diff --git a/docs/Getting_started/zh/wifi-dev/media/10.png b/docs/Getting_started/zh/wifi-dev/media/10.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c6c72cbe93fb174af4863707d59bc3db2ed232 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/10.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/11.png b/docs/Getting_started/zh/wifi-dev/media/11.png new file mode 100644 index 0000000000000000000000000000000000000000..3351935ca44c093d659609d28fce254ef8af33ce Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/11.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/12.png b/docs/Getting_started/zh/wifi-dev/media/12.png new file mode 100644 index 0000000000000000000000000000000000000000..7df7d3ce53bab76d5f964642d42917453d9b3e9f Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/12.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/13.png b/docs/Getting_started/zh/wifi-dev/media/13.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b98c8704ba37ba76e3137f74829a8122a67e8e Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/13.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/14.png b/docs/Getting_started/zh/wifi-dev/media/14.png new file mode 100644 index 0000000000000000000000000000000000000000..d8dd758dcf8b7fe3eff7d4427953f83107c4a248 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/14.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/15.png b/docs/Getting_started/zh/wifi-dev/media/15.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac5d8ee70c472890b532b60a6494a314ff43bc9 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/15.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/16.png b/docs/Getting_started/zh/wifi-dev/media/16.png new file mode 100644 index 0000000000000000000000000000000000000000..edea17d9218f58910dfebd087780b5be8b65b265 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/16.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/17.png b/docs/Getting_started/zh/wifi-dev/media/17.png new file mode 100644 index 0000000000000000000000000000000000000000..06ee7f554fe5d9807f50a690995ae3597922a491 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/17.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/18.png b/docs/Getting_started/zh/wifi-dev/media/18.png new file mode 100644 index 0000000000000000000000000000000000000000..bd21a15d419d3badc25914a80986d8c6f764fca2 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/18.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/19.png b/docs/Getting_started/zh/wifi-dev/media/19.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5f17aa6382ac665ec1c5e6e5f4ad68a8a459a0 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/19.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/1e385abc47a2ca3f0509b85464cf2b2a.png b/docs/Getting_started/zh/wifi-dev/media/1e385abc47a2ca3f0509b85464cf2b2a.png new file mode 100644 index 0000000000000000000000000000000000000000..a789682836630b3d5a62a1691982f9f5fd5b652c Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/1e385abc47a2ca3f0509b85464cf2b2a.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/2.png b/docs/Getting_started/zh/wifi-dev/media/2.png new file mode 100644 index 0000000000000000000000000000000000000000..4917a779fc35c44e98b0f2bddbb85bd8207ec1e3 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/2.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/20.png b/docs/Getting_started/zh/wifi-dev/media/20.png new file mode 100644 index 0000000000000000000000000000000000000000..102834269a91ea1d62d55717c6bef9579b1b0d1e Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/20.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/21.png b/docs/Getting_started/zh/wifi-dev/media/21.png new file mode 100644 index 0000000000000000000000000000000000000000..66330855972850161f1bd2681cec126bf1b40044 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/21.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/22.png b/docs/Getting_started/zh/wifi-dev/media/22.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0058e884f53031c5241dcc6a5668d18f5947d2 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/22.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/23.png b/docs/Getting_started/zh/wifi-dev/media/23.png new file mode 100644 index 0000000000000000000000000000000000000000..afa88b84848f5756bdf6bd7c2bfa4987ea7905b4 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/23.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/24.png b/docs/Getting_started/zh/wifi-dev/media/24.png new file mode 100644 index 0000000000000000000000000000000000000000..ae435206ad520d573065bf2dd5cf009bcd7e7574 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/24.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/25.png b/docs/Getting_started/zh/wifi-dev/media/25.png new file mode 100644 index 0000000000000000000000000000000000000000..c176eb182ba98f7b5fb35b5299790393a951622f Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/25.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/3.png b/docs/Getting_started/zh/wifi-dev/media/3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6799e235f373678227afc59c47f0082a4d8e84 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/3.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/4.png b/docs/Getting_started/zh/wifi-dev/media/4.png new file mode 100644 index 0000000000000000000000000000000000000000..2458b15d6eb996d2319cc0d6e4fc23d80f7fef18 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/4.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/444f734b30feb776af449e0ae94b1b3a.png b/docs/Getting_started/zh/wifi-dev/media/444f734b30feb776af449e0ae94b1b3a.png new file mode 100644 index 0000000000000000000000000000000000000000..62950611d65880928bdbeea5daaa2258e46e46f9 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/444f734b30feb776af449e0ae94b1b3a.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/5.png b/docs/Getting_started/zh/wifi-dev/media/5.png new file mode 100644 index 0000000000000000000000000000000000000000..871be6388214b980fea231050e6319ee26083a6e Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/5.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/59285a1729faab2bc95570b15ce9a142.png b/docs/Getting_started/zh/wifi-dev/media/59285a1729faab2bc95570b15ce9a142.png new file mode 100644 index 0000000000000000000000000000000000000000..0db4ce94c8a5e7399a9d105a3a7cb113dc59dffa Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/59285a1729faab2bc95570b15ce9a142.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/6.png b/docs/Getting_started/zh/wifi-dev/media/6.png new file mode 100644 index 0000000000000000000000000000000000000000..5831de55e24a6819957f8d7784198f59d5e4c8c3 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/6.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/679071523b664efb8bd102ebfb5682a0.png b/docs/Getting_started/zh/wifi-dev/media/679071523b664efb8bd102ebfb5682a0.png new file mode 100644 index 0000000000000000000000000000000000000000..1003f11fab0dc20e68d0f36ebfb25f72e766f42c Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/679071523b664efb8bd102ebfb5682a0.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/7.png b/docs/Getting_started/zh/wifi-dev/media/7.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2bad1a7f7096b083b4de3889eb503834dc7d55 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/7.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/8.png b/docs/Getting_started/zh/wifi-dev/media/8.png new file mode 100644 index 0000000000000000000000000000000000000000..e298e1c0b2f4da8d1869d9e3da9d29d5552344b0 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/8.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/8b0ba527800fa5f21ddffb6fbbb15e0e.png b/docs/Getting_started/zh/wifi-dev/media/8b0ba527800fa5f21ddffb6fbbb15e0e.png new file mode 100644 index 0000000000000000000000000000000000000000..c37707349f5fdd67100bf0330b3cbb47aba6aef4 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/8b0ba527800fa5f21ddffb6fbbb15e0e.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/8bed7c15dc402473ec4b7e07112e4c81.png b/docs/Getting_started/zh/wifi-dev/media/8bed7c15dc402473ec4b7e07112e4c81.png new file mode 100644 index 0000000000000000000000000000000000000000..86ada19f453b1f1196c434db50ef1546739c6994 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/8bed7c15dc402473ec4b7e07112e4c81.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/9.png b/docs/Getting_started/zh/wifi-dev/media/9.png new file mode 100644 index 0000000000000000000000000000000000000000..102e8542e4523c687b35e8023352f130a81ff359 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/9.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/a356483e1a567fea7af8ab36b53d16da.png b/docs/Getting_started/zh/wifi-dev/media/a356483e1a567fea7af8ab36b53d16da.png new file mode 100644 index 0000000000000000000000000000000000000000..1a365de2ef65a2eedefb3ba77132155d4da38db7 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/a356483e1a567fea7af8ab36b53d16da.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/b44ca4fab295c6dd83e26236f688ee69.png b/docs/Getting_started/zh/wifi-dev/media/b44ca4fab295c6dd83e26236f688ee69.png new file mode 100644 index 0000000000000000000000000000000000000000..6afa5efb20da223b97395999ecd29c7b34d42ae7 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/b44ca4fab295c6dd83e26236f688ee69.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/board.png b/docs/Getting_started/zh/wifi-dev/media/board.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a385eac9a266c46107f352ef555f4148af1af1 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/board.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/board/1.png b/docs/Getting_started/zh/wifi-dev/media/board/1.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f7926154f2bf3753c98727e1c686bf93697fe3 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/board/1.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/board/2.png b/docs/Getting_started/zh/wifi-dev/media/board/2.png new file mode 100644 index 0000000000000000000000000000000000000000..74f079158f2ebc0cf526bdd98f3fba0750746f10 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/board/2.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/c06f046f905d72a8baaae0ea33634cac.png b/docs/Getting_started/zh/wifi-dev/media/c06f046f905d72a8baaae0ea33634cac.png new file mode 100644 index 0000000000000000000000000000000000000000..199f1df212b45a75f73967af5c5e37b3149a443b Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/c06f046f905d72a8baaae0ea33634cac.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/dd1d7cb2d0f88b2c43f561e897f756a7.png b/docs/Getting_started/zh/wifi-dev/media/dd1d7cb2d0f88b2c43f561e897f756a7.png new file mode 100644 index 0000000000000000000000000000000000000000..61c3b63d805a68e6764c96afb329b8a71d10ae2e Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/dd1d7cb2d0f88b2c43f561e897f756a7.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/fbe2e0c97e7611bdfc62122ae029b79d.png b/docs/Getting_started/zh/wifi-dev/media/fbe2e0c97e7611bdfc62122ae029b79d.png new file mode 100644 index 0000000000000000000000000000000000000000..986128bdbdd203d96b2482b8f1166a23c6d6e6d3 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/fbe2e0c97e7611bdfc62122ae029b79d.png differ diff --git a/docs/Getting_started/zh/wifi-dev/media/fcab3fe94bac5b88e59e763b550f7c6a.png b/docs/Getting_started/zh/wifi-dev/media/fcab3fe94bac5b88e59e763b550f7c6a.png new file mode 100644 index 0000000000000000000000000000000000000000..73bdb1e783aaafa7b57c327408d422a21df03f67 Binary files /dev/null and b/docs/Getting_started/zh/wifi-dev/media/fcab3fe94bac5b88e59e763b550f7c6a.png differ