FastBond2阶段2-基于stm32f746的智能冰箱实物设计
设计的基于stm32f746的智能冰箱设计,其中用到了st(意法半导体)的STM32F746DICOVERY开发板和乐鑫的ESP8266通信模块。
标签
KiCad
STM32
FastBond第二季
Scheme-it
电子烂人
更新2023-11-30
青岛工学院
375

项目介绍

基于STM32F746DISCOVERY开发板,使用TouchGFX,制作一个可以触摸交互的家用智能冰箱。

各部分详细介绍:

电源部分:外部使用12vDC电源给冰箱供电,控制电路使用AMS1117-3.3 ldo稳压电源芯片,带载电流1.2A,且电源能效高,将外部输入12v电源转化为3.3V电源给芯片和各个模块供电。

人机交互部分:使用STM32F746DISCOVERY开发板板载触摸屏,并结合TouchGFX进行开发,大大缩短了开发周期和产品上市时间,且制作动画精美炫酷,符合人机交互应用要求。

物联网部分:使用乐鑫ESP8266模块进行WiFi连接,连接稳定性良好,且传输速率高。

温度检测模块:使用NTC热敏电阻实时检测温度,并使用STM32片内ADC精准采集。

冷鲜控制部分:使用继电器和硬件驱动电路,当温度达到阈值后自动断开冷气电源。也可手动操作开启和关闭

设计软件:

软件使用STM32CUBEIDE和Arduino;ui界面设计使用的TOUCHGFX;硬件设计使用的KICAD;项目框图使用Scheme-it工具进行框图设计。

FoBLmUujjliNizQjULQ2hjK352hY

链接如下:https://www.digikey.cn/schemeit/project/新项目-2023-10-08-1043-a85acb34194d4c87828a14157ddcc74a

Scheme-it工具介绍:

Scheme-it工具提供了许多模板,并且操作非常方便,只需要在网页上直接拖动即可。最大的亮点在于无需安装,只需登录网页即可开始使用。

Scheme-it还附带了一个符号库,其中包含超过700个通用符号,方便用户进行图形化设计。而且,Scheme-it与Digi-Key元件目录相连,用户可以直接访问超过400万种元件,进一步方便了设计和元件的选择。

Scheme-it是一个功能强大且易于使用的在线工具,它提供了丰富的模板和符号库,同时与Digi-Key元件目录连接,为用户提供了便捷的设计资源和选择。对于初次尝试使用的用户来说,Scheme-it无疑是一个很好的选择。


方案中用到的规定厂商元器件和其功能介绍

1.意法半导体STM32F746-DISOCOVERY

使用STM32F746G-DISCO探索板作为人机交互和温度检测部分。使用Touchgfx开发ui交互设计,将PA0口设为ADC采集接口,开启DMA通道。对采集到的温度值进行中值滤波后,显示到屏幕UI上的同时,用串口发送给ESP8266。

void MainView::handleTickEvent()
{
	tickCounter++;
	if ((tickCounter % 100 == 0) && (AdcDmaOverFlag == 1)) //判断采样是否结束
	{
		for(uint16_t i=0;i<100;i++) //使用100个采样点
		{

			AdcAllValue+=AdcConvertedValue[i];
		}
			AdcValue=AdcAllValue/100;//均值滤波
                        TempValue=(AdcValue-100)/2;
		        graph.addDataPoint((float)TempValue);
                        
                        HAL_UART_Transmit_DMA(&huart7,(uint8_t*)txbuffer,LENGTH);//使用串口发送数据给8266
			AdcDmaOverFlag=0; //标志位复位
			HAL_ADC_Start_DMA(&hadc1,(uint32_t*)AdcConvertedValue,100); //重新开始下一轮采集
			
	}

}

冰箱有工作时间计算系统,可以计算无人监视的时候冰箱有无断电,以及推算出断电时间。

void timeView::setupScreen()
{
    timeViewBase::setupScreen();
    digitalHours = digitalClock1.getCurrentHour();
    digitalMinutes = digitalClock1.getCurrentMinute();
    digitalSeconds = digitalClock1.getCurrentSecond();
}


void timeView::handleTickEvent()
{
    tickCounter++;

    if (tickCounter % 60 == 0)
    {
        if (++digitalSeconds >= 60)
        {
            digitalSeconds = 0;
            if (++digitalMinutes >= 60)
            {
                digitalMinutes = 0;
                if (++digitalHours >= 24)
                {
                    digitalHours = 0;
                }
            }
        }

        // Update the clock
        digitalClock1.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds);
    }
}
//此部分可参考TOUCHGFX官方文档:https://support.touchgfx.com/zh-CN/docs/development/ui-development/ui-components/miscellaneous/digital-clock

当箱内温度达到设定温度后,继电器电路断开制冷电源,将温度保持在设定温度值范围内。

2.乐鑫esp8266

使用esp8266通过串口接收温度值,并通过串口发送到手机上。

 

PCB设计:

PCB部分使用KICAD设计,主要设计了冰箱冷鲜继电器的控制电路,同时预留出stm32板卡的arduino uno r3接口,并集成了一片ESP8266作为物联网传输部分。

继电器驱动电路使用一片S8050以放大单片机IO口的输出电流,并用IN4007作为续流二极管稳定继电器两边的电压。使得继电器能稳定工作。

FjIQIupVbd9gdwMZfy5nk9QZcX_0

Scheme-it工具介绍:

Scheme-it工具提供了许多模板,并且操作非常方便,只需要在网页上直接拖动即可。最大的亮点在于无需安装,只需登录网页即可开始使用。

Scheme-it还附带了一个符号库,其中包含超过700个通用符号,方便用户进行图形化设计。而且,Scheme-it与Digi-Key元件目录相连,用户可以直接访问超过400万种元件,进一步方便了设计和元件的选择。

Scheme-it是一个功能强大且易于使用的在线工具,它提供了丰富的模板和符号库,同时与Digi-Key元件目录连接,为用户提供了便捷的设计资源和选择。对于初次尝试使用的用户来说,Scheme-it无疑是一个很好的选择。

 

该项目的重难点

1.全系统使用freeRTOS布局,需要准确的分配线程栈。

/* Definitions for defaultTask */
osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = {
  .name = "defaultTask",
  .stack_size = 128 * 4,
  .priority = (osPriority_t) osPriorityNormal,
};
/* Definitions for TouchGFXTask */
osThreadId_t TouchGFXTaskHandle;
const osThreadAttr_t TouchGFXTask_attributes = {
  .name = "TouchGFXTask",
  .stack_size = 4096 * 4,
  .priority = (osPriority_t) osPriorityNormal,
};
/* Definitions for videoTask */
osThreadId_t videoTaskHandle;
const osThreadAttr_t videoTask_attributes = {
  .name = "videoTask",
  .stack_size = 1000 * 4,
  .priority = (osPriority_t) osPriorityLow,
};//这里可以参考TouchGFX官方的DEMO。

2.使用C++和TouchGFX软件编写人机交互的按键、图像和时间功能。

Fr7s7OVxIUvEuAUWwfQ3IGpQ0frq

3.NTC热敏电阻的温度准确转换

float tempValueTrans(uint_t16 ADC_value)
{
   float Rt=0;  
   float VR=0;
   VR=(float) (ADC_value/4096*3.3); //转换成电压值
   Rt=(3.3-VR)*10000/VR;//计算Rt
   temp=1/(1/298.15+log(Rt/10000)/3950)-273.15+0.5; //计算温度
   return temp;
}

本次设计重难点完成度较高。

 

链接:https://pan.quark.cn/s/95a6445a442d
提取码:35xF

 

项目中的小BUG:

时间系统只能在选中到当前页面下时正常运作,推算可能是FREERTOS未调用全局

(本人才疏学浅,如有知道解决方法的大佬请评论区指教)

 

项目总结:

本项目是作者的大三上学期课设, 也是本人学习freeRTOS和TOUCHGFX的一个阶段性小总结,其中学到了很多嵌入式开发的经验,也踩了许多的坑。

感谢得捷电子和电子森林对本项目的大力支持,同时感谢硬禾科技的Lucia同学的帮助。同时也感谢各位帮助过我的老师和同学们。

祝愿得捷电子和电子森林越办越好!

 

 

主要参考资料:

[1] 严学文、高伟等. 电子信息类课程设计[M]. 西安:西安交通大学出版社, 2022.

[2] 漆强 .嵌入式系统设计[M].北京: 高等教育出版社,2022.

[3] 刘火良,杨森. FreeRTOS内核实现与应用开发实战指南[M]. 北京: 机械工业出版社.2019

附件下载
STM32F746G_DISCO.hex
STM32的烧录代码
ICEBOX.kicad_sch
原理图
ICEBOX.kicad_pcb
PCB
团队介绍
张硕 ,21级电子信息工程在校学生
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号