ESP8266介绍
ESP8266是⼀款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争⼒的封装尺⼨和超低能耗技术,专为移动设备和物联⽹应⽤设计, 可将⽤户的物理设备连接到 Wi-Fi ⽆线⽹络上,进⾏互联⽹或局域⽹通信,实现联⽹功能。
ESP8266是上海乐鑫信息科技设计的低功耗WiFi芯⽚,集成完整的TCP/IP协议栈和MCU。⽽ESP8266模块是深圳安信可公司基于 ESP8266芯⽚研发(增加必要外围电路、串⼝flash、板载天线等)的串⼝WiFi模块,成本低、使⽤简便、功能强⼤。
ESP8266本身就是一个mcu,所以它可以有两种用途:
1.当成一个普通的wifi模块,用官方集成的AT指令集进行开发;
2.当成一个集成了wifi功能的mcu,用安信可或其他平台提供的sdk进行深度开发。
详细的产品信息可查看官方文档,本次只是介绍如何将ESP8266模块设置为station模式并连接服务器
通信情况:
1.电脑通过串口发送AT指令给ESP8266,设置ESP8266连上WIFI,再连接上服务器,然后ESP8266就可以通过网络跟服务器进行通信,服务器发送信息给ESP8266又可通过串口在电脑上查看到
2.电脑通过串口发送AT指令控制ESP8266的活交给单片机去做
单片机通过串口发送AT指令控制ESP8266连上服务器,服务器通过网络向ESP8266发送的信息也可被单片机通过串口捕捉到
情况1:电脑安信可串口调试助手发送AT指令控制ESP8266联网
连接家中路由器或者手机热点
接线:
CH340要选用可以接负载的,功能强大点的,有些便宜的CH340是不支持接负载的,所以ESP8266的3.3v供电需要额外电源,但ESP8266的地线要与CH340的GND接一起,才能保证通信正常
ESP-01s出厂波特率正常是115200, 注意:AT指令,控制类都要加回车,数据传输时不加回车
上电后,通过串口输出一串系统开机信息,购买的部分模块可能电压不稳,导致乱码,以 ready 为准
################################################
arch:ESP8266, 1
compile_time:Ai-Thinker|B&T
wifi_mac:4c75250dAE2F
sdk_version:v3.4-22-g967752e2
firmware_version:2.2.0
compile_time:Jun 30 2021 11:28:20
ready
################################################
有些模块上电后没有上诉信息,可能是乱码,最后ready变为invalid,但后续发送AT指令模块正常应答的话,说明设备是正常的,这初始化信息影响不大
上电后发送AT指令测试通信及模块功能是否正常
AT
OK
通过以下命令配置成9600波特率 ,便以跟单片机通信
AT+UART=9600,8,1,0,0
入网设置
设置工作模式
AT+CWMODE=3 //1. 是station(设备)模式 2.是AP(路由)模式 3.是双模
OK
以设备模式接入家中路由器配置,如果家里没路由器,也是可以用手机开热点的,输入热点名称和密码,等待连接成功,不行就多试几次
AT+CWJAP="315-WC-WIF","abc666888" //指令
WIFI CONNECTED //结果
WIFI GOT IP //结果
查询IP地址
AT+CIFSR //指令
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"4e:75:25:0d:ae:2f"
+CIFSR:STAIP,"172.30.168.50"
+CIFSR:STAMAC,"4c:75:25:0d:ae:2f"
OK
STAIP就是连上的路由器的IP地址,至此说明ESP8266成功连上WIFI
连接到TCP server
TCP是传输层协议,是在⽹络层IP协议的基础上封装⽽来。⽽这些封装的实现细节也是与我们⽆关,我们只需使⽤系统所提供的相关接 ⼝“拿来即⽤”,⽐如⽹络编程中的Socket。ESP8266模块中也实现了TCP/IP协议栈,模块作为客户端可轻松使⽤AT指令向服务端发起 TCP连接。连接TCP服务器并开启透传模式后,模块串⼝收到的数据就会通过TCP连接透传到服务端,这样就完成了数据从硬件串⼝通过⽹络到程序进程的传输,实现软硬结合。
打开网络助手,设置TCP服务器
ESP8266连接服务器
AT+CIPSTART="TCP","172.30.168.50",8880 //指令,注意双引号逗号都要半角(英文)输入
CONNECT //结果:成功
OK //结果:成功
发送数据
AT+CIPSEND=4 // 设置即将发送数据的长度 (这里是4个字节)
>abcd // 看到大于号后,输入消息,abcd,不要带回车
Response :SEND OK //结果:成功
//注意,这种情况下,每次发送前都要先发送AT+CIPSEND=长度 的指令,再发数据!
透传模式
透传,⼜称透明传输,具体来说就是“输⼊即输出(如从WiFi模块串⼝输⼊的字符会透传到服务器端)”,数据不改变,不同协议之间的转 换(如串⼝到WiFi、蓝⽛等)由模块完成。使⽤者⽆需关⼼内部具体实现,因此模块对于使⽤者是“透明的”、似乎不存在的(因为可⽆视 中间的实现原理)。⼀个⾼度封装的模块,应该隐藏内部实现细节,仅对外提供使⽤接⼝。
上一节每次发送数据都要进行字符长度设定,如果设置成透传,就可以一直发送和接收,就和普通的串口通信没什么区别
在连接上服务器后,发送下面的指令
AT+CIPMODE=1 //开启透传模式
Response :OK
AT+CIPSEND //带回车
Response: > //这个时候就可以随意发送接收数据
退出透传模式
在安信可串口助手的发送框内,发送两次+++即可退出透传模式,记得两次都要取消发送新行