支持移远EC600S的SmartDtu平台,基于QuecPython
2021-05-05 09:23 DanielWise 阅读(2159) 评论(1) 编辑 收藏 举报前言
本文的主要目的是说明青石SmartDtu到底做了哪些工作?我们在移远硬件平台EC600S上做了哪些支持?为什么说这套平台是硬件开发者的福音?我们的初衷是解放广大硬件开发者的双手,提供一套成熟的嵌入式软硬件解决方案,让开发者尤其是硬件开发者专注于硬件本身。
基础支持指我们的软件和平台支持移远EC600S的基础功能,比如定时器、温湿度、PWM、GPIO、UART和FOTA。
资源管理是指通过软件平台可以通过串口和MQTT指令来管理EC600S系统上的资源,实现远程数据采集和远程控制,目前支持有远程开启定时器采集温湿度,远程控制GPIO引脚的开启和关闭等等。
平台支持是借助腾讯云平台作为中间平台,将EC600S硬件和青石的平台连通起来,既可以满足大量数据的稳定性交互能力,又可以保障数据和通信的安全性。
1 硬件平台
我们的代码运行在移远的EC600S平台上,开发语言是QuecPython,这是移远官方基于MicroPython扩展的开发语言,专门用于移远平台的嵌入式开发,在功能接口定义还是目录结构形式都与MicroPython保持高度的一致。两者同样应用于嵌入式场景开发,轻Python开发语言使得开发者上手更快,开发门槛大大降低。
2 开发环境
名称 | 工具名称 | 备注 |
---|---|---|
visual stutio code | QuecPython开发 | 开发 |
QCOM | 串口工具 | 串口调试 |
QPYcom | 烧录工具和执行环境 | 开发调试 |
3 代码架构
3.1 代码结构图
-
bluestone_commom.py
这个文件是整个项目的公共文件,主要有一些获取网络状态、设置网络状态、检查文件是否存在和判断路径是否为URL等方法。 -
bluestone_config.py
这个文件主要是用于处理系统正常运行过程中用到的参数,包括从文件中读取参数、向文件中写入参数和默认参数配置项等等。 -
bluestone_daemon.py
守护文件,主要目的是保证嵌入式系统在运行过程中的健康,一旦发生异常中断或者断线无法恢复的情况就会尝试重启系统,目前还在开发中。 -
bluestone_fota.py
主要用来管理应用程序和固件的升级,其中应用程序支持多个文件路径,固件包升级仅支持单个文件。 -
bluestone_gpio.py
主要用来管理系统中所有GPIO引脚的状态,包括读取和写入。 -
bluestone_main.py
系统的入口文件,负责启动网络守护线程、初始化配置文件、数据文件、初始化系统服务、MQTT服务、串口服务、定时器服务和看门狗服务。 -
bluestone_mqtt.py
MQTT客户端管理工具,负责启动MQTT,监听回调并解析回调指令和参数,根据解析出的回调指令和参数执行相对应的命令。 -
bluestone_mqtt_tencent.py
Tencent MQTT客户端管理工具,负责启动MQTT,监听回调并解析回调指令和参数,根据解析出的回调指令和参数执行相对应的命令。 -
bluestone_pwm.py
PMW控制逻辑,负责打开和关闭PMW端口,可以模拟实现呼吸灯。 -
bluestone_socket.py
用于初始化TCP/IP socket,连接客户端并接收和发送指令,未完待续。 -
bluestone_temperature.py
采集板载温湿度传感器的数值。 -
bluestone_timer.py
管理定时器,按照一定参数启动或停止定时器。 -
bluestone_uart.py
管理串口,按照传入的参数启动串口,读取串口参数并解析命令,如果有满足条件的命令就去执行,包括重启系统等。 -
bluestone_config.json
默认配置文件,文件内有关于UART0~2的配置参数和Tencent MQTT的启动参数,用户可以按照自己的实际情况进行修改。
{
"uart2": {
"parity": 0,
"baud_rate": 115200,
"flow_control": 0,
"stop_bits": 1,
"data_bits": 8
},
"mqtt_tencent": {
"product_id": "输入你在腾讯云上的产品编号",
"pub_topic": "event",
"product_secret": "输入你在腾讯云上的产品密钥",
"sub_topic": "control"
},
"uart1": {
"parity": 0,
"flow_control": 0,
"baud_rate": 115200,
"stop_bits": 1,
"data_bits": 8
},
"uart0": {
"baud_rate": 115200,
"parity": 0,
"flow_control": 0,
"stop_bits": 1,
"data_bits": 8
}
}
4 定时器
传入指令如下:
{
"timer1": {
"status": 1,
"period": 5000,
"mode": 1,
"callback": "aht10"
}
}
- timer1: EC600S有四个定时器,分别是timer0,timer1,timer2,timer3,其中timer0被系统占用,仅可以使用timer1~timer3;
- status: 定时器任务的状态;0表示关闭,1表示启动;
- period: 定时器运行周期,单位是毫秒;服务端支持的周期是5000~30000毫秒;
- mode: 定时器运行模式,0表示仅运行一次,1表示周期运行;
- callback: 定时器每循环一次要执行的函数名称,目前仅支持"aht10"和"gpio",分别表示采集温湿度和读取GPIO引脚状态;多个回调函数之间用逗号分隔。
注:定时器参数配置成功后系统会自动重启。
5 温湿度
温湿度的采集是通过定时器执行的,按照如上配置,只要在callback中填写"aht10"即可。
6 GPIO
控制指令如下:
{
"gpio": {
"gpio1": 1,
"gpio2": 1,
"gpio3": 0,
"gpio4": 1,
"gpio5": 1,
"gpio6": 1,
"gpio7": 1,
"gpio8": 1,
"gpio9": 0,
"gpio10": 1,
"gpio11": 0,
"gpio12": 1,
"gpio13": 1,
"gpio14": 1
}
}
- gpio: 表示当前指令是用于控制GPIO的;
- gpio1: 表示控制GPIO1号引脚,0表示低电平,1表示高电平,以此类推;
7 UART
{
"uart1": {
"baud_rate": 115200,
"data_bits": 8,
"flow_control": 0,
"parity": 0,
"stop_bits": 1
}
}
- uart1: 表示当前串口编号,支持uart0,uart1,uart2;
- baud_rate: 串口波特率;
- data_bits: 串口数据位;
- flow_control: 流量控制;
- parity: 校验位;
- stop_bits: 停止位;
注:串口参数配置成功后系统会自动重启。
8 FOTA
{
"fota": {
"mode": 0,
"url": "http://app.com/download"
}
}
- fota: 表示升级配置参数;
- mode: 0表示升级应用程序,在这种模式下url可以支持多个,不同url之间以逗号分隔;1表示升级固件包,在这种模式下仅支持一个url地址;
- url: 应用程序或固件包的地址,不支持https;
注:升级成功后系统会自动重启。
9 系统使用
下面将从新建产品到设备数据等8个环节来演示系统使用方法。
青石SmartDtu平台,登录账号:dtu, 登陆密码:d123qwe
9.1 新建产品
1.点击左侧菜单栏进入产品列表页
2.点击新建打开新建产品窗口,填写产品信息
3.产品创建成功
9.2 设备硬件配置
9.2.1 驱动安装
进入移远官方下载页面,下载 USB驱动
,如下图:
注意操作系统,目前来看是没有找到 Mac
和 Linux
下的驱动,暂不知道是没有提供还是根本不需要。
双击安装即可。
- 验证是否安装成功
将电脑与开发板连接,会发现电源状态灯亮起(为红色),之后长按开机按钮,大约 5秒
后松手,稍等 5秒
左右,发现NET状态灯开始闪烁(移远COM端口驱动,间隔大约2秒),进入电脑的 设备管理器
,查看 端口(COM 和 LPT)
项,发现如下图所示设备即表示安装成功!
温馨提示: 在官方文档中,这里写的比较简陋,只说了将开发板与电脑连接后就能看到设备,实际发现如果不开机,是看不到设备的!还有,官方文档中的配图显示有三个设备,实际发现只有两个,并没有配图中提到的指令交互串口,产生这个现象的原因是设备在出厂的时候烧录的固件不是
Python
固件,在烧录完Python
固件后就能看到
9.2.2 QPYcom图形化工具安装
进入移远官方下载页面,下载 QPYcom 图形化工具
,如下图:
这个下载完成后是一个压缩包,解压后双击 QPYcom.exe
可执行文件即可。
温馨提示:这个软件运行完成后会在相同路径下生成一些其他文件,如:
Config.ini
等,建议将其按照习惯整理到一个空文件夹下。
QPYcom
软件运行结果如下所示:
9.2.3 设备配置
选择串口为图中串口
打开下载页,点击创建按钮新建项目
进入移远官方下载页面,下载 固件包
,
下载后解压为QPY_V0004_EC600S_FW.zip
文件,选择固件
点击下载固件,将固件包下载至开发板
进入控制程序下载页面,下载 控制程序
,解压,
将bluestone_config.json文件中的product_id和product_secret替换为新建产品的产品id与密钥(从产品列表页获取)
导入图中所选代码文件
点击下载脚本,将控制程序下载至开发板
点击文件,关闭串口后重新打开,如图所示启动设备
9.3 新建设备
本系统采用动态注册逻辑,配置好设备参数之后,只要设备上线,即可注册至系统,无需手动创建或导入设备
9.4 设备管理
点击左侧菜单栏中设备列表
,进入设备列表页面后点击设备行内管理
按钮即可管理设备
9.4.1 编辑设备
如图,点击编辑按钮即可编辑设备,目前仅支持修改设备备注
9.4.2 删除设备
点击删除按钮,即可删除设备
注:由于使用动态注册,若删除后设备仍然存在,收到设备信号后设备将会重新注册,所以删除设备前请确保设备已物理删除
9.4.3 状态重置
点击状态重置按钮,可将设备状态重置为未激活状态
9.4.4 设备禁用
点击设备启用禁用的滑块开关,可更改设备的启用状态,设备禁用后,将不再收取该设备的消息
9.5 设备温湿度管理
点击左侧菜单栏中设备列表
,进入设备列表页面后点击设备行内温湿度
按钮即可进行设备温湿度管理
注:设备状态为离线或未激活时无法进行温湿度管理
9.5.1 查看设备温湿度数据
9.5.2 查看温湿度变化趋势
点击左上数据图表按钮,可切换至图表显示,查看设备温湿度变化趋势
9.5.3 温湿度采集配置
更改采集相关参数后同步设置,可调整设备是否上报或设备上报周期(最小60s,最大15min)
9.6 设备GPIO管理
点击左侧菜单栏中设备列表
,进入设备列表页面后点击设备行内GPIO
按钮即可进行设备GPIO管理
注:设备状态为离线或未激活时无法进行GPIO管理
点击单个GPIO滑块开关或者点击一键开启、一键关闭按钮,即可更改设备GPIO状态
9.7 设备UART管理
点击左侧菜单栏中设备列表
,进入设备列表页面后点击设备行内UART
按钮即可进行设备UART管理
注:设备状态为离线或未激活时无法进行UART管理
注:使用UART功能需要UART与TTL转USB模块连接,详细内容参照 官方文档
9.7.1 设备UART数据
9.7.2 设备UART串口配置
如图所示,进入UART参数设置
选择串口更改参数保存后,可实现设备UART串口配置的修改
9.7.3 设备UART下发自定义json数据
进入移远官方下载页面,下载 QCOM 串口调试工具
,如下图:
解压后双击 QCOM_V1.6.exe
可执行文件即可,下图为初始页面:
接下来按照官方文档测试一下
在 设备管理器
--> 端口(COM 和 LPT)
中找到 Quectel USB AT Port
的端口值,并在 QCOM
中选择端口,打开,发送发送测试指令: AT+GMR
,注意先不要修改其他配置。如下所示:
温馨提示:如果打开的时候打开失败,按一下复位按钮,带复位后再尝试连接。拿到全新开发板后未做其他修改,实测连不上,需要复位。
测试结果
如上所示,能够返回固件版本号即表示测试成功!
接下来通过UART下发自定义json数据在 设备管理器
--> 端口(COM 和 LPT)
中找到 USB-SERIAL CH340
的端口值,并在 QCOM
中选择端口打开,
回到UART参数设置页面,输入随机json数据,点击发送,
自定义数据下发成功
9.8 设备数据
9.8.1 设备历史数据
点击左侧菜单栏中设备数据
,可查看设备所有历史消息数据
9.8.2 首页统计
数量概况
数量变化趋势
排行榜
10 版权信息
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。