请选择 进入手机版 | 继续访问电脑版

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

[分享]WB-EIOT开发板 smartconfig

[复制链接]
wbeast 发布时间:2019-8-2 17:43
     Smartconfig 简称一键配网技术,运用该技术,可以将WIFI设备便捷快速的连接路由器。   Smartconfig原理:' Q2 H/ o4 D+ m+ c3 `3 x5 M
1. 设备进入初始化状态,开始收听附近的 WiFi 数据包7 h7 j5 k0 z3 k, M1 X/ k: c: u+ s& M
2. 手机/平板设置 WiFi 名字和密码后,发送 UDP 广播包。6 f# M5 ]  y2 j4 w0 h0 _
3. 设备通过 UDP 包(长度)获取配置信息,切换网络模式,连接上家里 WiFi,配置完成。
$ r9 z1 E" N& M9 L. E0 N. {3 U( [ 090504ysil1bx5n5050ixk.png
) k( e: A' i2 e% e+ Q
8 y& x" Q2 p- y8 N4 f

# B( x, x$ ]- C' b   前面讲到了移植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 命令数据交互流程。1 o$ g! D3 C7 A8 w+ U( a2 y  x: d& o) E
  主要的AT组件函数:
5 s6 B* B2 w9 D4 |- j//创建响应结构体: b3 s7 W5 {5 ?9 z% N8 u1 b1 F
at_response_t at_create_resp(rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
  |1 Y6 ^& V+ _; F. a' |5 S& `//删除响应结构体
+ t+ @/ D  d- l( V" Kvoid at_delete_resp(at_response_t resp);
, |9 p' q' |. e2 u9 A//设置响应集体
3 W" w0 Q* E8 P4 T# j0 I5 l! cat_response_t at_resp_set_info(at_response_t resp, rt_size_t buf_size, rt_size_t line_num, rt_int32_t timeout);
' f; _: Q# B3 T" c' ~0 ?//发送响应数据并接受响应' O6 ^$ a+ P! a" n! {
rt_err_t at_exec_cmd(at_response_t resp, const char*cmd_expr, ...);! k* X( A4 y' s$ L! [" G9 r
//设置期待接收at 设备主动下发信息的响应函数
* P; N" V& P6 J) J/ Z5 X& z5 jvoid at_set_urc_table(const struct at_urc *table, rt_size_t size);* V) a( L9 b7 x% M) z
  1. void samrt_config(void){
    / c' ^; q* t. ^
  2.         # e8 M) x6 k2 `3 p
  3.         / x  R' _5 t9 h$ H' i, M, J
  4.           at_response_t resp = RT_NULL;& F+ Z5 Q' |: C9 d: d
  5.     rt_err_t result = RT_EOK;/ x- j* @% t3 [" ?0 E
  6.           rt_uint8_t count=0;  `; {& W4 Z- _! X( b% {5 D. K
  7.                 smart_config=1;//清除标志位
    8 n! o  p6 j( x4 M
  8.            //创建响应数据
      {; ]/ f: h4 }( |& L
  9.     resp = at_create_resp(50, 0, rt_tick_from_millisecond(5000));
    % U* a# o4 y4 o% A7 v
  10.     if (!resp)) \0 L( `9 ]- h/ r" {3 B5 s
  11.     {
    7 g$ V" ]' k* @0 Q& ^
  12.         LOG_E("No memory for response structure!");
    ! B$ t1 R* k* t
  13.         result = -RT_ENOMEM;
    # w" ~* {6 V0 a
  14.         goto __exit;4 n3 H/ l# Y7 R% v* D. ~& U4 Q
  15.     }
    ! p' r, w# f1 T( p; F9 h* O
  16.         ; J# Y- s& G$ x+ L& i
  17.                   //发送智能配网指令4 |  U5 w, J8 L, H
  18.                    if (at_exec_cmd(at_resp_set_info(resp, 128, 0, 20 * RT_TICK_PER_SECOND),"AT+CWSTARTSMART=3") != RT_EOK)' ]0 H9 h6 H  `  n& \/ P" m- ]# y
  19.     {  Z, l; u" T! A9 W
  20.    
    5 e. X3 D4 N  s
  21.         result = -RT_ERROR;
    ) T1 _9 \& I9 A! I1 \! U
  22.         goto __exit;
    % F& B( Q5 o/ R% H" i8 ^3 J$ I- ]
  23.     }3 F( L8 D8 \' t8 [1 S' B, ~' s
  24.                 rt_kprintf("智能配网配置中 .......");
    1 r1 ^9 s8 w: [0 G
  25.                 do{
    " {* w5 B8 d6 u/ q- w
  26.                            count++;
    : x, Y. V7 C1 \" Y* ]% g7 ]+ s
  27.                                 rt_thread_delay(100);        //1S
    0 o: x% N  \* R4 T, S) ?+ h
  28.                          if(count==30)//30秒超时退出! F) ~$ j  Q" T4 P7 E7 H
  29.                                  {
    ; u$ o8 K# H) E# \9 z
  30.                                          rt_kprintf("智能配网超时 .......");
    " [1 l# l; U* l: ^
  31.                                    result = -RT_ERROR;
    1 X- L) ?: F# b" K; k
  32.                                    break;6 g5 S% n7 Y0 a+ e( Y
  33.                                          
      Q( `; R$ N* B
  34.                                  }- q$ J* E* q5 Y; j1 X& L
  35.                    }
    : T. X0 {6 b8 |
  36.                  while(smart_config==1);//判断配置是否成功
    . C' I% b2 a$ j4 S5 s  W2 y
  37.                
    , b9 c' F- B, J
  38.                   //停止智能配网指令5 o* C- @8 m' N: f& _3 z8 M% Z
  39.            if (at_exec_cmd(at_resp_set_info(resp, 25, 0, 20 * RT_TICK_PER_SECOND),"AT+CWSTOPSMART") != RT_EOK)
    ' Z+ n8 Z; T0 I
  40.     {' @% d" D" q  o. B
  41.      
    $ j, N. s3 u% F7 v/ o
  42.         result = -RT_ERROR;" y, r, A# R' g
  43.         goto __exit;
    ( y; `7 O2 N; T; U. P7 O4 `
  44.     }, M9 ^$ Z$ ~- k" R8 X3 r

  45. " c! W0 I2 K& \) [) L# C
  46. __exit:- T, {) j" T  U1 O. [2 S' [
  47.     if (resp)5 e+ r" E+ P  n, A
  48.     {& [# O# g/ @7 A, F7 H0 T
  49.         at_delete_resp(resp);//删除结构体4 l) W8 V8 c6 K  I9 w( e
  50.     }
    6 U" }' d% ~& G2 {

  51. 8 f9 A: j5 O3 k/ {- P
  52.     if (!result)
    ' R  Y4 s) J# W: ~( |, Y
  53.     {. d7 n& n% h: p- t7 E* e
  54.         rt_kprintf("智能配网成功");( V0 b+ a; l2 H# R- x+ i# Z
  55.     }. b3 X' `1 [" D' J4 H' s' k$ f' S
  56.     else1 A  X+ t1 m! Z$ o
  57.     {
    ; X( x7 v+ ?( o: b! \+ W6 E# b1 s3 ?
  58.                         - M3 [1 ^1 T* B2 x! v& ?
  59.                         
    % ~, e1 O+ c- T( \, N$ f' T; v
  60.      rt_kprintf("智能配网失败 .......");
    & Q& x4 x  C5 @. T
  61.     }5 {  q- a4 K2 s; j
  62.         
    8 p: A1 w0 ^- ]+ p
  63. }
复制代码

) k, @7 j: w& s, }$ Q/ u 090703a2ujw91asj1v6zsv.jpg ; d' P0 [: B1 j% P, z( N/ n# g5 K
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料
- O8 \0 R7 |! N' z  B) \
/ d1 A& h( e+ s- }" F
/ k/ M) o$ H' g/ r
收藏 评论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
9 L6 G/ |* ^% o4 u8 ~% v旺宝科技,跟我之前火牛STM32图标一样

0 E' |1 W) s7 X% H1 h老客户啊,

所属标签

相似分享

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