2回答

0收藏

BCM43364 WICED支持微信airkiss

#竞赛 #竞赛 5150 人阅读 | 2 人回复 | 2016-10-05

本帖最后由 柯南大侠 于 2016-11-3 19:59 编辑

      通常,物联网产品不带有人机交互屏幕,用户第一次拿到产品后如何设置产品接入网络呢? 当前主流方案有两个:

  • AP配置(APP或网页)
  • 通过抓取空中的802.11帧直接配置(wifi方案支持混杂模式)

       AP模式很好理解且简单,在此不作说明。
       通过抓取空中的802.11帧直接配置是一种很有创意的方案,一般的是依靠发送UDP广播来实现。此方案可以实现手机等设备无需切换wifi热点即可直接将配置数据发送给wifi模块产品。当前比如微信airkiss、机智云airlink、TI smartconfig等均是基于此类技术。

  使用WICED开发wifi产品如何实现此类技术呢? 下面介绍如何在WICED下实现微信airkiss配置,硬件平台是Boardcom BCM9WCD9EVAL评估版(STMF411+BCM43364)。


      微信airkiss的详细技术介绍以及静态库请参考 http://iot.weixin.qq.com/wiki/new/index.html

      选择CPU架构Cortex-M3,编译工具链arm-none-eabi的静态库下载。

      在WICED中,设置wifi芯片处于混杂模式使用一组“Monitor Mode API”即可。
wwd_result_t wwd_wifi_enable_monitor_mode     ( void );
wwd_result_t wwd_wifi_disable_monitor_mode    ( void );
wiced_bool_t wwd_wifi_monitor_mode_is_enabled( void );
wwd_result_t wwd_wifi_set_raw_packet_processor(wwd_wifi_raw_packet_processor_t function );

  设置和获取当前wifi工作信道使用
wwd_result_t wwd_wifi_get_channel( wwd_interface_t interface, uint32_t* channel );
wwd_result_t wwd_wifi_set_channel( wwd_interface_t interface, uint32_t channel );

      通过以上两组API即可实现切换wifi工作信道以及抓取空中802.11数据报的功能。通过wwd_wifi_set_raw_packet_processor()来设置RAW数据报处理接口。

      接下来和微信airkiss对接。下载到的静态库如图
      

       静态库文件介绍请参考 http://iot.weixin.qq.com/wiki/new/index.html 中的AirKiss2.0开发文档【AirKiss2.0静态库组成】

打开airkiss.h,只需关心和airkiss有关的接口函数。其中需要和WICED对接的函数是
int airkiss_recv(airkiss_context_t* context,const void* frame, unsigned short length);
只需将WICED接收到的RAW 802.11数据报交给airkiss_recv处理即可。配置成功后,通过
int airkiss_get_result(airkiss_context_t* context,airkiss_result_t* result) 即可获取到接收到的配置参数。

微信官方还提供了一个airkiss调试APP: AirKissDebugger。直接填如配置内容,点击【发送】按钮即可。经测试配置速度3秒左右,简单快速。



分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

jwdxu2009

发表于 2016-10-5 17:54:57 | 只看该作者

参加,学习和参考
板凳

haothree

发表于 2016-10-8 10:11:53 | 只看该作者

点个赞
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条