发作品签到
专业版

#第九届立创电赛#温湿度检测仪

工程标签

1.1k
0
0
6

简介

#第九届立创电赛#温湿度检测仪,采用一块PCB+一块亚克力的卡片设计,充分散热,展现机械美感。

简介:#第九届立创电赛#温湿度检测仪,采用一块PCB+一块亚克力的卡片设计,充分散热,展现机械美感。

开源协议

GPL 3.0

创建时间:2024-07-06 08:33:44更新时间:2025-03-03 02:34:53

描述

目录

  • 1 项目概述
    • 1.1 项目功能介绍
    • 1.2 实物展示
    • 1.3 优化建议
  • 2 项目属性&开源协议
    • 2.1 项目属性
    • 2.2 开源协议
  • 3 硬件部分
    • 3.1 原理图
      • 3.1.1 主控部分
      • 3.1.2 传感器部分
      • 3.1.3 移位寄存器
      • 3.1.4 显示部分
      • 3.1.5 电源部分
    • 3.2 PCB
      • 3.2.1 页面布局
      • 3.2.2 Layout注意事项
      • 3.2.3 焊接
    • 3.3 外壳
  • 4 软件部分
  • 5 BOM清单
  • 6 大赛LOGO验证
  • 7 演示视频

1 项目概述

1.1 项目功能介绍

该项目是基于STM32G030K6T6的桌面温湿度检测仪。
传感器使用瑞士盛思锐SHT40-AD1B,该传感器有功耗低,高精度,小尺寸的优点,非常适合板载使用。
显示部分使用SN74HC595+三位数码管。
电源部分使用4.2V锂电池。

1.2 实物展示

正面
正面.jpg
背面
背面.JPG

1.3 优化建议

  • 将电池电压映射到百分比并显示
  • 优化采样
  • 更改显示方式

2 项目属性&开源协议

2.1 项目属性

该项目首次公开,在官方原理图和源码的基础上进行改进,未在别的比赛中获奖。

2.2 开源协议

开源协议使用GPL 3.0

GPL 3.0:https://www.gnu.org/licenses/gpl-3.0.html

3 硬件部分

3.1 原理图

3.1.1 主控部分

主控使用STM32G030K6T6。
原理图_0.png

3.1.2 传感器部分

传感器使用瑞士盛思锐的SHT40-AD1B,相比于模块,需要增加滤波电容C1和总线上拉电阻R2R3。
原理图_1.png

3.1.3 移位寄存器

数码管移位寄存器使用74HC595。
原理图_2.png

3.1.4 显示部分

显示部分采用0.56寸三位数码管。
原理图_3.png

原使用的是立创商城购买的(如图一),买了六个,最后只有一个剩下,于是只好在某宝购买(如图二),价格是图一的四分之一,焊接温度稍微高一点也完全没问题,不像某些一样,一焊就坏,还死贵死贵的。

原理图_4.png

3.1.5 电源部分

(1)电源框图

原理图_5.png

(2)锂电池充电电路

相信大家对TP4056都不陌生,我就不做介绍了。
原理图_6.png

(3)LDO电路

LDO使用RT9013-33GB。
原理图_7.png
这里注意,由于锂电池的电压在3.3-4.2V,故普通的LDO不行(如AMS1117-3.3),因为它们的压差太大了,在1V左右,而RT9013-33GB的压差较小,故选用RT9013-33GB。
此处使用ME6211C33也可以,两者电路基本相同,由于我手头RT9013-33GB更多(立创16-15薅的),而ME6211C33没几个了,故选用RT9013-33GB。
DC-DC效率更高,但成本有所提升,故不选用。

3.2 PCB

3.2.1 页面布局

正面
PCB_0.png
背面
PCB_1.png

采用1MM板材,整体尽量使用贴片,电阻电容均使用0603。

3.2.2 Layout注意事项

(1) 铺铜禁止区域

PCB_2.png

(2) 禁止走线区域

PCB_3.png

(3) 元件放置

PCB_4.png
传感器的放置建议
PCB_5.png

3.2.3 焊接

用锡膏和焊油(如图一),然后用加热台(如图二)和热风枪进行贴片焊接,然后使用电烙铁焊接插件,我的加热台损坏了,所以使用恒温磁力加热器,温度也有两三百度,足够了。
PCB_6.png
焊接成品
PCB_7.png

3.3 外壳

外壳部分采用2MM亚克力。
PCB_面板_2024-07-28.png
外壳_0.png
使用单刃锥形钻头(如图一)在亚克力上开出四个沉孔(如图二),由于我使用的是手电钻,故使用单刃。
外壳_1.png
将M3-5MM沉头螺丝和M3-6MM铜柱进行组装。
外壳_3.png

4 软件部分

由于本人水平有限,如有错误,请多多指出

为了实现短按开机,再次短按实现功能切换,长按关机的功能,我在gpio.c中添加了以下代码,以实现长短按判定。
0.1s-1s为短按,1s以上为长按

void Key_scan(void)
{
	uint8_t val = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5);
	static uint16_t count=0;
  if (!val)//记录时间
	{
	  count++;
	}
	else
	{
		if(count>100)
		{
			device_paramter.KeyScan = 2;//长按
		}
		else if(count>10 && count<100)
	  {
			device_paramter.KeyScan = 1;//短按
		}
		count=0;
	}
} 

为了防止短按开机的同时判定了Key_scan短按,我在主循环中添加了延时。
HAL_Delay(150);
相应的,mian.c中也要进行修改。

if(device_paramter.KeyStatus == KEY_SHAKE_STATE)
{
	HAL_Delay(150);
	if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET)
	{
		while(1)
		{
			device_paramter.sleepStatus = 0;//清除休眠标志
			while(device_paramter.KeyScan == 0)
			{
			SHT40_Read_RHData(&temperature,&humidity);//读取温湿度
			device_paramter.Temp = temperature * 10;//放大温湿度
			device_paramter.Humi = humidity * 10;
			device_paramter.Dispiay_Type = 1;
			HAL_TIM_Base_Start_IT(&htim14);//开始定时器,显示数据
			Key_scan( );
			}
			if(device_paramter.KeyScan == 2)
			{
				device_paramter.KeyStatus = KEY_NO_PRESS;//清除按下标志
				device_paramter.KeyScan = 0;//重置长短按判断
				device_paramter.sleepStatus = 1;//启动休眠标志
				break;//跳出循环
			}
			else if(device_paramter.KeyScan == 1)
			{
        /*功能跳转*/
				break;//跳出循环
			}
		}
	}  
}

为了实现同时显示温湿度,我修改了tim.c的相关内容。

if(htim->Instance == TIM14)
	{
		if(device_paramter.Dispiay_Type == 1)
		{
		  HAL_TIM_Base_Stop_IT(&htim14);
		  updata_flag++;
		  if(updata_flag <= 1000)
		  {
			  ShowNum(1,1,(device_paramter.Temp/100));
			  ShowNum(1,2,(device_paramter.Temp / 10 % 10));
			  ShowNum(1,3,device_paramter.Temp%10);
			  ShowNum(2,1,(device_paramter.Humi/100));
			  ShowNum(2,2,(device_paramter.Humi / 10 % 10));
			  ShowNum(2,3,device_paramter.Humi%10);
		  }
      else
		  {
			  updata_flag = 0;
			  sleep_flag++;
		  }
		
		  __HAL_TIM_SetCounter(&htim14,0);
		  if(sleep_flag >= 1)
		  {
			  sleep_flag = 0;
			  SN74HC595_Send_Data(SN_DIG,0xFF);
			  SN74HC595_Send_Data(SN_LED1,0x00);
			  SN74HC595_Send_Data(SN_LED2,0x00);
		  }
		  else
			{
			  HAL_TIM_Base_Start_IT(&htim14);          
		  }		
		}
  }

功能跳转中,为了实现检测电池电压,增加了相关代码,但效果不好。

/* ADC采集电压*/
HAL_ADCEx_Calibration_Start(&hadc1); 
HAL_ADC_Start(&hadc1);     //启动ADC转换
HAL_ADC_PollForConversion(&hadc1, 50);   //等待转换完成,50为最大等待时间,单位为ms
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
{
	ADC_Value = HAL_ADC_GetValue(&hadc1);   //获取ADC值
	Data = (ADC_Value*3.324f)/4095.0f;  //12位ADC,获取到的值在0到4095之间,参考电压3.3V()
}
ol_Value = (uint16_t)(Data * 100)*2;  //由于用两个电阻分压 
device_paramter.Dispiay_Type = 2;
HAL_TIM_Base_Start_IT(&htim14);
device_paramter.KeyScan = 0;		//重置长短按判断
device_paramter.sleepStatus = 0;						//清除休眠标志
device_paramter.KeyStatus = KEY_NO_PRESS;		//清除按下标志

5 BOM清单

名称位号封装数量型号品牌编号备注价金额
STM32G030K6T6U1LQFP-32_L7.0-W7.0-P0.80-LS9.0-BL1STM32G030K6T6ST(意法半导体)C529331tb3.2
10KR1,R2,R3,R10,R11R060350.01/pcs0.05
100nFC2,C1,C10,C12,C13,C14C060360.01/pcs0.06
32.768kHzX1OSC-SMD_L3.2-W1.51SMD31327681252090JGHC(晶光华)C390740tb0.5
12pFC4,C3C060320.01/pcs0.02
SHT40-AD1B-R2U2DFN-4_L1.5-W1.5-P0.8-TL-EP1SHT40-AD1B-R2Sensirion(瑞士盛思锐)C2909890tb8.6
10uFC5,C6,C11C060330.01/pcs0.03
1KR4,R5,R8,R9R060340.01/pcs0.04
TP4056U3ESOP-8_L4.9-W3.9-P1.27-LS6.0-BL-EP1TP4056UMW(友台半导体)C725790lc-GX40560.23
LED_0603-RLED1LED_060310.05/pcs0.05
LED_0603-GLED2,LED3,LED4LED_060330.05/pcs0.15
SN74HC595PWRU4,U5,U6TSSOP-16_L5.0-W4.4-P0.65-LS6.4-BL3SN74HC595PWRTI(德州仪器)C273642lc3.6
1uFC7,C8,C9C060330.01/pcs0.01
TYPE-603-T3USB1USB-C-SMD_TYPE-603-T31TYPE-603-T3Yuandi(元迪)C2689837lc0.49
5.1KR6,R7R060320.01/pcs0.01
RT9013-33GBU7SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BL1RT9013-33GBRICHTEK(立锜)C47773lc0.94
TS-1086E-AC03526SW1SW-SMD_TS-1086E-AC035261TS-1086E-AC03526XUNPU(讯普)C720473lc0.29
SLR0563CR5C1BD-4.8LED5,LED6LED-SEG-TH_SLR0563CR5C1BD-4.82SLR0563CR5C1BD-4.8SUNLIGHT(光华)C225945tb1.8
XL-5050UWCLED7LED-ARRAY-SMD_6P-L5.0-W5.0-TL-RD-21XL-5050UWCXINGLIGHT(成兴光)C2843867lc0.17
TS5215A 250gfSW2SW-SMD_4P-L5.2-W5.2-P3.70-LS6.41TS5215A 250gfSHOU HAN(首韩)C388295lc0.01
ZX-XH2.54-2PWTCN1CONN-SMD_2P-P2.54_MEGASTAR_ZX-XH2.54-2PWT1ZX-XH2.54-2PWTMegastar(兆星)C7429671选焊0
PZ254V-11-04PH1,H2HDR-TH_4P-P2.54-V-M2PZ254V-11-04PXFCN(兴飞)C2691448选焊0
250mah锂电池BAT+5020301-贴于PCB上2
合计:22.25

注:由于大部分0603电阻电容是料盘或拆机,故统一算作0.01/pcs
请以此BOM表为准。

6 大赛LOGO验证

背面.JPG

7 演示视频

立创电赛:《桌面温湿度仪》-功能演示。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
程序源码.zip
79
2
DXF_面板_2024-07-30.dxf
14
3
演示视频.mp4
13
4
DXF_面板_64.exe
19
5
BOM_#第九届立创电赛#【7243012A】温湿度检测仪.xlsx
25
6
All.md
15
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航