你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】【TSC_WL_EVK STM32WL评估板】上手体验

[复制链接]
STMCU小助手 发布时间:2022-1-4 11:00
【TSC_WL_EVK STM32WL评估板】上手体验, h; |( s+ l  s! j7 ]9 V
一、前言
0 @7 `$ h7 {+ s, l
最近,腾讯云加社区发布了【LoRa 社区网关点亮活动】,详情见:腾讯云物联网LoRa社区狂欢送鹅厂公仔,更有多款开发套件优惠购!3 t( \; s+ l7 ?
通过该活动的优惠价格39.9元我拿到了一块TSC_WL_EVK STM32WL评估板,评估版到手后如下:" a2 |; _1 ^2 R/ ~+ R
2020090523083685.png
: `+ n3 k& U  ?
1 k5 J% ?3 `6 l4 I
接下来就是完成活动所说的 LoRa 社区网关点亮,官方提供在gitee的资料为:https://gitee.com/TencentOS/Tenc ... B_WL_Quick_Start.md  _7 S6 {, V8 ]: N# K0 g
6 X# k( ^5 z6 `! h! \. G: _& ^+ h
二、开发环境的搭建
8 N$ p  M( x: G4 r4 j, \2 e/ E. ~  B首先,由于使用了STM32WL系列的芯片,所以要在MDK中添加对STM32WL的支持,
: ~0 V5 v3 l- p6 H. ]& E& u# e8 E$ P* @8 ~  ~, w* t
三、腾讯云IoT Explorer 设置
) Q; t9 B* n0 @
登录腾讯物联网开发平台控制台,点击新建项目,
( Z! b' u4 q6 T
9 @2 Z4 T* f' ^: U5 c
20200906131249408.png

  i8 }- B# |) {
1 [$ M$ G' H7 `: }6 e) k2 x3 X3 y" H然后输入项目名称和项目描述,点击保存7 i- _* K3 }  l/ P8 Z7 i3 W9 E

$ ^* c! R" [) |( u4 S# X& i, W
20200906131451432.png

3 ?' Y( p) q& g$ d
7 c4 S: ]6 @8 O" v+ n项目新建成功后我们点击其进入
& h& j* U3 Y9 v8 \, E, H( S
& J: Z& o+ D! |$ A2 r) U
20200906131638220.png

/ P1 i: |9 m/ Y: S; y) D
+ s. C1 W7 r1 Q1 W. t然后点击新建产品
; v3 G# [+ j: O, y
, J( g: b7 _5 n* e
20200906131716387.png

' @/ M* x3 z6 P  v5 N5 }5 h! q5 x9 M; ]+ U$ u* Z$ k9 I0 J. [
然后填写产品基本信息如下所示,点击保存即可0 C2 i  J# o1 [

" Q: h( u0 e: s! b* z; o& j8 y4 Y* P' [
20200906131933438.png

3 j0 ^; t- n! \4 g" h" K8 @) z) E; [/ L  `" d7 T/ Y1 t% E8 r
产品新建好后,点击进入产品,开始产品配置0 K4 g. g. f" D1 L

6 O  W8 h7 B0 Y1 D( H
20200906132115435.png
; q" B) I$ P9 H" g/ H

, E( f- ]5 d* G4 l" F" m7 h  \7 T在产品配置页,点击【导入JSON】( ~; a. J9 O* F

, W9 _2 O2 ]( I7 q, h9 I
20200906132443467.png
4 c1 e6 q7 W$ u' B0 r3 T9 {" n4 |

6 _$ A- `" l: k5 s3 p填入的JSON代码如下,填入后点击【导入】即可,0 a, p4 k. o# P1 b0 S5 l) N$ T
$ K3 V1 v5 q9 C
  1. {( E4 m3 B* T, c) S/ Z
  2.   "version": "1.0",+ e" f7 N0 \- v- f) [  }
  3.   "profile": {
    $ k8 j% @- J1 H. ?- l2 k8 i! @" Q
  4.     "ProductId": "F2G256SY2G",9 Z7 W1 x9 ?& C: h. G5 N6 v+ e
  5.     "CategoryId": "1"
    , b+ H$ A, |8 c2 O* o0 w
  6.   },( ~+ U, R' `2 L# Y/ X  q
  7.   "properties": [4 ^' u( Q, @( o/ k! f9 }
  8.     {6 p  s: T- U: d$ c2 Y' y8 I1 a
  9.       "id": "temperature",
    6 Y( u* \' T; W8 D
  10.       "name": "温度",
    3 m0 l7 ~$ U1 b0 w
  11.       "desc": "",
    ! w$ u: U7 n7 V' x1 z6 E3 J
  12.       "mode": "r",
    * M. `- g. @3 {
  13.       "define": {- _5 q; N/ f* w& l, z
  14.         "type": "int",
      f6 g# w8 Y- d; W8 _
  15.         "min": "-100",: j5 c) \: Q  N8 q5 j
  16.         "max": "155",
    - r& I8 I$ J8 _0 ~9 x' a+ H
  17.         "start": "0",% j/ @8 |) r% V, d- j7 f* \
  18.         "step": "1",
    7 J; b# O$ [9 l( b" ~" K
  19.         "unit": "摄氏度"
    # s2 u" q/ F7 K9 e/ F
  20.       },( ]3 F4 I/ H3 M# ^/ L
  21.       "required": false
    % b: K) o; L- N& H# Z% ]- c1 \4 A* C
  22.     },+ M% U$ W. u; ]# S: w+ G
  23.     {1 A! l3 R" n9 j/ @7 K% X; ]2 ^$ z
  24.       "id": "humidity",8 B0 P# y& n6 i  j1 j$ T
  25.       "name": "湿度",
    ( t5 n! n- O1 z/ a
  26.       "desc": "",) p. S  `) M/ e0 Y- a# F: M4 a
  27.       "mode": "rw",
    , t) j# w; p- J0 {
  28.       "define": {% _7 f, K0 i- \, M  d4 ?
  29.         "type": "int",' f/ v- i' Q+ \' F
  30.         "min": "0",
    ; t7 p8 i- ^5 q
  31.         "max": "100",% O- z& g9 O+ U& D: X
  32.         "start": "0",  R; z. S) v" ~. u' ?
  33.         "step": "1",
    8 n/ t7 E# F& |: h5 \7 O
  34.         "unit": "%"2 k: N. T) y! _7 B, W. Z
  35.       },2 ]: {4 O/ v: s3 W* e. C0 ]
  36.       "required": false
    9 D& N8 a% t& W1 Z! k
  37.     },
    7 O# [) q+ Z2 Z% R
  38.     {
    / j% m% {' I4 e( v6 U4 A* H' _
  39.       "id": "period",  k0 g5 O( v/ g& w" w
  40.       "name": "上报周期",% D( |3 J" u% p2 _- A
  41.       "desc": "",9 Z3 d# @, Q- X5 I5 G0 u
  42.       "mode": "rw",3 D# `* ^* `+ Q  ~
  43.       "define": {6 q# j  [3 Z! G2 l4 u, l) Q
  44.         "type": "int",/ W9 I2 I' Y! ^6 |' T
  45.         "min": "0",
    ! y  A5 h" B; g7 }3 H' c9 y0 J
  46.         "max": "3600",8 Y# ]1 {& L$ |7 a
  47.         "start": "0",
    6 B' B, h, K" \% M& y. M: f# q
  48.         "step": "1",8 n, b& C, ~6 y7 z6 @$ b3 z
  49.         "unit": "秒"8 h  `' J6 _; w4 a( ~/ F
  50.       },3 a# ?, o+ R4 D6 Z3 I8 I
  51.       "required": false4 h, F0 e' ^; E1 o3 C
  52.     }
    9 K. g( k" H( P' j  z
  53.   ],- z' @) v! v) X" t1 M
  54.   "events": []," q0 B9 z, A' w% c; l
  55.   "actions": [], o* u1 [5 k# c% ?& M) p3 p  z+ X
  56. }
复制代码
* O/ S; j: V2 E" X+ f0 J
20200906132744190.png

4 L# |% u: [# Y4 T% D" o8 j  |  N# Y1 _# E' N
导入完成后,如下所示,然后就可以点击下一步了6 R" C. d7 I. q  m. u+ y

) r3 w2 f% H6 e8 c: i
20200906133006655.png
  n3 B5 z! E% Z9 {: b0 P
3 X5 T, j6 d+ k7 D; n2 P
在上行数据解析部分中,填入如下javascript 代码:
  1. function RawToProtocol(fPort, bytes) {
    % D1 R: m* C) h6 y, T
  2.     var data = {
    + |8 @* i: E4 ~. ~1 y1 P
  3.         "method": "report",
    4 a7 z" `& M6 p
  4.         "clientToken" : new Date(),
    * K  q1 D. T/ {3 h; i4 L  ^+ z2 b
  5.         "params" : {}# p3 `( W, p5 r3 d1 G& B3 [% `
  6.     };
    3 {1 S. D6 i7 }! a# t4 ~$ @6 c0 ?% b
  7.     data.params.temperature = bytes[0];
    5 C+ O% {5 Q4 L3 Q! W
  8.     data.params.humidity = bytes[1];) F1 ~7 L7 l8 ~, ^& R
  9.     data.params.period = bytes[2] | (bytes[3] << 8);
    7 w$ S3 J. X- \/ s0 r
  10.     return data;+ r; @, i) I3 c( E9 Y9 L/ ?% F
  11. }
复制代码
4 F+ l8 Q& @5 c+ X
在下行数据解析部分中,填入如下javascript 代码:
' X/ n* v- x: a5 }3 G: O; U
0 I, e* n( o$ B  K' r
  1. function ProtocolToRaw(obj) {
    " P( S4 }2 Y  H: V0 |
  2.     var data = new Array();
    9 m, H# b! A) M; u
  3.     data[0] = 5;// fport=52 b% r6 f  M7 ^
  4.     data[1] = 0;// unconfirmed mode
    5 n! C2 ]2 p$ z- H
  5.     data[2] = obj.params.period & 0x00FF;
    % e2 H5 h5 _/ E
  6.     data[3] = (obj.params.period >> 8) & 0x00FF;/ [6 X9 M0 _- c& V2 j. [0 _
  7.     return data;
    9 Y5 |# V7 d2 e
  8. }
复制代码
  h! ^, F, h1 v7 e$ a: ?" T
填入完成如下
3 L+ h) L* i" e% w
8 |$ F- D+ g9 r' U. {
20200906133509244.png
8 |5 r6 R: d3 _# c% s' x
+ s3 ?1 |: ]; V3 I" c/ u6 h
然后点击提交,进行保存3 {/ j5 _0 ~6 J9 }! u# i
7 I- |8 Z5 i4 u
20200906133901811.png
! \6 @9 z" i: g7 P; e% J

6 u( q- p. D  I' h8 z3 u点击【设备调试】->【新建设备】,然后输入【设备名称】: WL_DEV_001,【DevEUI】:8cf9572000004dfe,【AppKey】:1234567891234567891234567891234e,然后点击保存;( ?: ]2 u# v6 O. }/ V7 v; S* S; D& W

. t& n! N$ @3 B/ C
20200906140115117.png
9 i" f( z& e8 P2 F6 C2 N: }6 Y
; U3 b  F8 @  a
三、编译程序,烧录固件2 ?  X( b7 H1 Q7 u: A2 q3 u! G( z
首先从TencentOS tiny官方开源仓下载源码
) i1 [  ^  d" B" Q5 g3 `5 S6 |  r8 G( J- S" m9 _6 G. j! V7 w
拉取下来后进入 TencentOS-tiny\board\RHF0M0E5_STM32WLE5xx\KEIL\lorawan目录,打开TencentOS_tiny.uvprojx工程:
) b5 o9 n* S+ Z9 e# }
7 U" G! g; _* g. G1 x 20200906134551350.png
- T' I( p- K. B5 ^! o1 e5 T2 B: ^  M9 Q& S7 P# @
接下来打开commissioning.h头文件,将DevEUI和AppKey设置的和刚才在物联网平台上的一致
7 y+ |% v+ G! |3 r# J2 k+ O
7 S; k% H: F2 g3 T
20200906141127957.png
6 v$ v2 o. }3 Q& `6 T& f0 u
: J4 D  V" B' s) f* O) [! l
然后编译链接下载到开发板,不过下载过程会出现问题,因为RHF0M0E5模块在出场的时候设置了写保护,我们需要使用STM32CubeProgrammer将其清除,将开发板通过STlink与电脑连接,打开STM32CubeProgrammer,将其升级到最新版本V2J35S7* w/ u3 L! {; h0 X

) g& x2 U' k. K( K5 I; D: p/ ~
20200906143538887.png

4 z" _3 j- j8 |0 P% v
& K* o3 u, ^2 j2 A升级完成后重新插拔一次ST-Link,接下来做如下操作; w, h2 }1 {7 H, r7 _

+ K% D: `" V% a3 f6 Y
2020090614395784.png
" j( l* ?* F1 n  ?9 U7 Z

/ a' I" \7 ?, f2 {然后再重新插拔ST-Link,编译链接下载即可成功:4 v9 L9 }: E2 v6 y3 [9 {$ |/ f& g

( s0 \3 G! z( `' Z( u( H5 [
20200906144251679.png
4 K6 g: `6 T1 |/ s
9 s8 x+ P; W2 a2 l% ]7 W" e  W

) D8 s) k! y, V' y. n( |
赞 收藏 评论0 发布时间:2022-1-4 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版