news 2026/7/14 11:08:16

STM32项目分享:智能婴儿床

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32项目分享:智能婴儿床

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

PCB图

五、程序设计

六、实验效果 ​

七、包含内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1odyABmEeT/?spm_id_from=333.1387.homepage.video_card.click&vd_source=199aed5297a00e80e1faf7e270afe8d7

(资料分享见文末)

二、项目简介

1.功能详解

基于STM32的智能婴儿床

功能如下:

  1. 环境采集:采集环境温湿度、声音、水滴、撞击震动情况
  2. 模式切换:可通过按键切换自动模式和手动模式
  3. 自动模式:自动模式下温度超过温度上限开启风扇降温,温度小于温度下限开启加热片加热,湿度超过湿度阈值时开启风扇除湿;如果声音传感器检测到婴儿啼哭则自动播放音乐并摇床;如果雨滴传感器检测到婴儿尿床,则通过蓝牙发送信息;如果检测到婴儿撞击到床上,则通过蓝牙发送信息并且开启蜂鸣器报警。
  4. 手动模式:手动模式下可通过按键控制加热片、风扇、摇床、音乐播放
  5. 阈值调节:可设置温度上限、温度下限、湿度阈值、声音阈值
  6. 蓝牙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_voice=0,count_strike=0,count_music=0; 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; } } }

六、实验效果

七、包含内容

项目分享

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 17:16:52

FingerJetFXOSE完全解析:免费开源的指纹特征提取技术实现

FingerJetFXOSE完全解析:免费开源的指纹特征提取技术实现 【免费下载链接】FingerJetFXOSE Fingerprint Feature Extractor; the initial contribution by DigitalPersona is MINEX Compliant (SDK 3F). 项目地址: https://gitcode.com/gh_mirrors/fi/FingerJetFX…

作者头像 李华
网站建设 2026/7/14 14:53:55

基于fluent的SLM过程模拟:包含案例、热源UDF及粉末导入

基于fluent的slm过程模拟,包含案例,热源udf,粉末的导入都有涉及。在增材制造领域,选择性激光熔化(SLM)技术因其高精度和复杂形状的制造能力而备受关注。今天,我们就来聊聊如何基于Fluent进行SLM…

作者头像 李华
网站建设 2026/7/14 21:10:30

Xshell:跨平台远程管理的终端利器

目录 一、技术架构 1.1 多协议引擎 1.2 跨平台支持 二、功能特性 2.1 多会话管理 2.2 自动化与脚本支持 2.3 文件传输集成 三、应用场景 3.1 开发测试环境 3.2 混合云管理 3.3 嵌入式系统调试 四、安全体系 4.1 传输加密 4.2 审计与合规 4.3 安全更新机制 五、版本演进 5.…

作者头像 李华
网站建设 2026/7/12 14:16:49

Golang Word文档自动化终极指南:5大实战场景深度解析

Golang Word文档自动化终极指南:5大实战场景深度解析 【免费下载链接】docx Simple Google Go (Golang) library for replacing text in Microsoft Word (.docx) file 项目地址: https://gitcode.com/gh_mirrors/docx/docx 在日常开发工作中,处理…

作者头像 李华
网站建设 2026/7/13 9:51:04

物流仓储Agent效率突飞猛进:基于强化学习的动态分拣策略全披露

第一章:物流仓储 Agent 的分拣效率 在现代物流系统中,仓储 Agent 作为自动化分拣的核心组件,其效率直接影响整体运营表现。通过智能调度与路径优化,Agent 能够在复杂仓库环境中快速定位货品并完成搬运任务,显著降低人工…

作者头像 李华