ESP32-C3 是一款安全稳定、低功耗、低成本的物联网芯片,搭载 RISC-V 32位单核处理器,支持2.4 GHz Wi-Fi和Bluetooth 5(LE)。
ESP32-C3本身就可以作为一个单片机使用,但是我们这里只是把ESP32-C3作为一个Wi-Fi/蓝牙模块使用。STM32与ESP32-C3使用串口进行通讯。STM32可以给ESP32-C3发送命令,这种命令叫ESP-AT指令。
首先通过pc串口ESP32中烧写ESP-AT固件,ESP-AT 是基于 ESP-IDF 实现的软件工程。
它使 ESP32-C3 模组作为从机,MCU 作为主机。MCU 发送 AT 命令给 ESP32-C3 模组,控制 ESP32-C3 模组执行不同的操作,并接收 ESP32-C3 模组返回的 AT 响应。
ESP-AT 提供了大量功能不同的 AT 命令,如 Wi-Fi 命令、TCP/IP 命令、Bluetooth LE 命令、Bluetooth 命令、MQTT 命令、HTTP 命令、Ethernet 命令等。同样,用户也可以基于 ESP-AT 工程,自行开发更多的 AT 命令,以实现更多的功能。
AT 命令以 “AT” 开始,代表 Attention,以‘回车+换行’(\r\n)为结尾。输入的每条命令都会返回 OK 或 ERROR 的响应,表示当前命令的最终执行结果。注意,所有 AT 命令均为串行执行,每次只能执行一条命令。因此,在使用 AT 命令时,应等待上一条命令执行完毕后,再发送下一条命令。如果上一条命令未执行完毕,又发送了新的命令,则会返回 busy p..
1. WIFi案例1:测试AT指令
需求:测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。
1. 串口1实现pritf重定向,用于串口调试助手
usart.h中添加函数声明
/* USER CODE BEGIN Prototypes */
#include "stdio.h"
int fputc(int ch, FILE *f);
/* USER CODE END Prototypes */
usart.c中添加函数
/* USER CODE BEGIN 1 */
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口DEBUG_USART */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
return (ch);
}
/* USER CODE END 1 */
2. 关于esp32的发送读取接口,与mcu通过串口2连接
esp32.h
#ifndef __ESP32_H
#define __ESP32_H
#include "usart.h"
#include "string.h"
#include "stdio.h"
void ESP32_Init(void);
void ESP32_Send_CMD(uint8_t *cmd, uint16_t cmdLength);
void ESP32_ReadResponse(uint8_t responeBuff[], uint16_t size);
esp32.c
#include "esp32.h"
uint8_t rBuff[1000] = {0};
/**
* @description: 初始化ESP32
*/
void ESP32_Init(void)
{
/* 1. 初始化串口2(通过