问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32单片机的智能鱼缸系统设计

创作时间:
作者:
@小白创作中心

基于STM32单片机的智能鱼缸系统设计

引用
CSDN
1.
https://m.blog.csdn.net/2301_79003431/article/details/143055228

本文介绍了一种基于STM32单片机的智能鱼缸系统设计方案,该系统集成了温度监控、浑浊度监控、液位监控、定时喂食等多项功能。文章详细描述了系统的电路设计和程序实现,为硬件设计和嵌入式开发爱好者提供了一个实用的参考案例。

一.系统概述

智能鱼缸系统主要实现以下功能:

  1. 温度监控
  • 使用温度传感器实时监测鱼缸内的温度,数据通过OLED显示屏进行呈现;
  • 当温度低于设定值时,系统会自动开启加热功能。
  1. 浑浊度监控
  • 通过透光率浑浊度传感器检测鱼缸水质的清澈程度,数据在OLED显示屏上显示;
  • 当浑浊度超过设定阈值时,系统会启动换水装置进行清洁。
  1. 液位监控
  • 运用电阻式水位传感器检测鱼缸的水位高度;
  • 当水位低于设定值时,系统自动启动加水功能。
  1. 定时喂食
  • 使用DS1302时钟芯片进行定时控制,并在OLED显示屏上显示当前时间;
  • 到达预设时间后,系统自动进行喂食操作。
  1. WIFI远程控制
  • 使用ESP8266模块实现WIFI连接,将温度、液位、浑浊度数据上传至APP端;
  • 用户可通过手机APP远程控制加热、加水和喂食操作。
  1. 按键设置与控制
  • 通过按键设定温度、液位、浑浊度的阈值;
  • 按键也可用于手动控制加热、加水和喂食功能。

二.电路设计

电路设计采用Altium Designer进行绘制:

  1. 温度检测
  • 使用DS18B20温度传感器,并通过单总线与单片机通信。
  1. 数据显示
  • 采用0.96寸OLED12864显示屏,通过IIC总线与单片机连接。
  1. 时钟定时
  • 使用DS1302时钟芯片,通过SDA、SCK、DAT三个引脚与单片机连接。
  1. 按键控制
  • 独立按键用于设定阈值和控制系统功能,按键一端接地,另一端接单片机的GPIO口。
  1. 继电器控制
  • 通过继电器实现加热、加水和喂食功能,继电器的输出端与单片机的GPIO口连接。
  1. WIFI通信
  • 使用ESP8266-01S模块,将数据通过UART串口上传至服务器。
  1. 水位检测
  • 使用铜制水位感应板作为电阻式水位传感器,传感器的模拟输出端与单片机的模拟输入端连接。
  1. 浑浊度检测
  • 红外透光浑浊度传感器用于检测水质,通过模拟输出脚与单片机的模拟输入脚连接。

三.程序设计

#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "math.h"
#include "key.h"
#include "OLED_I2C.h"
#include "Beep_Led_Relay.h"
#include "Control_Report_To_Police.h"
int main(void)
 {	
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    delay_init();	    	 //延时函数初始化	
    Beep_init();						//PC15 
    Beep=0;//蜂鸣器初始化   系统上电后先让蜂鸣器停止叫
    TIM4_Init(300,7200);
    KEY_Init();             //PA11 PA12 PA15
    OLED_Init();            //OLED初始化
    Relay_init();					  //PB8 
     
    Adc_Init1();       		 	//PB0  水位检测
    Adc_Init3();			 			//PA5  浑浊度检测
    while(DHT11_Init()){}   //PA12
        
    DS1302_GPIO_Init_Write_Time(); //PA0 CLK   PA1 DATA  PA4 RST
        
    OLED_CLS();              //OLED清屏
    OLED_ShowCN(32,2,0);			//小常硬件
    OLED_ShowCN(32+16,2,1);
    OLED_ShowCN(32+32,2,2);
    OLED_ShowCN(32+32+16,2,3);
    delay_ms(500);
    OLED_CLS();
     
    ALi_ESP8266_GPIO_Init();
    MQTT_Buff_Init();
  AliIoT_Parameter_Init();
//	 /*******显示汉字**********/
    OLED_ShowCN(0,0,10);      
    OLED_ShowCN(0+16,0,11);	
    OLED_ShowCN(0,2,12);      
    OLED_ShowCN(0+16,2,13);	
    OLED_ShowCN(64,0,14);      
    OLED_ShowCN(64+16,0,15);
    OLED_ShowCN(64,2,18);      
    OLED_ShowCN(64+16,2,19);
  
    while(1)
    {
      OLED_Display_Cotrol(); //显示控制函数
    }	 
}  

四.资料内容

24-32-10

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号