yangjiaxu 发表于 2024-1-31 01:50:36

《2023 DigiKey 汽车应用创意挑战赛》无线温度采集器设备

本次设计的题目是基于STM32F746为主控芯片的低功耗无线温度采集器设备,其目的是想实现检测设备温度,室内温度和各种需要检测温度的地方。该设备采用STM32F746为主控,利用温度传感器持续性采集被测物体或者环境温度,通过2.4G无线发送到集中器设备,再通过485或者LAN传输到电脑端进行记录和分析,还可以给客户进行微信短信等报警处理的一套系统。设备自带OLED显示屏,通过按键唤醒,实现本地显示,满足客户需求,一节14505电池至少可以使用2年。

设计流程如下:


这里选择使用STM32F746主要其目的是由于该MCU的性能非常强大,同时可以支持LCD/OLED显示,可以快速刷新数据,给用户以非常良好的用户体验;温度传感器采用市面常用的DS18B20温度传感器,其具有耐高温,测量精度高,采用数字输出方式,抗干扰能力强等诸多优势;本次设计显示屏采用LCD显示,主要其显示内容较多,便于操控,同时又可以UI功能拓展,未以后产品**预留无限可能。
这里由于时间紧任务重,所以在传输方面,本次直接采用串口的方式传输到电脑终端,这与通过485传输功能完全一致;在低功耗方面暂未实现,因此该项目的**完善的空间较多。

代码详解:
1、 驱动DS18B20获取温度//从ds18b20得到温度值
//精度:0.1C
//返回值:温度值 (-550~1250)
short DS18B20_Get_Temp(void)
{
    u8 temp;
    u8 TL,TH;
        short tem;
    DS18B20_Start ();                  // ds1820 start convert
    DS18B20_Rst();
    DS18B20_Check();       
    DS18B20_Write_Byte(0xcc);// skip rom
    DS18B20_Write_Byte(0xbe);// convert          
    TL=DS18B20_Read_Byte(); // LSB   
    TH=DS18B20_Read_Byte(); // MSB
                    
    if(TH>7)
    {
      TH=~TH;
      TL=~TL;
      temp=0;//温度为负
    }else temp=1;//温度为正                    
    tem=TH; //获得高八位
    tem<<=8;   
    tem+=TL;//获得底八位
    tem=(float)tem*0.625;//转换
        if(temp)return tem; //返回温度值
        else return -tem;               
}

2、 利用LCD显示温度数据BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"temp:", LEFT_MODE);
i = Temp / 10 + 0x30;
i = Temp % 10 + 0x30;
BSP_LCD_DisplayChar(100, 60,i);
BSP_LCD_DisplayChar(124, 60,i);


3、 将温度数据利用串口的方式传输到后台终端HAL_UART_Transmit(&UartHandle,(uint8_t *)&Temp,1,100);最终效果如下:


页: [1]
查看完整版本: 《2023 DigiKey 汽车应用创意挑战赛》无线温度采集器设备