唯倚社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1158|回复: 2

[学习教程] ESP8266设置为路由模式后手机内网查看DHT11数据

[复制链接]

127

主题

293

帖子

4491

积分

LV3

Rank: 3Rank: 3

积分
4491

最佳新人

发表于 2017-10-26 23:23:24 | 显示全部楼层 |阅读模式

轻松玩转社区

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 MartinGarrix 于 2017-11-6 12:01 编辑

ESP8266设置为路由模式后手机内网查看DHT11数据

本教程配送ESP8266代码和安卓APP应用源码
1.  实现原理

既然我们需要用手机去查看DHT11数据,那么我们在不外加单片机的情况下,只是单纯的在ESP8266模块上实现,没有用到ESP8266的AT指令,TCP通信。那么我们主要有一下几种方法:

一、将ESP8266作为服务器,用户的手机作为客户端。手机链接ESP8266WiFi模块,通过TCP通信,然后手机下发相应指令。当ESP266模块接收到相应指令时,那么对相应IO口进行控制,以达到查看数据目的。

二、将ESP266作为客户端,用户的手机作为服务器。ESP8266模块去链接手机模拟的服务器,通过TCP通信,然后手机下发相应指令。当ESP266模块接收到相应指令时,那么对相应IO口进行控制,以达到查看数据目的。

原理基本一致,只是交换了双方位置,控制原理一样。当然我们用户也可以将手机改为电脑PC,原理是一样的。本教程采用第一种方法。那么为什么我们今天只介绍手机控制,而且我们的手机只是作为客户端,ESP8266作为服务器。首先我们用手机控制比电脑方便很多。假设我们采用第二种方法,ESP8266作为客户端去连接手机的话,用户是很难知道ESP8266是否连接上手机的,就算连上了也不知道有没有存在某个时段会不会失去连接。而用户的手机去连接ESP826模块的话,我们随时可以查看手机是否连接成功,是否掉线。

编译环境:ESP_IDE                  Eclipse

编译语言:C                             JAVA

硬件模块:WiFi继电器  SIOT-1模块DHT11版本

通信方式:TCP                         串口



2.ESP8266主要实现代码
首先我们打开我们的ESP8266工程,找到我们user_main.c找到我们的user_init函数,这个函数我们主要初始化了串口,并设置了ESP8266模块的工作函数

X1LZZZW211BGCM{5JPLS])4.png

这里我们设置的工作方式。WiFi 3种工作模式: tation 模式 soft-AP模式 station+soft-AP模式,我们设置的就是soft-AP模式,也叫路由模式。在InitWifiSetting,函数中我们初始化了WIFI,设置了WiFi属性,WiFi名字叫WeiecnIOT-XXX,其中后面的XX为MAC地址。WiFi无密码。在此我们单独的对IO口操作就不做介绍了。我们再打开TCPServer.c文件夹,这是我们底层的TCP通信函数。可以看到我们在最上面定义了宏SERVER_LOCAL_PORT为60000,这是我们模块的服务器开放端口,这个是可以更改的值从0到65535。当然有些是可以用有些是不能随便乱用的,在这里我不做介绍,大家上网查资料。Tcp_server_recv_cb这是我们的ESP8266模块TCP接收函数void*arg : 回调函数的参数,网络传输结构体 espconn 指针。Pusrdata为TCP接收函数指针,length为TCP接收数据的长度。在这个函数你们我们主要对TCP发送过来的数据进行了判断处理,在相对应的控制指令我们对数据是开启上传还是关闭上传。

D~EPD{DI8FW76F9SYKPYY}M.png

而在这里我们不得不提的就是我们的SendData函数,这是我们的ESP8266模块的TCP发送函数,调用它则可向客户端发送数据。它只有两个参数一个是数据一个是数据长度。还有一个TCPServerInit函数,这是TCP服务器初始化启动函数。其余我们不做介绍了,用户自己对照手册查看。只有当我们的用户请求了开启上传DHT11数据,我们模块才会上传数据。DHT11驱动代码我们不做介绍了。

记住此固件IP地址为192.168.4.1,端口号为60000

3.安卓APP主要实现代码
首先我们打开安卓代码,此次代码主要基于Android4.0开发的。我们打开MainActivity.java在这里我们主要关注当我们用户输入完IP地址时,因为我们已经将端口号固定,当我们用户点击连接时操作APP的开关按钮就能开启或者关闭上传数据。下面我们附上两张主要实现代码。

EQTE]}I]B85P76PA74(Q)FW.png

5@A}~E2NBCF62U]9~GRE(`2.png

代码我们固定了IP和端口号,IP为192.168.4.1,端口号为60000

其余的我们不做详细介绍。本次安卓代码其中TcpSocketsClient.java为安卓APP主要TCP实现通信代码,这个为底层代码,用户最好不要进行修改。

附上一张APP界面图

1.png

4.注意及说明
两份源码用户如果需要进行更改,最好只改控制的命令  上传继电器状态的指令  IO口  端口号  WiFi名称和波特率,其余为底层实现代码,如果用户没有一定开发能力最好不要进更改。如果用户的手机为Android7.0或者Android7.0以上那么我们打开安卓源码时Eclipse在你打开了手机的开发者模式是无法发现您的设备的。在调试代码时,用户可以打开串口口调试。

Weiecn_SIOT为ESP8266代码

WeiecnSIOTAPP为安卓应用源码
注意下载完程序源码之后,目录带中文的一定要全部改掉,编译器和下载软件不支持中文。回复可见程序源码连接
游客,如果您要查看本帖隐藏内容请回复

127

主题

293

帖子

4491

积分

LV3

Rank: 3Rank: 3

积分
4491

最佳新人

 楼主| 发表于 2017-10-26 23:25:36 | 显示全部楼层
666666666
回复

使用道具 举报

0

主题

1

帖子

10

积分

LV1

Rank: 1

积分
10
发表于 2017-10-29 14:49:18 | 显示全部楼层
靠谱  找时间试一下~
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|weiecn ( 湘ICP备14002058号 )

GMT+8, 2018-5-25 20:45 , Processed in 0.082311 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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