2025/12/28 22:58:58
网站建设
项目流程
中国建设工程安全协会网站,wordpress区块链插件,丰台建设公司网站,如何建设专题网站目录 一、前言 二、项目简介
1.功能详解
2.主要器件
三、原理图设计
四、PCB硬件设计
PCB图
五、程序设计
六、实验效果 七、包含内容 项目分享 一、前言
项目成品图片#xff1a; 哔哩哔哩视频链接#xff1a;
https://www.bilibili.com/video/BV1odyABmEeT/?…目录一、前言二、项目简介1.功能详解2.主要器件三、原理图设计四、PCB硬件设计PCB图五、程序设计六、实验效果 七、包含内容项目分享一、前言项目成品图片哔哩哔哩视频链接https://www.bilibili.com/video/BV1odyABmEeT/?spm_id_from333.1387.homepage.video_card.clickvd_source199aed5297a00e80e1faf7e270afe8d7资料分享见文末二、项目简介1.功能详解基于STM32的智能婴儿床功能如下环境采集采集环境温湿度、声音、水滴、撞击震动情况模式切换可通过按键切换自动模式和手动模式自动模式自动模式下温度超过温度上限开启风扇降温温度小于温度下限开启加热片加热湿度超过湿度阈值时开启风扇除湿如果声音传感器检测到婴儿啼哭则自动播放音乐并摇床如果雨滴传感器检测到婴儿尿床则通过蓝牙发送信息如果检测到婴儿撞击到床上则通过蓝牙发送信息并且开启蜂鸣器报警。手动模式手动模式下可通过按键控制加热片、风扇、摇床、音乐播放阈值调节可设置温度上限、温度下限、湿度阈值、声音阈值蓝牙APP通过蓝牙APP可以接收所有环境信息可控制指令下发2.主要器件STM32F103C8T6最小系统板OLED显示屏4针IIC协议声音传感器DHT11温湿度传感器震动传感器雨滴传感器JR6001语音模块BT04A蓝牙模块扬声器大功率LED灯模块有源蜂鸣器步进电机PTC加热片风扇模块继电器三、原理图设计四、PCB硬件设计PCB图五、程序设计#include stm32f10x.h #include led.h #include beep.h #include usart.h #include usart2.h #include delay.h #include jdq.h #include oled.h #include key.h #include Modules.h #include TIM2.h #include TIM3.h #include adcx.h #include flash.h #include fan.h #include bump.h #include stepmotor.h /****************异方辰电子工作室******************* STM32 *项目 : STM32智能婴儿床 *版本 : V1.0 *MCU : TM32F103C8T6 *接口 : 见代码 *BILIBILI : 异方辰电子 *小红书 : 异方辰电子 *CSDN : 异方辰电子 *授权IP : 辰哥单片机设计、异方辰、YFC电子、北海单片机设计 **********************BEGIN***********************/ #define KEY_Long1 11 #define KEY_1 1 #define KEY_2 2 #define KEY_3 3 #define KEY_4 4 #define FLASH_START_ADDR 0x0801f000 //写入的起始地址 //传感器变量声明 uint16_t time_num 0; //10ms计时 uint16_t count_voice0,count_strike0,count_music0; SensorModules sensorData; //声明传感器数据结构体变量 SensorThresholdValue Sensorthreshold; //声明传感器阈值结构体变量 DriveModules driveData; //声明驱动器状态结构体变量 static uint8_t app_cmd 0; // 0 无指令 3 开 4 关 uint8_t mode 0; //系统模式 1自动 2手动 3设置 //系统静态变量 static uint8_t count_a 1; //自动模式按键数 uint8_t count_m 1; //手动模式按键数 static uint8_t count_s 1; //设置模式按键数 extern uint8_t usart2_buf[256]; //串口2接收数组 char display_buf[16]; //显示数组 int main(void) { SystemInit();//配置系统时钟为72M delay_init(72); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置中断优先分组 //传感器初始化 SHAKE_Init(); MAC_Init(); DHT11_Init(); RAIN_Init(); //执行器初始化 FAN_Init();//风扇初始化 BEEP_Init();//蜂鸣器初始化 JDQ_Init();//加热片初始化 MOTOR_Init(); Key_Init();//按键初始化 OLED_Init();//OLED初始化 USART1_Config();//串口1初始化 USART2_Config();//串口2初始化 USART3_Config();//串口3初始化 TIM2_Init(72-1,1000-1); FLASH_ReadThreshold();//阈值读取函数 //// TIM3_Int_Init(1000-1,72-1); //定时1ms中断 OLED_Clear();//清屏 while (1) { SensorScan(); //获取传感器数据 time_num; //计时变量1 if(time_num 5000) { time_num 0; } Bluetooth_Control();//蓝牙控制函数 switch(mode) { case AUTO_MODE://默认自动模式 OLED_autoPage1(); //显示主页面1固定信息 SensorDataDisplay1(); //显示传感器1数据 AutoControl();//自动模式控制函数 /*按键1按下时切换模式*/ if (KeyNum KEY_1) //系统模式mode 1自动 2手动 3设置 { KeyNum 0; mode MANUAL_MODE;//进入手动模式 count_m 1;//手动模式下按键2的次数置一 OLED_Clear(); } if (KeyNum KEY_Long1) { KeyNum 0; mode SETTINGS_MODE;//进入阈值设置模式 count_s 1;//阈值设置模式下按键2按下的次数置一 OLED_Clear(); } Control_Manager();//执行器执行函数 break; case MANUAL_MODE://手动模式下 OLED_manualOption(SetManual());//手动模式光标显示函数 ManualControl(SetManual());//手动模式控制函数 OLED_manualPage1();//手动模式界面1显示 ManualSettingsDisplay1();//手动模式界面1的开关显示 if (KeyNum KEY_1) //系统模式mode 0手动 1自动默认 { KeyNum 0; mode AUTO_MODE;//进入自动模式 count_a 1;//自动模式下按键2按下的次数置一 OLED_Clear(); } Control_Manager();//执行器执行函数 break; case SETTINGS_MODE://阈值设置函数 OLED_settingsOption(SetSelection()); //实现阈值设置页面的选择功能 ThresholdSettings(SetSelection()); //实现阈值调节功能 OLED_settingsPage1(); //显示阈值设置界面1固定信息 SettingsThresholdDisplay1(); //显示传感器阈值1数据 //判断是否退出阈值设置界面 if (KeyNum KEY_1) { KeyNum 0; mode AUTO_MODE; //进入自动模式 count_a 1;//自动模式下按键2按下的次数置一 OLED_Clear(); //清屏 //存储修改的传感器阈值至flash内 FLASH_W(FLASH_START_ADDR, Sensorthreshold.tempValue_H,Sensorthreshold.tempValue_L, Sensorthreshold.humiValue); } break; default: break; } } }六、实验效果七、包含内容项目分享