设为首页 收藏本站
查看: 1812|回复: 0

[经验分享] Wifi开发技术总结1

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-2 12:27:12 | 显示全部楼层 |阅读模式
  摘要:
  刚刚接触wifi开发的东西,用的模块是 ESP8266-12E。
  资料很多,淘宝地址:https://item.taobao.com/item.htm?spm=a1z09.2.9.10.qGL1rb&id=42444035227&_u=e1js7shc67a2    资料可以从里面下载。
  对于ESP8266本身的固件编程我就不在这里讲了,讲多了有点跑题的嫌疑。
  不过,还行需要先介绍下它的这款芯片的一些特性吧。

  • 模块本身可以作为服务端也可以作为客户端。
  • 支持TCP也支持UDP。
  • 作为客户端,单链接,这里可以实现透传。
  什么是透传?
  简单理解就是不用每次发AT指令,就可以接收和发送数据了。而且,掉电之后可以不用重新配置。
  非透传指的是:不能这边发送数据,那边收到数据。而是中间需要先发指令,然后发送数据。


  • 当模块作为服务器端的时候,处于非透传模式。  一次最大发送数据量为 2K。
    DSC0000.png
DSC0001.png
  这是发送数据的指令集,不过指令有点问题。上面红色方框里面的才是真正的指令集。
  
  实例代码(单片机端)
DSC0002.png
  下面是我2天开发wifi走过的弯路以及步骤如下:


  • 熟悉这款芯片,以及它的特性。  要知道一点,你用手机给它发数据,串口返回的数据是没有反应的。
      而且第一步当中最重要的就是解决物理线路问题。
      很多问题都是由小问题搞来的。
      DB9接口中,母头一的tx一定要和设备的tx相连接。
      母头的引脚定义如下:
DSC0003.png DSC0004.png
  
  物理联线千万不能错,错的话,全盘皆输。
  细节:设备一上电,灯会闪烁。由此可以看到它的发送或者接收数据的情况。
  还有就是当发送不过去数据的时候,断电重启会是一个好的选择,因为你不知道你到底发错了什么数据。

  • 看文档,咨询商家,使用场合,看它这款设备的使用场景等等。例外加群找找相关的资料。

  • 先在PC端搭建实验平台:  PC端发送数据实例:
    DSC0005.png
      PC端接收数据实例:
    DSC0006.png

  • 等上面的一切都没有问题之后,我们进入正题。  Android端wifi开发
      
      首先我们来看看效果:
      
      发AT指令集:
      AT+CWMODE=3
      AT+RST
      AT+CIPMUX=1
      AT+CIPSERVER=1
      
      假如需要发送数据给手机端的话:
      AT+CIPSEND=0,4
      >OK
      上面的所有指令都是需要单个发送的,不支持几条一起发送。而且,最后一条指令最坑,一定要加 \n。不然不行。
      
      现在打开手机端app界面如下:
      1)我们默认是WIFI解锁:
    DSC0007.png
      2)此时程序连接上root 这个AP,此AP就是我们之前设置好的wifi模块的ap。
      至于怎么设置,见AP指令。
    DSC0008.png
      AT指令集: AT+CWSAP="root","12345678",1,3  
      对于这条指令最坑爹的是,密码必须用8位,而且在wifi 手机端程序里面,密码模式最好设置为WPA2_PSK模式,不然很有可能连接不上。
      之前一直没连接上的一个原因就是 设备的AP没有密码,但死活连接不上去。程序还老死掉。后来设置密码之后,成功解决。
    DSC0009.png DSC00010.png
      3)进入到主页面后,会跳出AlertDialog 让你选择以何种方式解锁,如果选择蓝牙解锁,将会跳到另一个页面去。而选择WIFI解锁,则留着本页面。
    DSC00011.png
      4)这里选择wifi解锁:然后我填入6位密码,点击确定。然后串口里面会显示我发送的数据,后面13是发送的字节数。6 + 6 + 1
    DSC00012.png DSC00013.png
      当串口发送OK 的时候,手机端接收到你发送的字符  >OK .手机端readline 是以\n作为结束的标志。必须要加上。不然失效。

  • 手机端APP开发:  参考资料:
  http://blog.iyunv.com/x605940745/article/details/17001641   android之socket编程实例
  http://my.oschina.net/hiliusl/blog/175605
android4.0 WIFI实现网络连接

  http://www.iyunv/kf/201210/163507.htmlAndroid开发——自动连接指定SSID的wifi热点(不加密/加密)
  
  整个程序的思路是这样的:
  初始化---弹出dialog,选择解锁方式----自动连接指定wifi热点(先打开,然后连接)---- 创建客户端数据的输出流 ---- 常见客户端输入流(接收数据)---- 等待按键触发
  下面是一些之前走过的bug之路:
  1)自动连接wifi模块部分代码:
DSC00014.png
  为啥会有一个5s延迟是因为 客户端 初始化需要时间。所以我们先延迟。延迟完毕之后,打开即可。
DSC00015.png
  将刚刚创建的网络添加进来并连接:(测试时候发现无密码的加入不进来,只有3类型的比较好使)
DSC00016.png
  2)这一步完了之后,我们就可以进行 socket连接了
  下面这一步相当于socket初始化,Android 4.0 以后,所有与网络相关的东东都必须要在线程里面进行初始化。
  下面延迟4s是因为等待前面主线程里面连接上 ssid  为 root 的ap热点。然后 等待socket连接好。建立连接。
DSC00017.png
  3)wifi 发送数据
  上面的搞完之后,我们在需要发送数据的地方 发送数据即可:
  这里面不要用 out.writeUTF(XXX);这样发送,串口那边收不到数据,可能因为是编码方式的原因。
  而且我们的接收线程是全局的。不能写在发送下面,本来想着写个超时机制,多少s 之后收不到串口那边发送过来的数据就提示客户端发送失败
  之类的指令。
DSC00018.png
  4)接收数据
  这个里面我故意延迟6s 就是等待 刚刚在线程里面的socket初始化成功。
  然后隔个1s 检测一次,看看socket是不是连接上,没连接上就重新连接。然后建立输入流之间的连接。
  当我们执行 bf.readLine(); 这句代码的时候,必须要知道我们 "串口端"发送数据的末尾必须要加
  一个 "\n " ,不加这个这边是处于线程堵塞状态,一直在这就不走了,我们在遇到问题的时候,可以加
  Log 看状态,不行就加断点,一步步调试。
  当我们收到数据以后,判断里面是否包含 "OK"字样的字符串,如果包含,说明主线程里面的数据已经成功
  发送到"串口了"(设备),且串口会给我们发送一个标识位,这里规定为:"OK"。
  其实我们收到的数据是这样的: ">OK",后面是一个回车(\n)奥。
DSC00019.png
DSC00020.png
  5)当然,上面的这些代码能跑是因为我们还需要加入权限:
DSC00021.png
  
  
    至此,整个手机与wifi模块通讯就都讲完了。以后有补充的话,我还是会第一时间加入进来的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121749-1-1.html 上篇帖子: 更改默认打开wifi功能 下篇帖子: EOBD2 Reliable ELM327 Wifi for iPhone from China
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表