面向初学者的物联网全栈开发指南 - 2 - 初始化ESP8266

在本章,我们将学习ESP-01的使用方法,MCU与该芯片的通信。强烈建议在调试时要分开调试,例如先通过电脑调试ESP-01,一切工作正常后,再通过电脑调试MCU,两边都处于理想工作状态后,再将MCU与ESP-01对接。不要嫌麻烦,分开调试能够避免调试过程中的大部分问题,同时发现代码中的潜在问题,稳扎稳打会大大提高调试效率。

1. 准备工具

  • 串口调试助手
  • ESP-01转接板(可选)

2. ESP8266

在这里,我们使用安信可科技的 ESP-01,淘宝上有很多厂商的ESP8266模组,作为初学者,在购买时一定要选择资料提供得的更全的厂商,可以免去早期走很多弯路。安信可同时提供很多基于ESP8266芯片方案的其他芯片,更高级的型号集成了MQTT协议、外围电路等,但是在这里我们为了了解一下基本原理,先从最基础的型号学起。在这里先将后面所用到的资源链接放一下

2.1 ESP-01典型应用

我们从文档中心中下载 【ESP8266系列模组用户手册】,首先要使ESP8266进入正常工作状态,在【用户手册 - 4. 硬件指导】中,可以看到引脚定义和对应的上拉电阻(10kΩ),电源电压为3.3V,可以焊接一个简单的转接板以便调试使用。在【用户手册 - 2.2 启动模式】中,不同引脚电平对应了几种启动模式,典型应用对应运行模式,若需刷固件,则应选择下载模式。供电电源要特别注意,尽管有时使用USB转TTL供电同样可以正常使用,但串口的数据流一加大就会导致崩溃,因此建议使用MCU最小系统上的LDO输出。

在这里插入图片描述

在这里插入图片描述

将ESP-01通过CH340连接至电脑串口,在其上电后会先以74880波特率打印启动信息,之后会切换到115200正常工作波特率。可以通过74880的启动信息看到此时ESP-01的工作状态,具体说明请参照【用户手册 - 6.5 启动信息说明】。

2.2 ESP-01使用指南

MCU通过AT指令对ESP-01下达操作命令,命令格式以“AT+”开头,后接具体指令,以“\r\n”回车结尾,在默认模式下ESP-01会对每一条命令进行“OK”响应,也可以按照需求关掉“OK”响应。从文档中心下载 【ESP8266AT指令集】,这里面包含了所有的AT指令,对应描述以及ESP-01的应答,在熟悉AT指令的使用后您可以根据需要自行配置ESP-01。还是强烈建议先通过PC对ESP-01进行调试,这里使用的是在win10应用商店里下载的串口调试助手,

在这里插入图片描述

接下来进入我们的重头戏,通过AT指令对ESP-01进行配置,再次声明,我们首先使用PC调试。

2.3 芯片初始化

  1. AT+RST

    首先我们通过RST复位芯片,这是在使用外围芯片时习惯性的操作,可以保证芯片在上电后处于正常工作状态。

  2. AT+CWMODE_CUR=1

    接下来设置WIFI模式为Station。Station为WIFI中的接收端,也就是连接一个WIFI热点,AP为WIFI中的发射端,提供接入服务(Access Point),也就是热点。

    在众多指令中,后缀为"CUR"的表示不保存到Flash,因此芯片掉电后数据丢失,下次启动将不会自动连接WIFI,后缀为”DEF”的重新上电后仍生效,即仍设置为Station模式。由于初始化的指令在MCU中是固定的,建议不保存在Flash中,这样后面讲到的时序容易控制,方便写程序。

  3. AT+CWJAP_CUR= “$WIFI名称”,“$WIFI密码”

    设置要连接热点的名称和密码。这里给不熟悉表达方式的同学特别说明一下,“$xxx”的意思是取值,取到的是名为“xxx”的变量值,在这个例子中,假设你的WIFI名称为“wlan1”,密码为“12345678”,那么应当发送的指令为:AT+CWJAP_CUR=“wlan1”,“12345678”

以上指令对应的响应请参照【ESP8266AT指令集】,到此我们成功地将ESP8266接入WIFI,在下一章我们将认识IOT平台,并通过MQTT协议将ESP8266接入IOT平台。

3. MCU配置

3.1 芯片初始化

通过MCU串口发送对应的AT指令即可,注意AT指令末尾的“\r\n”换行符,在每条指令发送完毕后要留出一定的时间等待ESP-01设置完毕,尤其是”AT+CWJAP”接入热点这条命令需要留出足够的时间等待芯片成功连接。在普通应用中,对芯片初始化的时间要求不高,因此使用简单的延时操作即可,也可以通过读取芯片响应决定下一步指令,这将在之后的章节进行介绍。

//  ESP8266 Initialize
void Esp8266_Init(void)
{
    printf("AT+RST\r\n");
    delay_ms(500);
    printf("AT+CWMODE_CUR=1\r\n");
    delay_ms(100);
    printf("AT+CIPMUX=0\r\n");
    delay_ms(100);
    printf("AT+CWJAP_CUR=\"$替换为您的WIFI名称\",\"$替换为您的WIFI密码\"\r\n");
    delay_ms(12500);
}

3.2 调试方法

这里还是要强调一下串口调试方法, 除了反复提及的分部调试外,还可以通过面包板,使用PC读取MCU和ESP-01之间的串口收发数据,从而确定命令之间的延迟时间等。

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘤熊豪杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值