【TSC_WL_EVK STM32WL评估板】上手体验, h; |( s+ l s! j7 ]9 V
一、前言0 @7 `$ h7 {+ s, l
最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!3 t( \; s+ l7 ?
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:" a2 |; _1 ^2 R/ ~+ R
: `+ n3 k& U ?
1 k5 J% ?3 `6 l4 I
接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md _7 S6 {, V8 ]: N# K0 g
6 X# k( ^5 z6 `! h! \. G: _& ^+ h
二、开发环境的搭建
8 N$ p M( x: G4 r4 j, \2 e/ E. ~ B首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,
: ~0 V5 v3 l- p6 H. ]& E& u# e8 E$ P* @8 ~ ~, w* t
三、腾讯云IoT Explorer 设置) Q; t9 B* n0 @
登录腾讯物联网开发平台控制台,点击新建项目,
( Z! b' u4 q6 T
9 @2 Z4 T* f' ^: U5 c
i8 }- B# |) {
1 [$ M$ G' H7 `: }6 e) k2 x3 X3 y" H然后输入项目名称和项目描述,点击保存7 i- _* K3 } l/ P8 Z7 i3 W9 E
$ ^* c! R" [) |( u4 S# X& i, W
3 ?' Y( p) q& g$ d
7 c4 S: ]6 @8 O" v+ n项目新建成功后我们点击其进入
& h& j* U3 Y9 v8 \, E, H( S
& J: Z& o+ D! |$ A2 r) U
/ P1 i: |9 m/ Y: S; y) D
+ s. C1 W7 r1 Q1 W. t然后点击新建产品
; v3 G# [+ j: O, y
, J( g: b7 _5 n* e
' @/ M* x3 z6 P v5 N5 }5 h! q5 x9 M; ]+ U$ u* Z$ k9 I0 J. [
然后填写产品基本信息如下所示,点击保存即可0 C2 i J# o1 [
" Q: h( u0 e: s! b* z; o& j8 y4 Y* P' [
3 j0 ^; t- n! \4 g" h" K8 @) z) E; [/ L `" d7 T/ Y1 t% E8 r
产品新建好后,点击进入产品,开始产品配置0 K4 g. g. f" D1 L
6 O W8 h7 B0 Y1 D( H; q" B) I$ P9 H" g/ H
, E( f- ]5 d* G4 l" F" m7 h \7 T在产品配置页,点击【导入JSON】( ~; a. J9 O* F
, W9 _2 O2 ]( I7 q, h9 I4 c1 e6 q7 W$ u' B0 r3 T9 {" n4 |
6 _$ A- `" l: k5 s3 p填入的JSON代码如下,填入后点击【导入】即可,0 a, p4 k. o# P1 b0 S5 l) N$ T
$ K3 V1 v5 q9 C
- {( E4 m3 B* T, c) S/ Z
- "version": "1.0",+ e" f7 N0 \- v- f) [ }
- "profile": {
$ k8 j% @- J1 H. ?- l2 k8 i! @" Q - "ProductId": "F2G256SY2G",9 Z7 W1 x9 ?& C: h. G5 N6 v+ e
- "CategoryId": "1"
, b+ H$ A, |8 c2 O* o0 w - },( ~+ U, R' `2 L# Y/ X q
- "properties": [4 ^' u( Q, @( o/ k! f9 }
- {6 p s: T- U: d$ c2 Y' y8 I1 a
- "id": "temperature",
6 Y( u* \' T; W8 D - "name": "温度",
3 m0 l7 ~$ U1 b0 w - "desc": "",
! w$ u: U7 n7 V' x1 z6 E3 J - "mode": "r",
* M. `- g. @3 { - "define": {- _5 q; N/ f* w& l, z
- "type": "int",
f6 g# w8 Y- d; W8 _ - "min": "-100",: j5 c) \: Q N8 q5 j
- "max": "155",
- r& I8 I$ J8 _0 ~9 x' a+ H - "start": "0",% j/ @8 |) r% V, d- j7 f* \
- "step": "1",
7 J; b# O$ [9 l( b" ~" K - "unit": "摄氏度"
# s2 u" q/ F7 K9 e/ F - },( ]3 F4 I/ H3 M# ^/ L
- "required": false
% b: K) o; L- N& H# Z% ]- c1 \4 A* C - },+ M% U$ W. u; ]# S: w+ G
- {1 A! l3 R" n9 j/ @7 K% X; ]2 ^$ z
- "id": "humidity",8 B0 P# y& n6 i j1 j$ T
- "name": "湿度",
( t5 n! n- O1 z/ a - "desc": "",) p. S `) M/ e0 Y- a# F: M4 a
- "mode": "rw",
, t) j# w; p- J0 { - "define": {% _7 f, K0 i- \, M d4 ?
- "type": "int",' f/ v- i' Q+ \' F
- "min": "0",
; t7 p8 i- ^5 q - "max": "100",% O- z& g9 O+ U& D: X
- "start": "0", R; z. S) v" ~. u' ?
- "step": "1",
8 n/ t7 E# F& |: h5 \7 O - "unit": "%"2 k: N. T) y! _7 B, W. Z
- },2 ]: {4 O/ v: s3 W* e. C0 ]
- "required": false
9 D& N8 a% t& W1 Z! k - },
7 O# [) q+ Z2 Z% R - {
/ j% m% {' I4 e( v6 U4 A* H' _ - "id": "period", k0 g5 O( v/ g& w" w
- "name": "上报周期",% D( |3 J" u% p2 _- A
- "desc": "",9 Z3 d# @, Q- X5 I5 G0 u
- "mode": "rw",3 D# `* ^* `+ Q ~
- "define": {6 q# j [3 Z! G2 l4 u, l) Q
- "type": "int",/ W9 I2 I' Y! ^6 |' T
- "min": "0",
! y A5 h" B; g7 }3 H' c9 y0 J - "max": "3600",8 Y# ]1 {& L$ |7 a
- "start": "0",
6 B' B, h, K" \% M& y. M: f# q - "step": "1",8 n, b& C, ~6 y7 z6 @$ b3 z
- "unit": "秒"8 h `' J6 _; w4 a( ~/ F
- },3 a# ?, o+ R4 D6 Z3 I8 I
- "required": false4 h, F0 e' ^; E1 o3 C
- }
9 K. g( k" H( P' j z - ],- z' @) v! v) X" t1 M
- "events": []," q0 B9 z, A' w% c; l
- "actions": [], o* u1 [5 k# c% ?& M) p3 p z+ X
- }
复制代码 * O/ S; j: V2 E" X+ f0 J
4 L# |% u: [# Y4 T% D" o8 j | N# Y1 _# E' N
导入完成后,如下所示,然后就可以点击下一步了6 R" C. d7 I. q m. u+ y
) r3 w2 f% H6 e8 c: i n3 B5 z! E% Z9 {: b0 P
3 X5 T, j6 d+ k7 D; n2 P
在上行数据解析部分中,填入如下javascript 代码:- function RawToProtocol(fPort, bytes) {
% D1 R: m* C) h6 y, T - var data = {
+ |8 @* i: E4 ~. ~1 y1 P - "method": "report",
4 a7 z" `& M6 p - "clientToken" : new Date(),
* K q1 D. T/ {3 h; i4 L ^+ z2 b - "params" : {}# p3 `( W, p5 r3 d1 G& B3 [% `
- };
3 {1 S. D6 i7 }! a# t4 ~$ @6 c0 ?% b - data.params.temperature = bytes[0];
5 C+ O% {5 Q4 L3 Q! W - data.params.humidity = bytes[1];) F1 ~7 L7 l8 ~, ^& R
- data.params.period = bytes[2] | (bytes[3] << 8);
7 w$ S3 J. X- \/ s0 r - return data;+ r; @, i) I3 c( E9 Y9 L/ ?% F
- }
复制代码 4 F+ l8 Q& @5 c+ X
在下行数据解析部分中,填入如下javascript 代码:
' X/ n* v- x: a5 }3 G: O; U
0 I, e* n( o$ B K' r- function ProtocolToRaw(obj) {
" P( S4 }2 Y H: V0 | - var data = new Array();
9 m, H# b! A) M; u - data[0] = 5;// fport=52 b% r6 f M7 ^
- data[1] = 0;// unconfirmed mode
5 n! C2 ]2 p$ z- H - data[2] = obj.params.period & 0x00FF;
% e2 H5 h5 _/ E - data[3] = (obj.params.period >> 8) & 0x00FF;/ [6 X9 M0 _- c& V2 j. [0 _
- return data;
9 Y5 |# V7 d2 e - }
复制代码 h! ^, F, h1 v7 e$ a: ?" T
填入完成如下
3 L+ h) L* i" e% w
8 |$ F- D+ g9 r' U. {8 |5 r6 R: d3 _# c% s' x
+ s3 ?1 |: ]; V3 I" c/ u6 h
然后点击提交,进行保存3 {/ j5 _0 ~6 J9 }! u# i
7 I- |8 Z5 i4 u
! \6 @9 z" i: g7 P; e% J
6 u( q- p. D I' h8 z3 u点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;( ?: ]2 u# v6 O. }/ V7 v; S* S; D& W
. t& n! N$ @3 B/ C9 i" f( z& e8 P2 F6 C2 N: }6 Y
; U3 b F8 @ a
三、编译程序,烧录固件2 ? X( b7 H1 Q7 u: A2 q3 u! G( z
首先从TencentOS tiny官方开源仓下载源码
) i1 [ ^ d" B" Q5 g3 `5 S6 | r8 G( J- S" m9 _6 G. j! V7 w
拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:
) b5 o9 n* S+ Z9 e# }
7 U" G! g; _* g. G1 x
- T' I( p- K. B5 ^! o1 e5 T2 B: ^ M9 Q& S7 P# @
接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致
7 y+ |% v+ G! |3 r# J2 k+ O
7 S; k% H: F2 g3 T6 v$ v2 o. }3 Q& `6 T& f0 u
: J4 D V" B' s) f* O) [! l
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7* w/ u3 L! {; h0 X
) g& x2 U' k. K( K5 I; D: p/ ~
4 z" _3 j- j8 |0 P% v
& K* o3 u, ^2 j2 A升级完成后重新插拔一次ST-Link,接下来做如下操作; w, h2 }1 {7 H, r7 _
+ K% D: `" V% a3 f6 Y" j( l* ?* F1 n ?9 U7 Z
/ a' I" \7 ?, f2 {然后再重新插拔ST-Link,编译链接下载即可成功:4 v9 L9 }: E2 v6 y3 [9 {$ |/ f& g
( s0 \3 G! z( `' Z( u( H5 [4 K6 g: `6 T1 |/ s
9 s8 x+ P; W2 a2 l% ]7 W" e W
) D8 s) k! y, V' y. n( | |