在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的。有图为证,哈哈。 
  

  上一篇文章【Android开发—智能家居系列】(一):智能家居原理 的文末总结中写到: 
  手机APP控制智能温控器就两步:一是通过手机,让WIFI模块接入网络,而是通过网络,使用手机对模块发送指令。在这篇文章中,我们来介绍第一个步骤。

【时序图】

  

【概念】

【两种模式】:

AP:即无线接入点,是一个无线网络的中心节点。通常使用的无线路由器就是一个AP,其它无线终端可以通过AP相互连接。

STA:即无线站点,是一个无线网络的终端。如笔记本电脑、PDA等。

【两个端口】

48899端口:我所用的WIFI模块(USR-WIFI232-S)的端口 
49000端口:除去我用的WIFI(USR-WIFI232-S)模块,其他WIFI模块的端口

【IP地址】

广播地址:X.X.X.255(如:255.255.255.255) 
WIFI模块默认IP:10.10.100.254 
接入路由器之后,由路由器动态分配的IP。

【实现过程描述】

使用UDP广播方式搜索wifi模块

  • 第一阶段是在WIFI模块处于AP模式下,对其进行搜索。
  • 第二阶段是在WIFI模块处于STA模式下,对其进行搜索。

第一阶段: 
  模块工作在AP模式下时,会开启一个用于接收“快速联网协议命令”的UDP端口,端口号为48999(出厂设置默认IP为10.10.100.254)

  1. 通过UDP广播(广播地址:x.x.x.255,端口48899),发送HF-A11ASSISTHREAD(该口令可用AT+ASWD命令设置) 
    (这里也可以用单播的形式搜索,目的地址:10.10.10.254,端口48899,命令不变)
  2. 模块收到指令后,如果口令正确,向源地址(单播:端口48899)发送IP地址、Mac地址和模块名称。
  3. 收到模块返回的IP地址及MAC地址后,立即回送一个“+ok”,模块收到后进入连接状态。
  4. 进入连接状态后,模块可以正常接收网络AT指令。 如:设置网络协议参数:AT+NETP=TCP,CLIENT,30000,X.X.X.X 设置STA的网络参数:AT+WANN=DHCP

过渡阶段:

  1. UDP广播(端口:49000)发送指令ff 00 01 01 02(十六进制)
  2. 模块收到指令后返回路由列表
  3. 将用户选择的SSID(路由名称)和密钥发送给模块(端口:49000),模块连入此路由,转化成STA模式,并回送一个指令ff 00 03 82 01 01 87

第二阶段: 
   
  在STA模式下,我们要找到此WIFI模块,并对其发送开、关等操作指令。步骤同第一阶段,但是返回的IP地址会不一样。模块作为STA链接到路由中,以为此时模块的IP地址是由路由器分配的,不是确定IP地址,所以手机无法与模块建立连接,故需要采用广播搜索,获取到模块在STA模式下的地址。

【总结】

  有了基本的思路,了解并熟悉整个连接和通信过程,接下来就是比较简单的和基础的部分了,包括UDP通信以及字符和十六进制之间的转换等基本功了。整个开发过程中,对以上内容的理解是一点一点来的,刚开始组长给我讲一遍什么都不明白,给了我一堆资料和工具也不知道怎么用,但是开发着开发着就搞清楚了。开发过程中还请教了WIFI模块生产公司的工程师,解决了我的问题。遇到问题时,还是要多想办法,总会有解决的办法,看你有没有决心和信心要把它解决出来。

用手机对WIFI模块进行配置相关推荐

  1. 【Android开发—智能家居系列】(二):用手机对WIFI模块进行配置

    [Android开发-智能家居系列](二):用手机对WIFI模块进行配置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010924834/art ...

  2. 【Android开发—智能家居系列】(三):手机连接WIFI模块

    [Android开发-智能家居系列](三):手机连接WIFI模块 概述 实现连接WIFI的功能会用到一个工具类,源码可以点击链接下载.网上这些类似的工具类里的代码差不多是一样的.连接无线网主要有两个方 ...

  3. 物联网wifi模块一键配置

    为什么会有一键配置?      对于IOT wifi 模块,基于成本和性能考虑,并没有类似手机一样有触摸屏交互接口,用户可以在手机看到ap 列表,点击输入密码,就可以连上网络,那怎么办? 一种办法就是 ...

  4. WiFi模块如何配置-web篇(绝对通用好使)

    WiFi模块如何配置-web篇(绝对通用好使) 背景:当拿到一个新厂家的模块,几份说明书写的长篇一堆,对于菜鸟来说,可能不是那么不友好了.如何使用,配置适合自己的参数,详细做了笔记,分享给大家. 声明 ...

  5. 高通平台wifi模块SMMU配置

    SMMU简介 SMMU是MMU的一个子设备,基本原理与MMU一致.所以这里先介绍MMU的作用. MMU机制 MMU为内存分段管理机制,由于内存在申请释放期间必然造成物理内存的碎片化,进而导致一个进程在 ...

  6. 【智能硬件】打印机微信公众配置WIFI模块

    优点: 1.减少开发成本 2.去除SOFTAP可能出现的未知逻辑隐患 3.避免与模块支持方的沟通障碍,以及依赖制作模块更新包 4.去除了配套WIFI模块的固件更新代码 一. 方案实现方式 手机通过建立 ...

  7. 【程序】Marvell 88W8686 WiFi模块(WM-G-MR-09)创建或连接热点,并使用lwip2.0.3建立http服务器(20180312版)

    该程序是旧版本!最新版本为20180706版: https://blog.csdn.net/ZLK1214/article/details/80941657 本程序所用的单片机型号为:STM32F10 ...

  8. android easylink 搜索设备_Android开发 EasyLink给wifi模块配网

    本文使用的是庆科wifi模块 ------------------------------------------------------------------------------------- ...

  9. 【WiFi模块ASP-ESP8266】理论讲解与串口助手验证(超详解)

    大家好,我是小政,一名自动化专业的在校学生.最近在学习利用opencv进行环境监测,需要将获取到的数据通过通信协议传输给stm32,我选择使用wifi模块进行无线通信,接下来我会将我从入门到掌握wif ...

最新文章

  1. 有关EUV光刻机,你需要知道这些
  2. redis数据类型、应用场景、常用命令
  3. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试
  4. 升级到VS.net 2008 sp1并安装卡巴斯基的兄弟们小心了
  5. npm run build,start
  6. border-collapse:collapse;清除表格中单元格的空隙
  7. python ssh登陆模块_使用python的Paramiko模块登陆SSH
  8. jQuery事件对象event的属性和方法
  9. php写ssh命令行_php使用ssh2来操作服务器执行命令
  10. python保存模型 drop_(长期更新)【python数据建模实战】零零散散问题及解决方案梳理...
  11. 关于Eclipse无法导入包的问题???
  12. fread函数和fwrite函数用法
  13. 史上ElasticSearch 最全详细使用教程
  14. HDU6069 欧拉筛法+约数定理+计算技巧。
  15. java域名校验_域名规则校验Java版本
  16. 提取富文本内容(包括去除图片)
  17. LocalDateTime获取服务器当前时间----24小时与12小时
  18. 关于 618的前世今生,我帮东哥告诉你
  19. docker安装python镜像
  20. nginx 301重定向配置

热门文章

  1. Kronecker乘积“ ⊗ ”
  2. 施瓦辛格将与拉里·埃利森在OOW同台“飚戏”
  3. 易语言拖拽文件获取文件路径
  4. 知乎高赞:java初学者如何通过自学快速找到第一份工作?
  5. easyconnect一直初始化无法连上问题
  6. JavaScript事件处理与DOM操作练习题
  7. TinoyOs和nesC语言
  8. lammps reaxff力场断键分析
  9. 手机文件丢失怎么恢复
  10. Win10 开启便签快捷键