本帖最后由 柯南大侠 于 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秒左右,简单快速。
AirKissDebugger
|