【TSC_WL_EVK STM32WL评估板】上手体验
9 l; r( a; E) d$ M一、前言" Z' }+ F" Q% w! v
最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!
! F* e! I7 E& t# D1 w# r! p r( y通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:
. Z8 J' _+ t5 ~! s c" w9 M7 n9 W0 ~- a' R. V: O
7 p. O8 Z* T/ p/ }% d% }
接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md
: i, L: \( S; y7 S- C/ h
* e0 T4 U. @2 |+ S3 a" X j/ `4 s+ J二、开发环境的搭建
/ u+ r O+ u9 R$ s$ y首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,
9 X' `* g6 [- I" Z3 N
* I6 y( Q5 v C- n/ v三、腾讯云IoT Explorer 设置
/ O. k t2 S7 n/ `8 d, _: c9 P' N6 [2 e登录腾讯物联网开发平台控制台,点击新建项目,
( i2 u7 B4 C- `; a, W3 o
6 @7 l( t* E0 W! Z% b; ]3 }! [$ A$ H* B
4 U3 |2 {% K6 k7 j! X2 T# o然后输入项目名称和项目描述,点击保存. g3 e' L" x; Q; \% s
; d6 x9 W% _1 }4 }/ T+ V& J
5 T0 ~9 I1 e" r. r
3 f; O; S e# U; o项目新建成功后我们点击其进入" j# e5 [: v% }" a7 ]$ A
: G9 n& m7 b" j1 Q% J- s
o5 k1 S0 N5 y: ~0 C
' k. x4 C! l4 x
然后点击新建产品
. i9 F1 H/ J! o
5 i8 g; n1 j5 y5 Q3 a! e. j7 N# C
( N7 D, N0 h' C9 {# A% t$ ?( b
然后填写产品基本信息如下所示,点击保存即可
' z0 q0 e+ L/ v! \) B5 `( R5 v- b ]
: P g' h8 l+ ]& N* v/ F: ]: y
; ~" x; G4 r; L% N4 o; R& V产品新建好后,点击进入产品,开始产品配置2 z# `: x1 C" v# T' g* u" i2 Q
% ?' H8 d8 u4 S
4 }% j9 J: f9 [( ?
- O R% N' m8 h( \在产品配置页,点击【导入JSON】0 Q( @! A+ ?! A* O( Y# x5 o4 t
% K1 L$ V, b9 H% y7 n
; o( W. J: _. E2 b/ \6 \8 |* `+ p! t, L# v2 Y/ F0 N4 O1 M- M
填入的JSON代码如下,填入后点击【导入】即可,
' z M3 b* S2 R; ^- Z# L( G3 o0 o4 S
- {
5 S2 z* v) z+ Y3 t* Z% N, ] - "version": "1.0",
" a5 }/ {7 Q) H$ d; U2 N - "profile": {+ V: c! g' Y9 v: F& l& x
- "ProductId": "F2G256SY2G",
- M3 _; L- f. L& _6 o+ P- G - "CategoryId": "1"
! V/ Y: \8 T8 a( q8 B - },* {1 h" I. }" G+ Z7 v
- "properties": [8 T$ x% x, L3 G; P- J/ j" }; p' }
- {% W# u' T Z! b U: G
- "id": "temperature",
0 O0 G8 D! b1 B; E3 N8 D- n - "name": "温度",
/ ]7 f+ c$ x6 a, { X4 W$ Z0 }9 X - "desc": "",
' m/ \3 d: C* B3 u/ y1 t1 ], G( K - "mode": "r",
# Y" l; f! v& L: d; S. ]# Y& U - "define": {
& ^9 x' S5 ^; r - "type": "int",* z9 o/ `& k. X- ? B
- "min": "-100",
) I" U0 w$ B% [7 N - "max": "155",
' }) D7 b! P* ]$ @4 l - "start": "0",+ ~% d8 X3 C! h8 Z9 X, ]
- "step": "1",
- f; N( n( e" Z" y" z; y3 g( c+ t- J - "unit": "摄氏度"3 Z; T2 c/ \( I) o& m3 Q) a
- },; v3 k. o" Y: [* _ N
- "required": false6 {; U3 t5 f& k
- },: z( F [# l- r8 V7 Q- Z5 P5 w
- {
4 b. J& P+ }8 R$ `$ g/ }! E - "id": "humidity",3 M/ x- Y& Y/ @
- "name": "湿度",
; ^& \7 Y# b/ W& k6 L. Z# { - "desc": "",- _" G/ ^ \) `$ r
- "mode": "rw",: u! L+ z# B, V ?
- "define": {
9 r+ f& x6 }7 Z" |& i7 d- P+ x j - "type": "int",( e. R+ U* O, n; y0 Q9 D
- "min": "0",5 N& v) J1 u0 c
- "max": "100",; h% T9 z% K* ], X
- "start": "0",
6 U- m! c! X" }2 Q0 n& J& m8 ] - "step": "1",8 B4 {$ B4 c/ b$ W* J* F) t
- "unit": "%"
. \: E# F0 _3 I; r$ h1 \ - },
/ M8 V6 z3 I, t5 |% Y" n4 h - "required": false
# f/ A3 W) Y$ A. ?. x - },
5 l& F* t1 S3 r) g% @ - {
1 E! _+ P8 w, {3 L$ d- R" N3 X8 n - "id": "period",
6 r4 K4 @9 J$ v# c - "name": "上报周期",
/ T7 l( J2 q& o/ r& [ - "desc": "",5 n$ N6 f6 |3 @/ W' I
- "mode": "rw",
t: m% l: Z- e4 R( V - "define": {
; ~ Q6 I- O, u - "type": "int",5 D2 r3 Q0 |% y$ S
- "min": "0",4 K* j. w6 \7 r& }# q. Y( ]% o
- "max": "3600",
* G8 Q+ f g0 O$ b& S - "start": "0",5 E# N9 Q* W- ]. d2 ^4 I4 y4 N
- "step": "1",9 S# q1 X% D. s; B3 x- p, D
- "unit": "秒"
q4 k$ Q2 [9 h" y - },
0 f2 O: E6 Z% D0 w3 D - "required": false
% ?% B( ~, Y: c% Z" U% f - }
1 n4 N# T) ~7 q' G. N - ],
( i) B1 I4 k" i" P0 d7 Q - "events": [],; B4 ]: n" T/ W
- "actions": []7 i# K, d( n* @: M+ ?4 a3 f9 d2 }
- }
复制代码 5 S- G' m# ^0 g$ W" B3 W
; f' W6 z5 u, t, K' O9 A1 J1 T" y3 Q
导入完成后,如下所示,然后就可以点击下一步了
: B# Y4 d0 ]1 T5 y o& ` N4 Q) B7 z: R/ l- V8 F7 q0 G' q: |
* }# w8 a& L4 W6 ^; J
6 g- Y) E7 E9 S9 I, S8 G1 `8 _) _$ m
在上行数据解析部分中,填入如下javascript 代码:- function RawToProtocol(fPort, bytes) {) V$ g2 ?7 X' p' F5 w
- var data = {
( k9 w1 [0 _* m4 h* `; g - "method": "report",
) G2 u/ c0 d7 ?3 } - "clientToken" : new Date(),) B' [! H5 E! m, l
- "params" : {}
" Y: b# N6 K) n! M' p; s - };
z) Q8 T; Y6 b7 v8 W# `/ v; m3 \ - data.params.temperature = bytes[0];! X( m$ l. u' @4 u) b
- data.params.humidity = bytes[1];
5 a0 E, \9 U: e8 M - data.params.period = bytes[2] | (bytes[3] << 8);
- u$ |2 L' ?+ l% G. y0 q: G' _( @2 t - return data;, a5 k# Q Q$ G. ~
- }
复制代码
' h. i T3 D: [在下行数据解析部分中,填入如下javascript 代码:
% d- @: |7 I: s8 x& x; w2 W! v, x1 M0 u) e0 U
- function ProtocolToRaw(obj) {' I0 W5 V: u" G6 ^ Y0 b; t, E
- var data = new Array();
2 n/ i) ]2 g! X! H; u) J' O - data[0] = 5;// fport=5, U9 q% L$ y$ I1 m0 Y( N$ @
- data[1] = 0;// unconfirmed mode2 f( v8 l9 `2 d4 M: V! c$ z- C: e
- data[2] = obj.params.period & 0x00FF;
; a- L1 M: q: U* `3 D# w - data[3] = (obj.params.period >> 8) & 0x00FF;. I/ e. P6 A* X
- return data;3 \) C6 G4 m6 @* a
- }
复制代码 1 k; E2 P4 f Q
填入完成如下
% G" o5 {1 { j, H5 ^$ U. }( n. d' o7 @/ `* }) Y
5 _* f, t$ ^# O2 I' t- Z- O' o8 Y
# P* O7 F' V# U然后点击提交,进行保存) q+ ^6 g$ _% x0 `
4 k+ `: w, e: E' |, S/ c c* r3 @% u" P
% w* t9 t8 K2 k" N! w* E: J( L
点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;+ V+ w2 F* [" c6 `
; X( ^4 y$ |& e4 T8 g! a
. O! h& h" Z3 O# U' E
4 N7 i: h, [' h! o
三、编译程序,烧录固件! g, j% e8 m1 C3 i
首先从TencentOS tiny官方开源仓下载源码
1 W' l! w7 p, I/ a Z$ T' C- y" @5 D T l/ i
拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:3 A% `; y j# v% f4 ^$ D* Y/ D
6 }+ n" U: X9 a
- c8 B! n9 H9 T' B* {
j g6 c3 a {
接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致5 F& B8 d/ Q7 t% r4 z
7 y- O9 B$ B9 G
+ ?, u1 b( b% E( d( k/ r) n' T3 f/ X# P4 F0 V2 U
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7) Q* p/ U% P: O5 G5 Y
' H3 C7 \: `9 V( i# |
# N v& b/ I& W. |* B
0 H4 }9 I7 ~3 R$ D' r升级完成后重新插拔一次ST-Link,接下来做如下操作" C% d# o9 p! Z; m) X
) L- U+ k/ d5 E4 ]# N
5 L& |5 k* [5 I6 _- m2 g7 e/ n* Z) Z2 R6 Z: L$ A; s
然后再重新插拔ST-Link,编译链接下载即可成功:$ j, l+ ]& Z5 ] ~0 [3 c3 K
7 I! e8 t+ S* _. ^( w$ m9 M* A1 J: g9 S4 Y; S. l u8 S" @
8 C4 D$ d; m: x
5 D! A ]* E( S |