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

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

[复制链接]
STMCU小助手 发布时间:2022-5-15 17:04
利用机智云 Demo APP 同时控制开发板的 2个LED灯,那么我们首先就要创建一个有多路数据节点的设备,这里我们可以直接创建,也可以在原来的设备基础上加几个数据节点,方法都一样,这里选择重新建立新设备,怎么创建就不再赘述,创建成功的设备如下图所示:
+ \0 m4 O3 S% B" C5 p% K) k! h! c; G5 p% X1 n/ O
DSW}VGQDJ0G)I8AB@OFOA(E.png
* H7 e" ?/ i- _& I+ l9 o+ S0 Y& z. U5 R
2 O5 I8 [0 z8 T3 m% t注意数据节点的数据类型:
6 U2 K+ [* A7 z7 K1 @9 a$ f6 r- s2 T; n3 u, {* u  m# ]: p" r5 @# x# a
[MN)77Q~GXG(VHM9ZDHC7.png
! i- T7 z  k4 Q$ W$ Z' j8 H: B
2 F* \! }* e+ d/ L- Q把复制工程的机智云协议替换掉,然后在按照移植过程添加部分代码,工程移植完成后,添加我们DHT11的代码:
) V' u3 Q, d% y; K3 w( D$ }; G- c& j3 j5 o
_ZZ]71YI9I{P[SEW5G$D2K3.png 9 I7 r0 K% \9 c( }

! E* \, J1 f. I$ g+ J# O在刚移植好的工程中,我们点击gizwits_protocol.h 文件下设备状态结构体 currentDataPoint,结构体定义如下图:0 |" ?8 J7 P  j

: m4 S, X  r9 c( T @X1$PB~8(MB94GJCZA5CP10.png
/ l7 L% ]) f) ~+ V  v- c" q1 W( _/ H0 k) j" S7 I  m
DHT11 温湿度数据的上传,我们可以利用 wifi 的状态事件去触发采集,同样我们像获取NTP时间一样,定义一个wifi_sta标志位变量,在WIFI连接成功时将 wifi_sta变量标记为 1,如下图:; {7 \8 c% S1 ~3 z3 |1 @, q
& S2 p/ c- e$ [5 i. _" E: h
N[{61O0(7X9B[HTBTBF}5FK.png ! G+ I: ^7 m% j

9 H  E& ]# |" ~0 @6 J然后在我们的userHandle函数中实现上行(数据采集)处理,代码如下:
" Z4 u' f8 B+ L0 y- D1 x$ C  I) p# O7 t0 e, c; G2 Y7 B/ z- T" R
  1. void userHandle(void)$ f. r4 `5 [8 m: j0 i7 S" m; a
  2. {
    & x. M: O, n5 d( A
  3.         static u8 t=0;# o+ z7 r8 e9 d- ?* z- I3 O- C- |
  4.         u32 temp= 0, hum = 0 ;//温湿度数据
    7 V$ h# \- L! ?  x4 D# p. \
  5.         static uint32_t temp_num=0;0 p* R- G# J; o! i
  6.         static uint32_t humi_num=0;
    2 q' d0 V9 m: B6 {
  7.         8 u) X: ?9 M9 a1 }  y( d0 {/ M
  8.         if(wifi_sta)
    5 c9 B$ R3 d: v+ t' q6 s5 C! U0 E
  9.         {
    - r; z/ o7 P  \. t
  10.                 if(t==10)//每2S读取一次  c8 v3 j' J; ?0 N
  11.                 {6 O- P9 u& l4 p  O# P) D
  12.                         t=0;2 V) P$ ]* \1 h: E; ]
  13.                         get_temp_humi(&temp,&hum);//读取温湿度
    & I6 t, x* J- ]1 j1 S4 B: Q
  14.                         printf("temp = %d/hum = %d\r\n",temp,hum);
    3 N! J& J* E& M! V
  15.                         currentDataPoint.valueHT_11_T = temp ;//温度数据& S9 P3 P, `, p4 @0 [8 k2 U
  16.                         currentDataPoint.valueHT_11_H = hum;//湿度数据9 G& N' o% G. k* H# n; U, z1 o
  17.                         if(temp>=Temp_alarm)//温度>阈值$ Z/ L/ [9 Z: I, ]5 R: f
  18.                         {2 I; R- n/ h! y6 S; m3 t
  19.                                         temp_num=0;. M. x' W' ^* F! J! s: A
  20.                                         currentDataPoint.valueTemp_alarm=1;//温度上限报警
    ( P+ p( G1 x9 Y; d, w
  21.                                         printf("temp warning\r\n");
    1 P2 d0 |2 B" d2 G
  22.                         }
    4 r! L, w( i/ r
  23.                         else
    5 t( r. |! i" k/ @3 }3 Y
  24.                         {
    ' |  x7 v' b( {. m( T2 L  R/ F
  25.                                 currentDataPoint.valueTemp_alarm=0;
    5 @: @- A; {" y9 Y* u) Q, H
  26.                                 printf("temp ok\r\n");3 _( Q( g  ~, p$ o7 y$ o
  27.                         }% v7 c" s, ~- j) u
  28.                         
    7 Z/ _* K" o  c! a; d+ W7 R& d5 e
  29.                         if(hum>=Humi_alarm)//湿度>阈值
    * k7 I6 T3 q9 m6 _* z9 x% o
  30.                         {
    7 a& e4 d, h3 ], J+ z2 H- F
  31.                                         currentDataPoint.valueHumi_alarm=1;//湿度上限报警
    ! S% S) L: I2 J6 \$ m1 f, F2 C
  32.                                         printf("humi warning\r\n");
    ; H8 D# B) ^5 a' |0 {
  33.                         }8 S/ n% h3 B9 h, _- }% f  f
  34.                         else
    # h+ c. C! N8 t& L" L% ^6 g
  35.                         {
      x5 I" N! l9 K6 G, M$ E! d
  36.                                 currentDataPoint.valueHumi_alarm=0;
    5 P! q$ v* W8 X& F7 \3 K
  37.                                 printf("humi ok\r\n");
    ' q2 c. N0 l# o+ Q" x( C/ ~, Y6 q
  38.                         }; h1 n" o  Z9 m& |; G; ^
  39.                 }
    , |% m# n. j& m4 ^; D
  40.                 if(t%2) LED0=!LED0;6 O- c$ t- O4 E0 B4 j, R$ `0 C
  41.                 t++;
    7 Z1 }5 S1 X( N
  42.         }
    8 u; }5 Z. ?; Y- x
  43.         else9 t3 R! {9 k8 Q% j
  44.         {! T1 c# K  c1 T( d9 E- y3 {0 m
  45.                 if(temp_num!=0||humi_num!=0)+ S# b2 t! k* H
  46.                 {9 A  `' y( B5 D& n
  47.                         temp_num=0;humi_num=0;
    ' X" h/ B0 S! T
  48.                 }$ H) M) c8 L4 ?+ A/ u7 x
  49.         }
    ! P. v9 i' _' {6 Z% u' H2 V
  50. }7 S. z5 F# X( ^4 b

  51. 6 [* i" l; Q( J+ e0 n1 y
复制代码
% \! p( m% `) ]' o

3 _4 s0 r: l) ~
收藏 评论0 发布时间:2022-5-15 17:04

举报

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