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

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

1, ESP8266资料准备

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

ESP8266在局域网和互联网下的使用_第2张图片

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在局域网和互联网下的使用_第3张图片ESP8266在局域网和互联网下的使用_第4张图片

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在局域网和互联网下的使用_第5张图片

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拉低进入烧录模式.I0-0:用于进入固件烧写模式,低电平是烧写模式(即DFU模式,用专门的烧录工具烧录固件),高电平是运行模式(默认状态),该模式下即AT指令配置、透传等等正常运行模式

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

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

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

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

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

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

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

10,该类WIFI、蓝牙模块的AT指令调试,最需要注意的是进入AT模式、烧录模式、正常模式等等方式,比如有个引脚要拉高或拉低还有发送是否要加上换行以及默认的波特率

下次介绍以下基于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

你可能感兴趣的:(局域网,网络,物联网,嵌入式)