前言

本文的主要目的是说明青石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 代码结构图

  1. bluestone_commom.py

    这个文件是整个项目的公共文件,主要有一些获取网络状态、设置网络状态、检查文件是否存在和判断路径是否为URL等方法。

  2. bluestone_config.py

    这个文件主要是用于处理系统正常运行过程中用到的参数,包括从文件中读取参数、向文件中写入参数和默认参数配置项等等。

  3. bluestone_daemon.py

    守护文件,主要目的是保证嵌入式系统在运行过程中的健康,一旦发生异常中断或者断线无法恢复的情况就会尝试重启系统,目前还在开发中。

  4. bluestone_fota.py

    主要用来管理应用程序和固件的升级,其中应用程序支持多个文件路径,固件包升级仅支持单个文件。

  5. bluestone_gpio.py

    主要用来管理系统中所有GPIO引脚的状态,包括读取和写入。

  6. bluestone_main.py

    系统的入口文件,负责启动网络守护线程、初始化配置文件、数据文件、初始化系统服务、MQTT服务、串口服务、定时器服务和看门狗服务。

  7. bluestone_mqtt.py

    MQTT客户端管理工具,负责启动MQTT,监听回调并解析回调指令和参数,根据解析出的回调指令和参数执行相对应的命令。

  8. bluestone_mqtt_tencent.py

    Tencent MQTT客户端管理工具,负责启动MQTT,监听回调并解析回调指令和参数,根据解析出的回调指令和参数执行相对应的命令。

  9. bluestone_pwm.py

    PMW控制逻辑,负责打开和关闭PMW端口,可以模拟实现呼吸灯。

  10. bluestone_socket.py

    用于初始化TCP/IP socket,连接客户端并接收和发送指令,未完待续。

  11. bluestone_temperature.py

    采集板载温湿度传感器的数值。

  12. bluestone_timer.py

    管理定时器,按照一定参数启动或停止定时器。

  13. bluestone_uart.py

    管理串口,按照传入的参数启动串口,读取串口参数并解析命令,如果有满足条件的命令就去执行,包括重启系统等。

  14. bluestone_config.json

    默认配置文件,文件内有关于UART0~2的配置参数和Tencent MQTT的启动参数,用户可以按照自己的实际情况进行修改。

  1. {
  2. "uart2": {
  3. "parity": 0,
  4. "baud_rate": 115200,
  5. "flow_control": 0,
  6. "stop_bits": 1,
  7. "data_bits": 8
  8. },
  9. "mqtt_tencent": {
  10. "product_id": "输入你在腾讯云上的产品编号",
  11. "pub_topic": "event",
  12. "product_secret": "输入你在腾讯云上的产品密钥",
  13. "sub_topic": "control"
  14. },
  15. "uart1": {
  16. "parity": 0,
  17. "flow_control": 0,
  18. "baud_rate": 115200,
  19. "stop_bits": 1,
  20. "data_bits": 8
  21. },
  22. "uart0": {
  23. "baud_rate": 115200,
  24. "parity": 0,
  25. "flow_control": 0,
  26. "stop_bits": 1,
  27. "data_bits": 8
  28. }
  29. }

4 定时器

传入指令如下:

  1. {
  2. "timer1": {
  3. "status": 1,
  4. "period": 5000,
  5. "mode": 1,
  6. "callback": "aht10"
  7. }
  8. }
  • 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

控制指令如下:

  1. {
  2. "gpio": {
  3. "gpio1": 1,
  4. "gpio2": 1,
  5. "gpio3": 0,
  6. "gpio4": 1,
  7. "gpio5": 1,
  8. "gpio6": 1,
  9. "gpio7": 1,
  10. "gpio8": 1,
  11. "gpio9": 0,
  12. "gpio10": 1,
  13. "gpio11": 0,
  14. "gpio12": 1,
  15. "gpio13": 1,
  16. "gpio14": 1
  17. }
  18. }
  • gpio: 表示当前指令是用于控制GPIO的;
  • gpio1: 表示控制GPIO1号引脚,0表示低电平,1表示高电平,以此类推;

7 UART

  1. {
  2. "uart1": {
  3. "baud_rate": 115200,
  4. "data_bits": 8,
  5. "flow_control": 0,
  6. "parity": 0,
  7. "stop_bits": 1
  8. }
  9. }
  • uart1: 表示当前串口编号,支持uart0,uart1,uart2;
  • baud_rate: 串口波特率;
  • data_bits: 串口数据位;
  • flow_control: 流量控制;
  • parity: 校验位;
  • stop_bits: 停止位;

注:串口参数配置成功后系统会自动重启。

8 FOTA

  1. {
  2. "fota": {
  3. "mode": 0,
  4. "url": "http://app.com/download"
  5. }
  6. }
  • 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驱动 ,如下图:

注意操作系统,目前来看是没有找到 MacLinux 下的驱动,暂不知道是没有提供还是根本不需要。

双击安装即可。

  • 验证是否安装成功

将电脑与开发板连接,会发现电源状态灯亮起(为红色),之后长按开机按钮,大约 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 版权信息

MIT

支持移远EC600S的SmartDtu平台,基于QuecPython的更多相关文章

  1. NB-IoT移远BC95使用小结

    移远-BC95-测试前准备 1.  设备连接主串口,串口调试助手波特率使用9600,选择对应的端口号.在串口调试助手上输入AT发送,查看是否有OK返回. 如果想修改波特可以通过下面的AT来修改 AT+ ...

  2. Swift游戏实战-跑酷熊猫 09 移除场景之外的平台

    上一节,我们写出了一个疯狂产生平台的东西.所谓上帝欲使其灭亡,必先使其疯狂.所以太疯狂都不是什么好事,所以我们要采取一些措施,例如移除场景之外的平台.btw如果哪天你觉得自己的老板行为乖张,难以理喻. ...

  3. centos平台基于snort、barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总

    centos平台基于snort.barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总 原创 2016年12月19日 01:20:03 标签: centos / snort  ...

  4. .net平台 基于 XMPP协议的即时消息服务端简单实现

    .net平台 基于 XMPP协议的即时消息服务端简单实现 昨天抽空学习了一下XMPP,在网上找了好久,中文的资料太少了所以做这个简单的例子,今天才完成.公司也正在准备开发基于XMPP协议的即时通讯工具 ...

  5. RK3399 4G模块移远EC20移植调试

    转载请注明出处:https://www.cnblogs.com/lialong1st/p/11266330.html CPU:RK3399 系统:Android 7.1 1.通过串口打印或者adb获取 ...

  6. 洪强宁:宜信PaaS平台基于Calico的容器网络实践

    洪强宁:宜信PaaS平台基于Calico的容器网络实践   本文内容来自由七牛云主办的ECUG Con,独家授权InfoQ整理完成 容器云面临的网络挑战 在传统的IDC的架构里面网络是很重要的事情,在 ...

  7. 云知声 Atlas 超算平台: 基于 Fluid + Alluxio 的计算加速实践

    Fluid 是云原生基金会 CNCF 下的云原生数据编排和加速项目,由南京大学.阿里云及 Alluxio 社区联合发起并开源.本文主要介绍云知声 Atlas 超算平台基于 Fluid + Alluxi ...

  8. 【单片机】NB-IoT移远BC28调试笔记

    一.入网总体思路 入网思路是参考 <Quectel_BC95&BC35-G&BC28_应用设计指导_V1.1.pdf>来做的.流程如图所示: 二.具体调试细节3.1 AT+ ...

  9. [原创]移远RM500U-CN模组驱动移植

    1. 简介 中国广电正式放号了,为了支持广电700MHz的5G基站,需要换用新的5G模组.移远通信的RM500U模组正好可以满足我们的使用要求; 我们选用该模组的原因:双卡单待 支持SIM卡热插拔 支 ...

随机推荐

  1. web前端学习笔记(二)---Django

    [前言]前面(一)学习了web的基础知识,介绍到了MVC,项目使用一个Django框架. Django book:https://code.ziqiangxuetang.com/django/djan ...

  2. 网络地址转换NAT的两种模式(概念浅析)& IP溯源

    由于全球IPv4地址越来越少.越来越贵,因此大到一个组织,小到一个家庭一个人都很难获得公网IP地址,所以只能使用内网地址,从而和别人共享一个公网IP地址.在这种情况下,NAT技术诞生. 翻译 NAT( ...

  3. KeyboardDemo - Android身份证号、车牌号快捷输入键盘

    Android身份证号.车牌号快捷输入键盘 项目地址 Github 键盘部分在 keyboard module 中 键盘与EditText绑定参照 MainActivity

  4. Omega System Trading and Development Club内部分享策略Easylanguage源码 (第二期)

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 我们曾经在前文(链接),为大家分享我们精心整理的私货:"System Trading and ...

  5. WebRTC 音视频同步原理与实现

    所有的基于网络传输的音视频采集播放系统都会存在音视频同步的问题,作为现代互联网实时音视频通信系统的代表,WebRTC 也不例外.本文将对音视频同步的原理以及 WebRTC 的实现做深入分析. 时间戳 ...

  6. 如何在 Istio 中支持 Dubbo、Thrift、Redis 以及任何七层协议?

    赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher管理委员,Istio 项目贡献者, Aerika 项目创建者 ,热衷于开源.网络和云计算.目前主要从事服务网格的开源和研发 ...

  7. C语言II博客作业01

    这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4 这个作业要求在哪里 https://edu.cnblogs.com/campus/zs ...

  8. python基础学习之元组和字典的功能方法

    什么是元组?(tuple) emmmmmm,这个没必要深究吧,就是一排'元素',一行 格式: a = (1,2,3,4,5,6,7,8,9)用小括号表示的,极为元组. 其有序,且不可更改,可以对比st ...

  9. HDFS设置配额的命令

    1 文件个数限额 #查看配额信息 hdfs dfs -count -q -h /user/root/dir1 #设置N个限额数量,只能存放N-1个文件 hdfs dfsadmin -setQuota ...

  10. Docker备份Gitlab容器以及还原数据

    概述 今天,我们将学习如何快速地对docker容器进行快捷备份.恢复和迁移.Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包.发布和运行这些应用.它使得 ...