引言
随着物联网技术的飞速发展,智能家居、智慧城市等应用场景日益丰富。STM32作为一款高性能、低成本的微控制器,成为了众多DIY爱好者的首选。本文将带你从零开始,动手打造一个基于STM32的物联网温湿度采集系统,让你轻松入门DIY。
硬件准备
- STM32开发板(如STM32F103C8T6)
- 温湿度传感器(如DHT11)
- USB转串口模块(如CH340)
- 电源模块(如5V直流电源)
- 连接线、面包板等
- 编程软件(如Keil、IAR等)
软件准备
- STM32CubeMX(用于配置系统时钟、GPIO等)
- Keil、IAR等编程软件
系统搭建
- 连接硬件:将温湿度传感器连接到STM32开发板的GPIO引脚,USB转串口模块连接到开发板的USB接口,电源模块连接到开发板的VCC和GND引脚。
- 配置系统时钟:使用STM32CubeMX配置系统时钟,确保系统能够稳定运行。
- 配置GPIO:使用STM32CubeMX配置GPIO引脚,设置温湿度传感器的数据引脚为输入模式。
编程实现
- 初始化串口:在代码中初始化串口,设置波特率等参数,用于后续的数据传输。
- 读取温湿度数据:编写读取温湿度数据的函数,通过串口发送指令给传感器,读取温度和湿度数据。
- 数据发送:将读取到的温湿度数据通过串口发送到上位机(如PC端)。
代码示例
以下是一个简单的STM32温湿度采集系统代码示例,使用Keil软件编写:
#include "stm32f10x.h"
void USART1_Config(void)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 9600;
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(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
void DHT11_Read(void)
{
uint8_t i;
uint8_t data[5] = {0};
uint8_t checksum = 0;
// 发送指令
for(i = 0; i < 8; i++)
{
USART_SendData(USART1, 0x01);
}
// 读取数据
for(i = 0; i < 5; i++)
{
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
data[i] = USART_ReceiveData(USART1);
checksum += data[i];
}
// 检查校验和
if(checksum == (data[0] + data[1] + data[2] + data[3]))
{
// 数据处理
uint8_t temperature = data[2];
uint8_t humidity = data[0];
printf("Temperature: %d\n", temperature);
printf("Humidity: %d\n", humidity);
}
}
int main(void)
{
USART1_Config();
while(1)
{
DHT11_Read();
DelayMs(1000);
}
}
总结
通过以上步骤,你就可以轻松地打造一个基于STM32的物联网温湿度采集系统。在后续的学习过程中,你可以尝试添加更多的功能,如数据存储、远程监控等,让你的系统更加完善。祝你DIY之路顺利!
