1 系统功能介绍

本设计为 基于STM32单片机的超声波跟随婴儿车,旨在为婴儿提供一个更加安全、智能与舒适的出行和休息环境。与传统的超声波跟随小车不同,本系统采用 超声波发射与接收结合的方式,通过跟随手中持有的超声波发射端实现更加灵敏、精准的跟随效果。此外,系统集成了 婴儿体温环境监测、尿不湿检测、啼哭检测、光照自动调节 等功能,实现了婴儿车的多维度智能化。

系统主要功能如下:

  1. 智能跟随:通过手持超声波发射模块与小车上的超声波接收模块结合,小车能够实时感知位置并跟随前行,灵敏度与灵活性优于传统的超声波避障或固定跟随方式。
  2. 环境温度控制:实时检测婴儿周围温度,当温度过低时,开启加热模块;当温度过高时,启动风扇降温;当温度超出设定阈值范围时,系统会报警提醒家长。
  3. 尿不湿检测:通过湿度传感器检测婴儿尿不湿是否湿透,若湿透则立即报警,提醒家长及时更换。
  4. 啼哭检测:利用声音传感器监测婴儿是否啼哭,若检测到哭声,则自动播放“小星星”音乐安抚婴儿。
  5. 光照控制:检测外部光照强度,若阳光过强则通过舵机控制窗帘自动关闭,若光线较弱则窗帘自动打开,保证婴儿车内环境舒适。

该系统融合了 传感器采集、信号处理、PWM控制、电机驱动、语音与音乐播放 等多种技术,充分展示了STM32在嵌入式应用中的强大能力。


2 系统电路设计

2.1 STM32最小系统电路

  • 核心芯片:STM32F103C8T6

  • 功能:作为整个系统的主控,负责各类传感器的数据采集与处理,并根据逻辑进行电机、舵机、风扇、报警模块、音乐播放等控制。

  • 基本组成

    • 时钟电路:使用8MHz外部晶振配合内部倍频,保证系统运行稳定;
    • 复位电路:上电或异常时复位,保证系统可靠启动;
    • 电源电路:提供稳定3.3V电压。

2.2 超声波跟随模块

  • 组成:手持超声波发射模块 + 车载超声波接收模块(HC-SR04改造)。
  • 原理:手持端周期性发送超声波,车载端检测回波信号,根据接收强度与时间差计算与目标的相对位置,从而控制小车电机进行跟随。
  • 特点:相较于传统超声波避障模式,此方式通过识别特定发射源,提高了灵敏度与跟随稳定性。

2.3 温度检测与控制电路

  • 传感器:DS18B20 数字温度传感器。

  • 功能:实时采集婴儿车内温度数据,并传输至STM32进行处理。

  • 执行部分

    • 加热模块:由MOSFET控制的小型加热片;
    • 降温模块:由MOSFET控制的直流风扇;
    • 报警模块:温度超过阈值时蜂鸣器报警。

2.4 尿不湿检测电路

  • 传感器:电阻式湿度传感器或导电布条。
  • 原理:当尿不湿湿透时,电阻值显著下降,通过检测电压变化传输给STM32,判断婴儿是否尿湿。
  • 输出:湿透报警提示。

2.5 啼哭检测电路

  • 传感器:声音传感器(带放大滤波电路)。
  • 功能:当环境音量超过设定阈值(检测到啼哭声),STM32触发音乐播放模块,自动播放“小星星”歌曲。
  • 音乐播放:使用PWM定时器实现方波输出驱动蜂鸣器,产生旋律。

2.6 光照检测与舵机控制电路

  • 传感器:光敏电阻模块。
  • 功能:根据光照强度判断环境是否过亮或过暗;
  • 执行模块:舵机控制窗帘开合,使用STM32输出PWM信号控制舵机角度。

2.7 电机驱动电路

  • 驱动模块:L298N 或 TB6612 电机驱动模块。
  • 功能:根据STM32的控制信号驱动小车前进、后退、转向。
  • 控制方式:PWM控制电机速度,逻辑信号控制方向。

3 程序设计

系统程序采用 STM32 HAL 库 开发,分为 超声波跟随程序、温度控制程序、尿不湿检测程序、啼哭检测程序、光照检测与舵机控制程序、电机控制程序 等模块。


3.1 超声波跟随程序

#include "stm32f10x.h"

void HCSR04_Start(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
    HAL_Delay(1);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
}

uint32_t HCSR04_Read(void)
{
    uint32_t time = 0;
    while(!HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1));
    while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1))
    {
        time++;
    }
    return time;
}

该程序通过超声波模块测量手持发射端的相对距离,并据此控制小车运动。


3.2 电机控制程序

void Motor_Control(int speed_left, int speed_right)
{
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, speed_left);
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, speed_right);
}

程序通过PWM调节电机速度,实现小车前进、后退和转向。


3.3 温度检测与控制程序

float Temperature_Read(void)
{
    // 读取DS18B20温度值
    float temp = DS18B20_Get_Temp();
    return temp;
}

void Temperature_Control(float temp)
{
    if(temp < 20)
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // 开启加热
    else
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);

    if(temp > 30)
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);  // 开启风扇
    else
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

    if(temp < 15 || temp > 35)
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);  // 报警
    else
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}

3.4 尿不湿检测程序

void Diaper_Check(void)
{
    int value = HAL_ADC_GetValue(&hadc1);
    if(value < 1000)
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);  // 报警
    else
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
}

当湿度值低于设定阈值时,表示尿不湿被浸湿,触发报警。


3.5 啼哭检测与音乐播放程序

int Cry_Check(void)
{
    int sound = HAL_ADC_GetValue(&hadc2);
    if(sound > 2000)
        return 1;
    return 0;
}

void Play_Music(void)
{
    int i;
    int tune[] = {262,294,330,349,392,440,494,523}; // 小星星音符
    for(i=0;i<8;i++)
    {
        __HAL_TIM_SET_AUTORELOAD(&htim3, 72000000/tune[i]);
        HAL_Delay(500);
    }
}

3.6 光照检测与舵机控制程序

void Curtain_Control(void)
{
    int light = HAL_ADC_GetValue(&hadc3);
    if(light > 3000)
        __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, 75); // 关闭窗帘
    else if(light < 1000)
        __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, 25); // 打开窗帘
}

3.7 主程序

int main(void)
{
    HAL_Init();
    SystemClock_Config();

    while(1)
    {
        // 超声波跟随
        uint32_t distance = HCSR04_Read();
        if(distance > 20 && distance < 100)
            Motor_Control(500,500);
        else
            Motor_Control(0,0);

        // 温度控制
        float temp = Temperature_Read();
        Temperature_Control(temp);

        // 尿不湿检测
        Diaper_Check();

        // 啼哭检测
        if(Cry_Check())
            Play_Music();

        // 光照检测与窗帘控制
        Curtain_Control();
    }
}

4 总结

本文设计了一种 基于STM32单片机的超声波跟随婴儿车,系统不仅能够实现灵敏稳定的 超声波跟随,还集成了 温度监测与自动控制、尿不湿检测、啼哭检测与音乐播放、光照控制与舵机窗帘调节 等功能。

该系统具备以下优点:

  1. 灵敏跟随:与传统方案相比,采用手持发射源的跟随方式更加智能。
  2. 安全舒适:自动化温度控制、尿不湿报警、啼哭检测保障婴儿安全与舒适。
  3. 智能调节:光照强度自适应调节窗帘,创造良好环境。
  4. 多功能一体化:集成传感器、电机驱动、音乐播放等技术,展示了嵌入式系统综合应用能力。

本设计不仅在家庭中有较强的应用价值,也可以作为嵌入式系统学习与科研的综合实践案例。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐