• 方案介绍
  • 附件下载
  • 推荐器件
  • 相关推荐
申请入驻 产业图谱

基于STM32F746的汽车环境状态检测控制器

2024/05/14
2710
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

SHTC3.PDF

共3个文件

一、项目名称:

基于STM32F746-DISO的车内环境状态控制显示仪表盘。

二、项目概述:

本项目主要是基于STM32F746高性能MCU的STM32F746-DISC开发板,实现车内温湿度监测。以及控制车内灯光。STM32F746-DISC板载4.3寸电容触摸LCD,使用LCD显示GUI画面是基于ST的GUI设计器TouchGFX设计,并且使用FreeRTOS嵌入式操作系统内核进行任务调度。做这个项目主要是为了方便车内乘客了解车内环境状况,以及方便乘客对车内一些无关驾驶方面的控制。目前车内屏幕控制和显示都在司机前面板,对于后排乘客操作任何东西都需要经过司机来处理,非常不方便。这个项目设备可以放在后排,方便后面乘客,既减轻了司机压力又方便了乘客坐车体验。

通过本设备可以查看车内温湿度,就可以调整车内空调温度高低。还可以控制车上照明灯,方便晚上坐车时,给后面乘客车顶照明。还有座椅下方照明。

三、整体设计方案

3.1、硬件方案

整体使用STM32F746-diso开发板,利用板载触摸lcd作为显示和界面操控。外扩有温湿度传感器,IO输出和彩灯控制等等。

整体框图如下:

下面是设计的扩展板:利用板上ARDUINO接口,直接插在板子上。使用I2C接口的温湿度传感器SHTC3,以及灯光控制部分。

如下图所示:

实物如下:

电路图如下:

整体硬件如下:

3.2、软件驱动

下面是温湿度传感器驱动程序部分。

int SHTC3_CalcTemperature(uint16_t rawValue)
{
// calculate temperature
// T = -45 + 175 * rawValue / 2^16
return (((175*1 * rawValue)>>16) - 45*1); //放大100倍
}

int SHTC3_CalcHumidity(uint16_t rawValue)
{
// calculate relative humidity
// RH = rawValue / 2^16 * 100
return ((100 * 1 * rawValue)>>16); //放大100倍
}

static uint8_t SHTC3_CheckCRC(uint8_t *buff, uint32_t nbyte)
{
uint32_t i; // byte counter
uint8_t bit; // bit mask
uint8_t crc = 0xFF; // calculated checksum

// calculates 8-Bit checksum with given polynomial
for(i = 0; i < nbyte; i++)
{
crc ^= (buff[i]);
for(bit = 8; bit > 0; --bit)
{
if(crc & 0x80) {
crc = (crc << 1) ^ SHTC3_CRC_POLYNOMIAL;
} else {
crc = (crc << 1);
}
}
}
return crc;
}
uint16_t shtc3_id;
uint16_t SHTC3_Init(void)
{
uint8_t buff[4]={0};
shtc3_id = 0;
shtc3_gpio_init();

HAL_Delay(1);
SHTC3_ReadData(SHTC3_REG_ID,buff,3);
if(buff[2] != SHTC3_CheckCRC(buff,2))
{
return -1;
}
HAL_Delay(10);
SHTC3_WriteCmd(SHTC3_REG_WAKEUP);
shtc3_id = (buff[0]<<8)|buff[1];
return shtc3_id;
}

uint8_t SHTC3_GetMode1_TempRH(int *temp, int *humi)
{
uint8_t buff[8]={0};

SHTC3_ReadData(SHTC3_REG_CELPM_TEMP_RH,buff,6);
if((buff[2] != SHTC3_CheckCRC(buff,2))||(buff[5] != SHTC3_CheckCRC(&buff[3],2)))
{
return 1;
}
*temp = SHTC3_CalcTemperature((buff[0]<<8)|buff[1]);
*humi = SHTC3_CalcHumidity((buff[3]<<8)|buff[4]);
return 0;
}

复制代码

界面实时时间显示驱动,RTC使用ST的HAL库API获取。

HAL_RTC_GetTime(&hrtc,&GetTime,RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc,&GetDate,RTC_FORMAT_BIN);

Hours = GetTime.Hours;
Minutes = GetTime.Minutes;
Seconds = GetTime.Seconds;

Years = GetDate.Year;
Months = GetDate.Month;
Days = GetDate.Date;
Weeks = GetDate.WeekDay;
xprintf("%d-%d-%d %d rn",Years,Months,Days,Weeks);
xprintf("%d:%d:%d rn",Hours,Minutes,Seconds);

复制代码

使用RTC有点要注意的地方就是HAL_RTC_GetTime()和HAL_RTC_GetDate()都要调用,而且要先调用HAL_RTC_GetTime(),再调用HAL_RTC_GetDate()。

开始没注意,导致RTC时钟不动。下面是我找到原因

所有GUI使用ST的TouchGFX 4.23软件设计。

四、作品实物图及演示视频展示

演示视频

https://www.bilibili.com/video/BV1f94y1K7vv/

五、项目资料及程序

  • SHTC3.PDF
    下载
  • project-CarGui.zip
    下载
  • F746-ARDUINO-SCH.pdf
    下载

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
STM32F407IGT6 1 STMicroelectronics High-performance foundation line, Arm Cortex-M4 core with DSP and FPU, 1 Mbyte of Flash memory, 168 MHz CPU, ART Accelerator, Ethernet, FSMC

ECAD模型

下载ECAD模型
$13.79 查看
ATMEGA8515L-8AU 1 Microchip Technology Inc IC MCU 8BIT 8KB FLASH 44TQFP

ECAD模型

下载ECAD模型
$4.23 查看
ATXMEGA192D3-MH 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, 9 X 9 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, MO-220VMMD, MLF-64
$5.62 查看
意法半导体

意法半导体

意法半导体(ST)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司。意法半导体是世界最大的半导体公司之一,公司销售收入在半导体工业五大高速增长市场之间分布均衡(五大市场占2007年销售收入的百分比):通信(35%),消费(17%),计算机(16%),汽车(16%),工业(16%)。 据最新的工业统计数据,意法半导体是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列.

意法半导体(ST)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司。意法半导体是世界最大的半导体公司之一,公司销售收入在半导体工业五大高速增长市场之间分布均衡(五大市场占2007年销售收入的百分比):通信(35%),消费(17%),计算机(16%),汽车(16%),工业(16%)。 据最新的工业统计数据,意法半导体是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列.收起

查看更多

相关推荐