“我们不做一锤子买卖,只做技术成长的长期伙伴!”
目录
一、视频展示
二、项目简介
三、原理图设计
四、PCB硬件设计
五、程序设计
六、资料分享
一、视频展示
基于stm32的智能婴儿床 -视频分享
二、项目简介
题目:基于stm32的智能婴儿床 主控:STM32 显示:OLED显示屏 温湿度:dht11 MQ135空气质量传感器 异物监测:压力薄膜s 声音传感器 通信:蓝牙模块 控制模块:风扇继电器 电机驱动模块:步进电机 JQ8400语音播报 功能: 1.用OLED对环境温度湿度还有空气质量等数值大小进行显示。 2.使用传感器检测环境温度,湿度,空气质量。 3.手机可设计报警阈值,当温度超过正常范围,进行手机警报,当空气质量差时手机警报。 4.当温度超过报警阈值上限范围时或空气质量差时风扇启动。 5.检测婴儿哭泣,婴儿哭泣时候手机报警,自动播放睡眠曲和启动电机模拟摇篮。 6.手机可查看婴儿床环境参数,可以手动操作风扇,音乐播放以及模拟摇篮装置的开启和关闭。 7.异物入侵检测,当有异物入侵时手机警报。
三、原理图设计
四、PCB硬件设计
五、程序设计
#include "stm32f10x.h" // Device header
#include "delay.h"
#include "lcd.h"
#include "dht11.h"
#include "IOput.h"
#include "usart.h"
#include "timer.h"
#include "adc.h"
#include "pwm.h"
#include "STEPMOTOR.h"
#include "jq8400.h"
extern u8 res;
u8 light,water,ph,count,open_flag=0;
u8 show_flag,show1_flag,max_wd=30,max_LIGHT=50,dec_TS=70,mode_flag=0,song_flag=0,count11=1;
u8 SOUND,MQ,YALI;
int main (void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
DHT11_Init();
OLED_Init();
delay_ms(1);
OLED_Clear();
output_init();
input_init();
Usart1_Init(9600);
//TIM_PWM_Init(71,9999);
stepmotor_init();
Adc_Init();
USART_Config();
while(1)
{
count++;
if(res=='a')
{
OLED_Clear();
set_flag=1;
res=0;
}
else if(res=='b')
{
OLED_Clear();
add_flag=1;
res=0;
}
else if(res=='c')
{
OLED_Clear();
dec_flag=1;
res=0;
}
SOUND=Get_Adc_Average(0,10)*100/4096;
MQ=Get_Adc_Average(1,10)*100/4096;
YALI = 100-Get_Adc_Average(2,10)*100/4096;
DHT11_Read_Data(&temp,&humi);
key_scan(1,0,0);
if(set_flag==1 && show_flag!=1)
{
show1_flag=0;
set_flag=0;
show_flag++;
if(show_flag>=2)
{
show_flag=0;
}
}
if(show_flag==0)
{
OLED_ShowCH(0,0," 智能婴儿床 ");
OLED_ShowCH(0,2,"温度:");
OLED_ShowNum(40,2,temp,2,16);
OLED_ShowCH(0,4,"湿度:");
OLED_ShowNum(40,4,humi,2,16);
OLED_ShowCH(64,2,"声音:");
OLED_ShowNum(104,2,SOUND,2,16);
OLED_ShowCH(64,4,"空气:");
OLED_ShowNum(104,4,MQ,2,16);
//OLED_ShowCH(0,6,"压力:");
//OLED_ShowNum(40,6,YALI,2,16);
if(add_flag==1)
{
mode_flag++;
add_flag=0;
if(mode_flag>=2)
mode_flag=0;
}
if(mode_flag==0)
{
OLED_ShowCH(96,6,"手动");
if(dec_flag==1)
{
dec_flag=0;
JDQ1=~JDQ1;
}
if(res=='d')
{
JDQ1=~JDQ1;
res=0;
}
else if(res=='e')
{
count11++;
if(count11>=5)
count11=1;
playsong(count11);
res=0;
}
else if(res=='f')
{
MotorCW(1000,256);
MotorCCW(1000,256);
MotorStop();
res=0;
}
}
else
{
OLED_ShowCH(96,6,"自动");
if(light>=max_LIGHT)
{
JDQ1=0;
TIM_SetCompare2(TIM2,0);
}
else
{
JDQ1=1;
TIM_SetCompare2(TIM2,100-light);
}
if(temp>=max_wd || MQ>=max_LIGHT)
{
JDQ1=0;
}
else
{
JDQ1=1;
}
if(SOUND>=dec_TS)
{
if(song_flag==1)
{
count11++;
if(count11>=5)
count11=1;
playsong(count11);
song_flag=0;
}
MotorCW(1000,256);
MotorCCW(1000,256);
MotorStop();
}
else
{
song_flag=1;
}
}
}
if(show_flag==1)
{
OLED_ShowCH(0,0,"最高温度:");
OLED_ShowCH(0,2,"哭声阈值:");
OLED_ShowCH(0,4,"空气质量:");
OLED_ShowNum(72,0,max_wd,2,16);
OLED_ShowNum(72,2,dec_TS,2,16);
OLED_ShowNum(72,4,max_LIGHT,2,16);
if(set_flag==1&&show_flag==1)
{
set_flag=0;
show1_flag++;
if(show1_flag>=3)
{
show_flag=0;
OLED_Clear();
}
}
if(show1_flag==0)
{
OLED_ShowCH(112,0,"←");
if(add_flag==1)
{
add_flag=0;
max_wd++;
}
if(dec_flag==1)
{
dec_flag=0;
max_wd–;
}
if(max_wd>=100 || max_wd<=0){max_wd=0;}
}
if(show1_flag==1)
{
OLED_ShowCH(112,2,"←");
if(add_flag==1)
{
add_flag=0;
dec_TS++;
}
if(dec_flag==1)
{
dec_flag=0;
dec_TS–;
}
if(dec_TS>=100 || dec_TS<=0){dec_TS=0;}
}
if(show1_flag==2)
{
OLED_ShowCH(112,4,"←");
if(add_flag==1)
{
add_flag=0;
max_LIGHT++;
}
if(dec_flag==1)
{
dec_flag=0;
max_LIGHT–;
}
if(max_LIGHT>=100 || max_LIGHT<=0){max_LIGHT=0;}
}
}
if(YALI>=60)
{
UsartPrintf(USART1,"异物入侵警报\\r\\n");
}
if(SOUND>=dec_TS)
{
UsartPrintf(USART1,"小朋友正在哭泣\\r\\n");
}
if(MQ>=max_LIGHT)
{
UsartPrintf(USART1,"空气质量差\\r\\n");
}
if(temp>=max_wd)
{
UsartPrintf(USART1,"温度异常\\r\\n");
}
if(count>=100)
{
count=0;
UsartPrintf(USART1,"温度:%d\\r\\n",temp);
UsartPrintf(USART1,"湿度:%d\\r\\n",humi);
UsartPrintf(USART1,"空气质量:%d\\r\\n",MQ);
UsartPrintf(USART1,"声音大小:%d\\r\\n",SOUND);
}
}
}
六、资料分享
点击即可查看当前资料分享。
评论前必须登录!
注册