【TSC_WL_EVK STM32WL评估板】上手体验
1 L$ b/ C) [: c) q一、前言
1 ]& Q5 K9 A+ j最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!0 Q4 h L8 k' @1 ?/ y; ]& Y* l
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:
& X- Q, i+ N$ _& d+ d' o+ Y. _& @6 c; i- l7 O* A8 n( y. {
, W) E$ j. x' f( e' Z. S/ }接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md
. o9 b1 W0 O1 D& P4 n" [5 |3 d$ F% j5 f8 Y# p! D) m# |3 u$ a
二、开发环境的搭建
. [' N( i0 J# B1 I4 B首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,
; }) u3 y' \+ }6 q( U& l& H
; Y/ Q& f! Y9 X+ \" A' L三、腾讯云IoT Explorer 设置
! u, {# Y) a9 x, l5 v: D7 k/ ?9 u登录腾讯物联网开发平台控制台,点击新建项目,
; k' F$ Z( {7 d9 q
0 \6 ?, y2 E; V/ }1 J; F% s. a( _) i
. T# }1 M5 ]* l% N& h4 J4 [- N然后输入项目名称和项目描述,点击保存+ C5 z* \' d* f' [9 G* x4 F
$ F* v3 |/ s: t J% P
. k3 i) M0 x2 w- \1 q. z$ q m! Y* k( d2 Y4 e" Y/ {, }5 T" O5 b. Z
项目新建成功后我们点击其进入9 i3 `& E, m- u3 i ^: q& b* q# O# v2 `
& c% v! ?, B( G! j. Z& |
$ O9 ~ ]: i( S- G' c* I$ D. k5 v( a2 _% X. w! ^$ U4 W8 [
然后点击新建产品
# X6 a% j, m/ D8 f" R4 q- D7 ^1 w3 C, z! ^ g; N
* A1 i' M& |2 q
! D2 e3 M% ]! n4 |# w然后填写产品基本信息如下所示,点击保存即可
1 o) v: B# r& X) E: s2 b2 i
! h( Q& f" q1 H/ c" S$ @8 Z
. Z+ ?. R6 b( w+ v Q; l- @/ l3 k: p6 \2 f/ b
产品新建好后,点击进入产品,开始产品配置; Y/ T, ?! z: {; ^8 o
3 x; H# @, i+ K& @% ]
9 X+ }% r1 X6 G, f2 D0 _3 I& y& q& z/ a
在产品配置页,点击【导入JSON】
' T' C- ~* x5 P9 H2 h) K3 {* e
! v# ~* x+ N9 P6 W2 \+ J, H2 Y; ?% Y: i
' F) f- I h8 x) U2 p: s
填入的JSON代码如下,填入后点击【导入】即可,- T5 Z4 i- |0 L( }; F- h: R1 w
7 }6 O! o) G% D8 W( n& ~4 S
- {, H0 _( I0 R& Q
- "version": "1.0",# i$ W& A4 U) `5 b5 i' T, a3 h
- "profile": {0 n+ q% R/ g; }, a! o9 P
- "ProductId": "F2G256SY2G", ?& l; u) K/ T5 o4 A
- "CategoryId": "1"8 v7 y6 @/ m8 _( q0 ~9 \
- },
& x | S+ y, ]! r( C6 ~, k - "properties": [
1 S. m1 D4 I- E( j - {
3 i' K6 p0 \" D - "id": "temperature",) @) |7 I5 G* T
- "name": "温度",
x8 @. }0 r# w: E! W; f; g/ \* M - "desc": "",9 Y! O/ c' K/ }2 q {
- "mode": "r",
0 l. t; k' q0 K - "define": {
% ~* c( c" W! X8 Z: H8 M2 P; S - "type": "int",+ {7 K0 m" q7 a" d5 C4 K2 I- m
- "min": "-100",
- r0 z$ U7 l0 e8 D# ]5 h - "max": "155",
5 ]6 G: ?2 @6 `) P1 u n9 y - "start": "0",
) g9 a5 J: M4 [ - "step": "1",
5 K8 n/ J: r: @/ P3 k" o5 c - "unit": "摄氏度"
9 J: f4 o9 b1 I! V5 g. w - },
5 c: n" T6 j1 p7 `3 W - "required": false
( |: `0 J% \5 A% ]; \ - },8 \% X: p' c6 i
- {$ q0 B: l! _0 W4 l$ h% W
- "id": "humidity",
7 @& [) _' y$ b - "name": "湿度",) `$ F# U; `& s& c4 R) Q
- "desc": "",+ O) f4 O& L. F. r$ R
- "mode": "rw",
0 Y0 N$ C" Q% e7 u/ O0 x - "define": {
& f6 n# O; M0 z& G& U1 z - "type": "int",
1 }; @* r) i( u- n% o1 Q9 H0 Q- z - "min": "0",4 h9 [5 G1 c* l7 \
- "max": "100",
0 @( g# J6 v* O0 F - "start": "0",2 e8 j ~5 r: | z* c9 x
- "step": "1",
" T4 x6 W* Z) L9 f8 k" I5 G/ d - "unit": "%" z9 C f0 @/ }
- },# a* V" h* B. a2 Z S
- "required": false9 [, s i. P$ j7 Q& {
- },) T: e; T" r. u$ H4 Y9 I9 e
- {, {) Z3 O8 ^: S/ A2 M3 o/ d3 p# g0 F: @
- "id": "period", I4 j1 y# W- S. X
- "name": "上报周期",
" o! Y6 E: E# r- c# J - "desc": "",. u: b j: m& M( w' Z
- "mode": "rw",
6 r% ~' `3 _4 t# ?3 I0 c4 @ - "define": {8 [3 f! l, Z1 ^ J3 t: F" B
- "type": "int",
O" a% d" q9 i- o3 p4 s* B) b4 ]4 i - "min": "0",) B, ^! _: x, Z3 r1 m4 v
- "max": "3600",
# y0 ]; H* l/ k. } - "start": "0",' t# ~8 Q, {+ [- L, g% B& \- q- Z
- "step": "1",
2 I. {: }& W6 K0 |+ _% C, q - "unit": "秒"
6 o5 _6 ?- z- b3 E* E2 i J - },8 k$ ^6 S" ?& f/ N1 h
- "required": false1 V& A7 W1 r* J4 o0 k) t
- }
! d; c, o6 F+ P$ x" _7 r - ],
. |3 z7 G+ d' G" A' S - "events": [],8 L! U) j3 {3 E
- "actions": []
. F3 |% F. w& A1 O - }
复制代码
6 A' O2 V. u! S6 h6 \# J% Q' r/ x; W) x4 h: I$ C8 o2 V# G
7 |9 I8 G- K# t% H# P导入完成后,如下所示,然后就可以点击下一步了
$ X. ^* A5 y& E8 p( S! |/ c+ i2 F4 S X) x6 u
8 p1 L8 p. @3 k& Y3 u; b+ [
2 M& a2 v0 W, Q4 Z3 `
在上行数据解析部分中,填入如下javascript 代码:- function RawToProtocol(fPort, bytes) {3 F* a& l) T P( A# }
- var data = {
- Q% Z. u' G: g( q c' ~ - "method": "report",
; A+ ]5 u1 |( c% x: I5 I5 M" Z4 G - "clientToken" : new Date(),( g2 b8 u3 Y4 B, o% C
- "params" : {}3 W" A- X' a3 g5 f: o5 E
- };: S8 r" L# ?% N6 V6 B$ J
- data.params.temperature = bytes[0];+ X" h2 R4 V9 L, V4 d$ i6 T
- data.params.humidity = bytes[1];! Z' @1 I0 K# K2 F2 a; e( Q
- data.params.period = bytes[2] | (bytes[3] << 8);
" h5 H8 d' P; [ - return data;+ s& m4 J7 Y( u- [+ |
- }
复制代码
. ]1 D R4 `1 a- D( L在下行数据解析部分中,填入如下javascript 代码:
) V) a- h' x7 F) I: z N9 B" M* `5 k5 K7 d o. m
- function ProtocolToRaw(obj) {& y- g$ j: K; x. I
- var data = new Array();
$ ~- P! N. H/ Q; ` - data[0] = 5;// fport=5
( D# D$ }/ d: K% x - data[1] = 0;// unconfirmed mode- q6 z; Y! I s- t: h& a
- data[2] = obj.params.period & 0x00FF;8 J( W8 n6 r: `. p. P/ }
- data[3] = (obj.params.period >> 8) & 0x00FF;( g1 L' `% l: t/ I
- return data;
/ a. W( `7 W, E - }
复制代码
; B% _# L) n0 M/ w( R5 G4 `# a填入完成如下& ~, T, H! b$ `. L! P
" c& U. c1 [2 y7 W5 l' O" l4 P
n6 o5 ]3 o% V; |, O* m* k1 {( b# Z' i4 ?. s
然后点击提交,进行保存4 m1 j7 X, U. ]% j. y( F$ L
$ z- l" p3 z9 K3 J. ^! u* \ V3 S( A& Y. x
* D* O9 h, Y! m/ `3 m点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;0 W7 h2 K0 h4 b/ _
, B5 d. o/ F# V) F
/ [5 A& f7 a+ r0 q' d9 B
! r1 X5 R9 G$ C- _# k& g三、编译程序,烧录固件9 n ^) \$ s7 O' h
首先从TencentOS tiny官方开源仓下载源码! X" C8 Z4 ]! {8 L4 N
+ J6 _7 i: `( @! C/ x4 t2 W
拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:* D8 B% c, @9 S2 O) l
1 j4 X% s# g8 m( N
& j) ^9 H. y9 j6 A) s
* m% J/ K; t& E$ S
接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致8 p8 n6 V7 K- P8 g
# F) Z) f6 s" f4 J
( g& W* U* w; A% a b2 t! ~- D# g# E ^) ~
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7
5 p0 S* X3 T1 y6 n
9 O; d, P3 s! W* C6 E5 Y: t
f4 ~9 U! N* h% O8 q1 j8 ?
* l8 W, s0 o- v( ?" @! [8 Q8 E" F升级完成后重新插拔一次ST-Link,接下来做如下操作1 W8 S# E9 ~8 ?( b
" P1 A* ?+ b7 } h9 H" O
# e- U3 q+ }1 ~& {, w8 T. h
) t* a1 t3 K8 G! \8 Y, Q然后再重新插拔ST-Link,编译链接下载即可成功:
* l* o; \4 T0 e& t" H6 l) ?* V/ Y ?7 h7 ~0 A" t
! S0 t7 w+ {4 z. @1 f
7 s( t' I/ `& X7 X3 @
/ D8 H' ^% F7 f3 p$ p. S
|