查看: 445|回复: 0

[项目提交] 《2023 DigiKey 汽车应用创意挑战赛》-汽车环境状态检测控制器

[复制链接]
  • TA的每日心情
    奋斗
    昨天 11:06
  • 签到天数: 1779 天

    连续签到: 39 天

    [LV.Master]伴坛终老

    发表于 2024-1-18 10:44:22 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 流水源 于 2024-1-23 16:26 编辑

    一、项目名称:   
        基于STM32F746-DISO的车内环境状态控制显示仪表盘。
    9.png
    二、项目概述:
        本项目主要是基于STM32F746高性能MCU的STM32F746-DISC开发板,实现车内温湿度监测。以及控制车内灯光。STM32F746-DISC板载4.3寸电容触摸LCD,使用LCD显示GUI画面是基于ST的GUI设计器TouchGFX设计,并且使用FreeRTOS嵌入式操作系统内核进行任务调度。做这个项目主要是为了方便车内乘客了解车内环境状况,以及方便乘客对车内一些无关驾驶方面的控制。目前车内屏幕控制和显示都在司机前面板,对于后排乘客操作任何东西都需要经过司机来处理,非常不方便。这个项目设备可以放在后排,方便后面乘客,既减轻了司机压力又方便了乘客坐车体验。
        通过本设备可以查看车内温湿度,就可以调整车内空调温度高低。还可以控制车上照明灯,方便晚上坐车时,给后面乘客车顶照明。还有座椅下方照明。

    三、整体设计方案
    3.1、硬件方案
        整体使用STM32F746-diso开发板,利用板载触摸lcd作为显示和界面操控。外扩有温湿度传感器,IO输出和彩灯控制等等。
    整体框图如下:
    11.jpg

    下面是设计的扩展板:利用板上ARDUINO接口,直接插在板子上。使用I2C接口的温湿度传感器SHTC3,以及灯光控制部分。
    如下图所示:
    1.png
    实物如下:
    2.png
    电路图如下:
    F746-ARDUINO.png
    整体硬件如下:
    3.png


    3.2、软件驱动
    下面是温湿度传感器驱动程序部分。
    1. int SHTC3_CalcTemperature(uint16_t rawValue)
    2. {
    3.   // calculate temperature
    4.   // T = -45 + 175 * rawValue / 2^16
    5.   return (((175*1 * rawValue)>>16) - 45*1);   //放大100倍
    6. }

    7. int SHTC3_CalcHumidity(uint16_t rawValue)
    8. {
    9.   // calculate relative humidity
    10.   // RH = rawValue / 2^16 * 100
    11.   return ((100 * 1 * rawValue)>>16);   //放大100倍
    12. }

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

    18.     // calculates 8-Bit checksum with given polynomial
    19.     for(i = 0; i < nbyte; i++)
    20.     {
    21.         crc ^= (buff[i]);
    22.         for(bit = 8; bit > 0; --bit)
    23.         {
    24.             if(crc & 0x80) {
    25.                 crc = (crc << 1) ^ SHTC3_CRC_POLYNOMIAL;
    26.             } else {
    27.                 crc = (crc << 1);
    28.             }
    29.         }
    30.     }
    31.     return crc;
    32. }
    33. uint16_t shtc3_id;
    34. uint16_t SHTC3_Init(void)
    35. {
    36.     uint8_t buff[4]={0};
    37.     shtc3_id = 0;
    38.     shtc3_gpio_init();
    39.    
    40.     HAL_Delay(1);
    41.     SHTC3_ReadData(SHTC3_REG_ID,buff,3);
    42.     if(buff[2] != SHTC3_CheckCRC(buff,2))
    43.     {
    44.         return -1;
    45.     }
    46.     HAL_Delay(10);
    47.     SHTC3_WriteCmd(SHTC3_REG_WAKEUP);
    48.     shtc3_id = (buff[0]<<8)|buff[1];
    49.     return shtc3_id;
    50. }

    51. uint8_t SHTC3_GetMode1_TempRH(int *temp, int *humi)
    52. {
    53.     uint8_t buff[8]={0};
    54.    
    55.     SHTC3_ReadData(SHTC3_REG_CELPM_TEMP_RH,buff,6);
    56.     if((buff[2] != SHTC3_CheckCRC(buff,2))||(buff[5] != SHTC3_CheckCRC(&buff[3],2)))
    57.     {
    58.         return 1;
    59.     }
    60.     *temp = SHTC3_CalcTemperature((buff[0]<<8)|buff[1]);
    61.     *humi = SHTC3_CalcHumidity((buff[3]<<8)|buff[4]);
    62.     return 0;
    63. }

    复制代码
    界面实时时间显示驱动,RTC使用ST的HAL库API获取。
    1.     HAL_RTC_GetTime(&hrtc,&GetTime,RTC_FORMAT_BIN);
    2.     HAL_RTC_GetDate(&hrtc,&GetDate,RTC_FORMAT_BIN);
    3.    
    4.     Hours   = GetTime.Hours;
    5.     Minutes = GetTime.Minutes;
    6.     Seconds = GetTime.Seconds;
    7.    
    8.     Years   = GetDate.Year;
    9.     Months  = GetDate.Month;
    10.     Days    = GetDate.Date;
    11.     Weeks   = GetDate.WeekDay;
    12.     xprintf("%d-%d-%d %d \r\n",Years,Months,Days,Weeks);
    13.     xprintf("%d:%d:%d \r\n",Hours,Minutes,Seconds);
    复制代码
    使用RTC有点要注意的地方就是HAL_RTC_GetTime()和HAL_RTC_GetDate()都要调用,而且要先调用HAL_RTC_GetTime(),再调用HAL_RTC_GetDate()。
    开始没注意,导致RTC时钟不动。下面是我找到原因
    4.png

    所有GUI使用ST的TouchGFX 4.23软件设计。
    6.png
    5.png
    7.png

    四、作品实物图及演示视频展示
    9.png
    8.png

    演示视频
    https://www.bilibili.com/video/BV1f94y1K7vv/

    五、项目资料及程序
    游客,如果您要查看本帖隐藏内容请回复









    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-2 03:55 , Processed in 0.122129 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.