
#第九届立创电赛#温湿度检测仪
简介
#第九届立创电赛#温湿度检测仪,采用一块PCB+一块亚克力的卡片设计,充分散热,展现机械美感。
简介:#第九届立创电赛#温湿度检测仪,采用一块PCB+一块亚克力的卡片设计,充分散热,展现机械美感。开源协议
:GPL 3.0
描述
目录
- 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 外壳
- 3.1 原理图
- 4 软件部分
- 5 BOM清单
- 6 大赛LOGO验证
- 7 演示视频
1 项目概述
1.1 项目功能介绍
该项目是基于STM32G030K6T6的桌面温湿度检测仪。
传感器使用瑞士盛思锐的SHT40-AD1B,该传感器有功耗低,高精度,小尺寸的优点,非常适合板载使用。
显示部分使用SN74HC595+三位数码管。
电源部分使用4.2V锂电池。
1.2 实物展示
正面
背面
1.3 优化建议
- 将电池电压映射到百分比并显示
- 优化采样
- 更改显示方式
2 项目属性&开源协议
2.1 项目属性
该项目首次公开,在官方原理图和源码的基础上进行改进,未在别的比赛中获奖。
2.2 开源协议
开源协议使用GPL 3.0
3 硬件部分
3.1 原理图
3.1.1 主控部分
主控使用STM32G030K6T6。
3.1.2 传感器部分
传感器使用瑞士盛思锐的SHT40-AD1B,相比于模块,需要增加滤波电容C1和总线上拉电阻R2R3。
3.1.3 移位寄存器
数码管移位寄存器使用74HC595。
3.1.4 显示部分
显示部分采用0.56寸三位数码管。
原使用的是立创商城购买的(如图一),买了六个,最后只有一个剩下,于是只好在某宝购买(如图二),价格是图一的四分之一,焊接温度稍微高一点也完全没问题,不像某些一样,一焊就坏,还死贵死贵的。
3.1.5 电源部分
(1)电源框图
(2)锂电池充电电路
相信大家对TP4056都不陌生,我就不做介绍了。
(3)LDO电路
LDO使用RT9013-33GB。
这里注意,由于锂电池的电压在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 页面布局
正面
背面
采用1MM板材,整体尽量使用贴片,电阻电容均使用0603。
3.2.2 Layout注意事项
(1) 铺铜禁止区域
(2) 禁止走线区域
(3) 元件放置
传感器的放置建议
3.2.3 焊接
用锡膏和焊油(如图一),然后用加热台(如图二)和热风枪进行贴片焊接,然后使用电烙铁焊接插件,我的加热台损坏了,所以使用恒温磁力加热器,温度也有两三百度,足够了。
焊接成品
3.3 外壳
外壳部分采用2MM亚克力。
使用单刃锥形钻头(如图一)在亚克力上开出四个沉孔(如图二),由于我使用的是手电钻,故使用单刃。
将M3-5MM沉头螺丝和M3-6MM铜柱进行组装。
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清单
名称 | 位号 | 封装 | 数量 | 型号 | 品牌 | 编号 | 备注 | 价金额 |
---|---|---|---|---|---|---|---|---|
STM32G030K6T6 | U1 | LQFP-32_L7.0-W7.0-P0.80-LS9.0-BL | 1 | STM32G030K6T6 | ST(意法半导体) | C529331 | tb | 3.2 |
10K | R1,R2,R3,R10,R11 | R0603 | 5 | 0.01/pcs | 0.05 | |||
100nF | C2,C1,C10,C12,C13,C14 | C0603 | 6 | 0.01/pcs | 0.06 | |||
32.768kHz | X1 | OSC-SMD_L3.2-W1.5 | 1 | SMD31327681252090 | JGHC(晶光华) | C390740 | tb | 0.5 |
12pF | C4,C3 | C0603 | 2 | 0.01/pcs | 0.02 | |||
SHT40-AD1B-R2 | U2 | DFN-4_L1.5-W1.5-P0.8-TL-EP | 1 | SHT40-AD1B-R2 | Sensirion(瑞士盛思锐) | C2909890 | tb | 8.6 |
10uF | C5,C6,C11 | C0603 | 3 | 0.01/pcs | 0.03 | |||
1K | R4,R5,R8,R9 | R0603 | 4 | 0.01/pcs | 0.04 | |||
TP4056 | U3 | ESOP-8_L4.9-W3.9-P1.27-LS6.0-BL-EP | 1 | TP4056 | UMW(友台半导体) | C725790 | lc-GX4056 | 0.23 |
LED_0603-R | LED1 | LED_0603 | 1 | 0.05/pcs | 0.05 | |||
LED_0603-G | LED2,LED3,LED4 | LED_0603 | 3 | 0.05/pcs | 0.15 | |||
SN74HC595PWR | U4,U5,U6 | TSSOP-16_L5.0-W4.4-P0.65-LS6.4-BL | 3 | SN74HC595PWR | TI(德州仪器) | C273642 | lc | 3.6 |
1uF | C7,C8,C9 | C0603 | 3 | 0.01/pcs | 0.01 | |||
TYPE-603-T3 | USB1 | USB-C-SMD_TYPE-603-T3 | 1 | TYPE-603-T3 | Yuandi(元迪) | C2689837 | lc | 0.49 |
5.1K | R6,R7 | R0603 | 2 | 0.01/pcs | 0.01 | |||
RT9013-33GB | U7 | SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BL | 1 | RT9013-33GB | RICHTEK(立锜) | C47773 | lc | 0.94 |
TS-1086E-AC03526 | SW1 | SW-SMD_TS-1086E-AC03526 | 1 | TS-1086E-AC03526 | XUNPU(讯普) | C720473 | lc | 0.29 |
SLR0563CR5C1BD-4.8 | LED5,LED6 | LED-SEG-TH_SLR0563CR5C1BD-4.8 | 2 | SLR0563CR5C1BD-4.8 | SUNLIGHT(光华) | C225945 | tb | 1.8 |
XL-5050UWC | LED7 | LED-ARRAY-SMD_6P-L5.0-W5.0-TL-RD-2 | 1 | XL-5050UWC | XINGLIGHT(成兴光) | C2843867 | lc | 0.17 |
TS5215A 250gf | SW2 | SW-SMD_4P-L5.2-W5.2-P3.70-LS6.4 | 1 | TS5215A 250gf | SHOU HAN(首韩) | C388295 | lc | 0.01 |
ZX-XH2.54-2PWT | CN1 | CONN-SMD_2P-P2.54_MEGASTAR_ZX-XH2.54-2PWT | 1 | ZX-XH2.54-2PWT | Megastar(兆星) | C7429671 | 选焊 | 0 |
PZ254V-11-04P | H1,H2 | HDR-TH_4P-P2.54-V-M | 2 | PZ254V-11-04P | XFCN(兴飞) | C2691448 | 选焊 | 0 |
250mah锂电池 | BAT+ | 502030 | 1 | - | 贴于PCB上 | 2 | ||
合计: | 22.25 |
注:由于大部分0603电阻电容是料盘或拆机,故统一算作0.01/pcs
请以此BOM表为准。
6 大赛LOGO验证
7 演示视频
立创电赛:《桌面温湿度仪》-功能演示。
设计图

BOM


评论