你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于stm32f746的智能冰箱实物设计

[复制链接]
作者:电子烂人 2024-12-27 13:32:28 0 764

项目名称

基于stm32f746的智能冰箱实物设计

项目主题

人机界面(GUI) 物联网 传感器 

项目简介

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

项目图片

软硬件框图

演示视频

项目代码仓库

https://gitee.com/electronic-rotten-man/f746-ng_-icebox_FastBond2

各部分详细介绍:

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

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

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

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

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

设计软件:

软件使用STM32CUBEIDE和Arduino;ui界面设计使用的TOUCHGFX;硬件设计使用的KICAD;项目框图使用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

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

PCB设计:

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

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

该项目的重难点

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

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

项目中的小BUG:

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

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

1个附件

收藏 评论0 发布时间:2024-12-27 13:32

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版