版本协议

GPL 3.0

标签
专业版
#第九届立创电赛#无线温湿度检测仪

创建时间:4个月前

807 10

视频

描述

<div> <h3 style="line-height:1.8"> 1、项目功能介绍</h3> <hr> <p style="line-height:1.8"><span style="font-size:24px"><strong>无线桌面温湿度监测仪</strong></span></p> <p style="line-height:1.8">本项目兼顾多场景应用,包括但不限于以下举例:</p> <p style="line-height:1.8">1、为久居空调环境的工作族/居家人群设计的建议环境检测工具;警惕长时间高温或干燥环境下生活可能带来的不适,提供直观的监测手段以帮助人们调节室内环境。<br>2、本项目兼具蓝牙无线通信功能与锂电池独立供电功能,可用于生产环境(如孵化箱等需要监控温湿度的场景);可通过蓝牙实现多机检测,无需布线即可轻松部署。</p> <p style="line-height:1.8">(配备蓝牙模块便于上传温湿度数据已经修改RTC实时时钟参数,配备OLED显示屏幕以便观测数据;配备锂电池独立供电以及板载充电IC;定时休眠功能延长待机时长)</p> <h3 style="line-height:1.8">2、项目属性</h3> <hr> <p style="line-height:1.8">项目为首次公开、原创项目,未在其他比赛中获奖。</p> <h3 style="line-height:1.8">3、开源协议</h3> <hr> <p style="line-height:1.8">本项目遵循GPL3.0开源协议。</p> <h3 style="line-height:1.8">4、硬件部分</h3> <hr> <p style="line-height:1.8"><span style="color:#95a5a6;font-size:14px"><img src="//image.lceda.cn/oshwhub/d7792354140b4e0dbd3f326f3d7bb68f.png"></span></p> <p style="line-height:1.8">主控采用STM32F103C6T6;升级版本的C8T6可直接替代使用。</p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/06157c94e7724d9099de97c82dccac33.png"></p> <p style="line-height:1.8">盛思锐SHT40温湿度传感器,采用IIC通信,需注意接上拉电阻,模块布局要减少板子自身产热的影响。</p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/8132a0a458fa4afe8c7d3e2691878412.png"></p> <p style="line-height:1.8">0.96寸OLED,用于显示RTC实时时间,温湿度数据;工作电流约4mA;休眠电流低于1mA(本人暂无手段测量1mA以下电流);为了延长使用时间,OLED一定要注意加入休眠操作。</p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/82accadf9db7429f8d27804ed56f6da5.png"></p> <p style="line-height:1.8">蓝牙模块,实现无线温湿度测量数据回传,以及通过发送时钟时间对设备的RTC时钟进行配置。</p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/a9f04e2ccda14428a5fb43517f0667a2.png"></p> <p style="line-height:1.8">线性充电IC,便于对锂电池进行充电,限制电流减少发热,以减少充电时发热对温湿度测量的影响。</p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/adaad1e479664983a13a8db1d34a3665.png"></p> <p style="line-height:1.8">LDO-3.3V;为MCU及传感器、蓝牙提供稳定的3V3电压。</p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/710748ea00b44d74a295af9f9f0995cc.png"></p> <p style="line-height:1.8">休眠唤醒按键,并且连接到了蓝牙连接指示引脚,实现连接蓝牙时唤醒设备的功能。</p> <h3 style="line-height:1.8">5、软件部分</h3> <hr> <p style="line-height:1.8"><span style="color:#95a5a6;font-size:14px">请输入内容…</span></p> <p><span style="color:#169179">//定时器中断,每500ms刷新一次数据</span><br>void TIM3_IRQHandler(void)<br>{<br>    if (TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET)<br>    {<br>                Refresh=1;<br>                count++;<br>                Pot=!Pot;<br>        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);<br>    }<br>}</p> <p>int main(void)<br>{<br>    <span style="color:#169179">//变量定义</span><br>    u16 BAT_ADC=2950;<span style="color:#169179">//电池ADC值</span><br>    u8 BAT_STATUS=0;<span style="color:#169179">//电池电量格数</span><br>    char showData[16]={0};<span style="color:#169179">//输出字符缓存</span><br>    <span style="color:#169179">//初始化</span><br>    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE);<span style="color:#169179">//使能电源管理单元时钟</span><br>    delay_init();<br>    uart_init(115200);<br>    Adc_Init();<br>    OLED_Init();<span style="color:#169179">//屏幕初始化</span><br>    delay_ms(10);<br>    OLED_Clear();<span style="color:#169179">//清屏</span><br>    delay_ms(10);<br>    KEY_Init();<br>    MyRTC_Init();<br>    delay_ms(10);<br><span style="color:#169179">//    MyRTC_SetTime();</span><br>    SHT40_Init();<br>    TIM3_Int_Init(4999, 7199);//0.5s一次中断<br>    <br>    OLED_ShowStr(0,0,"welcome");</p> <p>    while(1)<br>    {<br>        if(KEY_Scan())<br>        {;}<span style="color:#169179">//调试用按键,暂无功能</span><br>            <br>        if(USART_RX_STA&0x8000)<span style="color:#169179">//如果串口接收到数据</span><br>        {<br>            <span style="color:#169179">//通过串口设定时间,格数为 时分(回车):如1024表示10:24</span><br>            if((((USART_RX_BUF[0]-'0')*10+USART_RX_BUF[1]-'0')<24) && ((USART_RX_BUF[3]-'0')*10+USART_RX_BUF[4]-'0'<60))<br>            {<br>                MyRTC_Time[3]=(USART_RX_BUF[0]-'0')*10+USART_RX_BUF[1]-'0';<br>            <br>                MyRTC_Time[4]=(USART_RX_BUF[2]-'0')*10+USART_RX_BUF[3]-'0';<br>                <br>                MyRTC_SetTime();<br>                printf("OK");<br>                <br>            }<br>            else {printf("error");}<br>        <br>            USART_RX_STA=0;<br>        }<br>        <br>        <br>        if(Refresh)<br>            {<br>                SHT40_Read_Temperature_Humidity(&Temperature,&Humidity);<span style="color:#169179">//获取温湿度</span><br>                <br>                sprintf(showData,"(%.1f!C",Temperature);<span style="color:#169179">//!的字模被改成了小句点</span><br>                OLED_ShowStr(0,6,(u8*)showData);<br>                memset(showData,0,16);<br>                <br>                printf("Temperature:%.2f\n",Temperature);<span style="color:#169179">//蓝牙回传温度数据</span><br>                <br>                sprintf(showData,")%.1f%%",Humidity);<br>                OLED_ShowStr(9,6,(u8*)showData);<br>                memset(showData,0,16);<br>                <br>                printf("Humidity:%.2f\n",Humidity);<span style="color:#169179">//蓝牙回传温度数据</span><br>                <br>                <span style="color:#169179">//时间</span><br>                MyRTC_ReadTime();<br>                <br>                if(Pot)<br>                  sprintf(showData,"%02d %02d",MyRTC_Time[3],MyRTC_Time[4]);<br>                else<br>                    sprintf(showData,"%02d:%02d",MyRTC_Time[3],MyRTC_Time[4]);<br>                OLED_ShowStr16(1,2,(u8*)showData);<br>                memset(showData,0,16);</p> <p>                <br>       <span style="color:#169179"> //电量获取</span><br>        BAT_ADC=Get_Adc(2);<br>        <span style="color:#169179">//电量显示部分;1-3025;2-3188;3-3275</span><br>        if(BAT_ADC>3275 || (BAT_STATUS==3 && BAT_ADC>3255))<br>        {<br>            BAT_STATUS=3;OLED_ShowStr(10,0,"[***]");<br>        }<br>        else if(BAT_ADC>3188|| (BAT_STATUS==2 && BAT_ADC>3178))<br>        {<br>            BAT_STATUS=2;OLED_ShowStr(10,0,"[**+]");<br>        }<br>        else if(BAT_ADC>3025 || (BAT_STATUS==1 && BAT_ADC>3000))<br>        {<br>            BAT_STATUS=1;OLED_ShowStr(10,0,"[*++]");<br>        }<br>        else<br>        {<br>            BAT_STATUS=0;OLED_ShowStr(10,0,"[+++]");<br>        }<br>            <span style="color:#169179">//电量显示部分终    </span><br>                Refresh=0;<br>            }<br>            <span style="color:#169179">//休眠</span><br>            if(count>Sleep_wait_time*2){<br>            <span style="color:#169179">/*清除WU状态位*/</span><br>            PWR_ClearFlag (PWR_FLAG_WU);     <br><span style="color:#169179">            /* 使能WKUP引脚的唤醒功能 ,使能PA0*/</span><br>            PWR_WakeUpPinCmd (ENABLE);<br>            Write_IIC_Command(0xAE);<span style="color:#169179">//关闭屏幕</span><br>            <span style="color:#169179">/* 进入待机模式 */</span><br>            PWR_EnterSTANDBYMode();<br>            }<br>        };<br>}</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">6、BOM清单</h3> <hr> <p style="line-height:1.8">以项目生成BOM为准。</p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">7、大赛LOGO验证</h3> <hr> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/87b4618ec0584daaa57e0761a3135742.jpg"></p> <p style="line-height:1.8"> </p> </div>

文档

BOM

暂无

附件

附件名 下载
温湿度计V1.7z
立创电赛:《无线温湿度检测仪》-项目功能介绍.mp4

成员

评论(2)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
zt19456 回复
<p>大佬,板子中的贴片自己好焊吗?像C6T6那么多管脚</p>
LRG_1997 回复
<p>新手慎焊,我全烙铁焊接下来花了两个多小时</p>
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow