FastBond3挑战部分-基于STM32的桌面温湿度仪
该项目使用了STM32G030K6T6单片机,实现了显示温湿度的设计的设计,它的主要功能为:温湿度传感器把数据传输给单片机,然后单片机处理数据控制两个三位数码管进行温湿度的显示。。
标签
嵌入式系统
STM32单片机
FastBond第三季
liu3
更新2024-10-25
30

一、项目和创意方向介绍

项目概述:

在快节奏的生活与工作中,保持室内环境的舒适度对于提升工作效率和居住质量至关重要。本项目旨在设计一款集高科技与实用于一体的智能桌面温湿度仪,它不仅能够实时监测并显示当前环境的温度和湿度,还以其简约而不失科技感的设计,成为现代办公与家居环境中的一道亮丽风景线。

创意方向:

本项目选择了“音影娱乐”为创意方向利用STM32G030K6T6微控制器作为核心处理单元,该芯片具备高性能、低功耗的特点,能够高效处理来自传感器的数据,并通过算法优化显示精度与响应速度。选用高精度温湿度传感器模块,确保用户获取的信息准确无误。采用两块清晰易读的三位数码管作为显示界面,分别展示温度和湿度值,设计简洁直观,用户无需复杂操作即可一目了然当前环境状态。

二、原理图及PCB介绍

设计思路:

温湿度传感器把数据传输给STM32单片机,然后单片机对数据进行处理控制数码管进行显示。

方案框图:

使用用DigiKey官网的Scheme-it在线工具绘制。单片机通过读取温湿度传感器的数据来驱动两个三位数码管进行显示。

电路原理图:

使用嘉立创EDA绘制,整体原理图如下

image.png

主控电路使用磁珠和电容进行滤波,提升主控芯片供电稳定性。

image.png

 晶振电路外接32.768kHz的无源晶振。

image.png

温湿度传感器电路

image.png

三态输出8位移位寄存器电路,通过3个595移位寄存器控制两个数码管显示数值。

image.png

按键唤醒电路当主控芯片休眠时,提供一个中断信号,唤醒芯片开始工作的。

image.png

共阴极3位数码管电路

image.png

电池供电电路使用MOS管做防反接保护。

image.png

SWD下载调试接口下载调试程序使用。

image.png

本次项目中使用了指定厂商意法半导体公司的STM32G030K6T6芯片和莫仕(molex)公司的排针

PCB设计:

使用嘉立创EDA绘制。

image.png

三、成品功能测试

实物图:


cacfb38ac422569cb2a592ad0efe71c.jpg

显示温度

1a47c052ebf003cdb5d7d0d38e50ef1.jpg

显示湿度

eb119f5e6fa702a33ace1bd9e75faed.jpg

四、程序说明

包含相关头文件。

#include "main.h"
#include "adc.h"
#include "i2c.h"
#include "tim.h"
#include "gpio.h"

初始化,配置时钟。

int main(void)
{
/* USER CODE BEGIN 1 */
float temperature = 0;
float humidity = 0;
/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */
HAL_DeInit();
/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
MX_I2C1_Init();
MX_TIM14_Init();
/* USER CODE BEGIN 2 */
HAL_Delay(100);
SN74HC595_Send_Data(SN_DIG,0xFF); //¹Ø±ÕÊýÂë¹ÜÏÔʾ
SN74HC595_Send_Data(SN_LED1,0x00);
SN74HC595_Send_Data(SN_LED2,0x00);

/* USER CODE END 2 */
HAL_SuspendTick(); //ÔÝÍ£µÎ´ð¶¨Ê±Æ÷£¬·Àֹͨ¹ýµÎ´ð¶¨Ê±Æ÷Öжϻ½ÐÑ
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /* Ö´ÐÐWFIÖ¸Áî, ½øÈë˯Ãßģʽ */

检测按键状态,读取温度和湿度数据,控制睡眠模式

while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
if(device_paramter.KeyStatus == KEY_SHAKE_STATE)
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET)
{
while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET);

SHT40_Read_RHData(&temperature,&humidity); //¶ÁÈ¡ÎÂʪ¶È
device_paramter.Temp = temperature * 10; //·Å´óÎÂʪ¶È
device_paramter.Humi = humidity * 10;
HAL_TIM_Base_Start_IT(&htim14); //¿ªÊ¼¶¨Ê±Æ÷£¬ÏÔʾÁ½´ÎÊý¾Ý
device_paramter.sleepStatus = 0; //Çå³ýÐÝÃß±êÖ¾
device_paramter.KeyStatus = KEY_NO_PRESS; //Çå³ý°´Ï±êÖ¾
}
}
else if(device_paramter.sleepStatus == 1) //ÏÔʾ½áÊø£¬½øÈëÐÝÃß
{
HAL_SuspendTick(); //ÔÝÍ£µÎ´ð¶¨Ê±Æ÷£¬·Àֹͨ¹ýµÎ´ð¶¨Ê±Æ÷Öжϻ½ÐÑ
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /* Ö´ÐÐWFIÖ¸Áî, ½øÈë˯Ãßģʽ */
}
}
/* USER CODE END 3 */
}

五、活动总结

通过这次活动进一步提升了我的动手能力,也发现了很多自己的不足并加以改正,很感谢硬禾学堂举办的活动。

附件下载
ProPrj_温湿度仪_2024-10-22.epro
MDK-ARM.zip
团队介绍
单人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号