Files
TencentOS-tiny/doc/26.TencentOS_tiny_EVB_WL_Quick_Start.md
2020-07-31 17:14:28 +08:00

439 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TencentOS tiny定制开发板EVB_WL快速入门指南
| Revision | Date | Description |
| -------- | --------- | ----------- |
| 1.0 | 2020-7-28 | 文档初版 |
## 1. 定制开发板EVB_WL硬件简介
### 1.1 开发板简介
EVB_WL是腾讯物联网操作系统TencentOS tiny 团队联合意法半导体、瑞兴恒方、智芯云技术设计的一款loRaWAN OpenCPU评估板用于TencentOS tiny 基础内核和LoRaWAN物联网组件功能体验和评估。
开发板功能图如下所示:
![](image/EVB_WL_guide/EVB_WL.png)
### 1.2 开发板特性
**CPU** 使用瑞兴恒方的RHF0M0E5模组模组内部集成意法半导体STM32WLE5芯片单芯片集成ARM® Cortex®-M4 48MHz内核和SX126x IP采用LoRa®扩频调制技术LoRa®接收灵敏度高达-148dBm通信距离达1KM10KM内置高效率PA功耗更低最大支持+22dBm输出并在0-22dBm范围内可配置。
**电源特性** Micro USB接口5V供电内部有5V转3.3V的DCDCMCU供电电压为3.3V系统IO电压也为3.3V
**按键** :一个复位按键
**LED指示灯** :上电指示 LED红色
**调试接口** SWD外接ST-LinkUART1串口连接PC/LUART串口
**传感器扩展接口E53 Interface** 支持E53传感器案例扩展板支持UART、SPI、IIC、GPIO、ADC、DAC等
**操作系统支持** TencentOS tiny
### 1.3 开发板硬件详解
#### 1.3.1 电源电路
Micro USB 提供5V电源由于MCU供电电压是3.3V所以这里采用AMS1117进行DC-DC电压转换输出调节至3.3V,让开发板正常工作。
![](image/EVB_WL_guide/power_sch.png)
#### 1.3.2 CPU最小系统电路
单片机最小系统或者叫最小硬件单元电路指用最少元器件组成的单片机可以正常工作的系统。最小系统基本由电源、单片机、晶振、复位电路、程序烧录接口组成电源使用3.3V直接供电但是EVB_WL的晶振电路封装在瑞兴恒方模组内部了所以这里只能看到模组引脚连接和复位电路原理图如下
![](image/EVB_WL_guide/mcu_sch.png)
#### 1.3.3 USB电平转换电路
USB电平转换电路是用于MCU和PC通信的场景中。PC机上的通信接口使用USB接口相应的电平逻辑需要遵照USB电平规则而MCU的串行通信接口是串口相应电平需要遵循TTL原则。为了使两者可以互相通信就需要一个电平转换器EVB_WL上使用了CH340芯片作为转换器CH340外围只需要接很少的元器件即可以实现USB总线转接使用非常方便也广泛运用在USB转TTL工具上电路如下
![](image/EVB_WL_guide/uart_sch.png)
#### 1.3.4 E53 传感器扩展接口
开发板设计有E53接口的传感器扩展板接口该接口可兼容所有E53接口的传感器扩展板实现不同物联网案例场景的快速搭建。该接口可接入UART、SPI、I2C、ADC等通信协议的传感器其原理图如下图所示。
![](image/EVB_WL_guide/e53_interface.png)
传感器扩展板有E53_SC1智慧城市灯光模块、E53_SF1智慧消防烟感模块、E53_IA1智慧农业模块等如需要更多传感扩展板可自行找合作供应商物联网俱乐部购买
如下图:
![](image/EVB_WL_guide/sensor_install.png)
#### 1.3.5 开发板调试烧录口
开发板预留了SWD程序下载调试口还有UART1和低功耗串口LP_UART方便用户下载调试程序使用串口。
![](image/EVB_WL_guide/debug_sch.png)
#### 1.3.6 连接Micor USB线
Micro USB线的功能是供电及调试将线一头与开发板的Micro接口连接另一头接到电脑的USB口上。
![](image/EVB_WL_guide/usb_connect.png)
#### 1.3.7 连接ST-Link程序下载器
把开发板内提供的配套下载线接在开发板的程序下载接口SWD口另一端与ST-Link程序下载器对应引脚相连注意连接紧密防止接触不良红色为VCC一定参考下图进行连接不要接错。
![](image/EVB_WL_guide/stlink-connect.png)
## 2. 定制开发板EVB_WL软件开发环境准备
### 2.1 MDK软件介绍
MDK 即RealView MDK 或MDK-ARMMicrocontroller Development kit是 ARM 公司收购Keil公司以后基于uVision界面推出的针对ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M2、Cortex-M3、Cortex-R4等ARM处理器的嵌入式软件开发工具。MDK-ARM 集成了业内最领先的技术,包括 uVision4 集成开发环境与 RealView 编译器RVCT。支持 ARM7、ARM9 和最新的Cortex-M3/M1/M0 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟,性能分析等功能,与 ARM 之前的工具包 ADS 等相比RealView 编译器的最新版本可将性能改善超过 20%。
Keil公司开发的ARM开发工具MDK是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件支持所有基于ARM的设备能帮助工程师按照计划完成项目。
### 2.2 MDK安装
登录MDK官网下载MDK5软件下载地址
http://www2.keil.com/mdk5 或者 https://www.keil.com/download/product/
下载的版本最好在5.24以上本开发教程以5.24版本为例双击MDK524应用程序文件点击next>>。
![](image/EVB_WL_guide/mdk01.png)
打上 I agree前面的勾勾即是同意一些安装协议。点击next>>。
![](image/EVB_WL_guide/mdk02.png)
选择安装路径可以默认也可以安装在我们自己建立的文件夹下。点击next>>。
![](image/EVB_WL_guide/mdk03.png)
这里填写的是我们的一些信息填写完整后继续next>>。
![](image/EVB_WL_guide/mdk04.png)
然后等待安装完成即可。
![](image/EVB_WL_guide/mdk05.png)
安装完成点击Finish。
![](image/EVB_WL_guide/mdk06.png)
然后会跳出来这个界面这个我们后面再讲先点OK把弹框都叉掉。
![](image/EVB_WL_guide/mdk07.png)
激活MDK导入License,激活MDK后便可使用了。
![](image/EVB_WL_guide/mdk08.png)
![](image/EVB_WL_guide/mdk09.png)
特别提示一定要输入License激活MDK软件建议购买正版License。
### 2.3 MDK安装
安装完MDK后我们需要安装开发套件中单片机型号对应的Pack。
**安装方式一** 登录官网http://www.keil.com/dd2/pack/
下载Keil.STM32WLxx_DFP.1.0.0.pack 后安装,如下图
![](image/EVB_WL_guide/mdk_pack01.png)
**安装方式二** MDK软件上在线安装
打开软件在导航栏打开Pack安装界面然后选择ok选项。
![](image/EVB_WL_guide/mdk_pack02.png)
![](image/EVB_WL_guide/mdk_pack03.png)
进入在线安装界面选着STM32WLXX Pack,点击Install进行安装。
![](image/EVB_WL_guide/mdk_pack04.png)
至此我们开发板的单片机程序开发环境已经搭建完毕重启MDK软件就可以使用了。
### 2.4 ST-Link驱动安装
前面讲了开发板单片机程序的开发环境的搭建但是为了将程序烧录到开发板中我们还需要使用仿真器。我们这套开发板选用ST公司的ST-Link V2仿真器进行开发板程序的烧写和仿真下面介绍ST-Link驱动的安装及环境搭建。
在ST官网下载ST-Link驱动
https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stsw-link009.html
驱动有2种 32位电脑系统安装“dpinst_x86”、64位电脑系统安装“dpinst_amd64”
![](./image/EVB_WL_guide/development_env_stlink_driver_file.png)
运行对应的驱动安装ST-Link V2驱动程序。安装路径尽量保持默认路径。
![](./image/EVB_WL_guide/development_env_stlink_driver_install.png)
安装完成后, 将ST-Link通过USB接口连入电脑。打开“设备管理器”。若看到如下图所示表示驱动安装成功。
![](./image/EVB_WL_guide/development_env_stlink_driver_ok.png)
这里提醒 2 点:
1 各种 windows 版本设备名称和所在设备管理器栏目可能不一样,例如 WIN10 插上STLINK 后显示的是 STM32 STLINK。
2 如果设备名称旁边显示的是黄色的叹号,请直接点击设备名称,然后在弹出的界面点击更新设备驱动
至此, ST-Link 驱动已经安装完成。接下来大家只需要在 MDK工程里面配置一下 ST-Link即可。
### 2.5 编程软件(MDK)配置
安装驱动成功后打开MDK软件配置程序烧写和仿真的环境。
点击进入工程配置界面按纽,进入工程配置界面。
![](./image/EVB_WL_guide/development_env_mdk_config_click.png)
选择Debug选项进入仿真器设置界面。
![](./image/EVB_WL_guide/development_env_mdk_config_debug.png)
下拉仿真器选择列表选着ST-Link Debugger并勾选右侧Use,点击Settings进入ST-Link V2仿真器配置界面。
![](./image/EVB_WL_guide/development_env_mdk_config_debugger.png)
开发板设计的程序烧录方式为SW此处Unit选择ST-Link/V2,且Port选择SW,并确认右侧框内是否检测出SW设备点击<确认>保存配置。
![](./image/EVB_WL_guide/development_env_mdk_config_debugger_setting.png)
### 2.6 CH340串口驱动安装
互联网搜索下载CH340 串口芯片的驱动
安装方法:打开驱动安装程序点击安装即可。
![](./image/EVB_WL_guide/ch340_file.png)
![](./image/EVB_WL_guide/ch340_driver_install.png)
注:若安装失败,请先点击卸载,后点击安装。
### 2.7 串口调试助手的安装与使用
工具下载: http://www.daxia.com/download/sscom.rar
安装方法串口调试助手sscom5.13.1是免安装的,解压出压缩包即可直接使用。
![](./image/EVB_WL_guide/development_env_sscom.png)
根据PC和终端之间的连接选择正确的串行端口。
打开电脑的设备管理器在端口列表可以看到PC与开发板连接的端口号。
![](./image/EVB_WL_guide/development_env_sscom_port.png)
我这里显示的是COM6所以要在sscom工具中选择COM6开发板程序波特率设置为115200所以我在sscom串口工具中选择115200波特率。
## 3. 基于TencentOS tiny的STM32WL LoRaWAN 接入腾讯云IoT Explorer指引
基于TencentOS Tiny EVB WL要完成腾讯云IoT Explorer对接需要完成两个部分的工作。
一是腾讯云IoT explorer 上完成项目、产品、设备创建、参数配置
二是基于TencentOS Tiny完成LoRaWAN应用开发向腾讯云上报业务数据。
### 3.1 腾讯云IoT explorer上创建项目、产品、设备
#### 创建项目和产品
1. 登录 [物联网开发平台控制台](https://console.cloud.tencent.com/iotexplorer),选择【新建项目】。
2. 在新建项目页面,填写项目基本信息后,单击【保存】
- 项目名称输入“LoRa 温湿度演示”或其他名称。
- 项目描述:按照实际需求填写项目描述。
3. 项目新建成功后,即可新建产品。
![](./image/EVB_WL_guide/IoT_Explorer_new_project.png)
#### 新建产品
1. 进入该项目的产品列表页面,单击【新建产品】。
2. 在新建产品页面,填写产品基本信息。
- 产品名称输入“LoRa温湿度监测仪”或其他产品名称。
- 产品类型:选择“用户自定义”。
- 设备类型:选择“设备”。
- 认证方式:选择“密钥认证”。
- 通信方式选择“LoRaWAN”。
- 数据协议:选择“自定义透传”。
![](./image/EVB_WL_guide/IoT_Explorer_new_product.png)
3. 产品新建成功后您可在产品列表页查看“LoRa温湿度监测仪”。
#### 创建数据模板
单击产品名称,进入产品配置页,在【自定义功能】配置项下,单击【新建功能】,自定义产品功能。
这里我们就不一一定义数据模板了直接导入下面的json代码:
```
{
"version": "1.0",
"profile": {
"ProductId": "F2G256SY2G",
"CategoryId": "1"
},
"properties": [
{
"id": "temperature",
"name": "温度",
"desc": "",
"mode": "r",
"define": {
"type": "int",
"min": "-100",
"max": "155",
"start": "0",
"step": "1",
"unit": "摄氏度"
},
"required": false
},
{
"id": "humidity",
"name": "湿度",
"desc": "",
"mode": "rw",
"define": {
"type": "int",
"min": "0",
"max": "100",
"start": "0",
"step": "1",
"unit": "%"
},
"required": false
},
{
"id": "period",
"name": "上报周期",
"desc": "",
"mode": "rw",
"define": {
"type": "int",
"min": "0",
"max": "3600",
"start": "0",
"step": "1",
"unit": "秒"
},
"required": false
}
],
"events": [],
"actions": []
}
```
![](./image/EVB_WL_guide/IoT_Explorer_new_data_template.png)
导入完成后,如下图所示:
![](./image/EVB_WL_guide/IoT_Explorer_new_data_template01.png)
#### 配置 LoRaWAN 参数
在设备开发页面中,按需调整 LoRaWAN 参数配置。本示例中使用默认的 OTAA 配置。
![](./image/EVB_WL_guide/IoT_Explorer_product_LoRa_PramSet.png)
#### 设备数据解析
在设备开发页面中,按需调整设备数据解析。由于 LoRa 类资源有限设备不适合直接传输 JSON 格式数据,使用“设备数据解析”可以将设备原始数据转化为产品 JSON 数据。
##### 设备数据协议
在本示例中设备上行数据共有3个包括温度、湿度、上报周期3个属性数据
##### 数据解析脚本
上行数据解析的脚本主函数为 RawToProtocol其带有 fPort、bytes 两个入参:
- fPort设备上报的 LoRaWAN 协议数据的 FPort 字段。
- bytes设备上报的 LoRaWAN 协议数据的 FRMPayload 字段。
脚本主函数的出参为产品数据模版协议格式的对象。
在上行数据解析部分javascript 示例代码如下:
```javascript
function RawToProtocol(fPort, bytes) {
var data = {
"method": "report",
"clientToken" : new Date(),
"params" : {}
};
data.params.temperature = bytes[0];
data.params.humidity = bytes[1];
data.params.period = bytes[2] | (bytes[3] << 8);
return data;
}
```
下行数据解析的脚本主函数为 ProtocolToRaw其入参为产品数据模版协议格式的对象。
在下行数据解析部分javascript 示例代码如下:
```javascript
function ProtocolToRaw(obj) {
var data = new Array();
data[0] = 5;// fport=5
data[1] = 0;// unconfirmed mode
data[2] = obj.params.period & 0x00FF;
data[3] = (obj.params.period >> 8) & 0x00FF;
return data;
}
```
![](./image/EVB_WL_guide/IoT_Explorer_new_product_script.png)
#### 创建测试设备
在设备调试页面中,单击【新建设备】,设备名为 WL_DEV_001。
DevEUI、APPKEY等信息可从 WL 开发板 终端设备获取或者设置,云平台和终端要保持一致。
![](./image/EVB_WL_guide/IoT_Explorer_new_dev.png)
#### 查看设备状态
1. 保持 LoRa 节点和 LoRa 网关 为运行状态。
2. 进入【控制台】>【产品开发】>【设备调试】,可查看到设备 "WL_DEV_001" 。
3. 单击【调试】,可进入设备详情页。
![](./image/EVB_WL_guide/IoT_Explorer_dev_status.png)
4. 单击【设备属性】,可查询设备上报到开发平台的最新数据及历史数据。
- 设备属性的最新值:会显示设备上报的最新数据。
- 设备属性的更新时间:显示数据的更新时间。
![](./image/EVB_WL_guide/IoT_Explorer_dev_data.png)
5. 单击【查看】,可查看某个属性的历史上报数据。
#### 查看设备通信日志
单击【设备日志】,可查询该设备某段时间范围的所有上下行数据。
- 上行:上行指设备端上报到开发平台的数据。
- 下行:下行指从开发平台下发到设备的数据。
![](./image/EVB_WL_guide/IoT_Explorer_dev_data_log.png)
### 3.2 基于TencentOS Tiny EVB_WL开发板完成LoRaWAN应用开发
#### 下载源码
TencentOS tiny官方开源仓下载源码地址为
https://github.com/Tencent/TencentOS-tiny
进入 < TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan> 目录打开TencentOS_tiny.uvprojx工程
![](./image/EVB_WL_guide/MDK_LoRa_Project_open.png)
#### 编译lorawan工程
打开工程后我们在左侧的工程文件导航页面可以看到WL的LoRaWAN相关源码这里创建了两个TencentOS tiny的任务一个负责处理LoRaWAN MAC层协议一个处理业务。开发者在编译前需要配置设备相关信息。
打开commissioning.h头文件在文件中输入与前文IoT Explorer平台对应的device EUI和APP KEY按如下图所示的格式
![](./image/EVB_WL_guide/LORA_EUI_KEY.png)
基于TencentOS Tiny的WL开发板的业务流程如下
1. main函数中完成 板级初始化,主要是 board_init函数中初始化好基础外设和LoRa射频及LoRa协议栈其中MX_LoRaWAN_Init函数会完成LoRaWAN协议的基础配置比如选择CLASS、配置通道、配置ADR等
2. main函数中完成内核初始化、创建主线程入口application_entry启动内核
3. application_entry函数中再创建lora_mac_process_task
4. application_entry函数中调用lw_send函数向LoRa网关和云端上报终端数据。示例中是模拟了3个元数据发送开发者可以修改发送自己想发送的数据配合腾讯云IoT平台设计好对应的数据模板即可。
修改设备信息后,开发者按照下图指示,点击编译按钮即可编译工程,如图:
![](./image/EVB_WL_guide/MDK_Complie.png)
#### 下载运行
首先需要配置下载环境
![](./image/EVB_WL_guide/MDK_settings.png)
按下图所示配置下载参数
![](./image/EVB_WL_guide/download_debug.png)
![](./image/EVB_WL_guide/download_flash.png)
编译完成后点击如图所示”LOAD”按钮下载程序即可。
![](./image/EVB_WL_guide/download_go.png)
#### 查看运行结果
连接好串口在PC的串口助手中可以看到TencentOS Tiny EVB_WL开发板打印LoRa业务运行的相关日志如下图所示
![](./image/EVB_WL_guide/lorawan_ok.png)
同时需要查询腾讯云IoT Explore上的设备状态和上报的数据项如图所示
![](./image/EVB_WL_guide/WL_LoRa_Data.png)
写在结尾的话感谢大家使用TencentOS Tiny本文难免有描述不清晰的地方如果有任何问题欢迎加入TencentOS Tiny 的官网QQ技术群进行交流基于TencentOS Tiny相关的项目合作请邮件联系 supowang@tencent.com
![](./image/EVB_WL_guide/TencentOS_Tiny_qq.png)