《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]