官网主页:https://python.quectel.com/home 官网文档中心(拥有从入门到精通的各种文档介绍、优先必看): https://python.quectel.com/doc/ 官网文件下载中心(常用于下载各类资料):https://python.quectel.com/download 官网wiki(常用于API库、视频教程、手把手教程下载):https://python.quectel.com/wiki/#/ 工单系统:https://workorder.quectel.com/ Quecpython中文社区:https://forumschinese.quectel.com/c/function-subjects/quectpython/43 移远QuecPython开发交流群:445121768 移远QuecPython开发交流群 II:1030038922 微信公众号:QuecPython 移远OTA升级平台: https://cloudota.quectel.com/ 移远IoT管理平台:https://python.quectel.com/doc/doc/Advanced_development/zh/QuecPythonCloud/QuecCloud.html
一、硬件介绍
博主手中的硬件是EC800X_核心板”熵”,图片见下:
二、开发环境搭建
官方帮助:https://www.yuque.com/exdream/myqpy/cmg21n
2.1 驱动安装
根据官方文档可知,本EC800M应该安装ASR_USB_Driver.zip驱动;
驱动安装后如下图:
2.2 烧录固件
移远 LTE Cat.1 无线通信模块以及搭载这些模块的开发板(核心板)在出厂时通常烧录有标准 AT 固件或 QuecOpen 固件,如需基于 QuecPython 对模块进行开发,需要手动为其重新烧录专门的 QuecPython 固件。
烧录步骤如下(重要!!!每步都不能缺失):
- 群共享下载QFlash_V6.2_CN.zip;
- 解压运行QFlash_V6.2_CN.zip并在线升级至QFlash_V6.3_CN.zip;
- 给EC800M下发通过AT下发ATI获取名称为EC800MCNGAR06,根据名称下载固件QPY_OCPU_V0001_EC800M_CNGA_FW.zip
- 解压驱动后,使用QFlash_V6.3_CN.zip升级固件,升级固件前先卸载SIM卡,拆线天线;
- 通过QPYcom下发AT+QDOWNLOAD=1指令,进入下载模式。进入下载模式后,可见Quectel Download Port 串口;
- 解压zip固件包,并升级固件;
- 出现PASS表示烧录成功;
- 关闭QFlash并断电重启模块;
- 重启模块后出现Quectel USB MI05 COM Port驱动;
- 使用QPYcom执行第一条Python语句;
二、QuecPython开发
官方资料: https://www.yuque.com/exdream/myqpy/tggcn3 https://python.quectel.com/doc/Quick_start/zh/QuecPythonStart/dev_env.html https://python.quectel.com/doc/Quick_start/zh/QuecPythonStart/app_dev.html https://python.quectel.com/doc/FAQ/zh/QP_test/QP_test.html
注意事项: 1、建议不要将程序命名为:main.py,建议使用其他名字,例如:start.py等等; 2、如果里面存在死循环,那么在程序运行时无法中断,对于此情况,暂时只能通过重刷固件解决。 3、如果真的想使用main.py程序,同时又需要使用死循环,记得在死循环里面加一个可中断的条件,例如(1.如下的例子是在一个线程里面加入了死循环,同时在这个死循环里面加入了中断退出的条件,当一直输出时,可通过GPIO2对应的按键中断输出;
巧用GPIO解决loop死循环问题:
import log
import _thread
from machine import Pin
import utime
log.basicConfig(level=log.NOTSET)
KEY_log = log.getLogger("KEY")
gpio2 = Pin(Pin.GPIO2, Pin.IN, Pin.PULL_DISABLE, 0)
def in_capture():
KEY_log.debug("in_capture start!")
while True:
KEY_log.info("1111")
utime.sleep(1)
if gpio2.read() == 0:
KEY_log.info("in_capture thread end")
break
else:
pass
if __name__ == "__main__":
_thread.start_new_thread(in_capture, ())
2.1 编写脚本;
官方链接:https://python.quectel.com/doc/Quick_start/zh/QuecPythonStart/app_dev.html
把编辑好的代码,点击加号选择文件(或者直接从左边拖到右边),文件就下载到模组里面了。
如下图:在QPYcom工具的【文件】选项卡中选中脚本文件,点击“运行”
自动跳转至【交互】界面,即可看到模组的执行结果。