前言:
ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。
由于本人一直从事医学信息处理与医学物联网设备研发,硬件联网一直以来都是比较麻烦的事情,而通过使用 ESP8266 这款WiFi模块,仅需要通过串口使用AT指令控制,就能满足大部分的网络功能需求。本文通过简单介绍及应用实例,让刚接触WiFi模块的读者了解模块的大致使用方法。
ESP8266简介
ESP8266是上海乐鑫信息科技设计的低功耗WiFi芯片,集成完整的TCP/IP协议栈和MCU。而ESP8266模块是深圳安信可公司基于ESP8266芯片研发(增加必要外围电路、串口flash、板载天线等)的串口WiFi模块,成本低、使用简便、功能强大。
硬件与网络的桥梁
和串口蓝牙模块一样,串口WiFi模块也是扩展单片机功能的又一神器。在没有接触8266之前,我对单片机如何联网的问题很是好奇,在书里看过用笨重繁琐的以太网模块实现,但一点都不帅好吧。而小巧的 ESP8266 WiFi模块通过串口AT指令与单片机通讯,实现串口透传,非常好上手。
透传,又称透明传输,具体来说就是“输入即输出(如从WiFi模块串口输入的字符会透传到服务器端)”,数据不改变,不同协议之间的转换(如串口到WiFi、蓝牙等)由模块完成。使用者无需关心内部具体实现,因此模块对于使用者是“透明的”、似乎不存在的(因为可无视中间的实现原理)。一个高度封装的模块,应该隐藏内部实现细节,仅对外提供使用接口。
把硬件联网之后,就再也不是“玩单机”了。配合服务器端的Socket网络编程,可以玩许多东西。所以我觉得WiFi模块是连接软件(网络编程)与硬件(单片机)的桥梁,把我所学的单片机和Web知识联系起来了。
而近来“物联网”或者说“智能硬件”似乎也火了起来,许多强大的芯片和模块的出现使得联网设备的开发门槛大大降低。正是有了这些为物联网大业铺路的各大厂商们,我等对网络一窍不通的渣渣也能轻松将硬件联网、实现网络通讯。
原理图及引脚说明
![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/3136f36fe26f087f1261acf2203d818b.p
文章图片
文章图片
要让模块上电正常工作只需三处接线:VCC和CH_PD接3.3电源正极,GND接地。刚好USB-TTL下载模块上有3.3V的电源。而使用串口调试要再把模块与下载器的TXD和RXD交叉连接。这样一来WiFi模块就能与电脑连接、用串口助手进行测试了。
文章图片
下面进行用USB转TTL连接模块后在串口助手上进行AT模式调试;
1.AT测试:
电脑安装好USB-TTL模块的驱动后,USB口插上模块,在设备管理器查看串口号后,打开串口调试工具XCOM(正点原子),串口号选择模块对应的,默认波特率115200,数据-停止-校验-流控:8-1-None-None,勾选“发送新行”(一定一定要记得勾选“发送新行”,否则WiFi无法识别AT指令),点击“打开串口”按钮,然后发送AT,若串口打印乱码后看到“OK”,说明模块进入AT模式。和某些需要按键进入AT指令模式的蓝牙模块不同,ESP8266上电后就运行在AT指令模式下。
文章图片
2. ESP8266的AT指令
AT指令最早在蓝牙模块上接触过,所谓AT指令实质上就是一些起控制作用的特殊字符串。模块可以通过AT指令控制使用和用源代码API函数开发,前者开发速度快,难度非常低(傻瓜化使用)。后者灵活,难度较大。本文只涉及前者,后者见下篇博客;
下面仅列举一些最常用的AT指令及用法,指令的详细参数及使用说明请参考官方文档:ESP8266 AT指令集
AT测试模块是否启动,进入AT模式
AT+RST重启
AT+GMR查看版本信息
AT+CWMODE设置WiFi模式(sta/AP/sta+AP)
AT+CWLAP扫描附近的AP信息
AT+CWJAP连接AP
AT+CWQAP与AP断开连接
AT+CWSAP设置ESP8266 softAP配置
AT+CWLIF获取连接到 ESP8266 softAP 的 station 的信息
3.模块连接我们手机热点或者我们自己家里路由器的方法:
1.发送AT+CWMODE=1,配置模块为sta模式(参数1,2,3分别对应模式sta,AP和sta/AP)。此模式下,esp8266模块相当于客户端,可以连接其他路由器;
文章图片
2.发送AT+CWLAP指令扫描当前附近WiFi,模块会返回可用AP列表。
文章图片
3.使用AT+CWJAP=“WiFi名称”,"WiFi密码"连接到指定的路由器,比如我的手机热点是 “fly”,密码是“hhhhjjjj”,实际连接WiFi发送的指令就是AT+CWJAP=“fly”,“hhhhjjjj”。
文章图片
返回的“WIFI CONNECTED”说明连接成功,“WIFI GOT IP”代表模块分配到了IP。
【物联网|ESP8266串口WiFi模块基本使用方法和配置教程】最后可使用AT+CWQAP断开当前连接的WiFi。
4。esp8266也可以自己作为wifi热点;跟手机开热点一样
步骤:1.使用AT+CWMODE=2指令配置模块为AP模式
文章图片
2.发送AT+CWSAP=“ESP8266”,“12345678”,3,4设置AP的ssid为“ESP8266”,密码12345678,最后两个参数3和4分别表示信道和加密方式。手机连上模块的WiFi,使用AT+CWLIF可查看当前连接到AP的客户端列表。
文章图片
文章图片
5.如何用WiFi模块连接TCP服务器
TCP/IP协议:
传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。
在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。——维基百科
我们常说互联网互联网,那两个连接到互联网的设备该如何相互“交流”呢?TCP连接就是其中一种最常用的方式。TCP是面向连接的传输层协议,通信双方都要实现TCP协议,其中一方只需目标ip地址和端口号就能发起连接,连接一旦建立,就像在双方之间拉了一条管子,管子两端可进行全双工(双向同时收发)通信。
TCP是传输层协议,是在网络层IP协议的基础上封装而来。而这些封装的实现细节也是与我们无关,我们只需使用系统所提供的相关接口“拿来即用”,比如网络编程中的Socket。ESP8266模块中也实现了TCP/IP协议栈,模块作为客户端可轻松使用AT指令向服务端发起TCP连接。连接TCP服务器并开启透传模式后,模块串口收到的数据就会通过TCP连接透传到服务端,这样就完成了数据从硬件串口通过网络到程序进程的传输,实现软硬结合。
相关AT指令:
AT+CIPSTATUS查询网络连接信息
AT+CIPMUX设置多连接模式
AT+CIPSTART建立TCP连接UDP传输或者SSL连接
AT+CIPCLOSE关闭TCP/UDP/SSL传输
AT+CIPMODE设置透传模式
AT+CIPSEND发送数据
连接服务器步骤:
1.首先我们需要一个TCP服务器,利用调试工具“网络调试助手”即可创建一个TCP服务器,实现服务端对指定端口监听TCP连接请求,当然也可以自己写程序实现,为了简便这里用现成的就好。
打开“网络调试助手”,左侧选择“TCPServer”,电脑和WiFi模块连接同一个手机热点,查看手机热点IP后,我这里是192.168.43.258,这步非常关键,一定要选对,选择这个IP输入自定的端口号我这里填的1234,下次用的时候最好换一个,只要是1024-65535都可以,不然容易打不开,点击“连接”按钮开始监听本机TCP连接请求。在进行下一步之前,请确保电脑和WiFi模块连接到同一个路由器。
文章图片
2.输入指令AT+CIPMUX=0设置单连接
文章图片
3.从“网络调试助手”得知本机IP和端口,输入指令AT+CIPSTART=“TCP”,“192.168.43.140”,8080(指令参数分别为连接类型、目标IP地址和端口号)(对应步骤1)向服务器发起TCP连接请求,握手成功并建立连接后,服务器端的“网络调试助手”就会显示客户端IP和端口信息,此时双方已做好收发数据的准备;
文章图片
文章图片
4.输入指令AT+CIPMODE=1开启透传模式
文章图片
5. 输入命令AT+CIPSEND进入透传模式,此时模块会把所有串口收到的数据都从TCP端口发送至服务器,同样的,从服务器收到的数据也会从模块串口发送出去打印到sscom上。这样WiFi模块就真正成为了连接硬件与网络的桥梁,实现了串口到TCP的协议转换
若要退出透传模式返回AT指令模式,需发送不带回车换行的+++(取消勾选xcom的“发送新行”再发送指令即可)
文章图片
见识了TCP透传的强大,只要再稍微学习一下socket网络编程,那么对于通过单片机串口收发数据实现的功能,现在都可以通过自己编写服务器上的TCP程序来实现。
写在最后:使用WiFi模块的一些细节及注意事项
1.模块使用3.3V供电,一定注意电源的稳定,一些USB转串口模块电源不能满足要求,我用的是USB转串口模块5V(笑哭。。。。。。)。
2.模块在连接WiFi后若断电,则会在下一次上电后自动重连。同理,模块在透传模式下断电后,下次上电仍会进入透传模式,不响应AT指令,很容易误以为模块坏了。退出透传模式需发送不带回车换行的+++
3.如果断开TCP连接时没有实现完整的TCP退出流程,ESP8266 会判断为异常开,对TCP server 进行重连。
4.AT指令一定以回车换行符” ”结尾,或者勾选“发送新行”,二者只需要选其一,但退出透传模式需发送不带回车换行的+++;
5.如果出现AT模式不正常,不要着急重启,确认一次模式是否正确AT+CWMODE 设置WiFi模式(sta/AP/sta+AP);是否退出透传模式;
6.关于WiFi模块要写的也就这么多了。把以上的AT指令都自己试一遍、观察效果后,那么ESP8266这个模块的AT指令使用是基本没问题了,然后就可以发挥想象力用模块着手开发更好玩的东西啦~~~
参考来自:http://www.elecfans.com/d/1445744.html
推荐阅读
- STM32实验讲解|STM32控制舵机讲解,从入门到放弃。
- java|Kali Linux 2021.3 的新改进 | Linux 中国
- 嵌入式|构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具
- 嵌入式|mpu6050六轴传感器模块驱动程序源代码分享 - 全文
- stm32|STM32中iic驱动mpu6050例程
- 单片机开发原理|单片机零基础完整攻略-1
- 嵌入式|物联网系列①——基于ESP8266的网络服务器
- 物联网|Esp8266接入OneNet调试、Arduino接入OneNet平台[有用]
- 【雕爷学编程】Arduino动手做(96)---BT05蓝牙4.0BLE模块