【32项目】基于STM32f103c8t6的智能宠物投喂系统(文章末尾有全网最完整的代码)

本人主要分享自己做项目的经验和,以下的由本人查资料自己整理而来,很乐意和有兴趣的小伙伴一起分享一下小项目的经验总结,同时如果有什么说的不对的地方可以评论出来,我尽可能快的回复大家。(如 果 感 兴 趣 的 可 以 关 注 我 之 后 还 会 继 续 更 新 关 于 3 2 的 一 些 小 项 目 , 谢 谢 大 家 !!!!)

注:文 章 末 尾 有 完 整 的 代 码 !!!!!!!!!

设计背景:

智能宠物投喂系统的设计越来越受到宠物主的关注,尤其是在现代生活节奏加快的背景下,繁忙的工作常常使得宠物主无法按时喂食宠物。基于STM32F103C8T6的智能宠物投喂系统,能够通过定时、远程控制等方式实现对宠物的自动投喂,提升宠物的生活质量,同时减轻宠物主的负担。

设计目标:

该投喂系统通过手机蓝牙控制分为自动投喂模式和手动投喂模式,根据温湿度传感器和光照传感器来判断是否需要进行投喂。

所需材料:

|------------------------------------|
| stm32f103c8t6 |
| oled屏幕 |
| 光照强度模块 |
| dht11温湿度 |
| 步进电机+驱动板 |
| 蓝牙模块(本人选用HC-08,HC-05也可以只是控制距离有所不同) |
| led |

原理图:

流程图:

HC-08蓝牙模块:

STATE:状态输出引脚。未连接时,则为低电平。连接成功时,则为高电平。可以在程序中作指示引脚使用;

RXD:串口接收引脚。接单片机的 TX 引脚(如果是5V MCU,需串联一个 220R 电阻);

TXD:串口发送引脚。接单片机的 RX 引脚;

GND:接地电源;

VCC:输入 3.2~6V 的电源(注意,上面一层邮票口的模块不能接 5V 的电源,需要底板降压至 3.3V);

KEY:主机用于清除配对的从机地址记忆(需要拉高电平 200ms 以上)

部分代码(完整代码在文章末尾,有需自提):

main.c代码

cs 复制代码
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "dht11.h"
#include "oled.h"
#include "Server.h"
//#include "timer.h"
#include "exti.h"
#include "key.h"
#include "stdio.h"




unsigned short phasecw[4] ={0x0800,0x0400,0x0040,0x0020};// D-C-B-A   反转
unsigned short phaseccw[4]={0x0020,0x0040,0x0400,0x0800};// A-B-C-D   正转

//引脚初始化
void Moto_Init(void)
{
	 GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_10 | GPIO_Pin_11 ;//引脚按着INT1顺序接就行了
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	 GPIO_Init(GPIOB,&GPIO_InitStructure);
	 GPIO_ResetBits(GPIOB,GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_10 |GPIO_Pin_11);
}
void MotoRcw(void)  //反转
{  
    int  i;  
  
    for(i=0;i<4;i++)  
    {  
        GPIO_Write(GPIOB,phasecw[i]);  
        delay_ms(3);  
    }  
}

void MotoRccw(void)  //正转
{  
    int i;  
    for(i=0;i<4;i++)  
    {  
        GPIO_Write(GPIOB,phaseccw[i]);  
        delay_ms(3);  
    }  
}

void MotorStop(void) //停止
{  
    GPIO_Write(GPIOB,0x0000);  
}

//控制电机正转还是反转某个角度
//direction方向,1为正转,0为反转
//angle角度,可为0-360具有实际意义
void Motor_Ctrl_Direction_Angle(int direction, int angle)
{
	u16 j;
	if(direction == 1)
	{
		for(j=0;j<64*angle/45;j++) 
		{
			MotoRccw();//正转
		}
		 MotorStop();//停止
  }
	else
	{
		for(j=0;j<64*angle/45;j++) 
		{
			MotoRcw();//反转
		}
		 MotorStop();//停止
	}
}



 int main(void)
 { 
	 //	u8 temperature=0;  	    
    	u8 temperature=0;  	    
	    u8 humidity=0;
  extern  u8 foodnum;  //设置温度
   extern int auto_flag; 
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();		  		//初始化与LED连接的硬件接口
TIM5_PWM_Init(9999,143); 
 //TIM4_CH_Init(200); 
	 //SystemInit();
	 
	 DHT11_Init();
	 	KEY_Init();
	 EXTIX_Init();
	OLED_Init();
	OLED_Clear();	
 	//Adc_Init();		  		//ADC初始化
	 
	Moto_Init();	   			//电机
//	delay_init();	    	 //延时函数初始化	  
	
	 
  OLED_ShowString(0,0,"NowHumi:  %"); 	 
  OLED_ShowString(0,2,"NowTemp:  C"); 
  OLED_ShowString(0,4,"Foodnum:  ");	 
 	SetJointAngle(90);
	while(1)
	{ 
		 DHT11_Read_Data(&temperature,&humidity);
		 KEY_Scan();//调用按键函数
	// SetJointAngle(90);
		
   OLED_ShowInt(64,2,temperature);
	 OLED_ShowInt(64,0,humidity);
		 OLED_ShowInt(64,4,foodnum);

		printf("NowHumi %d  NowTemp %d  Foodnum %d \r\n",humidity,temperature,foodnum);
		//printf("kcal:%d\r\n",temperature);
		delay_ms(50);	

	}											    
}	

注意:由于此项目需要通过手机蓝牙控制,因此需要下载蓝牙调试软件,本人下载软件如下

**通过网盘分享的文件:智能投喂系统

链接:https://pan.baidu.com/s/1HvjxvD6yvRWZdwIJQScFtQ?pwd=iw64 提取码: iw64【工程在user文件中】**

如 果喜 欢 就 加个 关注 吧, 每 天 不 定时 更 新 一 些 小 项 目! !!!!!!!!!

相关推荐
MARIN_shen4 分钟前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
荒古前5 分钟前
龟兔赛跑 PTA
c语言·算法
Asa31921 分钟前
STM32-按键扫描配置
stm32·单片机·嵌入式硬件
南城花随雪。40 分钟前
单片机:实现驱动超声波(附带源码)
单片机·嵌入式硬件
嵌入式科普41 分钟前
十三、从0开始卷出一个新项目之瑞萨RZN2L串口DMA接收不定长
c语言·stm32·瑞萨·e2studio·rzn2l
小林熬夜学编程2 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
Jackey_Song_Odd2 小时前
C语言 单向链表反转问题
c语言·数据结构·算法·链表
A懿轩A4 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
半盏茶香4 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
字节高级特工5 小时前
【C++】深入剖析默认成员函数3:拷贝构造函数
c语言·c++