

* 1、项目功能介绍
一、两个用户自定义功能按键

可使用纽扣电池供电
一个BOOT键和一个复位键,用于程序下载
带一个可以插入usb-c连接上位机进行联网校时,更新天气,当前天气和温度,完成后可断开usbc使用纽扣电池供电
使用sht40检测实际温湿度
*2、项目属性
本项目的是记录学习,同时分享技术经验。
代码可以自行下载修改。修改按键功能
* 3、开源协议
Public Domain
*4、硬件部分
1、纽扣电池及反接电路

2、OLED LDO稳压
3、SHT40温湿度传感器

4.TYPE-C连接座

5.USB转TTL

6.主控及其外围


7.BOOT0、复位、用户按键

*5、软件部分
SHT40传感器的主要读取数据部分代码:
/*************************************************************************************************
* 函 数 名: SHT40_Read_Serial_Number
* 入口参数: 无
* 返回值:32bit的序列号
* 函数功能: 读取SHT40的出场唯一序列号
* 说 明:无
*************************************************************************************************/
uint32_t SHT40_Read_Serial_Number(void)
{
uint32_t Serial_Number;
uint8_t I2C_Transmit_Data[1];
I2C_Transmit_Data[0]=SHT40_READ_SERIAL_NUMBER;
uint8_t I2C_Receive_Data[6]={0};
// HAL_I2C_Master_Transmit(&hi2c1, SHT30_Write, I2C_Transmit_Data,1,HAL_MAX_DELAY);
SHT_Write_Len(SHT_IIC_ADDR,I2C_Transmit_Data[0],1,NULL);//IIC连续写
// HAL_I2C_Master_Receive(&hi2c1, SHT30_Read, I2C_Receive_Data,6,HAL_MAX_DELAY);
SHT_Read_Len(SHT_IIC_ADDR,NULL,6,I2C_Receive_Data); //IIC连续读
for(int i=0;i<6;i++)
{
printf("0x%x ",I2C_Receive_Data[i]);
}
printf("\r\nSHT40_READ_SERIAL_NUMBER:0x%x\r\n",I2C_Transmit_Data[0]);
Serial_Number=(I2C_Receive_Data[0] << 24)|
(I2C_Receive_Data[1] << 16)|
(I2C_Receive_Data[3] << 8)|
(I2C_Receive_Data[4] << 0);
return Serial_Number;
}
void SHT40_Read_RHData(float *temperature, float *humidity)
{
uint8_t writeData[1] = {SHT40_MEASURE_TEMPERATURE_HUMIDITY};
uint8_t readData[6] = {0};
uint32_t tempData = 0;
// HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)SHT40_Write, (uint8_t *)writeData, 1, HAL_MAX_DELAY);
// SHT_Write_Len(SHT_IIC_ADDR,0xfd,1,NULL);//IIC连续写
//
// delay_ms(10);
//
SHT_Read_Len(SHT_IIC_ADDR,writeData[0],6,readData);
// HAL_I2C_Master_Receive(&hi2c1, (uint16_t)SHT40_Read, (uint8_t *)readData, 6, HAL_MAX_DELAY);
// for(int i=0;i<6;i++)
// {
// printf("0x%x ",readData[i]);
// }
// printf("\r\n");
tempData = readData[0] << 8 | readData[1];
*temperature = (tempData * 175.0f) / 65535.0f - 45;
tempData = readData[3] << 8 | readData[4];
*humidity = (tempData * 125.0f) / 65535.0f - 6;
}
*6、BOM清单
见工程
*7、大赛LOGO验证

* 8、演示您的项目并录制成视频上传
见附件
9.软件开源链接
见附件,或github:ykc1043/lcxly-mini-stm32-weather-clock (github.com)
10.上位机使用
编辑附件中的py/config.py
填入高德api
串口号
波特率
是否自动定位和你的ADCODE区域码
还有自动同步的定时任务,crontab格式

评论