ESP8266在局域网和互联网下的使用

ESP8266在局域网和互联网下的使用

1, ESP8266资料准备

首先认识一些公司和网站平台,上海乐鑫、深圳安信可,物联网公司有电灯科技等等,还有各类云平台,onenet,腾讯云,阿里云,百度云等等,还有arduino官网、GitHub等等,去他们的官网可以找到一些相关文档和工具,上海乐鑫是做esp8266这个芯片的,而安信可是把这个芯片加上一些必要的外围电路做成一块开发板,也可以叫nodemcu。相当于乐鑫是卖cpu的,而安信可是卖手机的。
ESP8266在局域网和互联网下的使用

ESP8266在局域网和互联网下的使用

2,ESP8266开发环境的搭建

常见的esp8266可选的开发方式有以下几种(不止):

1,官方SDK开发:使用官方提供的软件开发包,在SDK的基础上进行二次开发。
2,AT指令开发:通过在 esp8266 中烧写对应的固件,使得esp8266可以通过串口AT指令和其他单片机,如STM32,51单片机等通信,通过串口发送数据来配置esp8266,进行开发。
3,Lua 脚本开发:nodemcu是一个含Lua解释器的固件,通过烧写该固件,可以使用Lua语言来开发esp8266。
4,Python 脚本开发:MicroPython for ESP8266 是一个含python解释器的估计,通过烧写该固件,可以使用Python来开发esp8266。
5,Arduino IDE 开发:arduino支持esp8266的开发,和其他单片机的开发方式相同,arduino IDE 高度封装了各种esp8266的外设驱动,提供了简明的API供程序员直接调用
6,安信可提供了一套开发软件供其开发,不用装虚拟机即可开发

小结:总的来分有两类开发方式:

一是:ESP8266是wifi芯片,其模组内有固件,厂家封装了wifi的协议栈,用户在使用的时候只需要把该模组当做一个透传模块就可以。通过串口和该模块发送AT指令即可操作WIFI。该模式需要用到一颗单片机,单片机和ESP8266模组通过UART来连接,单片机编写串口程序,单片机通过串口给模组发送AT指令,AT指令开发的优势是不需要实现协议栈,只是把模组当做一个串口模块即可,大大降低了开发难度,但是需要用一颗单片机,成本提高了。

二是:ESP8266本身就是一颗32位的单片机,SDK开发方式就是重新编程,根据自己所需要的功能实现相关的协议栈,需要对WIFI、TCP、UDP、MQTT等网络、通信协议有一定的知识,并能把他们用代码来实例化。换句话说,自己实现模组的固件。这样做的好处就是节省了一颗单片机,确定就是对编程能力、技术要求较高、门槛较高。

3,ESP8266的工作模式

模式1:串口无线 WIFI(COM-WIFI AP)模式,模块作为无线 WIFI 热点,允许其他WIFI 设备连接到本模块,实现串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 3 个子模式:TCP 服务器、TCP 客户端,UDP。

模式2:串口无线 STA(COM-WIFI STA)模式,模块作为无线 WIFI STA,用于连接到无线网络,实现串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 3 个子模式:TCP 服务器、TCP 客户端,UDP。

模式3:串口无线 AP+STA(COM-WIFI AP+STA)模式,模块既作无线 WIFI AP,又作无线 STA,其他 WIFI 设备可以连接到该模块,模块也可以连接到其他无线网络,实现串口与其他设备 之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 9 个子模 式:(TCP 服务器、TCP 客户端,UDP)||(TCP 服务器、TCP 客户端,UDP)。

4,透传工作方式

这里我只对透传工作方式做详细介绍,也就是用AT指令操作ESP8266,该工作方式可以在局域网下透传串口数据到手机或者电脑,用于无线查看单片机串口数据,至于用SDK开发ESP8266本文不做过多介绍。这里我用的是ATK_ESP8266模块,该模块的使用指南明确说明,仅在 TCP Client 和 UDP,支持透传模式,原因稍后介绍。

设置ESP8266为AP——TCP客户端ESP8266在局域网和互联网下的使用ESP8266在局域网和互联网下的使用

1.AT+CWMODE=2
2.AT+RST
3.AT+CWSAP=“ATK-ESP8266”,“12345678”,1,4
4.AT+CIPMUX=0
在发送了上述4条指令并且ESP8266模块返回正确的数据后,然后手机端连接"ALIENTEK"热点并使用手机端的网络调试助手配置手机为TCP Server端,并设置端口号为8086,手机这边可以查看手机连上8266模块后手机端的IP,该IP一般是192.168.4.xxx。测试时模块分配给手机的IP是192.168.4.2,所以需要将第五条指令中的IP地址改为192.168.4.2。一般来说,ESP8266的IP为192.168.4.1,则接入ESP8266的手机或电脑的IP为192.168.4.2
5.AT+CIPSTART=“TCP”,“192.168.4.2”,8086
6.AT+CIPMODE=1
7.AT+CIPSEND
即可透传串口数据

设置ESP8266为AP——TCP服务器ESP8266在局域网和互联网下的使用

1.AT+CWMODE=2
2.AT+RST
3.AT+CWSAP=“ATK-ESP8266”,“12345678”,1,4
4.AT+CIPMUX=1
5.AT+CIPSERVER=1,8086
在发送了上述5条指令,8266模块发回正确的数据后,然后手机端WIFI连接“ALIENTEK”热点并使用手机端的网络调试助手配置手机作为TCP Client,并配置IP为192.168.4.1,端口号为8086,然后再依次发送
6.AT+CIPSEND=0,25
7.012345678901234567890数字
需要说明的是8266模块每发送一次数据之前就需要发送AT+CIPSEND=0,25。

注意

1,若想如果需要模块上电自动连接到某个 IP 并进入透传模式,这个时候 需 要 在 模 块 连 接 到 路 wifi 热 点 之 后 ,发送指令,AT+SAVETRANSLINK=1,“192.168.1.xxx”,8086,“TCP”,设置模块为上电自动连接到 TCP Server : 192.168.1.xxx , 8086 , 并 进 入 透 传 模 式 。 当 发 送AT+SAVETRANSLINK 指令后,模块断电再上电会自动进入透传模式,此时发送 AT 指令模块是不会回复的(即使透传的服务器不存在,模块也会进入透传模式的)。模块要恢复到 AT 指令模式要先退出透传模式(不勾选发送新行,单独发送一组数据+++,即可退出透传模式),然后勾选发送新行,再发送“AT+SAVETRANSLINK=0”,这样上电模块就不会再上电进入透传了

2,发送AT指令可以借用开发板上面的板载CH340,开发板上面的地多,方便烧录时GPIO拉低进入烧录模式

3,PC机上用网络调试助手建立TCP服务器时,总是与客户端建立TCP连接失败,原因:防火墙没关闭,注意端口不用使用已经被用了的端口号,可用指令在cmd中查询
ESP8266在局域网和互联网下的使用

4,DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。在路由器搭建起的局域网中,会动态分配IP地址,即设备每次连接局域网后的ip地址不固定

5,进行开发时,其实就是到处嫖各类驱动代码,然后一步一步移植、调试

6,透传模式需要设置为单连接,但是作为服务器不能设置为单连接,所以透传模式需要使得8266为客户端
ESP8266在局域网和互联网下的使用
ESP8266在局域网和互联网下的使用ESP8266在局域网和互联网下的使用
ESP8266在局域网和互联网下的使用

7,TCP与UDP,可自行百度,TCP特点主要是稳,受损的数据会重发,而UDP是快,受损数据不重发

8,注意有些MicroUSB线不支持数据传输,智能充电

9,STA模式下的透传设置和AP模式差不多,只是需要WiFi密码和名称

下次介绍以下基于Arduino的esp8266开发

[参考资料]

【ESP8266模块在AP模式下设置为TCP服务器与手机进行通讯的方法(通过串口助手) 】http://www.openedv.com/forum.php?mod=viewthread&tid=291982&highlight=ESP8266%C4%A3%BF%E9%D4%DAAP%C4%A3%CA%BD%CF%C2%C9%E8%D6%C3%CE%AATCP

【ESP8266模块在AP模式下设置为TCP客户端与手机进行通讯的方法(通过串口助手) 】http://www.openedv.com/forum.php?mod=viewthread&tid=291982&highlight=ESP8266%C4%A3%BF%E9%D4%DAAP%C4%A3%CA%BD%CF%C2%C9%E8%D6%C3%CE%AATCP

ESP8266_AT指令集V2.1.0

ATK-ESP8266 WIFI用户手册_V1.5

ATK-ESP8266 WIFI模块使用说明(战舰V3&精英版)_AN1509A

上一篇:esp8266,环境搭建,AT程序开发


下一篇:esp8266 nonoSDK 开发入门