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

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

[复制链接]
STMCU小助手 发布时间:2022-5-15 17:04
利用机智云 Demo APP 同时控制开发板的 2个LED灯,那么我们首先就要创建一个有多路数据节点的设备,这里我们可以直接创建,也可以在原来的设备基础上加几个数据节点,方法都一样,这里选择重新建立新设备,怎么创建就不再赘述,创建成功的设备如下图所示:
) O# y* K  s3 O- d1 L
( @- n2 @" M( s3 ?+ `2 t7 V DSW}VGQDJ0G)I8AB@OFOA(E.png 9 U( a5 k8 p* u2 I
  j) L* E7 u+ }6 ?  F2 d
注意数据节点的数据类型:- G4 `" P0 q3 Q. |

+ @, l, q- s/ X! p7 s6 z/ S [MN)77Q~GXG(VHM9ZDHC7.png 9 l/ x" a+ p  y! O+ m- H! Z

9 _, F' q. g  N) L2 P7 p  m把复制工程的机智云协议替换掉,然后在按照移植过程添加部分代码,工程移植完成后,添加我们DHT11的代码:* }0 x# L8 {6 e0 _4 \9 \
$ B# s; y- |) N# Q3 t/ o
_ZZ]71YI9I{P[SEW5G$D2K3.png . s+ H9 s! d& c; ]$ P
/ E. R' V; J! J  D2 M( R+ n+ S
在刚移植好的工程中,我们点击gizwits_protocol.h 文件下设备状态结构体 currentDataPoint,结构体定义如下图:- k. n- f# p. ]' ^% |: \( g' {8 C
& E6 s4 j  b+ @. e9 [( V
@X1$PB~8(MB94GJCZA5CP10.png
+ U. O; m* e. f5 J
3 M$ H. z; ~, wDHT11 温湿度数据的上传,我们可以利用 wifi 的状态事件去触发采集,同样我们像获取NTP时间一样,定义一个wifi_sta标志位变量,在WIFI连接成功时将 wifi_sta变量标记为 1,如下图:
! W& c& s% h4 ?" ^# {& U
# }. [7 D; c! P" ] N[{61O0(7X9B[HTBTBF}5FK.png
5 y4 s; S% V0 P. H; v; I8 i' t1 \3 s
然后在我们的userHandle函数中实现上行(数据采集)处理,代码如下:
$ Z# h$ k2 r0 n$ a9 O
" `- O8 ]; y4 v8 o! w5 T
  1. void userHandle(void)! W1 J& A) }2 q3 |; s0 d
  2. {
    8 T8 c, D- ]* Q( _4 {4 ^
  3.         static u8 t=0;
    , N2 s. G; T( y" N: H9 s% O4 A
  4.         u32 temp= 0, hum = 0 ;//温湿度数据0 w% I. T8 y. k, O" R4 ^- k7 Y
  5.         static uint32_t temp_num=0;% R  B; k( _1 I% \$ c  u  y
  6.         static uint32_t humi_num=0;
    7 C4 {  s6 @% w% }
  7.         . p% E5 P* G& g+ J3 U; v6 W; i
  8.         if(wifi_sta)
    7 x( E# ^/ Y) z
  9.         {  c) V- t9 k3 {3 t3 T2 c
  10.                 if(t==10)//每2S读取一次4 L( ~* x) Y6 ?
  11.                 {
    ) A9 ?8 N( }3 |! f" e4 \' i
  12.                         t=0;/ _6 j+ D2 q4 j! \2 a( i
  13.                         get_temp_humi(&temp,&hum);//读取温湿度
    * @2 d- m8 k  F1 @5 K$ ]
  14.                         printf("temp = %d/hum = %d\r\n",temp,hum);5 y, ^4 d) P' [& J3 k+ }
  15.                         currentDataPoint.valueHT_11_T = temp ;//温度数据
    % P4 a- m2 H; F2 S
  16.                         currentDataPoint.valueHT_11_H = hum;//湿度数据$ O+ k1 w, d# e) o- O
  17.                         if(temp>=Temp_alarm)//温度>阈值
    ! ?7 d5 W( o. s2 a! C& j
  18.                         {
    * ?5 F- I* @3 G" o) R
  19.                                         temp_num=0;8 X8 t! ]5 R& ~# X% ~3 \
  20.                                         currentDataPoint.valueTemp_alarm=1;//温度上限报警
    + K6 c2 f7 m+ I( B& Q0 n
  21.                                         printf("temp warning\r\n");, U$ L& y3 M1 ~4 }2 s% W5 E
  22.                         }( F$ z" D8 I$ a1 ?+ t5 g
  23.                         else: E3 I! j+ D1 _, h! l1 v  M
  24.                         {
    ; Z0 S' Q1 E, a! D5 r
  25.                                 currentDataPoint.valueTemp_alarm=0;
    , P4 ~& G6 q4 c# b9 d
  26.                                 printf("temp ok\r\n");, \+ L  ?2 G9 I' ~
  27.                         }
    6 ^! q7 W* l8 l6 ~
  28.                         
    : ^" ~) x- w. M* V: t  R
  29.                         if(hum>=Humi_alarm)//湿度>阈值
    4 h2 P4 \6 q2 p3 k
  30.                         {
    ! B8 ]) v' H$ \) P) g
  31.                                         currentDataPoint.valueHumi_alarm=1;//湿度上限报警! G/ j" J+ e8 p& t# m+ i/ v0 h
  32.                                         printf("humi warning\r\n");
    ! s1 w1 r1 Q4 `0 R* E
  33.                         }0 |+ \; T4 y% @: L) @4 f. ?' I( M+ a
  34.                         else  @$ {6 X' q" m1 S
  35.                         {
    ) E# M5 `; ]% _) J; r5 b
  36.                                 currentDataPoint.valueHumi_alarm=0;( m: g/ h0 b' N% k, I7 N. H
  37.                                 printf("humi ok\r\n");# y$ p: _4 {1 n! p. H: r* F
  38.                         }
    $ x5 l0 H, U  |3 C( j
  39.                 }
    # S' K' @. m* P
  40.                 if(t%2) LED0=!LED0;! C; u3 H( _! X# x3 D6 r* }
  41.                 t++;7 T4 B1 u/ Q; o$ e1 i* Q7 ^
  42.         }! f% ~+ F7 |1 s5 c5 J7 ?* \
  43.         else
    / t, s$ c$ a, ], f" l  @
  44.         {
    - }' ~8 u7 w0 x' T" E
  45.                 if(temp_num!=0||humi_num!=0), J5 I1 k1 h# N5 Y$ s5 `
  46.                 {& d/ C' |/ e* d/ U/ C5 c- Z
  47.                         temp_num=0;humi_num=0;
    5 M5 t2 t9 |6 c' L* Z+ K' O
  48.                 }
    ! [. \( _. z: Q4 R
  49.         }
    7 _& H, K) o4 }' f. m0 T1 U4 E
  50. }, t+ y: D/ Q, K0 g+ u
  51. , d# L# c0 d' G) N* F3 @
复制代码

1 J" @% F) B3 A5 M& }- s2 Z
. ]; N6 x) `- w
收藏 评论0 发布时间:2022-5-15 17:04

举报

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