【TSC_WL_EVK STM32WL评估板】上手体验+ B e' F% Z# v. R
一、前言
- s5 O4 [ e# e$ J$ A最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!& }2 X3 t0 s/ O) u! f
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:
. e" m; Y+ h+ _$ w" @4 x
, ]# U# _0 ]$ M
3 R. v3 s' k' P# A接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md
8 ?6 q5 X* _# c# q+ N( H
% @, G9 ~3 j" ?# }9 K4 l* G二、开发环境的搭建
" H1 \) {; |2 M! ~首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,$ D: g* [5 ?& w, y) K/ M
- r6 I" x2 c0 t3 x, P | C1 C- U
三、腾讯云IoT Explorer 设置
( @/ G; Z4 A1 F. r' O登录腾讯物联网开发平台控制台,点击新建项目,
7 J' j8 x8 c- a4 E8 ~/ ~/ U
# b( R. z6 C; E0 R( u: F! w' C1 U0 t, j s
- e( X/ t# q3 L7 Q# a1 E
然后输入项目名称和项目描述,点击保存+ \' @$ y* b8 s0 ^
7 b2 X# h1 I& P
% F# W7 g4 q: F2 c
; M: @% }6 w! R. R* X* a1 g# O0 |
项目新建成功后我们点击其进入7 R" |2 `# g g
' |9 [' C% t0 x: S3 `
( P2 S! F5 J3 z
6 y% Q, X4 f( N$ z/ I* z) q
然后点击新建产品
0 J1 |+ L3 t- |$ C# E. c' j. ?6 P7 ]8 }& G7 i. J
. R4 k( u% R3 ^! k4 E+ x9 P8 |4 L7 v$ R
然后填写产品基本信息如下所示,点击保存即可, v! H' g# B' h- r v
$ K* k. y0 k1 U
( e/ T G; F2 Z6 |; L: T
; E J+ }) {( d. S, z0 d产品新建好后,点击进入产品,开始产品配置# T+ ?, e* ^; ]
! u) ^" R, W$ W8 v: y7 @7 b$ `
- o/ P0 ]5 N# ~: e, @2 U, y
' A: w: [. m/ J; Q3 s/ ~# g
在产品配置页,点击【导入JSON】1 n2 a" c1 y5 ]& `
! q$ U6 f: k; x) l) h$ w! g! O! S; z1 v* J
% _2 r: \5 K0 O* F1 v4 b# W. C* e填入的JSON代码如下,填入后点击【导入】即可,
7 O8 C% y# E# ]3 N! p5 M# Q7 v! J. a' i$ P, ?. q
- {
1 d7 |! W {# J: w+ f - "version": "1.0",9 J1 Q k( O5 i7 k
- "profile": {
1 I# ?) ?+ h/ }9 Z% Z6 _: L - "ProductId": "F2G256SY2G",2 {/ [% }, {% E9 K: G
- "CategoryId": "1"- I& v( w% @( ~. p, j
- },
4 h: {* S1 i; _% X' ~; W8 O - "properties": [
( Z8 z5 z6 o [# c$ b& |- Y8 s - {
' K |3 e7 T: @3 b$ w: w4 j - "id": "temperature",
) H* ^ Z: ]$ Y- w - "name": "温度",( T2 y' n' Z% B, U6 @" a
- "desc": "",
1 F% [ z' w( | - "mode": "r",
R. D4 f: t% e - "define": {
2 ~) W* G* B3 K- F& K - "type": "int",3 R- Y# a( c% H7 M0 V+ A1 ~& h2 [! C
- "min": "-100",
/ L% V: ]/ y `8 S - "max": "155",1 {/ G* G; R" `6 I) l
- "start": "0",: L2 b* a+ w+ J+ x
- "step": "1",
5 b6 J7 a2 D8 ~8 m8 v - "unit": "摄氏度"
0 j8 F. T. K4 X [" d - },
9 A9 n6 B# S" D- _' ]# e6 o+ ^' e; [ - "required": false
! j* a9 R- _1 C- ]7 F - },
5 k- j" M+ c# Q+ b9 M9 p - {
4 k4 I4 A: @* x, G5 y5 ^* V - "id": "humidity",
, F! J- _# g. W4 D% a - "name": "湿度",
' m! r/ P) e' R8 \1 v; x; _ - "desc": "",
2 S' O3 a% v+ K/ z) d$ N# D2 j - "mode": "rw",2 x1 J# t$ z6 r q2 }/ l. D
- "define": {+ s6 F7 ~: @2 g& m: L _
- "type": "int",+ q9 [( Y+ c9 v/ x- j# P
- "min": "0", B5 u/ r' Z& O
- "max": "100",( O( R& _7 C( Z
- "start": "0",: _% ~4 G5 A' k9 U
- "step": "1",
$ p2 |" E8 y; g, Z* T3 _ - "unit": "%"! K( p; e" b8 N0 M
- },7 Y- r& _9 e9 \# I
- "required": false- @; h+ S1 m* G2 d% ] _
- },
5 I+ h5 L" l' q7 A. h7 R6 S9 x - {& U0 C% d+ A7 U: n
- "id": "period",# u" \" Q- J% ], T9 O) O
- "name": "上报周期",
0 ~, Q1 G! k" r4 f n4 _7 Y - "desc": "",+ _6 W: }% w: T# d4 L+ T
- "mode": "rw",
( w, q" a3 A) g, A - "define": {
% W9 ]) a5 C: N o% a+ o - "type": "int",9 L7 V5 v7 d3 }2 N4 u3 R, X
- "min": "0",
; U& P! o3 L- T( f; a - "max": "3600",) Q; Y1 N7 L4 ]! v! p2 \* n( s
- "start": "0",
- x' }" c9 H! C' c& ^ - "step": "1",
1 ~- u y7 s" _0 ] - "unit": "秒"
: K5 i6 O: G, C. x9 z* d - },7 ^# L- }) o" d- V% |, j
- "required": false
?( W+ X/ ^. _- Z - }
# g* n5 {4 @5 v+ L5 K, o/ P6 ~ - ],1 o% q) _! R3 [( D! D4 f
- "events": [],
8 j ~! ^6 o, |4 J# A6 z+ u - "actions": []
7 k# Z$ k' k+ F7 i* a - }
复制代码
0 ^ E# g M! K1 I4 k$ ~. V& M* n# M, _
8 ~' i$ {% r8 r% @2 y; T' Y
导入完成后,如下所示,然后就可以点击下一步了0 S+ f @5 G* A6 s& e# w+ G% d" s
l4 O; B8 e n1 Y0 B& _
* s0 y1 ~. F- W4 S. X
5 u6 W* f. N+ M# H$ _8 P5 s% f r在上行数据解析部分中,填入如下javascript 代码:- function RawToProtocol(fPort, bytes) {* m( J$ ?- n2 P: X3 x1 \
- var data = {
' C# G3 a6 u: Z7 M' }3 w3 J7 m- ]$ \ - "method": "report",' b: _" Y) G# p+ g5 q
- "clientToken" : new Date(),
& k' p/ I& v, r, @+ ] - "params" : {}
1 D7 I! X( }/ R; o - };
( B4 ~2 r) H+ { - data.params.temperature = bytes[0];
$ U* M- Q) E% r, l7 w - data.params.humidity = bytes[1];) q6 r0 m! ~" s4 [: E7 y$ E
- data.params.period = bytes[2] | (bytes[3] << 8);
7 ]; `2 J# M0 [1 n5 N$ ]; v - return data;' W) v" r% l+ ^. D; v
- }
复制代码 * C/ u" G& m9 x# Q2 y+ N
在下行数据解析部分中,填入如下javascript 代码:# D; n" j6 S% x
+ u$ U( N& h4 `' a2 b4 ^1 |- function ProtocolToRaw(obj) {
+ D2 e( n& j; P: \: v - var data = new Array();7 ]7 X+ W) g; a" H- L1 B+ X
- data[0] = 5;// fport=5
6 C6 N! P. F& h# {% G I- t2 K. s - data[1] = 0;// unconfirmed mode& u1 F K0 n4 y, u+ \
- data[2] = obj.params.period & 0x00FF;6 z$ \! [9 l1 g& u: x
- data[3] = (obj.params.period >> 8) & 0x00FF;- j: k7 y% j) Y. m A: N: j
- return data;
! ^/ t+ r9 J/ c1 l& f1 E - }
复制代码
; e& g( e9 p- k8 G# }. ~* s填入完成如下
3 }0 p3 {5 ^6 ]1 B+ x) l* N+ F: U1 }, @
9 S4 P' R; S( w1 J; y& p& M* w5 x0 D' p# I. k
然后点击提交,进行保存: g9 u; ]# p" _5 l( p* j/ l# M
i. `( h* W; @. s5 U
0 P# y7 o/ b" X: P- y- I |+ e' |4 @# J
点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;6 c: ~) p: U: z3 r( \0 X" }
& c) t+ d& d" X
& B0 R) W5 z* s# i
6 O2 ^+ d% k' h M三、编译程序,烧录固件6 ~5 Y5 c8 J9 N! _9 G3 g" W
首先从TencentOS tiny官方开源仓下载源码
6 e8 D9 d" Q8 V7 c4 [. u
V ^8 M! D- `' }1 {, N8 U+ L拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:
" [; h8 P& g8 i0 o7 _& U. `
6 ~' A$ F& I8 z9 j; {. ^9 X
# M, L- R8 x2 b4 ]$ {8 b+ {; A
$ ~, D" p0 `* m9 v5 P
接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致$ ~, M4 i1 T- K" w
5 {9 f& e' T9 t5 {) F+ P+ B* x. \% ^0 t
( [4 p% K- R h0 }, u3 L3 u) C2 O( H( D. G1 w( G2 F
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7
+ k3 X+ F" u/ T/ O4 O; W7 m1 N6 h' I
! L7 a6 `& p: k
( ~8 a. y+ }' Q5 ^% h' E+ n6 K升级完成后重新插拔一次ST-Link,接下来做如下操作! y* L* D& X' e0 @; n8 ^
, O3 A: P+ X( D1 c( K1 x, T! e. O E+ d& d
# t% V* p9 a; h% n
然后再重新插拔ST-Link,编译链接下载即可成功:
! {, Y) T$ V5 ]; P% o* b
) U, H4 T% d( I$ ]( i+ }7 K
' P9 H' L q" V" ~# _% z$ G9 @0 [) X) @- H: j Y% S! F4 [
# J0 P7 S$ \, Z# {- F2 l: n
|