查看: 1553|回复: 6

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

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

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7799
    最后登录
    2024-4-18
    发表于 2021-4-22 16:29:11 | 显示全部楼层 |阅读模式
    这个月实在有点忙,智能家居这块有很多要做的东西,晃荡晃荡就到月底了。晚上回去把原来拿来练手的传感器和板卡一一找出来,放到调试盒里,这次使用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所示:


    图1

    图1

    图2

    图2

    图3

    图3
    加油哦
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2021-4-23 11:52:06 | 显示全部楼层
    这个自动化场景应用还是非常普遍的。
    在南方的工厂里面,夏季车间的温湿度调节还是非常有用。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7799
    最后登录
    2024-4-18
     楼主| 发表于 2021-4-23 14:08:07 | 显示全部楼层
    jobszheng5 发表于 2021-4-23 11:52
    这个自动化场景应用还是非常普遍的。
    在南方的工厂里面,夏季车间的温湿度调节还是非常有用。 ...

    有些工厂的车间里到夏天想想都热
    加油哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2021-4-23 14:14:57 | 显示全部楼层
    所以 楼主的设计方案还是有非常大的提升空间
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7799
    最后登录
    2024-4-18
     楼主| 发表于 2021-4-23 16:39:31 | 显示全部楼层
    jobszheng5 发表于 2021-4-23 14:14
    所以 楼主的设计方案还是有非常大的提升空间

    谢谢支持!
    加油哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-4 21:47
  • 签到天数: 165 天

    [LV.7]常住居民III

    1

    主题

    410

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1335
    最后登录
    2024-2-29
    发表于 2021-5-19 08:56:24 | 显示全部楼层
    本帖最后由 what12 于 2021-5-19 08:58 编辑

    支持支持
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7799
    最后登录
    2024-4-18
     楼主| 发表于 2021-5-19 12:13:57 | 显示全部楼层

    谢谢支持
    加油哦
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-20 15:37 , Processed in 0.127581 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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