查看: 925|回复: 0

[原创] 【智能家居挑战赛】+智能宿舍改造一 环境监测及控制

[复制链接]
  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7803
    最后登录
    2024-4-23
    发表于 2022-3-17 10:21:29 | 显示全部楼层 |阅读模式
    这个月实在有点忙,智能家居这块有很多要做的东西,晃荡晃荡就到月底了。晚上回去把原来拿来练手的传感器和板卡一一找出来,放到调试盒里,这次使用LPC54114板卡,准备测试的线和工具,想想,有遗漏的再补充。当时选题目,比较近的就是宿舍环境了,就想到宿舍改造还比较接地气。按照实现框图,先把环境监测这部分功能做了,以前做过,也比较顺手。
    组装图如图1所示:
    温度和气压这块使用BMP180模块,同时使用OLED来做显示。BMP180的驱动代码及显示代码如下所示:
    1. void BMP085Convert(void)
    2. {
    3. ut = BMP085ReadTemp();
    4. up = BMP085ReadPressure();
    5.        
    6.         x1 = (((long)ut-(long)ac6)*(long)ac5)>>15;
    7.         x2 = ((long)mc<<11)/(x1+md);
    8.         b5 = x1+x2;
    9.         temper = ((b5+8)>>4);
    10. b6 = b5-4000;                                                                                                                                                                                                
    11.        
    12.         x1 = (b2 * (b6 * b6)>>12)>>11;
    13.   x2 = (ac2 * b6)>>11;
    14.   x3 = x1 + x2;
    15.   b3 = ((((long)ac1*4 + x3)<<OSS) + 2)>>2;
    16.   
    17.   // Calculate B4
    18.   x1 = (ac3 * b6)>>13;
    19.   x2 = (b1 * ((b6 * b6)>>12))>>16;
    20.   x3 = ((x1 + x2) + 2)>>2;
    21.   b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;
    22. b7 = ((unsigned long)(up - b3) * (50000>>OSS));
    23.   if (b7 < 0x80000000)
    24.     p = (b7<<1)/b4;
    25.   else
    26.     p = (b7/b4)<<1;
    27.    
    28.   x1 = (p>>8) * (p>>8);
    29.   x1 = (x1 * 3038)>>16;
    30.   x2 = (-7357 * p)>>16;
    31. pressure = p+((x1 + x2 + 3791)>>4);

    32. altitude=44330.0*(1-pow((double)pressure/101325,1/5.255));
    复制代码
    1. BMP085Convert();
    2.                         for(t=0;t<10;t++)
    3.                         Delay_nms(0xAFFFF);
    4.                         lcdshow[0] =(u8) (temper/100);
    5.                         lcdshow[1] =(u8) ((temper-(temper/100)*100)/10);
    6.                         lcdshow[2] =(u8) (temper%10);
    7.         sprintf(lcdtest,"%d",lcdshow[0]);
    8.                         sprintf(lcdtest2,"%d",lcdshow[1]);
    9.                         sprintf(lcdtest3,"%d",lcdshow[2]);
    10.                         LCD_Print(40,0,lcdtest,TYPE16X16,TYPE8X16);
    11.                         LCD_Print(48,0,lcdtest2,TYPE16X16,TYPE8X16);
    12.                         LCD_Print(56,0,lcdpoint,TYPE16X16,TYPE8X16);
    13.                         LCD_Print(64,0,lcdtest3,TYPE16X16,TYPE8X16);
    14.                         LCD_Print(72,0,lcdword4,TYPE16X16,TYPE8X16);
    复制代码

    按照实现框图,使用风扇通过反馈的气压和温度来调节室内空气流量和室温,就拿直流电机小风叶和L298模块来完成这部分功能。组装如图2所示:

    实现代码如下:
    1. /*
    2. *********************************************************************************************************
    3. *        函数名称: Motor_PWMConfig
    4. *        功能说明: 电机PWM控制初始化
    5. *        形参:
    6. *        返回值:
    7. *********************************************************************************************************
    8. */
    9. void Motor_PWMConfig(void)
    10. {
    11. sctimer_config_t sconfig;
    12.           sctimer_pwm_signal_param_t pwmParam;
    13.     uint32_t srctClock_Hz;
    14.          
    15.           srctClock_Hz = CLOCK_GetFreq(kCLOCK_BusClk);
    16.     SCTIMER_GetDefaultConfig(&sconfig);

    17.     SCTIMER_Init(SCT0, &sconfig);
    18.     /* Configure PWM params with frequency 24kHZ from output 4 */
    19.     pwmParam.output = kSCTIMER_Out_5;
    20.     pwmParam.level = kSCTIMER_HighTrue;
    21.     pwmParam.dutyCyclePercent = 18u;//updatedDutycycle;
    22.                 SCTIMER_SetupPwm(SCT0, &pwmParam, kSCTIMER_CenterAlignedPwm, 1000U, srctClock_Hz, &eventNumberOutput5);
    23. }
    复制代码

    设想是温度升到一定程度后,风扇通过PWM驱动调节风速,排热和增加空气流动。效果如图3所示:



    来源: 【智能家居挑战赛】+智能宿舍改造一  环境监测及控制
    加油哦
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 12:21 , Processed in 0.096707 second(s), 17 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表