• 【单片机毕业设计选题24020】-全自动鱼缸的设计与应用


    系统功能:

    (1)检测并控制鱼缸水温,水温低于22℃后开启加热,高于28℃后关闭加热。

    (2)定时喂食,每天12点和0点喂食一次,步进电机开启后再关闭模拟喂食。

    (3)定时开启水循环,每隔一个小时开启水循环水泵一分钟。

    (4)OLED显示时间,水温,加热喂食和水循环的状态。

    (5)手机蓝牙显示系统状态及控制加热喂食和水循环(手动状态下)。

    (6)系统分手动和自动状态,手动状态下可以通过按键和蓝牙开启加热喂食和

    水循环,自动状态下根据水温自动控制加热,根据时间定时控制喂食和水循环

    主要功能模块原理图:

    电源时钟烧录接口:

    单片机和按键输入电路:

    传感器采集电路:

    继电器电路:

    资料获取地址

    系统主要功能模块代码

    初始化代码:

    1. /* USER CODE BEGIN 1 */
    2. /* USER CODE END 1 */
    3. /* MCU Configuration--------------------------------------------------------*/
    4. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    5. HAL_Init();
    6. /* USER CODE BEGIN Init */
    7. InitVar();
    8. /* USER CODE END Init */
    9. /* Configure the system clock */
    10. SystemClock_Config();
    11. /* USER CODE BEGIN SysInit */
    12. /* USER CODE END SysInit */
    13. /* Initialize all configured peripherals */
    14. MX_GPIO_Init();
    15. MX_USART1_UART_Init();
    16. /* USER CODE BEGIN 2 */
    17. HAL_Delay(100);
    18. SetUart1RxToInput();
    19. HAL_Delay(50);
    20. //uart1打开接收中断
    21. HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);
    22. InitOled();
    23. InitOledDisp();
    24. //测试写DS1302时间
    25. // TestSetTime();
    26. DS1302_Read_Time();
    27. if(InitDS18B20()==0)
    28. {
    29. // printf("%s", "DS18B20初始化成功");
    30. //DS18B20在上电第一次读取时显示温度为85℃,这是正常的。
    31. //85℃是DS18B20在上电复位后在温度寄存器内的对应数字量,
    32. //这里DS18B20初始化成功后读一次值,避免出现85℃
    33. DS18B20GetTemp_SkipRom();
    34. }

    系统控制代码:

    1. //系统信息更新
    2. void SystemControl(void)
    3. {
    4. UpdateTempData();
    5. UpdateBleData();
    6. GetSystemTime();
    7. GetSensorState();
    8. FeedControl();
    9. PumpControl();
    10. }

    蓝牙模块上报系统数据:

    1. void UpdateBleData(void)
    2. {
    3. static uint8_t bleCnt = 0;
    4. //自动模式下每隔10S上报蓝牙模块
    5. if(sysMode==SYS_MODE_MANU)
    6. {
    7. return;
    8. }
    9. bleCnt++;
    10. if(bleCnt>=BLE_UPDATE_INTER)
    11. {
    12. bleCnt = 0;
    13. //打印系统时间
    14. printf("SysTime:%02d:%02d\r\n", getHourVal, getMinVal);
    15. //打印温度值
    16. printf("getTempVal:%2d\r\n", getTempVal);
    17. //打印系统模式
    18. if(sysMode==SYS_MODE_MANU)
    19. {
    20. printf("sysMode:Manual\r\n");
    21. }
    22. else if(sysMode==SYS_MODE_AUTO)
    23. {
    24. printf("sysMode:Auto\r\n");
    25. }
    26. }
    27. }

    此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

    各功能模块资料:

  • 相关阅读:
    【无标题】
    Maven 从入门到精通
    不使用实体类的情况下接收SQL查询结果、@Autowired注入为null解决
    Word文档的两种密码忘记了,怎么办?
    Ribbon 添加右侧区域菜单项
    深度学习——day22 知识回顾class1:什么是神经网络
    非线性光学散射偏微分方程组的matlab求解仿真
    『无为则无心』Python面向对象 — 46、类和对象
    java项目技术方案——书写示例
    基于Java解决容量设施选址问题
  • 原文地址:https://blog.csdn.net/mcu_fang/article/details/139881579