Android开发—智能家居系列】(二):用手机对WIFI模块进行配置-阿里云开发者社区

开发者社区> 技术小胖子> 正文

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

简介:
+关注继续查看

  在实际开发中,我开发的这款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模块生产公司的工程师,解决了我的问题。遇到问题时,还是要多想办法,总会有解决的办法,看你有没有决心和信心要把它解决出来。


    本文转自 一点点征服   博客园博客,原文链接:

http://www.cnblogs.com/ldq2016/p/6774156.html

,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
09.阿里云服务器(Ubantu系统)配置ndk 编译ffmpeg
(创建于2018/1/4) ffmpeg完整的编译过程 1.ls 显示所有目录文件 2.mkdir root 创建文件夹root //将Android文件夹下的所有强制删除 rm -rf android 3.
891 0
Android开发11——手机横屏和竖屏与android:configChanges
目前大多数手机都支持重力感应随之而来的就是屏幕方向改变的问题。对应普通开发者来说屏幕的随意改变也会带来困扰。在Google自带的doc里可以看到,如果设备的配置(Resources.Configuration中进行了定义)发生改变,那么所有用户界面上的东西都需要进行更新以适应新的配置。因为Activity是与用户交互的最主要的机制,它包含了处理配置改变的专门支持。除非你特殊指定,否则当配置
1148 0
Openfire服务器配置(Windows)
源码配置完成后,输入http://127.0.0.1:9090/即可打开Openfire服务器后台管理页。 设置语言。点击Continue,建议配置时切勿选择中文,否则后面的配置中可能会出现乱码。
1058 0
Android官方开发文档Training系列课程中文版:网络操作之网络连接
原文地址:http://android.xsoftlab.net/training/basics/network-ops/index.html 引言 这节课将会学习最基本的网络连接,监视网络连接状况及网络控制等内容。
681 0
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
5 0
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(二)
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(二)
5 0
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
4 0
Android官方开发文档Training系列课程中文版:网络操作之网络管理
原文地址:http://android.xsoftlab.net/training/basics/network-ops/managing.html 这节课将会学习如何对网络资源的使用情况拥有更细粒度的控制力。
597 0
《手机测试Robotium实战教程》—第2章2.1节JDK安装及其环境变量配置
因为要用到Java语言,所以JDK是首先需要安装的。可以通过下面的链接,选择对应平台的JDK版本进行下载。
1361 0
21119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载