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

[分享]WB-EIOT开发板 smartconfig

[复制链接]
wbeast 发布时间:2019-8-2 17:43
     Smartconfig 简称一键配网技术,运用该技术,可以将WIFI设备便捷快速的连接路由器。   Smartconfig原理:
3 M4 g, h1 U- b% }1 L( I3 |6 y1. 设备进入初始化状态,开始收听附近的 WiFi 数据包9 V$ [. O) U0 ~+ l
2. 手机/平板设置 WiFi 名字和密码后,发送 UDP 广播包。
+ Q8 o; ]; I) Y2 D7 [) P; N! k3. 设备通过 UDP 包(长度)获取配置信息,切换网络模式,连接上家里 WiFi,配置完成。
' y8 M+ |. }: v8 I; j 090504ysil1bx5n5050ixk.png 9 A. P( k5 i+ @0 H7 P2 A

8 E! R, a( ]* j+ w" f6 z: b* [

: D, C- o0 f6 l1 ]4 r# s   前面讲到了移植rtthread AT组件和at device 软件包移植https://www.stmcu.org.cn/module/forum/thread-621343-1-1.html,下载我们来讲讲如何用AT 组件和AT device软件包。   AT组件是什么AT 组件是基于 RT-Thread 系统的 AT Server 和 AT Client 的实现,组件完成 AT 命令的发送、命令格式及参数判断、命令的响应、响应数据的接收、响应数据的解析、URC 数据处理等整个 AT 命令数据交互流程。
/ M8 `* l. [8 M3 L  主要的AT组件函数:5 C" h: R  b  q
//创建响应结构体
; @" F/ T5 T; Yat_response_t at_create_resp(rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
7 b1 ^, b+ J8 r# q( X# h" O//删除响应结构体4 x0 t% Q) h/ Z# |7 p! i
void at_delete_resp(at_response_t resp);1 z' n3 Y& n% G$ K! S6 q) B8 F4 }5 t% r
//设置响应集体. [( i; o4 I& b
at_response_t at_resp_set_info(at_response_t resp, rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
5 X5 I0 W1 B' w1 o) s* I: B/ s8 E//发送响应数据并接受响应4 b9 j" n% j& d& O; w
rt_err_t at_exec_cmd(at_response_t resp, const char*cmd_expr, ...);7 ^9 K; @" t- B: k5 `1 H2 @& z
//设置期待接收at 设备主动下发信息的响应函数- m1 ]! v, p5 S. N! k7 Z8 n
void at_set_urc_table(const struct at_urc *table, rt_size_t size);% x) j/ y( \, @1 F) n
  1. void samrt_config(void){
    : G) K' w- U7 q5 A3 S. t6 o
  2.         
    & c0 N2 O- ^( }' P0 B: f+ w! w
  3.         
    ; @2 O! ^! c4 F0 }+ b
  4.           at_response_t resp = RT_NULL;) u% m( E, N. J, z8 H" P
  5.     rt_err_t result = RT_EOK;+ ~. D) G% U0 ^8 u  M5 k
  6.           rt_uint8_t count=0;+ V- }  f( L& \& s! c. Q- ]
  7.                 smart_config=1;//清除标志位; q" n0 x+ @4 F1 A4 J8 t8 y; b
  8.            //创建响应数据
    2 U2 s5 e2 M1 M0 g. N
  9.     resp = at_create_resp(50, 0, rt_tick_from_millisecond(5000));0 V3 o: O3 t; n$ ~
  10.     if (!resp)/ ~/ c0 h5 Z  B6 F# u
  11.     {3 h: {$ t9 E  r( S  x8 K
  12.         LOG_E("No memory for response structure!");$ k& K: ^/ n" s# c6 ]$ a+ u
  13.         result = -RT_ENOMEM;
    ; d" K. i1 I0 P. v7 _, Q
  14.         goto __exit;
    8 o7 e% P) S) n7 U- X# s0 B
  15.     }
    - A3 ^! ?$ ?. [0 d7 ^; Z
  16.         
    - \& Y5 A% ^, t) i, T6 m1 |
  17.                   //发送智能配网指令
      N, K2 B- M5 V3 Z: m& x# ~* m
  18.                    if (at_exec_cmd(at_resp_set_info(resp, 128, 0, 20 * RT_TICK_PER_SECOND),"AT+CWSTARTSMART=3") != RT_EOK)
    & }3 j( L4 s0 C4 l. m6 W! i, l
  19.     {
    & j. Y  H3 K; P5 D" G9 h" Q  M6 R6 i
  20.    
    ! D  H( t: J0 w7 m
  21.         result = -RT_ERROR;/ p" f' @' Z6 f3 g" {  O
  22.         goto __exit;; p) R: X$ @) F' C1 E8 Q1 m8 p
  23.     }
    ) ~& z6 H! W. l5 A! U: p- U
  24.                 rt_kprintf("智能配网配置中 .......");3 _: {9 \5 Q4 X% T
  25.                 do{5 q8 V2 u. f: x  C+ w% h+ L
  26.                            count++;7 C5 Y* R9 l5 C/ f9 w6 P
  27.                                 rt_thread_delay(100);        //1S
    " P' ]( j# g4 O4 d$ ?
  28.                          if(count==30)//30秒超时退出
    ( M: o. u1 G+ a7 Y7 \6 q" j  A$ W
  29.                                  {
    6 Y1 P5 e7 [! T
  30.                                          rt_kprintf("智能配网超时 .......");3 m: K: ]" e- W' P
  31.                                    result = -RT_ERROR;  H- F3 }5 n/ e8 i6 E
  32.                                    break;& C. g0 i' u3 T1 \4 e
  33.                                          
    + z* Q$ z( x: F3 H6 G8 F
  34.                                  }+ O8 b# F* ~1 o0 G' w; Y
  35.                    }7 h' c% I( g* d* ~# m  M+ t
  36.                  while(smart_config==1);//判断配置是否成功7 r5 B8 W& J" u. S
  37.                
    / D0 G* \6 X4 ~& W- f" C0 k
  38.                   //停止智能配网指令4 l6 X) Y5 k* }) K
  39.            if (at_exec_cmd(at_resp_set_info(resp, 25, 0, 20 * RT_TICK_PER_SECOND),"AT+CWSTOPSMART") != RT_EOK)
    5 Q9 q" H: R  M/ _
  40.     {
    6 O- t' ]7 O0 Y( G& G
  41.      1 y1 \) u# v. x. N  q: r
  42.         result = -RT_ERROR;
    5 Y; w: O+ E  p6 r) J
  43.         goto __exit;
    / n2 b* J# ]6 E  u2 \. [
  44.     }! k, s/ U$ o6 |: J, F! [
  45. 1 h" N2 Z7 Q- R$ i+ F' z9 L# E
  46. __exit:
    - \: A% g% v, }
  47.     if (resp)
    $ r' b8 _& {; d5 w. u8 x( T
  48.     {" [) N- y, @8 P9 o$ q, K% g! `
  49.         at_delete_resp(resp);//删除结构体/ r  b" d& [* j, d2 `& A
  50.     }! k( H+ {* G, Z1 h' S. G7 y
  51. 8 l( r! _  n7 o
  52.     if (!result). ~3 k1 k7 }; s2 v1 U
  53.     {8 z; R3 o" E: ^8 O& o8 R9 C8 I# V8 a
  54.         rt_kprintf("智能配网成功");
    9 y' k9 v1 D, q) @: h3 O
  55.     }/ Q- N+ b2 |( G5 q% e
  56.     else
    ) I. y4 F0 V' R2 H  }
  57.     {3 V; b* B  n3 s2 I  N! d# s
  58.                         , W/ t; B; |% Z$ Y; R( ]. D
  59.                         / D- J2 o( ]! J+ k9 P1 M, p& |3 z
  60.      rt_kprintf("智能配网失败 .......");
    5 M! E- B, c6 i9 b
  61.     }& |  b+ \+ e9 N+ ~9 M
  62.         
    9 T* d9 a( I$ {' v# b
  63. }
复制代码

. k; `: t/ q# j: I! k 090703a2ujw91asj1v6zsv.jpg 4 n! G1 K% |. y) D+ d
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料
8 a, [4 n8 t% S" S3 l7 Q7 W/ m
+ T% Z8 ?+ p6 K/ ]! W* g) _1 Z# v4 e, i
收藏 评论2 发布时间:2019-8-2 17:43

举报

2个回答
时光虫子 回答时间:2019-8-5 09:26:29
旺宝科技,跟我之前火牛STM32图标一样
wbeast 回答时间:2019-8-5 14:10:15
时光虫子 发表于 2019-8-5 09:26# y/ e8 ]! w! {% s7 v0 f( y& v3 ]
旺宝科技,跟我之前火牛STM32图标一样
4 C- T$ d  {6 R* B8 K
老客户啊,

所属标签

相似分享

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