最近对智能家居这一方面比较感兴趣,就研究了一下单片机使用ESP8266连接阿里云(我是新手,写博客只是为了复盘和加深理解,错误的地方请大佬指正)
一:写程序之前首先的是要了解整个程序的框架
1、单片机驱动无线芯片
2、无线芯片通过AT指令集进行相应的配置
3、开通阿里云物联网平台
4、连接阿里云平台(MQTT协议连接)
(整体逻辑大概就是这个意思)
1、单片机驱动无线芯片
这里单片机我使用的是野火的STM32F103的指南者(板子上集成了无线模块)
首先我们根据原理图知道我们需要配置4个引脚才能驱动esp8266
static void ESP8266_GPIO_Config ( void )
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/* 配置 CH_PD 引脚*/
macESP8266_CH_PD_APBxClock_FUN ( macESP8266_CH_PD_CLK, ENABLE );
GPIO_InitStructure.GPIO_Pin = macESP8266_CH_PD_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init ( macESP8266_CH_PD_PORT, & GPIO_InitStructure );
/* 配置 RST 引脚*/
macESP8266_RST_APBxClock_FUN ( macESP8266_RST_CLK, ENABLE );
GPIO_InitStructure.GPIO_Pin = macESP8266_RST_PIN;
GPIO_Init ( macESP8266_RST_PORT, & GPIO_InitStructure );
}
/**
* @brief 初始化ESP8266用到的 USART
* @param 无
* @retval 无
*/
static void ESP8266_USART_Config ( void )
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
/* config USART clock */
macESP8266_USART_APBxClock_FUN ( macESP8266_USART_CLK, ENABLE );
macESP8266_USART_GPIO_APBxClock_FUN ( macESP8266_USART_GPIO_CLK, ENABLE );
/* USART GPIO config */
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = macESP8266_USART_TX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(macESP8266_USART_TX_PORT, &GPIO_InitStructure);
/* Configure USART Rx as input floating */
GPIO_InitStructure.GPIO_Pin = macESP8266_USART_RX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(macESP8266_USART_RX_PORT, &GPIO_InitStructure);
/* USART1 mode config */
USART_InitStructure.USART_BaudRate = macESP8266_USART_BAUD_RATE;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(macESP8266_USARTx, &USART_InitStructure);
/* 中断配置 */
USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE ); //使能串口接收中断
USART_ITConfig ( macESP8266_USARTx, USART_IT_IDLE, ENABLE ); //使能串口总线空闲中断
ESP8266_USART_NVIC_Configuration ();
USART_Cmd(macESP8266_USARTx, ENABLE);
这里我直接使用的是野火的源码(我比较懒),配置好后就可以进行初始化了
void ESP8266_Init ( void )
{
ESP8266_GPIO_Config ();
//to do
//将色esp8266直接进行拉高使能
Delay_ms(1000);
ESP8266_USART_Config ();
}
以上就算将esp进行配置好了
2、无线芯片通过AT指令集进行相应的配置
测试esp的关键就是AT指令集了,这里我就简单说一下,我直接附加AT指令集的使用文档
http://链接:https://pan.baidu.com/s/1sa5JOWT9iJpzXqx0Qd6Nnw 提取码:0u5a
直接去看CSDN博主「果果小师弟」的原创文章原文链接:https://blog.csdn.net/qq_39400113/article/details/107721178(自己懒得码)