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

智能温控器特点: 能够使办公环境更舒适,空调更节能,自动调节温湿度,这一切后建筑更绿色…
原创声 明,转载请注明出处: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代码上传上来。

 

项目名称 ] 基于STM32和ESP8266的智能温控器
项目概述 ] 主要用于控制中央空调的风机。
硬件准备 ] 机智云GOkit2开发板,壳体,烙铁和示波器等等。
使用软件环境 ]

                    单片机开发:KEIL5.1

                    UI设计:AI

                   APP设计:Android Studio 2
相关源码 ]

                原理及PCB  ELC_CTRL_MB(v0.1).rar (1.83 MB, 下载次数: 20)

                  MCU源码  code.rar (7.28 MB, 下载次数: 74)

                  APP源码(基于Android Studio2)  smartThermostat.rar (26.71 MB, 下载次数: 134)

                  如果你觉得源码不错,请给我投上一票,谢谢!6号夏天** 智能温控器  投票页面


项目介绍 ]

(1)  视频1操作

(2)  视频2 设备调试

(3)  视频3 设备调试

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

31184118_r6mp.jpeg31184125_cgQg.jpeg




[ 详细介绍 ]
       一、体系结构图
                      二、硬件篇(主要器件、BOM表和原理图)
                     三、硬件篇(焊接完成)
                     四、设备数据点定义篇
                     五、MCU代码篇
                    六、APP界面UI部分
      七、APP程序篇(陆续补充中)




一、 体系结构图

这里所说的温控器是楼宇中央空调的控制面板,是比较常见的面板。传统面板不带通讯模块,及时有也是RS485,用来统一控制,没有实质和用户打交道。

这款智能温控器是在传统温控器基础之上增加了WIFI模块,用户通过APP或微信控制更加人性化,更加简单。

 

31184130_s4kq.png

 

(1)  智能温控器通过WIFI连接到机智云服务器,用户可以通过APP来设置和控制中央空调。

(2)  用户可以远程开启和关闭办公室空调。

(3)  管理员可以查看大楼空调运行情况,可以根据开启时间收费。

(4)  可以和楼宇BA控制系统对接,提升大楼智能化水平。

(5)  可以通过微信将设备控制权分享给同事。

 

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

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

产品内部系统结构图

31184132_937r.png 


1 电源DCDC部分
12V转4.5V。开关电源是12V输出,继电器用的是12V类型的
31184132_AuNZ.png 
2、主芯片
Stm32F103C8T6
31184134_Myut.png 
 

3、晶振


31184136_dVvZ.png 
 

4、Cypress的触摸芯片

31184138_n8Fy.png

 

5、电平转换芯片

31184139_kiaB.png

 

6、段式液晶驱动芯片

31184140_4DWE.png

 

7、蜂鸣器驱动

31184141_hx1J.png

8、ESP8266WIFI模块

31184141_LQ8R.png

WIFI.png (27.21 KB, 下载次数: 0)

下载附件

5 天前 上传

 

主要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布板图 反面
31184141_1RNE.png 
(2)PCB正面
31184147_xy9Z.png 

(3)PCB 的3D图
31184152_qrSH.png31184200_TbkN.png 

(4)PCB焊接完成
31184207_DPVJ.jpg 

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

31184221_RT5J.jpg 

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

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

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

IMG_1958.JPG (1.36 MB, 下载次数: 0)

下载附件

4 天前 上传



下片把MCU代码资源上传上来。期待着!!

 

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

下图为设备数据点图
31184452_fDNK.jpg31184452_yqTe.jpg

五、MCU代码篇   
  (1)MCU程序整体部分
31184453_sawR.jpg 

(2)MCU程序用户处理部分
31184453_bhff.jpg 

(3)串口事件部分
31184453_4nFZ.jpg 

(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();
    }
}


详细代码请查阅本主题帖代码附件,谢谢!

 

 

【试用活动】Gokit 2.X、Gokit 3.X 免费试用申请   http://club.gizwits.com/thread-2610-1-1.html 

http://club.gizwits.com/thread-2610-1-1.html​​​​​​​ 

 

转载于:https://my.oschina.net/u/2320846/blog/738429

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32C8T6是一款高性能、低功耗的32位微控制器,该控制器集成了多种外设和功能。最小系统PCB源码是指用于搭建STM32C8T6最小系统电路板的原始代码。 最小系统PCB源码主要包括以下几部分的设计: 1. 电源部分:包括电源输入、电源滤波电容、电源管理电路等。在STM32C8T6最小系统电路板中,一般采用5V DC电源输入,通过稳压芯片转换为3.3V供给控制器。 2. 调试接口:包括调试模式选择跳线、调试串口等。在STM32C8T6最小系统电路板中一般会设计一个JTAG/SWD接口用于程序下载和调试。 3. 外设部分:根据具体应用需求,可以设计相应的外设接口,如GPIO口、串口、SPI口、I2C口等。这些接口可以与外部器件进行通信,实现更多功能。 4. 晶振部分:STM32C8T6需要外部晶振提供主时钟源。通常会选择一个适当的晶振频率,如8MHz或16MHz,并通过相关电路连接到控制器。 5. 稳压电路:为了保证晶振、芯片和外设正常工作,需要设计相应的稳压电路,如电容滤波电路、稳压芯片等。 最小系统PCB源码设计需要根据具体需求进行调整和优化,同时还需要考虑电路连接的布局和走线的规划,以确保电路的稳定性和可靠性。最终的PCB布局和走线图将作为最小系统电路板的制作参考,通过制板、焊接和组装等步骤,将原始源码转化为实际可用的STM32C8T6最小系统电路板。 ### 回答2: STM32C8T6最小系统是一种基于STM32C8T6微控制器的嵌入式系统开发板。它的最小系统板(PCB)源代码是为方便开发者快速搭建开发环境所提供的。以下是关于该系统的最小系统PCB源码说明: 最小系统PCB源码包括了所有必要的电路连接和元件布局。它包含了主要的电路板和外围元件,以满足STM32C8T6微控制器的工作需求。 源码中的电路包括了供电电路、晶体振荡电路、复位电路和串口通信电路等。供电电路主要包括了稳压电源电路,确保嵌入式系统能够稳定可靠地工作。晶体振荡电路用于提供时钟信号,保证微控制器的正常运行。复位电路通过外部复位按钮或其他触发信号,使系统重启到初始状态。串口通信电路则用于与外部设备进行数据通信。 此外,最小系统PCB源码还包括了必要的引脚连接和扩展接口,以便连接外部设备和添加扩展模块。通过这些接口,开发者可以根据自己的需求添加各种传感器、显示屏、通信模块等外部设备。 最小系统PCB源码是针对STM32C8T6微控制器的特定需求而设计的,因此可以在该系统上进行基于STM32C8T6的软件开发、调试和测试工作。开发者可以根据该源码进行布线、焊接和组装工作,搭建一个完整的嵌入式开发环境。 总结起来,STM32C8T6最小系统的PCB源码提供了一个简单、方便、可靠的硬件平台,为开发者进行基于该微控制器的嵌入式软件开发提供了便利。 ### 回答3: 对于STM32C8T6最小系统的PCB源码,可能是指的是包括元器件布局和连线等信息的电路板设计文件。由于300字的篇幅限制,无法详细描述所有细节,以下是一个简要的概述: 首先,最小系统的PCB源码会包含STM32C8T6芯片的引脚定义和电源接入信息。这些信息是根据芯片厂商提供的数据手册进行设计的。 接下来,根据项目需求,可能会包括一些外部元器件的布局信息,如电容、滤波器、晶振等。这些元器件在电路中起到稳压、滤波、时钟等作用。 针对STM32C8T6芯片的引脚,需要确定每个引脚的功能及其连接方式。不同的引脚连接到不同的功能模块,如GPIO、串口、SPI、I2C等。根据实际需求,设计者会在PCB中完成对应的引脚连线。 此外,还需要注意电源线和地线的布局。为了保证系统的稳定性和抗干扰能力,应尽量减少电源和地线的长度,并采用合适的电源滤波电容和地线连接方式。 在设计过程中,还需要考虑电路板的尺寸、形状和外部接口的布局。这取决于最终产品的需求和机械设计要求。 最后,为了确保PCB的正确性,设计者通常会进行原理图和布局的校对。一旦确认无误后,就可以从PCB设计软件中生成Gerber文件,用于进行后续PCB加工和制造。 综上所述,STM32C8T6最小系统的PCB源码是一个包含了引脚定义、外部元器件布局和连线等信息的电路板设计文件。通过这个源码,可以实现对STM32C8T6芯片的外围电路设计,并完成最小系统的硬件搭建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值