基于STM32的温湿度传感器

文章讲述了学生在实习期间,通过学习STM32F407的编程、Keil5工具使用、C语言基础回顾、GPIO、定时器、串口通信、传感器(DHT11和OLED)等技术,完成了流水灯、延时控制、串口数据传输和实时温湿度监测等实战项目,提升了自己的技术能力和团队协作意识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创新实践实习内容

一:指导老师给我们介绍了广州粤嵌通信科技股份有限公司的企业文化与企业环境,简要地介绍了本行业的发展历史及未来发展趋势。讲解了Keil5的功能与应用。指导我们搭建STM32F407驱动环境以及学习相关芯片包的安装使用方法。并且带着我们对C语言的基础知识进行了回顾。通过一些实例操作介绍了STM32F407 常用的编程指令,完成创建工程,学习程序编译与运行。

    二:学习STM32F407相关开关板,Keil5下的代码编辑器的使用方法;学习使用库函数建立相关工程,完成流水灯:亮的个数一次递增,再依次递减完实验。学习外部中断初始化,NVIC初始化,建立工程完成外部中断控制灯的亮灭。

    开始学习对系统定时器system的使用,完成系统精确延时的程序,使用精确延时控制LED灯闪烁。学习串口通信,串口初始化结构体,实现数据收发,实现对STM32F407开发板的控制。

学习了解DHT11温湿度传感器,编辑相关程序完成温湿度的获取并用串口显示在PC上。学习OLED显示屏,了解其通讯方式,以及连接方法。编辑相关程序完成温湿度的获取以及随意一张图片显示在OLED显示屏上。

    学习了解adc模数转换器,将模拟信号转换为数字信号; 按键测温,结果显示在oled,温度过低,蜂鸣器响。测烟雾,测光照,测湿度 显示在oled。都设定一个阈值,低于阈值报警。

项目答辩环节。

二、实习过程

第一阶段主要是学习Keil5的功能与应用,STM32F407 常用的编程指令,完成创建工程。简要简介了公司的企业文化及企业环境,让我们对本行业的未来发展有了一个初步的认识。老师带我们回顾了C语言的基础知识,如基本数据类型、运算符、数组、指针、结构体、typedef取别名、头文件的编写、条件编译、文件操作等内容。为后面编程奠定了基础。懂得库函数常用的命令以及一些快捷键的使用方式。

第二阶段学系STM32F407相关开关板的组成,了解程序烧录接线及步骤,Keil5下的代码编辑器的使用方法;学习使用库函数建立相关工程,学习GPIO口的初始化步骤并完成相关IO初始化,完成流水灯程序编写:亮的个数一次递增,再依次递减完实验。学习外部中断初始化,NVIC初始化相关步骤,建立工程完成外部中断控制灯的亮灭。

第三阶段:开始学习对系统定时器system的使用,了解systic计数方式:向下计数的24为计数器;以及其时钟频率21MHz;完成系统精确延时的程序,使用精确延时控制LED灯闪烁。学习串口通信,串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信,串口初始化结构体,实现数据收发,实现对STM32F407开发板灯及蜂鸣器的控制。

第四阶段:学习了解DHT11温湿度传感器,DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。 例如:37.2 00100101 00000010;数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和,通讯过程如图a所示;编辑相关程序完成温湿度的获取并用串口显示在PC上。学习OLED显示屏,了解其通讯方式,以及连接方法。编辑相关程序完成温湿度的获取以及随意一张图片显示在OLED显示屏上。

图a

第五阶段: 学习了解adc模数转换器,将模拟信号转换为数字信号; 按键测温,结果显示在oled,温度过低,蜂鸣器响。测烟雾,测光照,测湿度 显示在oled。都设定一个阈值,低于阈值报警。是前面所有项目的验收答辩环节,具体在下面部分结果里说明。

三、实践结果

(1)使用库函数建立相关工程,完成流水灯:亮的个数一次递增,再依次递减完实验。建立工程完成外部中断控制灯的亮灭。

### STM32温湿度传感器交互指南 #### 硬件连接方法 对于DHT11这种类型的温湿度传感器,其硬件连接相对简单。通常情况下,仅需三根线即可完成基本的接线工作:电源(VCC),接地(GND)以及数据(DATA)[^1]。 针对更复杂的SHT30传感器,则可能涉及到IIC接口的应用。在这种情形下,除了VCC和GND之外,还需要将SDA(数据线)和SCL(时钟线)分别对应接到STM32相应引脚上,并确保拉起电阻的存在以保障信号质量[^3]。 #### 编程入门指导 当采用CubeMX工具进行项目初始化设置时,可以方便快捷地配置好所需的外设资源,比如定时器用于延时操作或是USART模块便于后续调试信息输出等。特别注意的是,在利用HAL库函数编写程序前,应该先通过CubeMX设定好正确的参数选项,如选择合适的GPIO端口作为传感器的数据输入通道[^5]。 下面给出了一段基于STM32F4系列单片机读取DHT11温度湿度值并经由串口打印出来的实例代码片段: ```c #include "stm32f4xx_hal.h" // 定义全局变量存储测量结果 float temperature; float humidity; int main(void){ /* 初始化所有被使能的外围设备 */ HAL_Init(); // 配置并启动UART通信以便于监视终端显示 MX_USART2_UART_Init(); // 对应DHT11的数据引脚初始化 DHT_Init(GPIOA, GPIO_PIN_5); while (1){ // 执行一次完整的采样过程 temperature = DHT_ReadTemperature(); humidity = DHT_ReadHumidity(); // 输出当前环境条件至控制台 printf("Temp:%.2f C,Humidity:%.2f%%\r\n",temperature,humidity); // 设置适当的时间间隔防止过频查询影响精度 HAL_Delay(2000); } } ``` 此段代码展示了如何调用特定API来获取来自DHT11传感器的实际数值,并借助标准C语言中的`printf()`函数实现在电脑上的实时反馈功能[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值