前言:
在嵌入式开发中,无线通信的方式有很多,其中 WIFI 是绕不开的话题。说到 WIFI 通信,就不得不提 ESP8266了。
ESP8266 是一款高性能的 WIFI 串口模块,实现透明传输。只要有一定的串口知识,不需要知道 WIFI 原理就可以上手,在业内应用广泛。
一、ESP8266介绍
ESP8266 是一个非常强大的 WIFI 模块,可以利用串口与单片机进行通讯,从而编程实现控制 ESP8266。利用 ESP8266 可以访问一些 API,获取天气信息或者完成网络授时,也可以连接云平台进行开发。不过因为是串口传输,速度较慢,不能用来传输图像、视频这些大容量的数据,但是传些传感器数据还是绰绰有余的。
我们常说的 ESP8266 是指 ESP8266 WIFI 模块,它是物联网和嵌入式开发常用的模块,其中 ESP8266 是 WIFI 模块的芯片型号。
ESP8266 有 ESP-01/01S/07/07S/12E/12F/12S 等规格,还有正点原子自研的 ATK-ESP8266 (修改了固件及模组引脚)。
本文用到的是 ESP-01S,长下面这样。这种模组非常便宜,某宝几块钱一个,建议可以买几个囤着。
1.1、ESP8266工作模式
ESP8266 支持 STA、AP、AP+STA 三种工作模式。
STA 模式(Station)
一般用于远距离传输。ESP8266 通过路由器连接互联网,终端设备通过互联网实现对设备的远程控制。简单来说,此时的 ESP8266 可以当作是一个客户端,可以向服务端进行数据的下载与传输。这就类似于,手机/平板/笔记本(客户端)可以通过 WIFI 连接到路由器进行上网。
AP 模式(Access Point)
一般用于近距离传输。ESP8266 作为热点,提供无线接入服务、数据访问,一般的无线路由/网桥工作在 AP 模式下,最多支持 4 台设备接入。简单来说,此时的 ESP8266 可以当作是一个服务端。这就类似于,ESP8266 变身为一个路由器,然后手机/平板/笔记本可以通过 WIFI 连接到 ESP8266 进行上网。
AP+STA 模式
两种模式的共存模式,可以通过互联网控制可实现无缝切换,方便操作。简单来说,此时的 ESP8266 可以当作是一个路由器既可以做服务端接收也可以当客户端连接路由器,进行联网传输和控制。
二、AT指令
2.1、什么时AT指令?
AT 指令(AT Commands)最早是由发明拨号调制解调器的贺氏公司为了控制拨号调制解调器而发明的控制协议。后来随着网络带宽的升级,速度很低的拨号调制解调器基本退出市场,但是 AT 指令被保留了下来。
在嵌入式开发中,经常是使用 AT 命令去控制各种通讯模块,比如 ESP8266 模块、4G 模块、GPRS 模块等等。一般就是主芯片通过硬件接口(比如串口、SPI)发送 AT 指令给通讯模块,模块接收到数据之后回应响应的数据。
2.2、常用AT指令介绍
AT 指令分为四种类型:
2.3、基础AT指令
2.3.1、AT—测试 AT 启动
2.3.2、AT+RST—重启模块
2.3.3、AT+GMR—查询版本信息
2.3.4、ATE—开关回显功能
是否开启回显区别:
开启:
不开启:
2.3.5、AT+RESTORE—恢复出⼚设置
2.3.6、更多其它指令
还有很多很多的基础指令,上面只列出了常用的!
2.4、基础 Wi-Fi 功能 AT 指令
2.5、单连接 TCP Client
2.5.1、配置 WiFi 模式
(没后缀的指令和有DEF后缀的指令作用一样,保存到 Flash)
AT+CWMODE=3 // softAP+station mode
响应 :
OK
2.5.2、连接路由器
AT+CWJAP="SSID","password" // SSID and password of router响应 :OK
2.5.3、查询 ESP8266 设备的 IP 地址
AT+CIFSR响应 :+CIFSR:APIP,"192.168.4.1"+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"+CIFSR:STAIP,"192.168.3.133"+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"OK
2.5.4、建⽴⼀个 TCP 服务器
打开
最后点击侦听
2.5.5、ESP8266 设备作为 TCP client 连接到上述服务器
AT+CIPSTART="TCP","192.168.1.11",8081 //protocol, server IP and port响应 :OK
2.5.6、ESP8266 设备向服务器发送数据
AT+CIPSEND=4 // set date length which will be sent, such as 4 bytes发送完后会出现一个小箭头>然后就可以在>后面发送自己的信息即可如果发送多余的字节信息,就会只发送前面的信息,后面的则会省略掉
2.5.7、修改显示服务端发送的数据格式
AT+CIPDINFO=1:
AT+CIPDINFO=0:![]()
评论记录:
回复评论: