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

[分享]WB-EIOT开发板 smartconfig

[复制链接]
wbeast 发布时间:2019-8-2 17:43
     Smartconfig 简称一键配网技术,运用该技术,可以将WIFI设备便捷快速的连接路由器。   Smartconfig原理:
3 `' m/ {7 [3 ~/ S: G" u- D6 X1. 设备进入初始化状态,开始收听附近的 WiFi 数据包
: X. p1 d  Y, q0 Z3 l) g( f2. 手机/平板设置 WiFi 名字和密码后,发送 UDP 广播包。
7 w" w' `# E/ V7 K3. 设备通过 UDP 包(长度)获取配置信息,切换网络模式,连接上家里 WiFi,配置完成。
2 V* T: t) w& z9 T8 W7 ]6 z/ z9 { 090504ysil1bx5n5050ixk.png
3 J; p4 y3 V. v; P+ B+ y- N$ p; d. i- m5 \2 W
. x; d5 [; q% M6 V. r8 D
   前面讲到了移植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 命令数据交互流程。3 {3 U( ?$ ]$ C$ s: K
  主要的AT组件函数:; L" ]4 |* y8 W( U
//创建响应结构体
" Y1 \. |, c# ]5 D0 u+ xat_response_t at_create_resp(rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
2 T: P( X/ ~6 b* X8 N2 b//删除响应结构体4 t8 O) }) L6 H# T! m
void at_delete_resp(at_response_t resp);+ E6 L$ L# j7 y* K. }
//设置响应集体, b$ G: K0 V" M" Y, g7 U
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);
# Z3 k, _+ L, V4 g4 k//发送响应数据并接受响应
: i" g' U! y' x1 srt_err_t at_exec_cmd(at_response_t resp, const char*cmd_expr, ...);7 O/ ~9 |6 s, J6 _1 m2 b  K
//设置期待接收at 设备主动下发信息的响应函数8 g. S  y, k% f0 b8 A$ U
void at_set_urc_table(const struct at_urc *table, rt_size_t size);
6 Z" C0 J  z$ A7 o! c9 G
  1. void samrt_config(void){
    ' n9 v' V5 |) O/ v
  2.         
    " \; }' d- j. B) x
  3.         
    # S: M4 B8 o# r2 i9 k
  4.           at_response_t resp = RT_NULL;& N3 r7 _# g+ L# l1 X4 Y. ]
  5.     rt_err_t result = RT_EOK;  ~& @3 k$ Q/ h3 O6 r* R' D! n6 r' P. q
  6.           rt_uint8_t count=0;) J& z. Z: [- O: M3 e
  7.                 smart_config=1;//清除标志位
    # V: k# p* r, Y& S, @6 q
  8.            //创建响应数据
    ( A% J! G( U7 H3 h9 X
  9.     resp = at_create_resp(50, 0, rt_tick_from_millisecond(5000));# c/ d8 ]# z" O5 U* j8 h" q; q5 |
  10.     if (!resp)) K4 z+ R) w" Q2 w8 V
  11.     {
    $ o* L- u3 `& o
  12.         LOG_E("No memory for response structure!");% X1 C% C& L! k7 z" \2 ?% j9 Y
  13.         result = -RT_ENOMEM;
    8 ~9 P( r, s( g- Z  u& t
  14.         goto __exit;
    5 \8 B8 r5 v+ \& U$ X* y+ z0 b
  15.     }
    + S4 H% l! A7 Y/ Z4 ~3 M( B
  16.         
    ' q5 z9 r+ s) k6 w3 \7 A. o$ [1 w
  17.                   //发送智能配网指令
    ; c! `% `) D6 V; Q/ e
  18.                    if (at_exec_cmd(at_resp_set_info(resp, 128, 0, 20 * RT_TICK_PER_SECOND),"AT+CWSTARTSMART=3") != RT_EOK)) H* w8 I7 H/ m% l; Q, J; f
  19.     {
    : ~* r3 O- ?3 `7 W/ x* I9 _
  20.    
    ) z( o/ Z3 {  @
  21.         result = -RT_ERROR;
    0 ?! e8 s1 O+ }5 X$ u
  22.         goto __exit;
    ( L* b2 _' L  B: R( x0 B# b
  23.     }; o9 J+ \5 f" W0 C, h% m) }% W5 c" {
  24.                 rt_kprintf("智能配网配置中 .......");
    1 i$ m* }0 D" ~
  25.                 do{! I0 h, g( C, A5 t
  26.                            count++;- \: V- ~7 V  H8 [0 c8 m! O
  27.                                 rt_thread_delay(100);        //1S
    % j% c: U; u$ Z& h2 F: g
  28.                          if(count==30)//30秒超时退出( M4 @8 n. n% q, l; W! p2 R
  29.                                  {9 r$ @9 z1 b1 m5 F" |' K1 G. G, _
  30.                                          rt_kprintf("智能配网超时 .......");. `* n7 b! H) j: z0 h% N8 S; W% n3 e
  31.                                    result = -RT_ERROR;5 S  p  @- D( V# ?  }. n. Q
  32.                                    break;
    3 j" u! D: O2 a  ?" i
  33.                                          ! b7 F% t/ k* R  U: i1 c
  34.                                  }
    3 f" e; Z3 P7 G# b' t+ V! b
  35.                    }! g& F- n' {! ]! k( Y& G6 q& u
  36.                  while(smart_config==1);//判断配置是否成功
    ; d; R: u! ^2 \3 B3 X! V
  37.                
    3 ~! `! @7 v" T! L$ Q8 x
  38.                   //停止智能配网指令+ q2 l# ?: [( _
  39.            if (at_exec_cmd(at_resp_set_info(resp, 25, 0, 20 * RT_TICK_PER_SECOND),"AT+CWSTOPSMART") != RT_EOK)5 o) i% s4 X& p1 T7 N
  40.     {
    0 a. W7 c/ o3 K
  41.      6 y1 L  P" n  [" k) }
  42.         result = -RT_ERROR;) M' A( `6 @# j7 E
  43.         goto __exit;
    # Q- p$ T# t" s0 r2 ?
  44.     }9 C0 z/ ?2 T! t4 L

  45. 3 Q/ L; O; v! _7 j0 R; Q! F
  46. __exit:0 t4 |& p* E3 \5 G6 T! D3 k
  47.     if (resp)& p" k0 @1 C, b4 f8 S- t
  48.     {6 r6 T5 L2 ]/ {& F' h1 x8 u# m% }
  49.         at_delete_resp(resp);//删除结构体4 T7 G" E8 B+ F& _+ y! S  ^
  50.     }% D# E* t' P8 N; t( b

  51. # J4 V8 C7 v. j4 d3 \' Q
  52.     if (!result). P2 K" s& Y* M" @7 f) \
  53.     {
    , `  o9 M" w( T! t! h9 o# w5 `2 B
  54.         rt_kprintf("智能配网成功");* O7 R7 x- ]- i- o9 J
  55.     }
    5 Y2 i; C( `+ H! e5 R  F7 a
  56.     else) A2 o3 w+ h; e2 r* y. A
  57.     {1 B; v& |" d$ w
  58.                         
    7 v+ B( U3 u! E/ H9 O3 }
  59.                         ( \$ F3 @6 \: F6 }, B9 a
  60.      rt_kprintf("智能配网失败 .......");
    $ {, U9 ~" z0 ^2 Y* B0 t3 G; c
  61.     }2 `) ^6 K' ~  l) q
  62.         . i& W  R* M3 O2 m5 ]8 v. Q* @
  63. }
复制代码

# L, z$ S: w6 U$ K2 E2 s 090703a2ujw91asj1v6zsv.jpg ( d$ m/ b$ Y: W/ A, E9 Y
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料. b. H! |0 B7 @1 ^( e
! P. x2 h+ H, \1 C

2 }$ K& T5 y7 r: n7 N" m  k
赞 收藏 评论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" z1 J! ^# }8 w6 E( _
旺宝科技,跟我之前火牛STM32图标一样
, [( A+ H+ V: l9 N2 L$ r; N
老客户啊,
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版