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

【经验分享】STM32F4通过机智云进行数据采集并上报报警状态

[复制链接]
STMCU小助手 发布时间:2022-5-15 17:04
利用机智云 Demo APP 同时控制开发板的 2个LED灯,那么我们首先就要创建一个有多路数据节点的设备,这里我们可以直接创建,也可以在原来的设备基础上加几个数据节点,方法都一样,这里选择重新建立新设备,怎么创建就不再赘述,创建成功的设备如下图所示:
4 L* m. N5 j" y1 H7 f5 s% m& T) t% o+ L' u( f* @
DSW}VGQDJ0G)I8AB@OFOA(E.png
/ q; |  e. Z/ V9 C. a1 X* Z& }% J/ X, E; ]/ n
注意数据节点的数据类型:% U( b" a# l- X* l9 g- a) C6 `+ j

0 y% H. m4 p' ~/ D [MN)77Q~GXG(VHM9ZDHC7.png 0 {* S# Q- `. d
" c8 [' g( [) k8 G1 t1 g# v  K
把复制工程的机智云协议替换掉,然后在按照移植过程添加部分代码,工程移植完成后,添加我们DHT11的代码:
1 h7 `1 O2 b9 h! j! v6 o/ L; K" f  q! J0 q9 V8 Z2 u$ ~
_ZZ]71YI9I{P[SEW5G$D2K3.png . ~3 Z: R* {% y1 M* n1 E; y, _

/ X- g; p; ?. Q5 q在刚移植好的工程中,我们点击gizwits_protocol.h 文件下设备状态结构体 currentDataPoint,结构体定义如下图:7 O: l1 P, j% t* F+ F
- o$ l7 `$ Q- I7 R/ @8 Q3 Q
@X1$PB~8(MB94GJCZA5CP10.png ! g6 b- s% \9 U7 F

, ~- a9 m( r/ @/ EDHT11 温湿度数据的上传,我们可以利用 wifi 的状态事件去触发采集,同样我们像获取NTP时间一样,定义一个wifi_sta标志位变量,在WIFI连接成功时将 wifi_sta变量标记为 1,如下图:
- D. b  y! r, U2 @( }% o" w( Y( C& C$ O6 q1 c4 S
N[{61O0(7X9B[HTBTBF}5FK.png
! g& g% J! v9 A  n0 }0 H+ s+ B5 z  J( j: p! O( ?
然后在我们的userHandle函数中实现上行(数据采集)处理,代码如下:8 z+ J" D  b7 @

, ^. ^+ g4 V4 X' _3 p& C- n& |2 n# h
  1. void userHandle(void)+ j! K# |" E$ ?: L9 _
  2. {4 \0 h8 J/ _8 a6 h8 I$ B/ M
  3.         static u8 t=0;
    & I8 g% N% M# L* U! I3 }* [. W% }7 s
  4.         u32 temp= 0, hum = 0 ;//温湿度数据) c& p; B/ v4 S8 C8 _6 C. d/ g9 v
  5.         static uint32_t temp_num=0;
    6 a7 w. v2 H4 w# `3 k! S1 K
  6.         static uint32_t humi_num=0;
    ) K" M  Y" j3 s6 g
  7.         " w1 R, \8 }$ H$ \
  8.         if(wifi_sta)5 O# t& G3 p7 [! ?3 z7 l3 u4 G
  9.         {3 h# o5 n  F% G3 }; F4 `# ]
  10.                 if(t==10)//每2S读取一次$ Z9 I. M6 T4 j
  11.                 {
    & N8 b2 z# ]3 y% f
  12.                         t=0;! ]% l) ~9 r# u9 E$ G7 B! _
  13.                         get_temp_humi(&temp,&hum);//读取温湿度
    ) e. i$ U7 H% B9 b
  14.                         printf("temp = %d/hum = %d\r\n",temp,hum);
    ! f$ `+ d$ G& D+ a8 s% A8 N
  15.                         currentDataPoint.valueHT_11_T = temp ;//温度数据! D  }% |/ v) H. X1 m) T- Y
  16.                         currentDataPoint.valueHT_11_H = hum;//湿度数据
    * _! U8 x  [: A0 ~; u1 ]
  17.                         if(temp>=Temp_alarm)//温度>阈值
    . M% C& b7 Q4 E2 F5 u0 ?" X% q
  18.                         {
    4 q! o3 ^8 E. ^( ^7 V* X) x
  19.                                         temp_num=0;
    2 n7 s- _' _, g0 o
  20.                                         currentDataPoint.valueTemp_alarm=1;//温度上限报警8 q7 ^2 j: \& e$ V3 k
  21.                                         printf("temp warning\r\n");
    # L+ C+ g) G# G( }2 y7 ?+ m& v2 l" P
  22.                         }
    & G* {' G: ]8 u$ ?
  23.                         else/ w- b& C: u# ]" s% \9 |; ^- N! I
  24.                         {' J3 X( i/ u$ `5 p- ]5 h
  25.                                 currentDataPoint.valueTemp_alarm=0;) q. @4 V* w3 c
  26.                                 printf("temp ok\r\n");
    ! t# r3 I: M# N% J, X! O
  27.                         }
    , r1 |0 t+ }& c# \
  28.                         2 q# G* F6 b5 P$ o6 s* f6 |
  29.                         if(hum>=Humi_alarm)//湿度>阈值
      X' v1 x. I8 H* R, Y5 L+ _
  30.                         {
    , A6 X. t2 A; {! B9 Q
  31.                                         currentDataPoint.valueHumi_alarm=1;//湿度上限报警" j& o6 {! g* \5 k4 ^% K
  32.                                         printf("humi warning\r\n");" M& m) r, f, F8 E$ m" h) m$ i' H
  33.                         }
    ; M/ z% o$ h- M% V
  34.                         else
    3 z: j3 y8 h7 V/ D
  35.                         {
    + j. {2 Y# B0 Y  V  X) L, k
  36.                                 currentDataPoint.valueHumi_alarm=0;: _7 \" y: Y) ~, x3 l+ G- W
  37.                                 printf("humi ok\r\n");3 W$ k' Q+ E, o8 V
  38.                         }0 ]5 Y0 o7 }+ E! j
  39.                 }
    / F6 K$ @5 o" e4 Q
  40.                 if(t%2) LED0=!LED0;
    ! Q" _7 ]0 ~2 H1 h
  41.                 t++;# M5 X- [1 i$ A" `
  42.         }
    % q/ `$ R! B$ W; T) T4 x
  43.         else
    - R$ ?: s, B( Q4 Y( V0 w. d: d. S
  44.         {+ C) x! @3 m+ z! S7 G- Z
  45.                 if(temp_num!=0||humi_num!=0)
    * m  z/ k2 z$ h9 G  @: N
  46.                 {
      f; i5 N6 B4 ?' ], t0 z6 O4 F1 H2 z
  47.                         temp_num=0;humi_num=0;) i4 w6 B3 c: C5 X
  48.                 }4 S6 n! s0 L& |2 @4 p1 @1 z
  49.         }
    0 l) x8 {" R9 G" M  L9 o/ w$ K
  50. }
    & U' i$ s0 p4 n  s: i1 v% l# G
  51. $ e8 m- K/ G1 |, X
复制代码
' M' ~) x) u$ z- `8 i+ i* o

3 N; x1 v. o, {' C2 x2 T
收藏 评论0 发布时间:2022-5-15 17:04

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版