diff --git "a/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/QuecPython\345\205\245\351\227\250\345\255\246\344\271\240\350\267\257\347\272\277.md" "b/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/QuecPython\345\205\245\351\227\250\345\255\246\344\271\240\350\267\257\347\272\277.md" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6ebe614882230d4224abccbee7fba0f1d5a22b25 100644 --- "a/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/QuecPython\345\205\245\351\227\250\345\255\246\344\271\240\350\267\257\347\272\277.md" +++ "b/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/QuecPython\345\205\245\351\227\250\345\255\246\344\271\240\350\267\257\347\272\277.md" @@ -0,0 +1,45 @@ +# QuecPython 入门学习路线 + + QuecPython 移植于 MicroPython 开源库,开发者在移远通信模块上 使 用 MicroPython 即可调用模块软件功能和外部硬件接口,进行二次开发。与open C相比,QuecPython开发具有轻松入门、语法简介、随写随测等优点,大大降低了用户开发学习的门槛。 + +## 入门要求 + +物联网开发向上承接了互联网,向下承接了嵌入式硬件。QuecPython开发需要有一定的嵌入式开发经验,了解相关硬件知识,API接口等。 + +## 语法学习 + +QuecPython移植于MicroPython,无论是在功能接口定义还是目录结构形式都与MicroPython保持高度的一致。MicroPython是Python3语言的精简高效实现,开发者在入门学习时因掌握基础的Pyhton3语法。需要注意的是Python3与QuecPython只是语法上兼容,脚本里导入的库和函数会存在差异,不能将电脑端运行的脚本放在QuecPyhton上运行,QuecPython相关库可参考官网WIKI。 + +## 开发板选型 + +目前QuecPython的开发板有QuecPython 开发板、核心板和DTU开发板等,用户可根据自身需求选择对应的开发板。如果是初学者可购买QuecPython 开发板,它资源相对丰富,适合入门学习。其他两种型号开发板可用于项目调试上,只需要用到部分硬件资源。 + +## 快速上手 + +一、Hello World打印 + +1.开发板接入电脑,需要安装驱动和烧录模块固件,具体的操作方法参照《QPYcom工具使用说明》 + +2.hello world打印 + +(1)交互窗口打印 + +如下图所示,使用QPYcom工具,端口连接“QuecPython的交互端口”,选择“交互”界面,进行如下交互打印。 + +![](E:\QuecPython网站搬移\V1\teedoc_with_qpydoc\docs\development_guide\zh\media\QuecPython快速入门\快速入门_入门学习_1.jpg) + +(2)编写*test_helloworld.py*文件打印 + +创建*test_helloworld.py*文件,编写脚本如下所示 + +```python +import utime # 导入定时模块 +print_num = 5 # 定义打印次数 +while print_num: + print("hello world") + print_num -= 1 # 自减 + utime.sleep(2) # 延迟2秒 +``` + + + diff --git "a/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216AT\345\221\275\344\273\244\345\210\260QuecPython.md" "b/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216AT\345\221\275\344\273\244\345\210\260QuecPython.md" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d5596f6d82ee47fcd05261901e09d15e87a64249 100644 --- "a/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216AT\345\221\275\344\273\244\345\210\260QuecPython.md" +++ "b/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216AT\345\221\275\344\273\244\345\210\260QuecPython.md" @@ -0,0 +1,45 @@ +# 从 AT 到 QuecPython + +## 关于模块 + +无线通信模块(模组)是实现数据上云和远程通信的必不可少的组件,在各类物联网场景中已经得到了极为广泛的应用。其本质可理解为一种将主芯片、无线基带、存储器、功放等器件集成在一起,用于完成本地电路与云端服务的数据通信功能的高密度、小体积、带屏蔽罩的“核心板”。 + +就像电脑插上网卡就可以上网一样,在嵌入式系统中加入了模块,系统就具有了连接无线网络的可能性。 + +![](E:\QuecPython网站搬移\V1\teedoc_with_qpydoc\docs\development_guide\zh\media\QuecPython快速入门\快速入门_AT_1.jpg) + +​ EC200A_TE-A_EVB板 + +## 模块的标准开发方式 + +在大部分应用场景中,本地电路上的主处理器(主控)通过特定的接口(通常为串口)与模块建立连接,发送特定的指令(AT 指令)控制模块实现包括数据上传、无线通话、设备定位等在内的一系列功能。这种工作方式通常称为标准模式或传统模式,是当前应用最普遍、历史最悠久的模块使用方式。 + +![](E:\QuecPython网站搬移\V1\teedoc_with_qpydoc\docs\development_guide\zh\media\QuecPython快速入门\快速入门_AT_2.png) + +如上图所示,在标准模式中,通信模块是作为主控(MCU,如 STM32)的一个外设的角色而存在的。两者之间通过 UART 串口相连接,基于 AT 指令进行双向交互。系统的主要业务逻辑(用户应用,APP)在 MCU 中运行,其他外设通过 UART、I2C 等接口与 MCU 相连,受 MCU 控制。 + +在标准模式下,主控中运行的用户 APP 需要包含较为复杂的 AT 指令发送和解析功能,例如对于 URC(Unsolicited Result Code,非请求结果码)的处理等。对于新手而言,整体开发难度较大。 + +## 模块的 OpenCPU 开发方式 + +模块所搭载的主芯片为了满足无线通信的需要,通常具有较高的性能和较多的资源,同时也配备了包括 GPIO、ADC、I2C 等在内的丰富的外设接口,运行着较为完备的操作系统(RTOS 或 Linux),因而在一定程度上具备了取代传统模式中的主控的能力。部分厂家会开放模块内部的软硬件资源供用户使用。这种使用模块作为主处理器,对模块进行二次开发的应用模式常被称为 OpenCPU(不同厂家可能有不同的称呼,如移远的 QuecOpen、芯讯通的 OpenLinux 等)。 + +![](E:\QuecPython网站搬移\V1\teedoc_with_qpydoc\docs\development_guide\zh\media\QuecPython快速入门\快速入门_AT_3.png) + +如图所示,与标准模式相比,OpenCPU 模式由于将模块本身作为主控使用,用户应用(APP)直接置于模块内部运行,整个系统中无需外部处理器(MCU),因而可以有效地达到精简硬件设计、降低器件成本、缩小产品尺寸的目的。在单片机价格居高不下的当下,OpenCPU 方案受到了众多公司的青睐。 + +但是,OpenCPU 方案也具有较为明显的局限性。由于这一模式通常需要用户直接在模块底层运行的操作系统的基础上进行开发,技术门槛较高,传统的、不具备系统级开发经验的单片机开发者很难适应。其次,由于 OpenCPU 技术支持难度大,模块厂家通常只向大客户提供相关的工具和资料,入门较为不便。最后,不同厂家、不同型号的模块,其 OpenCPU 开发环境和开发工具存在较大差别,用户编写的程序在不同模块间的移植存在一定的难度。 + +## 使用脚本语言开发模块 + +传统的 OpenCPU 开发通常使用 C 语言,因此也被称作 CSDK 开发。用户需要直接修改和控制底层的操作系统,具有较高的难度和一定的风险性。部分模块厂商通过在 CSDK 的基础上移植解释器 / 虚拟机的方式,使得用户可以使用 Lua、Python 等脚本语言对模块进行开发。 + +与 C 语言相比,脚本语言在语法和使用方式上普遍较为简单,开发者无需花费太多时间和精力即可掌握,并可相对轻松地实现业务逻辑,便于项目的快速开发和功能迭代。同时,在使用脚本语言进行开发时,开发者通常也无需考虑内存回收、基础任务调度等底层细节,显著降低了模块二次开发的技术门槛。最后,对于不同型号的模块,只要它们运行的是同一种脚本语言解释器,用户编写的程序通常只需少量修改(甚至无需修改)即可完成移植。 + +## 关于 QuecPython + +Python 是一种热门的解释型脚本语言。因其语法简单、功能丰富的特点,被广泛应用于服务器、数据库、图像处理、人工智能等领域。MicroPython 是 Python 语言的精简高效实现。它基本兼容 Python 3.4 版本的语法特性,同时进行了针对性优化,使其能够在微控制器和其他资源受限的环境中运行。目前,MicroPython 已经支持包括 STM32、ESP32、RP2040 在内的多种硬件平台。 + +移远将 MicroPython 移植到了多款 4G 和 NB-IoT 模块上,并增加了大量与无线通信相关的功能库,称之为 QuecPython。由此,用户可以使用 MicroPython 脚本对移远通信模块进行快速便捷的二次开发。 + +目前,QuecPython 方案已经在智能家电、工业控制、智慧交通等场景得到应用。各类公司基于 QuecPython 方案推出的产品包括车载定位器、DTU、4G 对讲机等数十种。 \ No newline at end of file diff --git "a/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216Python\345\210\260MicroPython.md" "b/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216Python\345\210\260MicroPython.md" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6570738f8c27778ea97d1299450533e64642b675 100644 --- "a/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216Python\345\210\260MicroPython.md" +++ "b/docs/development_guide/zh/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\344\273\216Python\345\210\260MicroPython.md" @@ -0,0 +1,21 @@ +# 从 Python 到 MicroPython + +Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。作为一种代表极简主义的编程语言,和传统的 C/C++、Java、C# 等语言相比,Python 对代码格式的要求相对宽松。在开发 Python 程序时,可以专注于解决问题本身,而不用顾虑语法的细枝末节。 + +下方展示了一个使用 Python 语言编写的 while 循环示例。可以看出,Python 语法较为简洁,易于掌握,可读性较高。 + +```python +x = 256 +total = 0 +while x > 0: + if total > 500: + break + total += x + x = x // 2 +``` + +作为一种解释型语言,Python 具备较好的可移植性,可在多种不同软硬件平台上运行。使用 Python 编写的程序不需提前编译成二进制代码,可以直接从源代码运行。此外,Python 具有脚本语言中最丰富和强大的类库。这些类库覆盖了文件 I/O、GUI、网络编程、数据库访问等绝大部分应用场景。用 Python 语言开发程序时,许多功能可以通过调用库实现,开发者通常无需从零编写。 + +MicroPython 可理解为一个可以运行在微处理器上的 Python 解释器,它使得用户可以编写 Python 脚本来控制硬件。MicroPython 继承了 Python 的完备的 REPL 交互功能,可以通过 REPL 串口随时输入代码执行,便于测试。MicroPython 还内置了文件系统,用户可以随意向设备端上传任意文件内容,并对目录结构进行修改。基于这一点,设备端可以同时储存多个程序脚本和其他文件,用户可根据需要手动选择并运行,类似于手机 App 的机制,极为灵活。此外,得益于 Python 解释型语言的特性,用户在使用 MicroPython 进行开发时,无需因为代码的更改而反复编译代码和烧录固件,仅需将修改过的代码重新上传至设备内即可。 + +目前,MicroPython 已经支持在包括 STM32、Raspberry Pi Pico、ESP32 等数十种硬件平台上运行。 \ No newline at end of file diff --git "a/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_1.jpg" "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..1fbd574da096010ab53817f8e3c59470981c2ea6 Binary files /dev/null and "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_1.jpg" differ diff --git "a/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_2.png" "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_2.png" new file mode 100644 index 0000000000000000000000000000000000000000..6d8b9da3bb73c70d8421a4149e1ceeabbdc3dfd0 Binary files /dev/null and "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_2.png" differ diff --git "a/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_3.png" "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_3.png" new file mode 100644 index 0000000000000000000000000000000000000000..3ca1d6d734f837a8b9ad246ee701ce022c2c3620 Binary files /dev/null and "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_AT_3.png" differ diff --git "a/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_\345\205\245\351\227\250\345\255\246\344\271\240_1.jpg" "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_\345\205\245\351\227\250\345\255\246\344\271\240_1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..35853a3f265a6b4be9851fc77e633b916f5ae303 Binary files /dev/null and "b/docs/development_guide/zh/media/QuecPython\345\277\253\351\200\237\345\205\245\351\227\250/\345\277\253\351\200\237\345\205\245\351\227\250_\345\205\245\351\227\250\345\255\246\344\271\240_1.jpg" differ