【TSC_WL_EVK STM32WL评估板】上手体验' G% v9 O8 u7 d3 B) o- V# L
一、前言
) X+ P$ Y$ U" Y6 Q( |最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!
% ], k0 m. k( J/ I2 j8 D1 r2 m通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:
4 ^( K( j# z% E, A0 Q1 W4 k! N3 f: `- K0 v" b9 [0 F* ^
: I; b. I0 `9 j/ ]5 r% v3 C% ?
接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md7 P6 w* [3 a1 p. C4 u/ w
o1 G% a* W0 ~
二、开发环境的搭建
( }( a1 }6 F! g首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,
- p- U& N# F: T, z9 l$ O
0 e8 f+ a( Q% T6 [三、腾讯云IoT Explorer 设置
. Z3 u3 Z0 O$ v/ y; A6 }登录腾讯物联网开发平台控制台,点击新建项目,$ V& K4 l7 v, G6 g
% M- @4 x$ u& n3 u" n
3 W3 E6 J4 t! I5 s
, y0 |2 m; |2 \7 m# D然后输入项目名称和项目描述,点击保存
, g/ I$ c& r4 ]- l9 n; i" d2 ]" ]2 w
5 j E/ t! ^9 o9 U2 k4 P# A
7 y8 H n4 f# f) I项目新建成功后我们点击其进入( m' V" c i: ^$ K! F
4 Q M6 n' I) g! ?
+ t& m8 s( a& `# j. [4 u. R: L8 i+ q' t* U3 F8 v2 i
然后点击新建产品4 ~9 c+ a& H# s% ^$ s
* P1 S1 p$ K: F& o
& I+ M* ~+ Y$ }/ k; U1 Y
3 ^3 |: Y) D" k2 A+ ^然后填写产品基本信息如下所示,点击保存即可
- R! r% p+ y* f
' @" ~2 }; o1 ]! @: @7 h# ]& L6 K f
+ @! t1 P' L; i q1 k产品新建好后,点击进入产品,开始产品配置
6 q7 v; q2 y+ O$ i& J7 Q1 a/ ]/ K- Q2 }8 O& z) a: A
; S+ s' D' S0 H7 F
! a- {9 s0 ]9 `% H2 k" n4 C6 C在产品配置页,点击【导入JSON】! A% T% u1 U/ ~3 h; j1 S) X
! n: b7 c2 |' C& K9 V. z
8 l: ^! X; D8 a# |3 T! {) A7 T
% ~+ I. }# J7 X6 `; d- j填入的JSON代码如下,填入后点击【导入】即可,
9 D R; J/ F- H) Y& h
: `# v, T7 H4 V( P0 x- {
9 d; O" N8 ^9 n5 |3 S7 J: B - "version": "1.0",
; t, x: e8 h) {6 ^ - "profile": {" G# [0 K# F& w
- "ProductId": "F2G256SY2G",) g% o2 k# l b
- "CategoryId": "1"; g Y& {: W$ \) k7 }
- },
4 M1 \3 ~" W3 P0 w }" u% ^" D - "properties": [4 ]7 N4 q G" g/ d0 r5 K8 q
- {
! [9 c9 d% y* Q& ]1 S3 q% d - "id": "temperature",' d: L% K8 j w( ~5 x k Z% i" E
- "name": "温度",
; i* C/ @+ r! k. E9 v - "desc": "",
, P j% e8 }1 Z$ ~; |. t - "mode": "r",
0 e) r/ W9 ]6 I1 K6 _, Y3 l; J - "define": {
: M1 w. Q, L8 \ - "type": "int",. k' `* Y0 S. T, D/ b: I- }3 C
- "min": "-100",6 g( q6 @1 |6 }) A4 Q' [
- "max": "155",' w& Y1 \" R# u, g5 J4 j' K& A$ h
- "start": "0",6 {6 y% r. |4 M- ?. S; i& N4 c' c4 {* C
- "step": "1",
& u8 a3 z$ t3 |: i+ x0 ^$ P - "unit": "摄氏度"
7 t# z0 T+ F; j/ w7 z1 R - },6 v0 m W, Z" T# q/ h; V5 U
- "required": false
# @ T# L. W! q% V G7 R; X - },
7 O& z5 l6 u6 m, N2 ^& T - {
7 G( Z; b1 m4 V+ | - "id": "humidity",
+ ]+ a/ r; x' ]5 B - "name": "湿度",
* Y& V5 j5 {+ Q0 g8 u - "desc": "",
0 u+ I+ t* M; G R, z- T: m - "mode": "rw",' A6 p* k! @, ^' W& H, B
- "define": {5 t* I2 Z+ a8 q- O& S
- "type": "int",
" E( ]$ D( G7 `. r( n( |3 _ - "min": "0",
& {& I. V7 `! G- Q8 U; Y - "max": "100",
9 F% W& d8 j5 @5 s% m6 |) Z - "start": "0",
0 [3 Z( z; d& ~& W - "step": "1",4 }( O" s$ _7 ^/ e) I
- "unit": "%"- j& j& O7 `9 W1 E; D* L
- },; Y# a- l5 k+ {2 F$ k4 I7 }
- "required": false/ k. Y6 S; }* g2 X% C
- },
h- g6 f: o V3 Y. u - {
- z) Y7 m) O5 e- e - "id": "period",9 T: ^( H! M; y# t9 h' P
- "name": "上报周期",. o# X7 C. \: o
- "desc": "",
, s, C; h' j2 H6 x5 e) a* S+ x - "mode": "rw",2 O7 Q! B! A7 R+ N; U. m! s
- "define": {, E9 s$ g; A: X% A
- "type": "int",
% C. `, F" p9 [6 _" k8 P - "min": "0",
% e8 V9 w3 F; d0 s2 s4 n9 B - "max": "3600",
- R. a, C2 D$ F - "start": "0",
; U$ {( n1 m% f m0 { - "step": "1",- a- I h( w+ ]2 Z
- "unit": "秒"
4 G2 `3 D( A& K3 O3 J I& [ - },
1 |3 i: E$ |$ V' ^- O - "required": false
) m% N3 D& I8 O8 q+ N* H% v! o9 \ - }! _3 \- F7 s6 ~" n& y0 ^
- ],# H. p( g) S; W& ^- q" u
- "events": [],
. S* Z) m, x" D- [/ ]" r - "actions": []; U( f7 x' N9 y+ u" A& G/ P ]* h
- }
复制代码 0 y6 h8 a0 s) w& d
3 |5 U) `" G& G+ g! L$ u4 Z- `# _7 P( F; I$ M ]1 {
导入完成后,如下所示,然后就可以点击下一步了& d( J- F' W9 _+ \
) Q/ t2 `) O% `2 F1 }3 i7 e+ z; b1 \0 w: ~
# l" S; @7 F: g# w5 n9 ~在上行数据解析部分中,填入如下javascript 代码:- function RawToProtocol(fPort, bytes) {
" _& U3 w$ r% l - var data = {
5 Q: W$ ^& X+ u6 `. s - "method": "report",( O. {* `3 A! S/ q0 Z
- "clientToken" : new Date(),
* e, W. W( v [ - "params" : {}
! @, b; p* h! j - };! K4 n" Q9 _1 \+ I2 ?. ?
- data.params.temperature = bytes[0];( P9 b: S8 A( R8 R/ z: G5 x* y7 I
- data.params.humidity = bytes[1]; z# W2 b# t7 t7 [( G; ]5 c9 l& a
- data.params.period = bytes[2] | (bytes[3] << 8);' x6 c g: d) {! H' G- g# [
- return data;
8 g, x: v" v1 d8 s! X - }
复制代码 0 X7 `7 J9 v2 \+ S5 M
在下行数据解析部分中,填入如下javascript 代码:
/ y5 x4 x# ]* B4 o4 {1 W
* ~: S$ Y' |/ B. Q) p- function ProtocolToRaw(obj) {+ _$ O" f* }/ ~. h1 i% r3 r
- var data = new Array();" Q9 o6 s1 G9 B
- data[0] = 5;// fport=5& C P, w. w% _8 z0 }- ^5 `
- data[1] = 0;// unconfirmed mode
. a7 B1 Y0 {5 i& `5 d$ s; A - data[2] = obj.params.period & 0x00FF;
. c. g: u- {/ f- l6 E: R3 m/ p - data[3] = (obj.params.period >> 8) & 0x00FF;
+ f: R) M! T, b5 s( H& b1 d2 u - return data;
2 V; w8 G6 A9 P$ `% y6 R - }
复制代码 1 C/ M% z% N$ A' k' s. m S8 j5 L
填入完成如下
$ M6 c4 V+ L" l1 T
* M! y1 ~8 f* F, P3 R: y* a1 L" o% e* m4 ]* ^/ d# T1 w" B
" ]& Z) t, b' X# A7 l
然后点击提交,进行保存9 c& r X3 e* R6 o3 G3 B0 `
+ U8 v1 U8 {$ O) s7 D8 H
% h! {4 T, b4 E4 M5 o$ X, e. C( [& }% y1 }' f% d( Z
点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;
8 w! |; Q6 x% W) [
* I1 _# a# l+ `4 U
& n \8 x& }5 O, ?8 g3 ] f$ g" f! v: {
: a9 J; |' ]0 a% A三、编译程序,烧录固件
$ C( j- O* O4 ?首先从TencentOS tiny官方开源仓下载源码
- h5 s; ~. @5 @8 p) V6 V$ T
2 Y: }9 g# p7 V% P8 {4 `+ A拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:
+ C8 D8 B1 L+ Y3 U3 k6 p( a/ d$ }" L O a* F% g
( |$ A9 T' | S8 @6 R2 N' \ {
$ ?# s0 y C; l接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致' v" c' [8 ?/ U9 N: r* \1 c
: j ^4 l$ m+ f5 J9 |" x, ` I V
" o. V; e$ U0 k, c' S# b4 ]4 {* U; D' z
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7
, h2 J' D! \7 s$ g1 C @* l2 Z
! \0 C1 \' J/ z( b" r6 n/ [
2 L1 P% M# ?- E, C/ h$ y
3 Z7 `6 d( J3 K& c; w) D升级完成后重新插拔一次ST-Link,接下来做如下操作 S" d3 `4 r0 D" I, M
, v! H( e; ^ w4 m) p8 n
' M9 [3 R' A9 Y. g1 m
7 v6 J5 [5 x% j" q
然后再重新插拔ST-Link,编译链接下载即可成功:7 s8 w( ~* W9 I, B
' C/ W6 {+ w- U: `: a! b' c2 j# l% z! F! u |8 {
/ p) |" t& z( ?) D, S
" t. Z1 {- d% @% ^) N
|