手机通过ESP8266模块和单片机通过局域网通讯
1、接线;
2、ESP8266模块调试;
3、手机APP的TCP通讯程序;
4、单片机串口结构程序。
一、接线
我买的模块是ESP8266 ESP-01S
(如果没有TTL转串口的模块,也要顺便买一个这个模块,这个模块作用是用来给ESP8266模块发送指令)
接线方式为:
1.3V3接串口3.3V(此处一定要接到3.3V上,如果接到5V引脚上,模块不工作,有些TTL转串口模块没有3.3V的引脚,买的时候要注意)
2.EN引脚接到串口VCC引脚上或者5V引脚上都行
3.RX和TX接到串口的TX和RX引脚上,即叉接(RX和TX分别是发送和接收引脚,所以要叉接)
4.GND接到串口的GND引脚上
5.其他引脚不用接
二、ESP8266模块调试,我们做的是TCP调试,ESP8266模块配置也是配置TCP服务器的程序。
串口调试助手百度网盘链接(永久有效)
链接:
https://pan.baidu.com/s/1Z0676e7GG2NI4j5P54Og3g
提取码:
1111
下载之后,把TTL转USB模块插到电脑上(电脑要安装CH340驱动程序!!!)
二、打开调试助手
1. 设置串口波特率为115200,然后打开串口,输入AT+RESTORE(初始化模块)点击发送(我已经调试好了,方便演示才输入这个指令,重新配置模块,读者买完之后是不需要这一步的,如果你想重新定义通讯方式,可以用这一步,读者只需要把波特率调到115200,打开串口,进行下一步就行)
2.发送:“AT+RST”——复位(重启),如果返回乱码,就说明你线接的对,模块没有问题,串口配置没有错,也和单片机通讯上去了。
3.发送“AT+CWMODE=2”——配置模式
4.发送
“AT+CWSAP_DEF="TCP_Server","12345678",5,4”
——配置ESP8266的WIFI名字和WIFI密码;当然,这只是局域网(内网),手机连接上去是上不了互联网的"TCP_Server"是WIFI名,“12345678”是密码。
5.发送“AT+RST”——重启ESP8266模块,重启后前面的配置才生效。
6.发送“AT+CIPMUX=1”——开启多连接
7.发送“AT+CIPSERVER=1,8001”——开启服务器,设置端口号;端口号等会写手机程序的时候会用到,端口号需要看你买的模块支持的端口号。
8. 注:二到五步配置一次就行了,掉电重连后也不用配置,但是初始化要重新配置;第六步和第七步每次重启后或者断电重连后都要重新配置,配置完之后就要看一下有没有连接上去,当然,我们先要看一下自己是否配置正确,如果正确我们再编写手机程序,但是我们怎么看呢?
9.调试
9.1下载件,连接模块WIFI。
https://pan.baidu.com/s/1qZddJa8,这个是android手机网络调试助手,下载下来之后,安装到手机上。手机连接到ESP8266的模块的局域网,密码是第四步设置的密码
9.2 在软件里面选择TCP Client,连接到服务器的端口号为第七步设置的端口号,IP地址需要在调试助手发送“AT+CIFSR”——查询本机地址。点击连接,如果按钮变成断开,则连接成功。
9.3发送数据,手机调试助手分别发送1,2,3,4,电脑串口助手分别接收到+IPD,0,1:1。这就说明我们之前的配置是正确的。
10.上面的配置只是手机发送数据给ESP8266,通过电脑串口接收,现在要进行单片机和ESP8266的连接了。因为51单片机通讯的波特率为9600,所以ESP8266要与单片机进行连接通讯,就要先用电脑把ESP8266的波特率设置为9600,发送“AT+CIOBAUD=9600”——设置波特率。
11.重启一下,发送“AT+RST”——复位(重启)。
注:这里一定一定要把串口助手的波特率设置成9600!如果不设置,你是发送不了数据的。前面在第8步说过,每次重启后都要重复第六步和第七步,请读者重新安装六七步的顺序配置一下模块。
8266模块TCP通讯配置就到这里了,如果需要UDP通讯的,请留言问我。
三、手机代码——Android studio,Java语言,TCP通讯
这里手机布局我就不细讲,我主要展示TCP通讯源码。
这个是我写的一个手机程序视频,一个2个activity,其中一个登陆界面一个主界面,主界面承载2个fragment,每个fragment中有4个按钮。
接下来,上代码!
1.登陆界面代码:
2.主界面部分代码:
3.fragment1界面部分代码:
4.fragment2界面部分代码:
5.主要讲一下socket通讯代码
5.1定义一个socket类
5.2在MainActivity中定义端口号和ip地址,调用socket类
5.3 fragment中定义线程池,定义一个Handler——消息分发对象,reader和writer,读数据流和写数据流,
按钮负责发送数据,
手机程序到这里就结束了。
四、单片机程序
在写程序之前,建议把单片机晶振换成11.0592MHz,这个晶振比较准,防止丢包。
这个是我自己写的代码:
TX,RX接到单片机的RX,TX引脚上
如果有更多的操作,参考代码:
效果展示: