diff --git a/docs/Quick_start/zh/README.md b/docs/Quick_start/zh/README.md
index 6dca56a04af55b522d15c174eeed5c390b7e7184..abc73d10dff58432800c9451577bec1f3986aadf 100755
--- a/docs/Quick_start/zh/README.md
+++ b/docs/Quick_start/zh/README.md
@@ -1,9 +1,9 @@
## 修订历史
-| 版本 | 日期 | 作者 | 变更表述 |
-| ---- | ---------- | ------ | -------------------------- |
-| 1.0 | 2021-09-02 | Kayden | 首次编写,指导客户快速开发 |
-| 1.1 | 2021-09-10 | David | 增加环境搭建的注意事项 |
+| 版本 | 日期 | 作者 | 变更表述 |
+| ---- | ---------- | ---------- | -------------------------- |
+| 1.0 | 2021-09-02 | Kayden | 首次编写,指导客户快速开发 |
+| 1.1 | 2021-09-10 | David.Tang | 增加环境搭建的注意事项 |
## 前言
diff --git a/docs/Quick_start/zh/Start_to_abandon.md b/docs/Quick_start/zh/Start_to_abandon.md
index f1d1d68fbe50b4bbc8931ce8b4dcc43ced4ee455..a83d01e4e3a8283ea9516395865b7455b03169b3 100644
--- a/docs/Quick_start/zh/Start_to_abandon.md
+++ b/docs/Quick_start/zh/Start_to_abandon.md
@@ -1,4 +1,8 @@
-# QuecPython快速入门
+## 修订历史
+
+| Version | Date | Author | Change expression |
+| ------- | ---------- | ---------- | ----------------- |
+| 1.0 | 2021-09-16 | David.Tang | Initial version |
本文档主要说明 QuecPython快速入门,主要包括三个方面:打印Hello World;点亮LED灯;HTTP获取网页源代码。
diff --git a/docs/sbs/zh/BSP/GPIO.md b/docs/sbs/zh/BSP/GPIO.md
index 218833c5849f9fee351eedd68f074eabf11e2b2f..73e941f9577b6bb13c731c7df492f46bf8481fc2 100644
--- a/docs/sbs/zh/BSP/GPIO.md
+++ b/docs/sbs/zh/BSP/GPIO.md
@@ -1,8 +1,8 @@
## 修订历史
-| Version | Date | Author | Change expression |
-| ------- | ---------- | ------ | ----------------- |
-| 1.0 | 2021-09-06 | David | Initial version |
+| Version | Date | Author | Change expression |
+| ------- | ---------- | ---------- | ----------------- |
+| 1.0 | 2021-09-06 | David.Tang | Initial version |
## PIN
diff --git a/docs/sbs/zh/BSP/PWM.md b/docs/sbs/zh/BSP/PWM.md
index c85bae3fb8a1995336889b342019b337d3618cf8..b569f260e5fb3af6ade608aeaa00866693bf26c2 100644
--- a/docs/sbs/zh/BSP/PWM.md
+++ b/docs/sbs/zh/BSP/PWM.md
@@ -1,8 +1,8 @@
## 修订历史
-| Version | Date | Author | Change expression |
-| ------- | ---------- | ------ | ----------------- |
-| 1.0 | 2021-09-06 | David | Initial version |
+| Version | Date | Author | Change expression |
+| ------- | ---------- | ---------- | ----------------- |
+| 1.0 | 2021-09-06 | David.Tang | Initial version |
文档主要基于EC600X(包括EC600S、EC600N、EC600U)介绍如何使用 QuecPython_PWM。PWM是一种对模拟信号电平进行数字编码的方法。根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
diff --git a/docs/sbs/zh/BSP/UART.md b/docs/sbs/zh/BSP/UART.md
index 7fbd5c8598bd6089419aac8df5055d69cbf7784e..c5a538beac3aa14e3f77afbb98d5c02881117e13 100644
--- a/docs/sbs/zh/BSP/UART.md
+++ b/docs/sbs/zh/BSP/UART.md
@@ -1,8 +1,8 @@
## 修订历史
-| Version | Date | Author | Change expression |
-| ------- | ---------- | ------ | ----------------- |
-| 1.0 | 2021-09-02 | David | Initial version |
+| Version | Date | Author | Change expression |
+| ------- | ---------- | ---------- | ----------------- |
+| 1.0 | 2021-09-02 | David.Tang | Initial version |
文档主要基于EC600X(包括EC600S、EC600N、EC600U)介绍如何使用QuecPython_UART,UART作为一种通用串行数据总线,用于异步通信,可实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括监控调试器和其它器件。通过本文你将了解到EC600X_UART的所有设置参数及使用方法。
diff --git a/docs/sbs/zh/QuecPythonPlatform/Audio.md b/docs/sbs/zh/QuecPythonPlatform/Audio.md
new file mode 100644
index 0000000000000000000000000000000000000000..40caf497d1984c0422027121396fa35f70976b23
--- /dev/null
+++ b/docs/sbs/zh/QuecPythonPlatform/Audio.md
@@ -0,0 +1,72 @@
+## 修订历史
+| 版本 | 日期 | 作者 | 变更表述 |
+|------|------|------|------|
+| 1.0 | 2021-4-6 | gary.zhou | 初版 |
+| 1.1 | 2021-9-16 | David.Tang | 增加多模组的适用性 |
+
+
+## 硬件连接
+
+| 开发板型号 | 开发板对应PIN脚 | 开发板上对应的连接位置 | 对应的音频通道 |
+| -------------------------------------------------------- | ------------------------------ | ---------------------- | -------------- |
+| EC600S_QuecPython_EVB_V1.3
EC600N_QuecPython_EVB_V1.3 | PIN21、PIN22 | J7 | 通道0 |
+| EC600U_QuecPython_EVB_V1.3 | PIN21、PIN22
PIN109、PIN110 | J7
J6的PIN14、PIN15 | 通道0
通道2 |
+
+针对EC600S/N的硬件连接图如下:
+
+
+
+针对EC600U_通道0的硬件连接图如下:
+
+
+
+针对EC600U_通道2的硬件连接图如下:
+
+
+
+## 下载验证
+
+1. 根据测试场景,调整下面代码的注释。
+
+ ```python
+ # -*- coding: UTF-8 -*-
+ #备注如下:
+ #(1)对于EC600S和EC600N的话,下面的代码不需要做任何修改,就可以播放
+ #(2)对于EC600U的通道0的话,注释掉18行(18行的配置对这个播放没有影响)
+ #(3)对于EC600U的通道2的话,注释掉12行和19行,取消注释13行;
+ import utime as time
+ import audio
+ from machine import Pin
+
+
+ def example_audio_mp3():
+ aud = audio.Audio(0) # 配置通道0
+ # aud = audio.Audio(2) # 配置通道2
+ aud.setVolume(9)
+ '''
+ 使能外接喇叭播放
+ '''
+ # Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 1) # 官方板V1.1使用
+ Pin(Pin.GPIO9, Pin.OUT, Pin.PULL_PD, 1) # 官方板V1.2和V1.3使用
+ # U: 表示用户目录, GUI下载工具会将文件下载到 /usr 文件下
+ aud.play(2, 1, "U:/example.mp3")
+ pass
+
+ if __name__ == "__main__":
+ example_audio_mp3()
+ ```
+
+
+
+2. 将随包的 example.mp3 和修改好的 example_audio_file.py 文件下载到开发板中。
+
+3. 运行 example_audio_file.py 脚本即可。
+
+
+
+
+## 配套代码
+
+
+
+ 下载代码和音频文件
\ No newline at end of file
diff --git a/docs/sbs/zh/QuecPythonPlatform/code/Audio.rar b/docs/sbs/zh/QuecPythonPlatform/code/Audio.rar
new file mode 100644
index 0000000000000000000000000000000000000000..64e38e8f83702c2c0c98d5f04a30638ddb56f757
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/code/Audio.rar differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/code/example.mp3 b/docs/sbs/zh/QuecPythonPlatform/code/example.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..1d36dd78c62237d5a4ecd1f32841815ed3e33a3e
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/code/example.mp3 differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/code/example_audio_file.py b/docs/sbs/zh/QuecPythonPlatform/code/example_audio_file.py
new file mode 100644
index 0000000000000000000000000000000000000000..84df3371f4262067e32079631fc313147558d2d3
--- /dev/null
+++ b/docs/sbs/zh/QuecPythonPlatform/code/example_audio_file.py
@@ -0,0 +1,25 @@
+# -*- coding: UTF-8 -*-
+#备注如下:
+#(1)对于EC600S和EC600N的话,下面的代码不需要做任何修改,就可以播放
+#(2)对于EC600U的通道0的话,注释掉18行(18行的配置对这个播放没有影响)
+#(3)对于EC600U的通道2的话,注释掉12行和19行,取消注释13行;
+import utime as time
+import audio
+from machine import Pin
+
+
+def example_audio_mp3():
+ aud = audio.Audio(0) # 配置通道0
+ # aud = audio.Audio(2) # 配置通道2
+ aud.setVolume(9)
+ '''
+ 使能外接喇叭播放
+ '''
+ # Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 1) # 官方板V1.1使用
+ Pin(Pin.GPIO9, Pin.OUT, Pin.PULL_PD, 1) # 官方板V1.2和V1.3使用
+ # U: 表示用户目录, GUI下载工具会将文件下载到 /usr 文件下
+ aud.play(2, 1, "U:/example.mp3")
+ pass
+
+if __name__ == "__main__":
+ example_audio_mp3()
diff --git a/docs/sbs/zh/QuecPythonPlatform/media/Qp_modem_get_dev_info_01.png b/docs/sbs/zh/QuecPythonPlatform/media/Qp_modem_get_dev_info_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..898c2ff0b615f66e26166a8465b661ecd07db57e
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/media/Qp_modem_get_dev_info_01.png differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/media/Qp_modem_get_dev_info_02.png b/docs/sbs/zh/QuecPythonPlatform/media/Qp_modem_get_dev_info_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..4754b01a58814167259f5236522573f1ebc9ec78
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/media/Qp_modem_get_dev_info_02.png differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/media/audio_01.png b/docs/sbs/zh/QuecPythonPlatform/media/audio_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c344a43085a495f5d412a085723b18fb5d44f1d
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/media/audio_01.png differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/media/audio_02.png b/docs/sbs/zh/QuecPythonPlatform/media/audio_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2511585b7ddd55e77c0a1bfebff9e2aac3ffc88
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/media/audio_02.png differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/media/audio_03.png b/docs/sbs/zh/QuecPythonPlatform/media/audio_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d13edd79a3ab670db63680908314b8c8f67d41b
Binary files /dev/null and b/docs/sbs/zh/QuecPythonPlatform/media/audio_03.png differ
diff --git a/docs/sbs/zh/QuecPythonPlatform/modem_get_dev_info.md b/docs/sbs/zh/QuecPythonPlatform/modem_get_dev_info.md
new file mode 100644
index 0000000000000000000000000000000000000000..4f7338400ae55916846340aec67fd416585d6e72
--- /dev/null
+++ b/docs/sbs/zh/QuecPythonPlatform/modem_get_dev_info.md
@@ -0,0 +1,102 @@
+
+## **QuecPython modem 获取设备信息**
+
+## 修订历史
+
+| Version | Date | Author | Change expression |
+| ------- | ---------- | ---------- | ----------------- |
+| 1.0 | 2021-09-15 | David.Tang | Initial version |
+
+## 前言
+
+本文主要基于EC600U-CN介绍如何使用QuecPython modem模块获取设备信息。通过本文您将了解到EC600U-CN线程的所有设置参数及使用方法。
+
+## 软件设计
+
+软件设计主要参考官网的wiki,具体位置为:[modem_API库](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=%e8%8e%b7%e5%8f%96%e8%ae%be%e5%a4%87%e7%9a%84imei)
+
+## 交互操作
+
+使用QPYcom工具和EC600S-CN进行交互,具体如下:
+
+```Python
+>>> import modem
+>>> help(modem)
+object is of type module
+ __name__ -- modem
+ getDevSN --
+ getDevImei --
+ getDevModel --
+ getDevFwVersion --
+ getDevProductId --
+>>> from modem import *
+>>> getDevSN()
+'D1D20J60A0017870P'
+>>> getDevImei()
+'868540050393723'
+>>> getDevModel()
+'EC600S'
+>>> getDevFwVersion()
+'EC600SCNAAR01A01M16_OCPU_PY_BETA1211'
+>>> getDevProductId()
+'Quectel'
+```
+
+注意:
+
+1. import modem即为让 modem模块在当前空间可见。
+
+2. 只有import modem模块,才能使用 modem内的函数和变量。
+
+## 下载验证
+
+#### 软件代码
+
+下载.py文件到EC600S-CN上运行,代码如下:
+
+```python
+import modem
+import log
+
+state = 1
+log.basicConfig(level=log.INFO) # 设置日志输出级别
+
+log = log.getLogger("QuecPython")
+
+def modem_msg():
+ global state
+ modem_Imei = modem.getDevImei()
+ modem_DevModel = modem.getDevModel()
+ modem_DevSN = modem.getDevSN()
+ modem_DevFwVersion = modem.getDevFwVersion()
+ modem_DevProductId = modem.getDevProductId()
+ log.info("modem_Imei:{}".format(modem_Imei))
+ log.info("modem_DevModel:{}".format(modem_DevModel))
+ log.info("modem_DevSN:{}".format(modem_DevSN))
+ log.info("modem_DevFwVersion:{}".format(modem_DevFwVersion))
+ log.info("modem_DevProductId:{}".format(modem_DevProductId))
+ state = 0
+
+if __name__ == "__main__":
+ modem_msg()
+ while 1:
+ if state:
+ pass
+ else:
+ break
+```
+
+#### 硬件连接
+
+无需硬件连接
+
+#### 运行效果
+
+打开QPYcom运行*modem_file.py*,如下图:
+
+
+
+运行结果如下:
+
+
+
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/Qp_Sim_fun_01.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/Qp_Sim_fun_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e6bbcc8267d8a34062af3cf1913fa79e393e4f4
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/Qp_Sim_fun_01.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_01.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3ff00fe6989a40b433d3c2a88feb41cdd47908f
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_01.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_02.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf01c852045c1a2b91b96c5498b7143e31ef16bc
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_02.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_03.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..01a07df983814ad728c799bfb93d48d33662da4a
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_03.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_04.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_04.png
new file mode 100644
index 0000000000000000000000000000000000000000..ced3c491f839bb0aaf03315e37ba1433a7ba430d
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_04.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_05.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_05.png
new file mode 100644
index 0000000000000000000000000000000000000000..489fc4e8e019475afad73bbde61b4f09212d1f3f
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/ntp_05.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/sim_02.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/sim_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e6bbcc8267d8a34062af3cf1913fa79e393e4f4
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/sim_02.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/media/sim_03.png b/docs/sbs/zh/QuecPythonWirelessNetwork/media/sim_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..c69de7da003570f058d13bfe7394e6e9202f518b
Binary files /dev/null and b/docs/sbs/zh/QuecPythonWirelessNetwork/media/sim_03.png differ
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/ntp.md b/docs/sbs/zh/QuecPythonWirelessNetwork/ntp.md
new file mode 100644
index 0000000000000000000000000000000000000000..2720cf9892c0e44ae4241b423daa062cbca14948
--- /dev/null
+++ b/docs/sbs/zh/QuecPythonWirelessNetwork/ntp.md
@@ -0,0 +1,81 @@
+## 修订历史
+| 版本 | 日期 | 作者 | 变更表述 |
+|------|------|------|------|
+| 1.0 | 2021-4-1 | gary.zhou | 初版 |
+| 1.1 | 2021-9-15 | David.Tang | 略作检查与修改 |
+
+## 前言
+
+本文主要介绍NTP使用指导。
+
+## 概述
+
+NTP又称网络时间协议,用于同步计算机时间的一种协议。该协议可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行同步,同时提供高精准度的时间校正(LAN上与标准时间差小于 1 毫秒,WAN上与标准时间差大约有几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的互联网环境中提供精确和健壮的时间服务。
+
+NTP提供准确时间,首先要有准确的时间来源,即国际标准时间UTC。NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从互联网上获取。时间按NTP服务器的等级传播,按照离外部UTC时间源的远近将所有服务器归入不同的Stratum(层)中。Stratum- 1 在顶层,有外部UTC接入;Stratum- 2从Stratum- 1 获取时间;Stratum- 3 从Stratum- 2 获取时间,......,以此类推,但Stratum的总数限制在 15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum- 1 的时间服务器是整个系统的基础。计算机主机一般同多个时间服务器连接,利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间,即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。
+
+为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。NTP时间同步报文中包含的时间是格林威治时间,是从 1900 年开始计算的秒数。
+
+## API介绍
+
+具体的API详解请参考[QuecPython-ntptime-NTP对时](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonThirdlib?id=ntptime-ntp对时)
+
+## 功能实现
+
+NTP对时需要从NTP服务器上获取时间,故在实现NTP对时功能之前需连接网络。本文档以通过SIM卡进行联网为例。
+
+### 操作一:
+准备一张可用的SIM卡,插入SIM卡后通电,等待自动拨号。以EC600S-CN为例,EC600S_QuecPython_EVB_V1.1开发板配备的是NANO SIM卡座,自弹式,触点向下,缺口向内。SIM卡槽位置如图所示:
+
+
+
+ 图 1 :插入SIM卡
+
+自动拨号后,可通过如下方法验证是否拨号成功:
+
+
+
+ 图 2 :自动拨号成功验证
+
+### 操作二:
+
+拨号成功后,导入ntptime模块,返回当前的NTP服务器,默认为"ntp.aliyun.com"。
+
+
+
+ 图 3 :当前NTP服务器
+
+### 操作三:
+
+设置NTP服务器。设置成功返回 0 ,设置失败返回- 1 。
+
+
+
+ 图 4 :设置NTP服务器
+
+### 操作四:
+
+使用 ntptime.settime() 同步NTP时间。同步成功返回 0 ,同步失败返回- 1 。
+
+对时结果可使用utime.localtime()验证。执行utime.localtime()后返回当前时间,返回值为一个元组:(year, month, mday, hour, minute, second, weekday, yearday)。具体的API详解请参考[QuecPython-utime-与时间相关功能](https://python.quectel.com/wiki/#/zh-cn/api/pythonStdlib?id=utime-与时间相关功能)。
+
+ntptime.settime()对时后返回时间为UTC时间,北京时间领先UTC八个小时,所以对时后,对比当前时间可发现时间后退八小时。
+
+
+
+ 图 5 :对时成功
+
+## 附录术语缩写
+
+表 1 :术语缩写
+
+|术语 | 英文描述 | 中文描述 |
+| ---------- | --------------------------------- |----------- |
+| GPS | Global Positioning System | 全球定位系统|
+| LAN | Local Area Network | 局域网|
+| NTP | Network Time Protocol | 网络时间协议|
+| RTC | Real_Time Clock | 实时时钟|
+| SIM | Subscriber Identity Module | 用户身份识别模块|
+| UTC | Coordinated Universal Time | 协调世界时|
+| WAN | Wide Area Network | 广域网|
+
diff --git a/docs/sbs/zh/QuecPythonWirelessNetwork/sim.md b/docs/sbs/zh/QuecPythonWirelessNetwork/sim.md
new file mode 100644
index 0000000000000000000000000000000000000000..f952e5148494e6c4eefbe749d858ddf24a81e1a5
--- /dev/null
+++ b/docs/sbs/zh/QuecPythonWirelessNetwork/sim.md
@@ -0,0 +1,137 @@
+## 修订记录
+
+| 版本 | 日期 | 作者 | 变更表述 |
+| ---- | ---------- | ---------- | ------------ |
+| 1.0 | 2021-09-13 | David.Tang | 初始版本修订 |
+
+## 前言
+
+本文主要简介QuecPython SIM卡模块的使用。 具体的API 详解请参考[QuecPython_SIM](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=sim-sim%e5%8d%a1)
+
+## SIM卡基本概述
+
+SIM 分为手机卡和物联网卡。区别就是物联网卡没有电话号码不能收发短信,手机可以发短信。 常见的是手机卡。
+
+第二代标准的Mini卡,国内用户俗称的大卡。
+
+第三代标准的Micro卡,俗称小卡。
+
+第四代标准的Nano卡。
+
+
+
+
+
+需要的是第四代标准的 Nano 卡。
+
+## 快速开始
+获取sim 卡信息之前,请首先确认sim卡状态是否完好,
+```python
+import sim
+# 返回状态1 表示状态正确,其他错误码,请查阅 WIKI SIM API
+sim.getStatus()
+```
+### 获取imsi
+IMSI全称为 Internation Mobile Subscriber Identity,即国际移动用户识别码。
+
+- 前三位数字代表移动国家代码(MCC)。
+- 接下来的两位或三位数字代表移动网络代码(MNC)。E.212允许使用三位数的MNC代码,但主要在美国和加拿大使用。
+- 接下来的数字代表移动用户识别号(MSIN)。
+```python
+import sim
+sim.getImsi()
+```
+### 获取iccid
+ICCID全称为Integrated Circuit Card Identifier,即集成电路卡识别码。
+
+- 可以简单理解为SIM卡的卡号(身份证号)。
+
+- 编码格式为:XXXXXX 0MFSS YYGXX XXXX。
+
+- 前六位运营商代码:
+
+ 中国移动的为:898600;898602;898604;898607 ,
+
+ 中国联通的为:898601、898606、898609,
+
+ 中国电信898603、898611。
+```python
+import sim
+sim.iccid()
+```
+
+### PIN码操作
+ PIN码(PIN1)是电信名词,全称**Personal Identification Number**。是指SIM卡的个人识别密码.
+手机的PIN码是保护SIM卡的一种安全措施,防止别人盗用SIM卡,如果启用了开机PIN码,那么每次开机后就要输入**4-8**位数PIN码。当输入PIN码错误超过三次时,将自动锁卡保护。解锁需要使用PUK码拨打运营商客服热线.需要注意的是,如果输入三次PIN码错误,手机便会自动锁卡,并提示输入PUK码解锁,这个时候已经接近了危险的边缘,如果你不知道你的PUK码就暂时不要动了,拿上服务密码拨打客服热线,客服会告诉你初始的PUK码,输入PUK码之后就会解锁PIN,就可以重置密码了。如果擅自修改了PIN码,一定要牢记。
+
+#### PIN1码
+ PIN1码是个人识别码。是SIM卡内部的一个存储单元,通过手机设置。
+开机时会要求输入PIN1码,错误地输入PIN1码3次,将会导致“锁卡”现象。此时需要运营商提供PUK码在手机键盘上输入,就可以解锁。如果错误输入PUK码10次,就会“烧卡”,您必须带机主有效证件到运营网络的营业厅补卡。
+
+#### PIN2码
+ 您的手机上如果显示“PIN2码限制通话”可能是由于您开启了PIN2码的相关功能,
+但由于网络暂不支持PIN2码的相关功能,即便开启也不能使用其功能。如不慎将PIN2码锁死,也不会影响手机的正常使用,请您携带机主的有效证件到运营服务商营业厅办理免费解锁服务。启用sim卡PIN码验证,开启后需要输入正确的PIN验证成功后,sim卡才能正常使用。只有3次输入PIN码机会,3次都错误,sim卡被锁定,需要PUK来解锁。
+
+#### 使能验证Pin码
+```python
+import sim
+# 1234 修改成为你的 Pin码, 一般是 4到8位,此类操作,请慎重。
+sim.enablePin("1234")
+# 在使能 pin码以后,才能进行验证 Pin
+sim.verifyPin("1234")
+# 关闭Pin码
+sim.disablePin("1234")
+```
+#### 修改PIN码
+```python
+import sim
+# 1234 为 久的PIN码, 4321 为 新的PIN码
+sim.changePin("1234", "4321")
+```
+
+### 重置pin码-PUK码
+当错误输入Pin码次数过多以后,不能再输入PIN码。此时需要使用PUK码来解锁。
+
+#### PUK1码
+PUK码(PUK1)由8位数字组成 ,这是用户无法更改的,只有补换SIM卡后PUK码才会变更。当手机PIN码被锁,并提示输入PUK码时。千万不要轻举妄动,因为PUK码只有10次输入机会,10次都输错的话,SIM卡将会被永久锁死,也就是报废。部分SIM卡的PUK码是用户在购卡时随卡附带的。
+
+#### PUK2码
+PIN2码是电信局用于计费的,一般不向用户提供 。如果输入三次错误,手机会需要用PUK2码解锁,过程与先前介绍的PIN码、PUK码相同。不过这两种密码与网络计费及SIM卡内部资料的修改有关,所以不会公开,而且即便PIN2密码锁死,也不会影响手机的正常使用。**因此,PIN2码和PUK2码不必去刻意理会**。
+
+#### 解锁PIN码
+```python
+import sim
+# 12345678 为 PUK码, 0000 为新的 PIN码
+sim.unblockPin("12345678", "0000")
+```
+
+### 读写SIM内存区域
+
+#### Phonebook Memory Storage
+Phonebook Memory Storage即为SIM卡电话薄存储区域。详情可参考 [ts_127007v100300p.pdf](https://www.etsi.org/deliver/etsi_ts/127000_127099/127007/10.03.00_60/ts_127007v100300p.pdf)
+
+
+```python
+>>> import sim
+>>> sim.getStatus()
+1
+>>> sim.getImsi()
+'460110847679419'
+>>> sim.getIccid()
+'89860319747555431000'
+# 写电话薄,
+>>> sim.writePhonebook(9, 1, 'Tom', '18144786859')
+0
+>>> sim.writePhonebook(9, 2, 'z', '18144786859')
+0
+>>> sim.readPhonebook(9, 1, 4, "")
+(1, [(1, 'Tom', '18144786859')])
+>>> sim.readPhonebook(9, 2, 4, "")
+(1, [(2, 'z', '18144786859')])
+```
+## 参考资料
+
+**[ts_127007v100300p.pdf](https://www.etsi.org/deliver/etsi_ts/127000_127099/127007/10.03.00_60/ts_127007v100300p.pdf)**
+
+**[Quecpython sim - SIM卡库]([QuecPython 类库 (quectel.com)](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=sim-sim卡))**
+