用wifi模块开发项目

一、写在前面
继上次的文章wifi模块esp8266的学习后,我们就可以利用自己手上的esp8266-01 模块做一些小项目啦。网上有关利用wifi模块来开发项目的资料,我百度了,但是觉得很少,大多是在电脑上利用串口调试助手来发送AT指令来调试wifi,还有就是和wifi固件编程有关,所以现在我就得利用自己已有的工具和知识来开发项目。希望各位读者根据自己的实际情况来开发自己的脑洞,有什么好的建议,欢迎留言!

二、项目背景
考虑到实验室的门锁很垃圾,平时锁门开门都要费很大的功夫,所以便自主设计了一个门禁装置,用的是RFID模块、220v电源适配器和电磁门锁改装了实验室的门,这样录入校园卡信息就可以让指定的人开门了。而现在我要利用wifi模块来实现远程控制门的开启,这样哪位同学忘记带卡时,我就可以在远程给他开门了,并且利用这个装置和实验室里面的服务器来记录实验室的情况,可以大概的考个勤。

三、实验经历
上篇文章说过,把单片机当做电脑,通过串口给wifi模块发送AT指令,就可以通过编程的方式来控制wifi模块来完成开发工作,和利用wifi模块的固件库来进行开发相比,虽然这是一种比较low的方式来进行我们的工作,但却简单容易上手。
一开始我采用最普通的通信方式:wifi模块作为客户机,电脑作为服务器,即电脑模式为TCP Serve, 在所写的程序中需要知道电脑的ip地址和端口,其中ip地址已经分配好了,端口可以自己设置,除了具有特殊端口号不能使用外,大部分端口号都是可以使用的,端口号为2byte,所以范围是在0~65535。这样的做法确实可以连上wifi而且给电脑发送数据,但是问题出在 电脑发送数据->wifi接收并发送->单片机,单片机接收数据也是通过串口,wifi发送数据的格式是:+IPD,0,(num):(string) num表示接收的字符串字节数,string是接收到的字符串,根据这一点,我就可以通过电脑来对单片机进行控制,并且只要我在局域网内,就可以控制单片机。想法很美好,显示很残酷,单片机接收来自wifi的数据总是出错,我无法获取到来自电脑的数据(ps:有知道原因的大神可以评论留言告知我,谢谢!)。折磨了我几天后,我决定换种方法。
用wifi模块开发项目_第1张图片
然后我选择了透传的通信方式,至于什么是透传,可以看wifi AT指令的使用实例,PDF文档在我上传的资源里有,使用透传模式后,完美的解决了我上面所遇到的问题,具体做法如图:
用wifi模块开发项目_第2张图片
对了,其中我也尝试过把wifi模块作为服务器,电脑当做客户机,但是wifi处于这种模式下会有一个服务响应超时,也就是客户机在一段时间内没有和服务器产生数据通信的话,服务器会自动把客户机踢了,这是我不想见到的!

四、写在后面
1、测试代码:http://download.csdn.net/detail/brunon/9773958
2、使用资料:http://download.csdn.net/detail/brunon/9767909
3、至此并没有完全结束,这样的设计还是有缺陷的,比如和手机相连的话,但手机ip会一直变,而且连接断开有必须复位单片机才能重新连接。我暂时的解决方案是在实验室里设置一台服务器长时间工作,最后希望技术大佬可以留言帮助我解决我遇到的问题,谢谢!祝大家学习愉快,不断进步!

你可能感兴趣的:(HelloMCU!)