零基础学会制作 基于STM32单片机的果蔬保鲜库控制系统/保鲜库/冷藏库/小型冰箱

项目介绍

本文提出了一种果蔬保鲜库控制系统的设计方案,旨在通过现代电子技术提高食品保存的效率和安全性,同时实现节能环保的目标。用单片机作为主控,通过对温度采集、湿度采集、CO2采集,实现对保鲜库的精准控制和智能操作。

功能介绍

1)温度控制范围:-5℃~+10℃可调,静态精度:±0.5℃;
2)湿度控制范围:20%~75%RH可调,静态精度:5%;
3)具有CO2浓度检测与报警功能,温度和湿度的显示及异常预警功能;

所用模块

STM32单片机控制单元作为系统的核心,负责处理来自各传感器的数据,根据设定的保鲜条件执行相应的控制命令,如启动制冷或加湿。温湿度采集模块采用DHT11传感器实时监测保鲜库内的温度,数据精确且稳定,通过数字信号直接传输给STM32单片机。半导体制冷模块利用半导体制冷片进行温度调节,当温度超过设定值时自动启动,通过单片机控制的电路调整制冷强度。加湿模块通过超声波雾化器或其他加湿器设备控制保鲜库内的湿度,根据传感器反馈调整加湿量,由STM32单片机控制。本设计可以实时监控与自动调节,系统能够实时监测保鲜库内的环境参数,并根据预设的最优保鲜条件自动调节制冷和加湿设备,保持环境稳定。本设计有用户界面,可以提供友好的用户界面,允许用户设置保鲜条件(温度、湿度等),查看当前环境状态,以及手动控制制冷和加湿模块。

系统原理图

系统硬件由温湿度采集模块、CO2检测模块、按键模块、报警模块、制冷模块、加湿模块等组成。

实物图

在这里插入图片描述
在这里插入图片描述

部分代码

#include “stm32f10x.h” // Device header
#include “iwdg.h”
#include “adcx.h”
#include “oled.h”
#include “dht11.h”
#include “led.h”
#include “key.h”
#include “tim2.h”
#include “tim3.h”
#include “usart3.h”
#include “usart.h”
#include “motor.h”
#include “sensormodules.h”
#include “gizwits_product.h”
#include “flash.h”

#define KEY_1 1
#define KEY_2 2
#define KEY_3 3
#define KEY_4 4

#define FLASH_START_ADDR 0x0801f000 //дÈëµÄÆðʼµØÖ·

SensorModules sensorData; //ÉùÃ÷´«¸ÐÆ÷Êý¾Ý½á¹¹Ìå±äÁ¿
SensorThresholdValue Sensorthreshold; //ÉùÃ÷´«¸ÐÆ÷ãÐÖµ½á¹¹Ìå±äÁ¿

uint8_t menu = 1; //ÏÔʾ²Ëµ¥±äÁ¿
uint8_t OLED_Clear_Flag; //ãÐÖµÉèÖýçÃæµÄÇåÆÁ±ê־λ
uint8_t mode = 0; //ϵͳģʽ
uint8_t motorFlag; //²½½øµç»ú¿ØÖƱê־λ

enum
{
display_page1 = 1,
settingsPage

}MenuPages;

/**

  • @brief ÏÔʾ²Ëµ¥1µÄ¹Ì¶¨ÄÚÈÝ

  • @param ÎÞ

  • @retval ÎÞ
    */
    void OLED_Menu1(void)
    {
    //ÏÔʾϵͳÃû
    OLED_ShowChinese(1, 1, 0);
    OLED_ShowChinese(1, 2, 1);
    OLED_ShowChinese(1, 3, 2);
    OLED_ShowChinese(1, 4, 3);
    OLED_ShowChinese(1, 5, 4);
    OLED_ShowChinese(1, 6, 5);
    OLED_ShowChinese(1, 7, 6);
    OLED_ShowChinese(1, 8, 7);

    //ÏÔʾ¡°ÏµÍ³Ä£Ê½£º¡±
    OLED_ShowChinese(2, 1, 6);
    OLED_ShowChinese(2, 2, 7);
    OLED_ShowChinese(2, 3, 19);
    OLED_ShowChinese(2, 4, 20);
    OLED_ShowChar(2, 9, ‘:’);

    //ÏÔʾ¡°Î¶ȣº C¡±
    OLED_ShowChinese(3,1,8);
    OLED_ShowChinese(3,2,9);
    OLED_ShowChar(3,5,‘:’);
    OLED_ShowChar(3,8,‘C’);

    //ÏÔʾ¡°Êª¶È: %¡±
    OLED_ShowChinese(3,5,10);
    OLED_ShowChinese(3,6,9);
    OLED_ShowChar(3,13,‘:’);
    OLED_ShowChar(3,16,‘%’);

    //ÏÔʾ¡°¶þÑõ»¯Ì¼£º ¡±
    OLED_ShowChinese(4, 1, 24);
    OLED_ShowChinese(4, 2, 25);
    OLED_ShowChinese(4, 3, 26);
    OLED_ShowChinese(4, 4, 27);
    OLED_ShowChar(4, 9, ‘:’);
    OLED_ShowString(4, 14, “ppm”);
    }

/**

  • @brief ÏÔʾ²Ëµ¥1µÄ´«¸ÐÆ÷Êý¾Ý

  • @param ÎÞ

  • @retval ÎÞ
    */
    void SensorDataDisplay1(void)
    {
    //ÏÔʾϵͳ״̬Êý¾Ý
    if (!mode)
    {
    OLED_ShowChinese(2, 6, 21);
    OLED_ShowChinese(2, 7, 22);
    }
    else
    {
    OLED_ShowChinese(2, 6, 23);
    OLED_ShowChinese(2, 7, 22);
    }

    //ÏÔʾζÈÊý¾Ý
    OLED_ShowNum(3, 6, sensorData.temp, 2);

    //ÏÔʾʪ¶ÈÊý¾Ý
    OLED_ShowNum(3, 14, sensorData.humi, 2);

    //ÏÔʾCO2Ũ¶ÈÊý¾Ý
    OLED_ShowNum(4, 10, sensorData.CO2, 4);
    }

/**

  • @brief ÏÔʾãÐÖµÉèÖýçÃæ1µÄ¹Ì¶¨ÄÚÈÝ

  • @param ÎÞ

  • @retval ÎÞ
    */
    void OLED_settingsPage1(void)
    {
    //ÏÔʾϵͳÃû
    OLED_ShowChinese(1, 1, 17);
    OLED_ShowChinese(1, 2, 18);
    OLED_ShowChinese(1, 3, 30);
    OLED_ShowChinese(1, 4, 31);
    OLED_ShowChinese(1, 5, 32);
    OLED_ShowChinese(1, 6, 33);
    OLED_ShowChinese(1, 7, 34);
    OLED_ShowChinese(1, 8, 35);

    //ÏÔʾ¡°Î¶ÈÉÏÏÞ£º¡±
    OLED_ShowChinese(2, 2, 8);
    OLED_ShowChinese(2, 3, 9);
    OLED_ShowChinese(2, 4, 36);
    OLED_ShowChinese(2, 5, 37);
    OLED_ShowChar(2, 11, ‘:’);

    //ÏÔʾ¡°Î¶ÈÏÂÏÞ£º¡±
    OLED_ShowChinese(3, 2, 8);
    OLED_ShowChinese(3, 3, 9);
    OLED_ShowChinese(3, 4, 38);
    OLED_ShowChinese(3, 5, 39);
    OLED_ShowChar(3, 11, ‘:’);

    //ÏÔʾ¡°Êª¶ÈÉÏÏÞ£º¡±
    OLED_ShowChinese(4, 2, 10);
    OLED_ShowChinese(4, 3, 9);
    OLED_ShowChinese(4, 4, 36);
    OLED_ShowChinese(4, 5, 37);
    OLED_ShowChar(4, 11, ‘:’);

}

/**

  • @brief ÏÔʾãÐÖµ½çÃæ1µÄ´«¸ÐÆ÷Êý¾Ý

  • @param ÎÞ

  • @retval ÎÞ
    */
    void settingsThresholdDisplay1(void)
    {
    //ÏÔʾζÈÉÏÏÞãÐÖµÊý¾Ý
    OLED_ShowNum(2, 13, Sensorthreshold.tempUpperThreshold, 2);

    //ÏÔʾζÈÏÂÏÞãÐÖµÊý¾Ý
    OLED_ShowNum(3, 13, Sensorthreshold.tempLowerThreshold, 2);

    //ÏÔʾʪ¶ÈÉÏÏÞãÐÖµÊý¾Ý
    OLED_ShowNum(4, 13, Sensorthreshold.humiUpperThreshold, 2);

}

资料下载链接

「实物制作资料.rar」,来自夸克网盘分享。
夸克网盘无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
/928a345o9V😕
链接:https://pan.quark.cn/s/fa4fa3fc4e7b
提取码:p88k

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值