【TSC_WL_EVK STM32WL评估板】上手体验( t% G. a/ z/ o; w$ M
一、前言
( E2 e7 _0 Q6 x1 W最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!' s" i2 }: D+ `: A! G1 a5 Y
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:' b" y: G% n1 P
I/ V3 U; Q# d/ c# \
6 j V# x% P/ [& Y. \* T5 b# F& k% C$ P* E
接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md8 N1 S" s/ f$ F ]6 l* C
. I9 _% x# G3 |7 e- I1 T' W% J二、开发环境的搭建' a% H5 Y3 P2 s' l+ m U' w% ] X" o
首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,, f; l6 K/ ~% F0 J/ N2 S
" S: Y3 z2 U. C' G( U% i
三、腾讯云IoT Explorer 设置7 N. C6 i( g( l1 X& l- S9 K
登录腾讯物联网开发平台控制台,点击新建项目,$ S* v' Y# n* V! K3 w- |
$ ]: d/ m) N7 ^% P! P- R: z9 { `8 K
; `3 S5 B/ I( K: @- n- z$ `" p* U
然后输入项目名称和项目描述,点击保存$ h$ @: I7 ?1 a: t; e$ K2 R
( D: B6 B- V( D6 m
! T X( d4 e8 i( _2 _% V
0 `! l; a/ Z( Y2 W* q/ A1 z项目新建成功后我们点击其进入$ A$ E3 {7 j* _* b
0 y+ m0 Y; A7 [. K3 q
# `, s, N2 y& U+ @' P3 T
0 B+ d2 X9 f" [: n% V" C; j! B
然后点击新建产品! U- ?5 L+ T- E: s0 f c4 g( x6 ?0 O
/ t& C) j3 P6 ?1 N U5 _
0 h3 a. Q( Q7 e/ {6 K
% r: c" ]6 M/ b/ E. o$ G1 [
然后填写产品基本信息如下所示,点击保存即可$ K. q0 Y$ ^8 H% }& _! q( b2 [& A
' f8 z5 @8 I/ b2 M/ k
, M5 v9 g$ B. I1 E# N% ^/ a% H4 B/ b) D5 l$ {! d8 g
产品新建好后,点击进入产品,开始产品配置
( g. k: q2 N' N, F+ y
, c+ M! }$ Y' ]1 ]4 S* ^
- F' ^* [3 W4 C. a, v
( K; r: ~8 [0 R在产品配置页,点击【导入JSON】
9 x" O. A# x% Y/ I) h$ ?, V' a0 Q4 u' Z3 Q
% f) t' P, p: w) s' d
+ Q5 Q7 d: h0 u, X8 w( {# z( ?: B5 a填入的JSON代码如下,填入后点击【导入】即可,
+ k! g: R# L7 a( ?. L8 I- Z! P5 [+ Q4 ^
- {
& ~8 Z8 t- g' @8 m; a" Y: i - "version": "1.0",
5 V1 q4 z% [) O1 x U% B - "profile": {2 _3 S2 n$ s3 |) U
- "ProductId": "F2G256SY2G",
8 I6 L7 G- v7 H+ P4 h I. Q - "CategoryId": "1") S7 j# A" r' \# Q1 v
- },
+ l' L/ M' L1 v, Z - "properties": [
' v6 H2 [# S. Y# I; M - {
8 \; x2 L- V. d; U! e* i$ m( G$ t3 O- V - "id": "temperature",6 u0 Y9 Y+ J, s7 D! T) v/ c9 [, d
- "name": "温度",
5 h+ A) J/ ~2 T, O4 l - "desc": "",
, g/ G4 T7 d: u2 A+ z - "mode": "r",
, G# S( j4 c8 m( b! W& w1 P - "define": {4 ~/ x7 `8 T6 t) W, i
- "type": "int",
2 m/ E" a! Z& Z j - "min": "-100",, u) c" o7 H- L1 F" _5 w
- "max": "155",* Q: O, h( [8 A
- "start": "0"," c, ]# J8 y+ [
- "step": "1",
/ S5 _! u# g5 @; Y - "unit": "摄氏度"9 _$ V- V0 v" t# a1 @5 B+ ?, q
- },
4 r. U6 ^) D" y6 {, M2 c - "required": false2 |0 f+ W* S6 z0 }+ V+ j; c& o
- },
8 O" x) ?- z0 E% |4 S - {
5 ]1 \3 Y6 e& Z9 m; D1 D - "id": "humidity",# ]8 q) e% |1 |9 _8 Z* s
- "name": "湿度",
; x6 L* J+ D" q8 X3 w) `* c) m - "desc": "",
/ V- X8 S9 O4 u7 N - "mode": "rw",
% I$ U" i; C' A) t& f) I - "define": {/ g0 p2 Z8 ?: J& V
- "type": "int",5 `4 K U0 F( q7 k( A
- "min": "0",: f, W3 h6 c2 H4 S0 A2 H
- "max": "100",' c) [0 i6 A4 q+ I0 [9 z
- "start": "0",
5 @6 X1 o; `8 P' n; O - "step": "1",( @9 `. C3 S$ H) }" d6 m2 Q
- "unit": "%"
$ e- D' O( \. Q" F* I5 |' w7 U - },/ B' ^4 E5 _% t4 p' O3 R/ z
- "required": false
8 n8 R' q* l) X% R# l - },- }4 a0 o k: H6 A
- { J4 H$ O' B% x& Q6 p, s
- "id": "period",
6 U; l- F4 A8 s% L, `7 z - "name": "上报周期",
' _! [( k$ L8 `, Q2 e) Q! X/ m( p - "desc": "",
1 Y. s& [7 X' Q( k. ] - "mode": "rw",
: J q+ ]+ Y, w: |/ G" x3 o8 w - "define": {/ J _4 G' l# Y' E
- "type": "int",
* n# y/ K1 L4 E* A0 [ - "min": "0",
$ X1 Q8 \' f1 m+ c5 Y - "max": "3600",
! C- h6 W1 B+ p+ c - "start": "0",$ U% j; H3 _$ f4 f
- "step": "1",9 Y7 p' O3 N* @8 h- U
- "unit": "秒"2 U; p& p) a: w: e5 X0 n" R' y
- }, E0 q4 V. u6 R" g. X Y
- "required": false
+ L3 N% w3 s* _+ f8 |4 V - }
" D( C1 @$ _ t6 L* l: K& ^ - ],
" G1 ~# l. @6 Q - "events": [],
- Q4 g+ v( ~6 k7 @2 ^5 B - "actions": []- _: `( X, E6 M6 t8 V
- }
复制代码 2 n9 V8 K6 r- i- I+ K
* k+ Y. }: Y" K% L, ^" X" A! N
+ y. T7 f+ ]3 ~+ {! K/ F导入完成后,如下所示,然后就可以点击下一步了
& ^) u" ]2 _1 W/ v2 y- U1 R) n' K, O/ g5 U9 H0 E
2 E2 Q3 [' E H, _% {! D
9 @8 I2 t5 U7 M1 r在上行数据解析部分中,填入如下javascript 代码:- function RawToProtocol(fPort, bytes) {4 v9 A, I7 N% ?2 P, Z5 F+ `1 O
- var data = {7 ]+ q6 r- \0 @3 V
- "method": "report",4 y$ l6 \3 y$ I% v
- "clientToken" : new Date(),
" P1 |7 g* w* y8 o' k& B4 I+ A - "params" : {}
: ~* J, a, m) T - };
9 z, ]' G( |: X/ j- A - data.params.temperature = bytes[0];
N; T D) P# Y( l2 Y - data.params.humidity = bytes[1];
; B) g5 x3 J7 L _ - data.params.period = bytes[2] | (bytes[3] << 8);
) V2 q; g1 j" Y7 I1 Y# ?, t/ v - return data;
% }) C) G0 D% g/ { - }
复制代码 ) y; w* l% [9 T. h) a; {9 n& @1 O, _/ O
在下行数据解析部分中,填入如下javascript 代码:
6 `. t9 l8 [* v1 [. Y# q$ c* ~3 m4 b2 k0 N+ s
- function ProtocolToRaw(obj) {# D# o% z2 w$ m: h
- var data = new Array(); {) x# M+ y/ m7 R* e: z
- data[0] = 5;// fport=5
# q2 x/ r4 a% `9 \0 \1 g, v - data[1] = 0;// unconfirmed mode. q+ u8 y k1 m. I' H/ ~2 _
- data[2] = obj.params.period & 0x00FF;
\/ w! V7 h5 d - data[3] = (obj.params.period >> 8) & 0x00FF;; Q+ g& _( U+ Z/ W/ M2 d3 J
- return data;2 G' J+ W; R: d, r5 T
- }
复制代码 4 i+ C k3 d2 p+ f/ D; ]
填入完成如下+ W! D7 S9 k8 z5 f g
% s$ R: y5 d- d
: H7 Z& w4 {; u$ _' P9 ?: Q* l. v, l- y8 H( K# b8 U
然后点击提交,进行保存
5 s2 a$ ~- a5 ^* l$ J& L* Y! ?; b( S7 g5 E
# _8 @0 S% \- V+ ]! Y5 G) F0 }1 b
+ ^0 ?' w6 ~9 v" @ T点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;
4 }; i, R4 b/ B- O" O% `; z' I, k" U8 J( y; S0 T9 Z1 w9 F# a
3 F) o7 U) ]% h8 S: @+ U* k
4 Z6 O+ ]3 B9 G" V三、编译程序,烧录固件
1 _5 k" ?& w/ j2 c首先从TencentOS tiny官方开源仓下载源码
0 w6 D1 P' y7 u8 p0 M8 T0 P9 q
- J" o5 u% C9 Z0 s4 N- Q" s0 D拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:
( S$ D* T8 N n0 h2 {2 ? o' @4 x, Q5 ^ a. k7 `; I9 X
" `& ^2 D8 G$ p N( Z
' [; n; @5 T0 H接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致7 G! @+ Y5 v" J/ V4 B/ I8 O* r
/ ~: d, q; F3 w8 J) C/ U. B% L9 z& k: P$ T8 i9 m5 H5 s
6 r# M4 |; ?* K0 X( b6 e6 _( i, j" P
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7" f" ~8 |% ^" `
& |" x; w0 F( W0 \
0 \: d! \. i) ]1 }
1 O2 `: F8 N2 x/ ]7 a2 b升级完成后重新插拔一次ST-Link,接下来做如下操作+ d; \4 ~2 q0 V( o5 q& T0 j
& J+ Q0 P% o# Y# C' F! a" g' R$ V7 k/ `5 A& |
5 q/ s4 D0 ~, M& _6 a; n) G然后再重新插拔ST-Link,编译链接下载即可成功:
8 F, j- p* W9 a7 m( A$ n2 w% r) o" T# v) i: _7 }) l/ d/ l H
; v+ o9 i5 _+ x5 w% j
" _% ^/ Z4 C$ ~ y
: O; u( s6 g+ F' q& p |