1 系统功能介绍

本系统是一个基于 STM32F103C8T6 单片机 的语音控制智能停车场设计。其主要特点是将 红外对管车位检测、OLED 屏幕显示、继电器车位控制、语音识别指令 等功能结合在一起,形成一个小型智能化停车场管理与控制系统。

在传统的停车场中,车位的占用情况往往需要通过人工巡查或摄像头识别,系统复杂且成本较高。而本设计通过 红外对管检测模块 来判断车位是否被占用,并实时将状态显示在 OLED 屏幕 上。同时,用户可以通过 语音识别模块 下达指令,例如“打开 1 号车位”或“关闭 2 号车位”,单片机解析语音信号后通过继电器执行开关操作,模拟车位闸机的开启与关闭。

系统的主要功能包括:

  1. 车位占用检测:利用红外对管实时检测车位状态,支持 3 个车位的管理;
  2. 信息显示:OLED 实时显示车位状态、已占用车位数、剩余空车位数;
  3. 语音控制:通过语音识别模块识别用户指令,控制相应车位开关;
  4. 继电器模拟车位开关:通过继电器驱动车位栏杆,实现车位开闭控制。

该设计简化了停车场管理逻辑,适合中小型停车区域使用,也为进一步的智能化停车场系统提供了基础。


2 系统电路设计

2.1 STM32F103C8T6 最小系统

核心控制器为 STM32F103C8T6,其内部搭载 ARM Cortex-M3 内核,主频 72MHz,Flash 64KB,RAM 20KB,拥有丰富的 GPIO、串口、I2C、ADC 接口。

  • 复位电路:采用上电自动复位和手动复位按钮;
  • 晶振电路:外部 8MHz 晶振,内部倍频到 72MHz,确保系统运行稳定;
  • 电源电路:系统由 5V 电源供电,经 AMS1117 稳压至 3.3V,为单片机及其他外设供电。

2.2 车位检测电路(红外对管模块)

红外对管由发射管和接收管组成,发射端持续发射红外光,当有车辆停入时,光路被遮挡,接收管无法接收红外信号,从而输出电平变化。

  • 输出信号:通常为数字电平,高电平表示车位空闲,低电平表示车位被占用;
  • 接口方式:每个车位的红外对管输出接入 STM32 的 GPIO 输入端口;
  • 应用逻辑:系统通过检测 3 个 GPIO 状态判断 1、2、3 号车位的占用情况。

2.3 OLED 显示电路

采用 0.96 英寸 OLED 显示屏,分辨率 128x64,通信接口为 I2C。

  • 显示内容

    1. 每个车位的状态(占用/空闲);
    2. 总车位数;
    3. 已占用车位数;
    4. 空闲车位数。
  • 作用:方便管理员与用户实时查看停车情况。


2.4 继电器控制电路

继电器在系统中模拟车位栏杆的开关:

  • 输入:由 STM32 GPIO 提供高低电平控制信号;
  • 驱动电路:采用三极管放大电路驱动继电器;
  • 功能:当语音指令要求开启某个车位时,对应继电器闭合,相当于打开车位闸机;当语音指令要求关闭时,继电器断开,车位关闭。

2.5 语音识别电路

语音识别模块负责将用户的语音指令转换为串口数据传输给 STM32。

  • 常用模块:LD3320、Elechouse 语音识别模块等;

  • 通信接口:通过 UART 串口与 STM32 通信,波特率 9600bps;

  • 识别内容

    • “打开 1 号车位” → 控制继电器 1 动作;
    • “关闭 2 号车位” → 控制继电器 2 动作;
    • “打开 3 号车位” → 控制继电器 3 动作。
  • 应用逻辑:STM32 接收字符串并进行解析,根据关键字执行车位控制。


3 程序设计

3.1 主程序框架

系统运行流程:
初始化 → 检测车位状态 → 更新 OLED 显示 → 接收语音指令 → 控制继电器动作。

#include "stm32f10x.h"
#include "oled.h"
#include "usart.h"
#include "delay.h"
#include "relay.h"

uint8_t carStatus[3] = {0};  // 0表示空闲,1表示占用
uint8_t usedCount = 0;
uint8_t freeCount = 3;

int main(void)
{
    SystemInit();
    OLED_Init();
    USART1_Init(9600);
    Relay_Init();
    GPIO_Init_All();
    
    OLED_ShowString(0,0,"Smart Parking");
    
    while(1)
    {
        // 检测车位
        carStatus[0] = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
        carStatus[1] = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
        carStatus[2] = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2);

        usedCount = carStatus[0] + carStatus[1] + carStatus[2];
        freeCount = 3 - usedCount;

        OLED_ShowString(0,2,"Used:");
        OLED_ShowNum(40,2,usedCount,1);
        OLED_ShowString(0,4,"Free:");
        OLED_ShowNum(40,4,freeCount,1);

        // 语音指令接收与处理
        USART1_ReceiveCommand();

        delay_ms(200);
    }
}

3.2 OLED 显示程序

void OLED_Update(uint8_t *status)
{
    OLED_ShowString(0,0,"Parking Status:");
    for(int i=0;i<3;i++)
    {
        if(status[i] == 1)
            OLED_ShowString(0,2+i*2,"Car"+i+" Used");
        else
            OLED_ShowString(0,2+i*2,"Car"+i+" Free");
    }
}

说明:该函数实时更新车位状态,分别显示三个车位是否被占用。


3.3 继电器控制程序

void Relay_Control(uint8_t num, uint8_t state)
{
    switch(num)
    {
        case 1:
            if(state) GPIO_SetBits(GPIOB, GPIO_Pin_0);
            else GPIO_ResetBits(GPIOB, GPIO_Pin_0);
            break;
        case 2:
            if(state) GPIO_SetBits(GPIOB, GPIO_Pin_1);
            else GPIO_ResetBits(GPIOB, GPIO_Pin_1);
            break;
        case 3:
            if(state) GPIO_SetBits(GPIOB, GPIO_Pin_2);
            else GPIO_ResetBits(GPIOB, GPIO_Pin_2);
            break;
    }
}

说明:通过控制 GPIO 高低电平,实现继电器的闭合与断开。


3.4 语音识别串口解析程序

void USART1_ReceiveCommand(void)
{
    char buffer[20];
    USART_ReadLine(buffer);

    if(strstr(buffer,"open1")) Relay_Control(1,1);
    if(strstr(buffer,"close1")) Relay_Control(1,0);
    if(strstr(buffer,"open2")) Relay_Control(2,1);
    if(strstr(buffer,"close2")) Relay_Control(2,0);
    if(strstr(buffer,"open3")) Relay_Control(3,1);
    if(strstr(buffer,"close3")) Relay_Control(3,0);
}

说明:语音识别模块识别用户的语音命令后,将对应的文本通过串口发送到单片机。单片机解析字符串,提取关键字,控制相应继电器。


4 总结

本系统基于 STM32F103 单片机,集成了 车位检测、OLED 显示、语音识别控制与继电器驱动 四大功能模块,实现了一个小型智能停车场的雏形。

与传统停车场相比,本系统具有以下优势:

  1. 实时车位检测:红外对管模块能够快速检测车位是否被占用;
  2. 直观信息显示:OLED 屏幕实时显示车位状态和空闲数量,方便使用者查看;
  3. 语音控制交互:用户可通过语音直接控制车位闸机,提高智能化程度;
  4. 系统扩展性强:未来可增加更多车位模块、接入 GSM 短信报警、手机 APP 联动,实现远程停车管理。

该设计在功能完整性和实用性上具有很高的应用价值,同时也为后续研究 智能交通、物联网停车场 提供了良好的实验平台。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐