我是靠谱客的博主 任性小懒虫,最近开发中收集的这篇文章主要介绍第五节:ESP8266与AT指令(黄老师)一、ESP8266简介二、AT指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、ESP8266简介

在本次实验中,我们使用的WIFI模块是ESP8266,这里我们再过一遍新单片机型号的上手思路。
我们去百度上搜索ESP8266,可以搜到乐鑫科技的官网,即该开发板是由乐鑫公司设计的,乐鑫是国内的公司,所以我们直接去官网看就行,不需要去看别人的博客。
可以在官网看到如下介绍:
在这里插入图片描述
在这里插入图片描述
详细的内容大家去官网看就可以,这里大概总结一下:
ESP8266内置Tensilica的32位RISC架构的处理器,集成了WIFI功能,支持RTOS和WIFI协议栈。
同时,ESP8266内部已经烧写了固件,允许我们用AT指令去控制它,当然,我们也可以通过获取SDK的方式,去重新烧写固件,添加我们自己需要的功能,这个在本次实验中不涉及。
然后,我们还需要去获取技术文档。这里我们需要的是没有操作系统的AT指令集,我们根据这些指令集去直接操控8266,使用示例可以帮助我们快速上手。
在这里插入图片描述

二、AT指令

打开文档后,我们先看目录。
在这里插入图片描述
第1章里的内容是关于前面提到的,自己烧写固件的内容,这里我们不需要就不看了。然后我们看指令说明

1.指令说明

在这里插入图片描述
指令说明里提到,共有4种AT指令,其实测试指令是用来查询指令的参数以及取值范围查询指令用来查询8266当前的参数值设置指令是设置参数执行指令则是执行一些不需要参数的功能,例如复位
以及,如果参数是字符串参数,我们需要用双引号" "来包含字符串参数。
每次的AT指令结尾需要加上换行符rn,WIFI模块才知道指令发送结束。

2.网络基础

①IP地址

在这里插入图片描述
IP地址是主机设备的唯一标识,我们根据IP地址可以找到对应的设备。
IP地址分为公有地址私有地址。公有地址是可以直接在网络上根据IP地址访问到对应的主机,例如,我们通过命令行指令ping www.baidu.com,可以得到百度的IP地址182.61.200.7,这时候,我们直接在浏览器上输入百度的IP地址,即可以直接到百度的首页。私有地址则是局域网的地址,其中C类是最常用的。
在这里插入图片描述

②端口

当我们知道IP地址后,我们可以访问对应的主机,但是我们需要的是访问主机中对应的程序,这时候就需要端口了,我们通过端口可以访问不同的应用。
在这里插入图片描述

③传输协议

在这里插入图片描述
在本次实验中,我们涉及的主要是TCPUDP,TCP重点在于可靠,需要通信双方进行三次握手,确定对方在,再传输数据,而UDP则是直接发数据。
DHCP:自动分配IP地址。
总结:
这部分的内容主要是计算机网络的知识,刚好我们最近也在上这门课,等后面再写些文章总结。

④指令介绍以及开发板虚拟串口

指令介绍

我们来看一个设置当前WIFI模式的指令。
在这里插入图片描述
可以看到,有3种指令,我们只需通过串口向WIFI模块发送对应的指令,即可得到想要的结果。
这里的参数说明表示,WIFI的工作方式有3种,第一种station是作为节点,例如像手机一样去连接别人的网络,第二种SoftAP是热点模式,就像手机开热点去给别人连接,第三种则是可以连别人的同时开热点。
在初学AT指令时,我们可以使用开发板上的虚拟串口功能,直接发送AT指令到WIFI模块上,即电脑去控制WIFI模块,当然,最终我们是要烧写程序到开发板上,通过开发板去控制WIFI模块。

虚拟串口:

开发板可以通过虚拟串口功能,变成一个USB转串口工具,此时电脑的USB信号传到MINI开发板上,MINI开发板将USB信号转换成串口信号,再发给WIFI模块。
上面提到,指令的结尾需要加上换行符,我们每次发送都需要加上太麻烦,所以我们可以使用安信可串口调试工具,它的发送新行功能可以在每次发送结尾自动加上换行符。
在这里插入图片描述

3.使用示例

了解了AT指令的基本知识后,我们来开始使用它。
官方的文档给我们提供了4种示例,我们逐个来看。
在这里插入图片描述

①示例1:单连接TCP Client

单连接TCP Client是8266去作为一个客户端,去连接服务器(手机/电脑),这一步需要知道服务器的IP地址才能连接,所以不太好用,一般不用。

②示例2:UDP传输

UDP传输也是需要对方的IP地址才行。

③示例3:透传

透传与正常传输的区别是,正常传输数据时,会对数据进行封装,发送方需要告知数据有几位,接收方接收时,知道有几位,并会显示出来,而透传则是不需要封装,比较简单。

④示例4:多连接TCP Server

8266作为一个服务器,手机去连接8266,就可以实现两者互发数据,是最常用的方式。但是据黄老师说,不知道是代码的问题还是微信小程序的问题,使用这个方式时,只能手机发送给8266,8266不能把数据发回手机。

⑤实际使用

所以我们最终使用远端可变的UDP传输,因为一般不知道手机的IP地址,而模块的IP我们可以在启动模块后打印出其IP地址。
所以我们最终使用UDP传输的方式,通过虚拟串口直接发送AT指令,来过一遍流程。
流程如下:
在这里插入图片描述
在第五步,创建UDP连接时,IP地址本来应该是手机的IP地址,但是我们不知道,随便写一个就可以。而后面的第一个端口号9999是手机的端口号,这一步在微信小程序已经设置好了,第二个端口号9999则是8266的端口号,在这里我们发送后,需要在使用小程序的时候也写这个端口号。
现在我们来讲下为什么手机的IP地址那一栏乱写就可以。因为我们使用的是远端可变的,我们看下UDP传输远端可变的说明,传输远端(即手机)会自动更改为最近一个与8266通信的远端,所以只要我们先通过手机给8266发数据,则8266利用远端可变则也能够把数据发给手机。
在这里插入图片描述
注:这里我们的操作还是在局域网内,所以我们的手机跟8266需要连接同一个网络。

最后

以上就是任性小懒虫为你收集整理的第五节:ESP8266与AT指令(黄老师)一、ESP8266简介二、AT指令的全部内容,希望文章能够帮你解决第五节:ESP8266与AT指令(黄老师)一、ESP8266简介二、AT指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部