课程大纲
【第一章】:物联网简介(什么是物联网)
【第二章】:物联网十大应用场景
【第三章】:什么是MCU?
【第四章】:MCU的应用范围
【第五章】:我们要怎么入门MCU开发?
【第六章】:如何使用STM32Cube MX进行STM32的快速开发
【第七章】:ESP8266+MQTT上阿里云物联网平台实践(附源码)
STM32CubeMX AT指令实现MQTT协议并接入阿里云IOT平台 源码解析
优快云源代码下载
Github源代码下载
目录
7. 实践:STM32使用ESP8266+MQTT上阿里云物联网平台实践
7.1 项目整体介绍
7.1.1 硬件资源
- STM32F429IGT6开发板:核心
- ST-Link下载器:下载程序用
- USB转232串口线:串口通信,调试用
- USB供电线:给开发板供电
- DHT11温湿度模块:采集环境温湿度
- ATK-ESP8266:联网上传数据

7.1.2 软件资源
- 串口调试助手(调试用)

7.1.3 其它资源
- STM32F429IGT6开发板原理图
- DHT11温湿度传感器编程手册
- ATK-ESP8266编程手册
- ESP8266样例程序
- 阿里云MQTT样例程序
7.2 新建工程
- 选择通过选择MCU创建工程

- 选择芯片

- 建立成功

7.3 基础工程配置
7.3.1 时钟配置
- 高速时钟:选择外部晶振

- 高速时钟选择Crystal/Ceramic Resonator
在用cube配置时钟时,有下面两个选项
BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(晶体/陶瓷晶振)
下面来解释一下:
所谓HSE旁路时钟源,是指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。
外部晶体/陶瓷谐振器(HSE晶体)模式该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。

- 配置时钟为180MHz

7.3.2 下载接口设置,设置为串行下载

7.3.3 LED灯配置
-
查看原理图
LED_R——PH10 红灯
LED_G——PH11 绿灯
LED_B——PH12 蓝灯
低电平有效,IO口要设置为推挽输出,上拉

-
工程配置
-
选择引脚设置为GPIO_Ooutput
-
配置标签 LED_R LED_G LED_B,方便工程直接调用
-

-
设置上下拉
-

-
7.3.4 按键输入中断设置
- 查看原理图

- 工程设置



- 设置中断等级,不能太高


7.3.5 调试串口设置
- 查看开发板原理图,找到RS232

- 修改跳帽方向

- 串口参数配置

- 修改PD5为USART2_TX

- 修改PD6为USART2_RX

- PA2 PA3自动取消定义


7.3.6 ES8266串口设置

7.3.7 DHT11数据采集IO

7.3.8 工程概览

7.4 生成并验证工程
7.4.1 生成工程
- 点击Project Manager并设置工程

- 勾选上单独生成.c.h文件

- 点击生成工程

- 查看工程
- 平台已经自动生成USART1、USART2驱动和GPIO驱动
- 用户只用专注于程序逻辑代码,实现快速开发

7.4.2 编写USART2串口调试验证代码
- 在文件usart.h中引入标准库stdio.h(里面包含printf)
#include "stdio.h"
- 在文件usart.c中添加printf重定向函数
// 重定向printf函数
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={
ch};
HAL_UART_Transmit(&huart2,temp,1,2);
return 0;
}
- 为了方便调试,在main.c中加入以下宏定义
#define USER_MAIN_DEBUG
#ifdef USER_MAIN_DEBUG
#define user_main_printf(format, ...) printf( format "\r\n",##__VA_ARGS__)
#define user_main_info(format, ...) printf("【main】info:" format "\r\n",##__VA_ARGS__)
#define user_main_debug(format, ...) printf("【main】debug:" format "\r\n",##__VA_ARGS__)
#define user_main_error(format, ...) printf("【main】error:" format "\r\n",##__VA_ARGS__)
#else
#define user_main_printf(format, ...)
#define user_main_info(format, ...)
#define user_main_debug(format, ...)
#define user_main_error(format, ...)
#endif
- 在主函数while(1)循环中添加以下测试代码
user_main_debug("我是USART2测试代码!\n");
HAL_Delay(1000);
- 设置下载后自动运行,编译运行,连接串口调试助手,观察现象


- 测试成功!!
7.4.3 编写三色灯测试代码
- 在main.c 主循环添加以下测试代码
//红灯亮,其它灭
HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_G_GPIO_Port,LED_G_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_B_GPIO_Port,LED_B_Pin,GPIO_PIN_SET);
HAL_Delay(500);
//绿灯亮,其它灭
HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_G_GPIO_Port,LED_G_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_B_GPIO_Port,LED_B_Pin,GPIO_PIN_SET);
HAL_Delay(

本教程详细介绍STM32开发板结合ESP8266模块,使用MQTT协议接入阿里云物联网平台的过程。从硬件配置到软件编程,包括DHT11温湿度传感器数据读取、ESP8266 AT指令调试、MQTT驱动移植、阿里云平台对接等,最终实现传感器数据上传及云端控制。
最低0.47元/天 解锁文章
934

被折叠的 条评论
为什么被折叠?



