在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 3371|回复: 8

[原创] 【STM 32】之智能温控器(PCB、MCU源码和APP源码下载)

[复制链接]
发表于 2016-11-28 16:07:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
智能温控器特点: 能够使办公环境更舒适,空调更节能,自动调节温湿度,这一切后建筑更绿色…
原创声 明,转载请注明出处:http://club.gizwits.com/thread-3332-1-1.html
机智云智能硬件创新大赛:http://club.gizwits.com/thread-2646-1-1.html
作者:夏天罂 粟      看到机智云的这个活动有点晚,犹豫是否要参加一下这个活动。不管是否能完成,我申请几块开发板了,支持一下机智云,同时也熟悉一下机智云的各个开发环节,后面会提出一些建议。周日(8月14日)才把PCB投出,周四回来焊接组装,正在调试。言归正传,我要做的是一个简单实用的产品。智能温控器。


产品功能: 控制中央空调风机盘管的通断阀,风机高中低转速。
应用环境: 楼宇中央空调的风机盘管控制,可以运用于写字楼、工厂等环境。

应用场景:
        (1)夏天天气温度比较高,早上到办公室打开办公室空调,室内温度需要很长时间才能降下来。用户可以通过智能温控器把中央空调提前打开。
        (2)有时候下班时忘记关闭空调,可以通过手机软件关闭,或者在温控器设置定时关闭。
       (3)办公室、厂房空间比较大,温控器采样温度与出口温度不一致,用户可以通过手机软件设定温度和风速进行微调。
       (4)为了防止有人故意把空调温度设置过低或者过高,可以通过手机APP将面板进行锁定。
        (5)结合机智云平台数据分析,物业利用温控器的开通时间进行合理收费,不需要根据办公面积收费。

后面会陆续把原理图、PCB、软件代码、APP的UI和APP代码上传上来。

[ 项目名称 ] 基于STM32ESP8266的智能温控器
[
项目概述 ] 主要用于控制中央空调的风机。
[
硬件准备 ] 机智云GOkit2开发板,壳体,烙铁和示波器等等。
[
使用软件环境
]
                    单片机开发:KEIL5.1
                    UI设计:AI
                   APP设计:Android Studio 2
[ 相关源码 ] 回帖可见相关源码:原理及PCB、MCU源码、APP源码(基于Android Studio2)
本帖隐藏的内容
                原理及PCB

                               
登录/注册后可看大图
ELC_CTRL_MB(v0.1).rar (1.83 MB, 下载次数: 210)
                  MCU源码

                               
登录/注册后可看大图
code.rar (7.28 MB, 下载次数: 628)
                  APP源码(基于Android Studio2)

                               
登录/注册后可看大图
smartThermostat.rar (26.71 MB, 下载次数: 1655)

                               
登录/注册后可看大图
Gokit2.rar (12.7 MB, 下载次数: 602)



如果您需要Gokit APP for Android  Studio源码,请投我一票,6号夏天** 智能温控器    我将发送给你。谢谢! 投票页面   

[ 项目介绍 ]
(1)  视频1操作

(2)  视频2 设备调试

(3)  视频3 设备调试

(4)  做好的APP界面(基于GOkit的APP进行修改,还是用的机智云)

                               
登录/注册后可看大图

                               
登录/注册后可看大图



[ 详细介绍 ]
       一、体系结构图

二、硬件篇(主要器件、BOM表和原理图)

三、硬件篇(焊接完成)

四、设备数据点定义篇

五、MCU代码篇

六、APP界面UI部分
      七、APP程序篇(陆续补充中)




一、 体系结构图
这里所说的温控器是楼宇中央空调的控制面板,是比较常见的面板。传统面板不带通讯模块,及时有也是RS485,用来统一控制,没有实质和用户打交道。
这款智能温控器是在传统温控器基础之上增加了WIFI模块,用户通过APP或微信控制更加人性化,更加简单。


                               
登录/注册后可看大图

(1)  智能温控器通过WIFI连接到机智云服务器,用户可以通过APP来设置和控制中央空调。
(2)  用户可以远程开启和关闭办公室空调。
(3)  管理员可以查看大楼空调运行情况,可以根据开启时间收费。
(4)  可以和楼宇BA控制系统对接,提升大楼智能化水平。
(5)  可以通过微信将设备控制权分享给同事。

目标: 办公环境更舒适,空调更节能,这一切后建筑更绿色…

二、硬件篇(结构图、原理图和主要BOM)

产品内部系统结构图


                               
登录/注册后可看大图




1 电源DCDC部分
12V转4.5V。开关电源是12V输出,继电器用的是12V类型的

                               
登录/注册后可看大图


2、主芯片
Stm32F103C8T6

                               
登录/注册后可看大图



3、晶振


                               
登录/注册后可看大图



4、Cypress的触摸芯片

                               
登录/注册后可看大图

5、电平转换芯片

                               
登录/注册后可看大图

6、段式液晶驱动芯片

                               
登录/注册后可看大图

7、蜂鸣器驱动

                               
登录/注册后可看大图
8、ESP8266WIFI模块

                               
登录/注册后可看大图

主要BOM器件和成本估算
方案总体成本估算  60+元
1 MCU stm32           5
2 触摸芯片           2元
3 LCD驱动芯片         2元
4 LCD段式液晶         4元
5 NTC热敏电阻          1+元
6 继电器型号 7A?        5+元
7 液晶背光板(含液晶背光) 3元
8 WIFI模块           12元
9开关电源 及 DCDC      12元
10蜂鸣器             1元
11 壳体            10元
三、硬件篇(焊接完成)
      (1)补充一下PCB布板图 反面

                               
登录/注册后可看大图

(2)PCB正面

                               
登录/注册后可看大图


(3)PCB 的3D图

                               
登录/注册后可看大图

                               
登录/注册后可看大图


(4)PCB焊接完成

                               
登录/注册后可看大图


(5)PCB焊机水平还不错吧。 能看到ST和乐鑫的芯片模块。


                               
登录/注册后可看大图


(6)和电源主板相连接(借用公司的电源板,上面有开关电源、继电器和DCDC)

                               
登录/注册后可看大图


(7)PCB正面,触摸区域,NTC热敏电阻和段式液晶LCD

                               
登录/注册后可看大图


(8)点亮OK了,帅吧。壳体是阿里上的公模

                               
登录/注册后可看大图
[size=0.83em]IMG_1958.JPG (1.36 MB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]4 天前 上传





下片把MCU代码资源上传上来。期待着!!
四、设备数据点定义篇
       温控器主要的操作有
      (1)冷水阀、热水阀的通断(四管制),用户理解就是制冷制热
      (2)风速 高中低三速 调整
      (3)温度调节
      (4)WIFI功能模式切换,softAP 和 airlink模式
      (5)故障上报
      (6)面板锁定(手机下发命令)
      (7)低温保护, 低于5摄氏度时启动空调

下图为设备数据点图

                               
登录/注册后可看大图

                               
登录/注册后可看大图
五、MCU代码篇   
  (1)MCU程序整体部分

                               
登录/注册后可看大图


(2)MCU程序用户处理部分

                               
登录/注册后可看大图


(3)串口事件部分

                               
登录/注册后可看大图


(4) 处理用户部分代码
void userHandle(void)
{
    uint8_t ret  = 0;
    static uint32_t lcdLastTimer = 0;
    static uint32_t capLastTimer = 0;
    static uint8_t last_cap=0;
    uint8_t cap_id=0;
    static uint16_t cap_time_count=0;
        static uint16_t cap_time_count1=0;         
     if((gizwitsGetTimerCount()-lcdLastTimer) > LCD_TIME_MAX) //timeout = 2S
     {
                                touch_scan();
        
                static uint8 power_on=0;
                ReadADCPoll(&temperature_c);
                if(0x00 == power_on)
                {
                    power_on=1;
                    memset_my(g_showBuff, 0x00, sizeof(g_showBuff));
            //        show_mode_signal();
                    return;
                }
                show_temperature(temperature_c.cur_temp, RT);
                show_mode_signal();
            //    show_time();                      //20160122时间不准,去掉显示时间
                lcd_reload();   
                if(temperature_c.backlight > 0)
                {
                    temperature_c.backlight--;
                    lcd_backlight(temperature_c.backlight);
                }
               
                if(temperature_c.sync_delay > 0)
                {
                    temperature_c.sync_delay--;
                    if(0x00 == temperature_c.sync_delay)
                    {
                        temperature_c.sync_flag = 1;
                    }
                }

         lcdLastTimer = gizwitsGetTimerCount();
      }


      if((gizwitsGetTimerCount()-capLastTimer) > CAP_SCAN_PERIOD) //timeout = 2S
      {
                  auto_rev_opt(&temperature_c);
                  led_buzzer_ctrl(0,0);        
          cap_id=GET_TOUCH_NUMBER();
          if (last_cap!=cap_id)
          {
              last_cap =cap_id;
          }
          else
          {
              if (0!=cap_id)
              {
                cap_pad[cap_id- 1].touch = 1; //for relay ctrl
                led_buzzer_ctrl(logicch2phych[cap_id-1],1);
                led_buzzer_ctrl(5,1);
              }
          }
          if (cap_id == 1)
          {
              cap_time_count++;
              if (cap_time_count > 5000 / CAP_SCAN_PERIOD)
              {
                  gizwitsSetMode(SoftAp_Mode);
                  cap_time_count = 0;
                  lcd_init();
              }
          } else
          {
              cap_time_count = 0;
          }

          if (cap_id == 4)
          {
              cap_time_count1++;
              if (cap_time_count1 > 5000 / CAP_SCAN_PERIOD)
              {
                  gizwitsSetMode(AirLink_Mode);
                  cap_time_count1 = 0;
                  lcd_init();
              }
          } else
          {
              cap_time_count1 = 0;
          }
                  capLastTimer = gizwitsGetTimerCount();
      }
                        
}

(5)功能为触摸按键检测 、温度检测和 LCD刷新代码部分


void smart_frame(uint8_t cmd[],uint8_t buff[])
{
    uint8_t data[5],state=0;
        if ((cmd[0]!=9)&&(cmd[0]!=6)) return ;
    if (cmd[1]!=3) return ;
        if (cmd[3]!=0) return ;
        if (cmd[4]!=0) return ;
        IWDG->KR=0xaaaa;
    smart_frame_buff *wifi_data = (smart_frame_buff *)buff;
    if (wifi_data->action==0x02)
    {
        //read;
       send_state_frame();
        //state|=((temperature_c.temp_param.mode<<2)&0x12);
    }
    if (wifi_data->action==0x01)
    {
        if (wifi_data->attrr_flags&0x01)
        {
           temperature_c.temp_param.on_off=(((wifi_data->attrr_value_L & 0x01)!=0 )?1:0);
        }
        if (wifi_data->attrr_flags&0x02)
        {
            temperature_c.temp_param.lock=(((wifi_data->attrr_value_L&0x02)!=0)?1:0);
        }
        if (wifi_data->attrr_flags&0x04)
        {
            temperature_c.temp_param.mode=((wifi_data->attrr_value_L&0x0c)>>2);
        }
        if (wifi_data->attrr_flags&0x08)
        {
            temperature_c.temp_param.speed=((wifi_data->attrr_value_L&0x30)>>4);
        }
        if (wifi_data->attrr_flags&0x16)
        {
            temperature_c.temp_param.limit_t=BIN2BCD(wifi_data->attrr_value_H);
        }
        //write
                led_buzzer_ctrl(5,1);
                temperature_c.backlight = 60;
        ctrl_reply();
    }
}


详细代码请查阅本主题帖代码附件,谢谢!
六、APP界面UI部分

(1)登陆界面,取名智能温控器。 还有一个小绿叶,


      

                               
登录/注册后可看大图



(2)控制界面
发表于 2016-11-30 17:57:53 | 显示全部楼层
thanks
发表于 2016-12-5 13:05:35 | 显示全部楼层
【STM 32】之智能温控器
发表于 2017-1-11 08:21:09 | 显示全部楼层
thanks share!!
发表于 2017-1-16 13:24:48 | 显示全部楼层
回复 1# CherryAndCarey
thanks
发表于 2017-5-10 13:31:59 | 显示全部楼层
thanks!!!
发表于 2017-7-5 23:29:47 | 显示全部楼层
回复 1# CherryAndCarey


   好东西
发表于 2017-11-27 01:06:27 | 显示全部楼层
正在研究 ESP8266 太好了
发表于 2018-9-4 20:42:45 | 显示全部楼层
棒,赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 10:40 , Processed in 0.027598 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表