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

【外网项目分享】STM32 Blue Pill 物联网扩展板(下)

[复制链接]
STMCU-管管 发布时间:2019-3-1 17:05
【外网项目分享】STM32 Blue Pill 物联网扩展板(上)
% `4 ~! C5 x1 \# M+ A
& V. z6 _+ @$ a8 X0 Q% I3 `8 F! R! ]1 ]) ]) M* c, ?3 m
$ E( s# }1 N/ Q7 _0 |/ a
STM32现在是家庭智能网格兼容
" p  {: O& n* c
& g- @$ Z: r7 v9 l$ G
什么是家庭智能网格?
1 A( B+ k+ Z0 `( M, \1 B1 H2 R- H# e
正如在家庭智能网格Hackaday项目中所描述的,它是一个物联网网格框架,使用树莓派的定制射频传感器和中继器。它是开放源码的,可以与MQTT和OpenHAB2连接。9 R& e$ q- A) ]) `4 G

( ^$ S8 B0 ]: T/ pmesh协议被设计得足够简单,这样您就可以在空闲时间自己理解并调试它,同时还具有实用的功能级别。在这个洪水网格项目日志中有关于网格协议的更多细节
: L, q/ C% T7 ]& @: [
4 `- O; ]% b% R& Q) Q9 FSTM32的硬件支持- [) I% v; \7 ]2 s3 Y
8 @, C# P; r2 |0 B! T: a, v
  • RF节点:已经在使用github STM32 RF节点项目上可用的源代码运行
  • RF PIO:用于PIO伺服控制的github固件也是如此
    % t3 v3 a4 J8 {: d# w

7 I7 S2 _0 r0 \: @STM32应用程序
: S6 ?' w% S. Q9 F0 U& R- ?( k: d8 R2 s' r0 q' g/ Y
  • 加热器:固态继电器的pwm控制
  • 嗅探器:不是真正的射频嗅探器,而是协议嗅探器,因为它忽略了格式,但仍然必须坚持一个通道,这有助于查看请求和确认调试。
  • uart接口:5 \4 E# d: I* I5 d0 M
5 w6 v4 H4 ?: B5 }
                  射频狗收集广播到网格中的信息8 m/ u& ~2 ~- i" s2 y
                  使用确认将目标消息加入到特定节点。请注意,确认是从目标到源的网格宽度,而不是像增强的Shockburst那样从一点到另一点。5 ^6 A& N  [6 x, o
现在,正如我们在下面几节中所看到的,STM32带来了使用ARM mbed的可能性以及它所带来的一切。
- u! y! t  w: m; N- Y0 K1 J0 ]
& Y# p# R- ?& b$ Z
容易使用网格函数与ARM mbed和现代c++
, Q6 f& B7 l5 D0 h- F5 B( W, y# X7 H- w2 Y' g# D/ o
在这里,我们可以从RF uart接口中找到充当RF加密狗的代码片段。在github上完成文件
- S& d( x, y8 v" D
//nRF Modules 1:Gnd, 2:3.3v, 3:ce,  4:csn, 5:sck, 6:mosi, 7:miso, 8:irq
2 C) j! ~) x; S2 }RfMesh hsm(&rasp,           PC_15, PA_4, PA_5,   PA_7,  PA_6,    PA_0);4 A2 P2 O5 Y* ]
void rf_broadcast_catched(uint8_t *data,uint8_t size)
  ?. R4 U# F* t$ h8 {7 g4 B; s+ V{
; f3 k: J. r/ S    switch(data[rfi_pid])
$ g1 [; M7 T5 i# P& V& V    {
5 V/ m  {  o' `0 y9 K        case rf_pid_0xF5_alive:" r; w' ]& `3 _7 |7 N
..., W( j4 b, t5 d# O+ _# n
int main()
1 u; a# l" t6 G' R! W{4 w( s% q" F6 ?6 g5 G7 \
   hsm.init(CHANNEL);1 r: C8 F" t5 i: s
   hsm.setNodeId(NODEID);) i% C- C2 D! q6 b) p
   hsm.attach(&rf_broadcast_catched,RfMesh::CallbackType::Broadcast);
8 t. W' U: @  b9 U...

3 ^* D$ H1 X/ y3 o8 ^8 G, ]5 |+ z
  • 提供监听和发送的通道,这个通道是可以更改的,目前网格是在单个通道上运行的,这是根据通道集群和通道交换得来的特性。
  • 通过广播连接到一个网格事件
    9 `# }4 Z3 Z( n3 f. q/ _

3 Z: _& A* [2 i% k& c这里,我们有一个节点应用程序的代码片段,它使用公认的对等消息。在github上完成文件
, x3 B/ e3 V* q; v  e3 H3 n. R
void rf_message_to_me(uint8_t *data,uint8_t size)
1 \4 Y9 B8 n. ]. v8 \6 @{8 E- R7 l- C+ w- g/ Y, _
    if(data[rfi_pid] == rf_pid_heat)
3 u# z7 F. V6 C8 Y* `5 V  q    {: L: g0 J# P2 A0 c! r' m
        heat_val = data[4];//heat_val payload : Size Pid  SrcId TrgId  HeatVal CRC0 G5 @% E& O" r* x6 W, R
...5 z. ^) [$ z" t' x
main()  x" y  b8 M; l: ^( T
{
: k$ u5 w/ |) Q/ W7 ], b# Q   hsm.init(CHANNEL);/ M$ X! h, _& q9 M$ N
   hsm.setNodeId(NODEID);
+ o/ d: x$ u% F( O6 B& E/ \6 g   hsm.attach(&rf_message_to_me,RfMesh::CallbackType::Message);0 E( ^+ W. u: n( o7 M4 S
...

0 d* @$ C1 \  b3 T; u1 g/ [
  • 附件是一个消息类型。
  • 由于节点id已经提供给了mesh驱动程序,因此只提供与目标节点id匹配的消息。
  • 确认传输也由网格驱动程序处理。3 L1 l8 e6 [: U2 G& G# p, r! ^
, ?0 i' |' X2 _, v0 n, e
给自己弄个j-Link5 Z! S! q1 E6 d  k% \$ j

( ^" T: e4 M2 ~7 q" D像专业人员一样调试. B) S6 R! s' |& K* F1 R* K
" x8 N( s( Z! V3 [! n+ F& \6 w$ P
  • 因为将低成本flasher和使用ST-Link和co混用,导致我我错失了调试得良好机会,
  • 为了获得ARM-M0和RF的单SoC,我不得不开始使用RE,所以我必须有一个闪烁器和调试器
  • 请注意,将ST- link更新为J-Link OB并将其与ST组件以外的组件一起使用是错误的。
  • 所以我决定用j-Link EDU. t' S, `0 [! K& e2 n/ s

  e( \( T# l+ D* o
为什么是j-Link EDU ?
  E% k, h7 o! M) h* t- D. _: Q" l. b9 l
没有必要为诸如“它就是奏效的!”这样的理由争论太多。,这是真的,我试过了,也兼容了所有严肃开放的IDE,所以让我们更专注于比较1 _$ c- Q& G8 k- r  Q

: t1 _; u" \% v1 p  ^! c6 d与ST-Link相比,j-Link提供的VTref输入可以感知目标电压,因此可以使用它自动化脚本。5 V% S/ t# i8 P/ h" x, X* X0 h. M
( T  j5 Z" ~% T: B0 _: [9 V, n( W# w
注意,埃杜是相对便宜(60€)使用仅供爱好者和教育,但有一个对于皮层M更便宜的EDU-mini(16€)。& @$ }; F: o$ H# t

3 L& N1 t, Z* u1 i  gEDU比mini有更高的下载速度,支持更多的CPU变体。
3 `$ F3 O# v* }( S% _2 D
% G7 a/ {0 b5 q* f8 e/ D( o6 W它可以控制电源高达300毫安5V完全关闭目标,这是非常重要的测试自动化,因为它不同于复位。% M4 m5 Y* F. d5 @( g

$ x' i9 L! A/ T它有一个虚拟UART,而不是从ARM cortext中提升,但是您可以使用外部UART保持您的ARM程序不被修改,并将其连接到调试器的外部插脚。
2 G; G# \, L4 G5 V  D* |
1 {6 Y/ Y6 T/ @; E' K: U所以你可以试用,调试器,电源控制,电压传感和UART
7 h9 d+ b* J! \, ^: C) G1 j
# V# ]; h3 P* ^) t4 ~segger设备的安全性正在提高,所以您不必担心在SW更新之后克隆会停止工作。% ~+ J5 j& @8 j/ C& L, P% g: L* g

7 K' r+ A0 x+ m/ y从这里去哪里/ e" G, N- ?0 [$ Z/ k  E: `+ G7 `

+ z! X6 v" m1 ^4 k* o9 e) d" B% E我将开始更新我的脚本和环境使用j-Link edu,我将打破与ST-Link实用程序的兼容性。
- |. L; B; T; K5 t# A& L0 d# o( {8 Y( U5 e2 }
我将评估调试器接口Ecpilse和segger特定的
8 a# x. Z! I3 P7 c; V$ z2 S, a2 D% T$ L- w4 D: ^
我将开始使用python包装调试接口,使其快速且可访问; O7 I$ t& J& r  Z4 ]9 `

- |$ u! H7 o5 J- I: d. Q( z感觉无刷直流速度和位置控制
, H( a2 _' I, ]7 v" k7 H9 ?$ h  T! a- J0 M* S& m
实验设置
: f' A! M8 C8 b% ^
  • PS4操纵杆非常适用同时操纵多个变量,适用于实验,触摸板增加了位置参考的可能性。
  • 这里的树莓派不是BLDC控制所需要的,而是作为游戏杆的界面,加上它的开发环境更适合编程。
  • 虽然射频节点板内置了USB接口,但是USB软件集成起来比较复杂,而且使用内存,所以UART还有时间进行实验。USB到UART的连接也可以达到同样的效果。
  • RFPIO板用于伺服电机控制而不是无刷直流电动机,但它是一个很好的无刷直流电动机实验平台,因为它公开了PWM输出并具有无线电连接。
  • 无线电连接在这里用处不大,但它实际上是和非常重要的隔离介质之间的测试PC机和电机测试台。这种优势在这里没有使用,只是因为电源已经调节了电流。
    & i4 g6 z; G8 e$ K' N7 C& d0 F$ \& P5 h

2 O' x4 |8 d- H% h% A7 a注意安全:* p# r: R7 |' ~3 e4 B

0 x: C: v7 ^  A9 ^4 ~8 G+ p使用带有实验控制器的普通电池是危险的,可能会导致测试台着火。使用保险丝、限流电源或可靠的控制器。
, d% s" Y1 S6 P* s
9 U  `! T6 A3 I2 x
  • 一个便宜的逻辑分析仪在使用的模式下,与Saleae logic SW一起工作,这是一个伟大的和经济的分析组合。
  • 来自eBay的L6234D使用了一个商业化的模块,但是这个模块没有提供太多的选项,因为所有的支持都是连接在一起的,并且没有感应电阻。所以这只能在开电压回路中控制。; X( @# W$ Q, w$ Q* V; O
3 f% f' ]/ H4 B: `! ]
演示
7 {: P3 z0 c0 k1 i! V) R
  j( H6 I+ j2 B  z! B0 ?- O
这个演示中有趣的部分不是第一次旋转bldc的革命,而是:
6 t6 f$ U+ ^2 N3 t1 P
  • 在不同的环境中集成这么多小的SW协议
  • 通过直接操纵多个变量并在逻辑分析仪上观察脉冲,人们可以感受到无刷直流电动机是如何工作的
    + S7 Z( y' y; b+ n" |' _

$ _' X; D7 [6 G' v
开环控制:BLDC =步进电机

! ~, L( w( R/ [& n  N5 v+ w
  • 在不考虑转子位置的情况下,改变每个线圈的电压总是可能的。
  • 如果电压不足以处理扭矩,这肯定会导致步骤的缺失。正如在BLDC中步骤是巨大的一样,错过它们会造成伤害,并且不会被忽视。
  • 解决的办法是增加电压,但是你浪费的能量不是转矩,而是保持电机的位置。由于没有反作用力,电机处于静止状态时,电流要大得多。
  • 在这里使用的无刷直流电动机消耗约50毫安,转速很少每秒和高达180毫安在停止位置与7.2伏特。
    9 r1 o3 C$ }5 x; q, h

6 r5 @! F& E6 F) P
控制参数

8 @3 X- m: J6 T- Y# s% I
每一个关于BLDC控制的新视频或图表都能让我理解更多的东西,这就是为什么尽管互联网上有大量的文档和教程,为什么不添加另一个简单的视图。
3 E+ u5 \. A, S4 _1 U# T; v
  • 速度在应用下一个电角度位置之前作用于延迟,注意最大命令更新频率小于pwm信号频率,否则无效(图中两者的比例不相同)。
  • 电压增加了脉冲宽度。虽然这里只显示了一个pwm信号,但是这3个信号的宽度脉冲都是成比例地增大和减小的。
  • 从软件的角度来看,这个位置甚至更简单,因为你只需要根据手指在触控板上的移动比例增加或减少电角度。每个角度的正弦信号被用来定义相应电桥的脉冲宽度。8 `) p, o3 ]0 \+ {- T. \, q
软件
# `5 l6 i4 N+ _
抱歉把源代码作为图片,但源代码插件是如此菜了,代码几乎无法阅读,所以我保持VSCode的颜色。% d4 c% y3 _( h) N

4 q8 |9 W7 f" s. b神奇的地方就是,角度为int,让它更简单,我甚至不使用一个合适的单位作为放射微粒或学位,而256°256/360单位适合表窦porecessed一旦和存储为查找。
! k# {* ~5 }8 N5 h8 q1 d* q
4 d3 z! }3 g) c1 _

, B6 F  X  O( a3 O  @% c/ v* O1 m当M3以72MHz运行时,对浮点数的实时计算花费了7.2 us,而这里的查找函数只花费了大约1 us,所以对于50 us pwm周期= 20 KHz(最大控制刷新率)来说,这仍然是值得的。
: q6 d: ]# R) d$ y* q# t5 g
4 _# S# L+ Y; Y5 y1 \& c

2 J8 M( X7 j$ g1 l8 N7 M) v请注意,L6234D可以高达150千赫从死开关时间的观点。
$ |- \9 j' t6 _- }% C' J( v
: _: G8 ~  ?2 q* K$ Y( f7 n* G
$ Z, t$ J; h% S( q% L  u& @. R
我使用mbed-os作为开发环境,为什么要这么复杂的使用它呢?  i: D% x/ _1 x- P1 Q  _
PwmOut pwm1;8 c: f9 F7 r4 C3 r, ]1 K3 d) Y/ u

, @8 F  e8 a1 e- Zpwm1 = 1;

1 ~# c" K. j+ g+ U这很利于开箱即用的配置和初始化。它可以为您做任何事情,从cmsis HAL api调用到计算应该将哪些引脚分配给哪些替代函数。它配置pwm模式,所有堆栈都要经过赋值运算符的重载,这会使函数时间从微秒变为毫秒。
4 Y. v5 |4 K. V# r# H1 \$ N/ q' q# K* L  D( U# g8 p
这就是为什么寄存器的直接使用是围绕一条指令的。6 g8 N5 P) F$ x/ L' Y( N* D3 g( N
$ [! ?2 P# J+ Y  y* w
信号5 o( j$ D$ y8 @# W

- u( H; E5 T3 V- m
  • 我们可以在逻辑分析仪上看到中心对齐的pwm信号。
  • 注意,频率显示为10khz,而不是上面提到的20khz,这是正确的,因为将两个脉冲粘在一起可以将变化减少一半。* a+ ~( r& B+ [8 U% D
7 \4 `7 f& R9 N8 D
5 s% E( ~* \* }8 O5 ]- X
结论0 R: {8 B8 Q4 X0 s1 P7 M! W

9 a9 z" F: r, `# z- ~' v3 H3 V2 m一旦你同时控制了速度和电压,你就能更好地了解电机什么时候停了,什么时候没踩踏板,你可以按住它,施加更高的电压,看它什么时候能克服施加的扭矩。这不是科学,但是可以让你更加随意的处理其他科学公式。
2 ^3 b( O" P3 ^& n
, Z1 z+ S8 z7 [  m# w下一步是查看扭矩控制回路,然后可能是反电动势监控,为BLDC设计一个特定的扩展板,并在面向现场的控制视频前进行冥想。但可以肯定的是,对于我的倒立摆移动机器人的计划来说,这种控制已经足够了。
& \' ]' H: s9 a1 l5 p" a0 q& F- ]2 k0 v2 w
即将到来&创意
; f9 z1 j5 U$ U0 R2 _1 `5 X
; a' L+ p) [4 u5 b2 p2 M带有传感器的射频节点已经启动并运行,RFPIO已经启动并运行,是时候考虑下一步应该做什么了。 $ k, b0 p3 H6 k4 @- f
) P, W. s* K3 T4 M; c
  • 超声制图采用多种低成本HC-SR04或05! q( w- h/ w. f- @/ y& F

5 q( k- l+ x" m7 I. R             实验见hello_超声样本。
# r  A3 m% @8 F: u3 g4 X8 ]  |             扩展板应该为多个超声波传感器提供准备就绪的连接输出: ]2 F7 _* _; `( ]
  • BLDC:经过很长时间的犹豫和反射后,一个严重的跳跃机器人操场不能绕过电机控制
    % G5 i7 M' R/ W) |

7 G+ b0 Z4 G# N* D  d             使用L6234 PowerSo20模块或稍后一些较低的电流L6234直接浸在同一块板上。$ M# F3 B9 E4 n: m  ]
  • 只使用伺服:x24引脚和x12伺服的RFPIO双使用不是只使用伺服的最优尺寸,也许另一种最优的布图对于一些疯狂的多伺服项目会更方便。
    5 ?% Q* Q9 O& b- J: v2 H0 V
0 u/ S& P2 p& `" U6 T- m  N

/ m1 }( Y0 W: i$ G/ H9 y: b
/ T6 m0 [9 L7 M, S" g7 H: d4 I来源>>; ]1 m. v- f; K4 ?
收藏 评论0 发布时间:2019-3-1 17:05

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版