基于STM32单片机的盲人拐杖超声波测距GSM短信报警语音播报录音灯光控制
基于STM32单片机的盲人拐杖超声波测距GSM短信报警语音播报录音灯光控制
1 系统功能介绍
本设计的目标是基于STM32单片机实现一款智能盲人拐杖,集成多种功能模块,通过超声波传感器测距、OLED显示、语音播报、蜂鸣器报警、光感照明、温度检测、短信报警与录音播放等功能,为视障人群提供安全、便捷的出行辅助。与传统的盲杖相比,该设计不仅能够提供实时的障碍物距离提示,还能够在危险情况下通过蜂鸣器与短信报警功能提升安全性。同时,录音播放、温度提醒与环境光照检测等功能,也大大增强了系统的实用性与人性化。
主要功能包括:
- 超声波测距与播报:实时检测前方障碍物距离,范围0.2~3米,精度±0.1米。OLED与语音播报同步提示,保证盲人用户第一时间掌握环境信息。
- 蜂鸣器报警:当障碍物距离小于0.5米时自动报警,并伴随语音提示,确保及时避让。
- 光感自动照明:环境光照不足时,自动开启LED灯,提高盲人夜间出行的安全性。
- 语音播报:定时播报障碍物距离,可按键关闭;温度传感器监测体感环境,触发健康提醒。
- 短信报警:紧急情况下,通过GSM模块发送“help me”短信给监护人,实现远程求助。
- 录音播放:支持用户录入语音并保存,通过按键控制进行播放。
- 按键控制:提供三枚功能按键,分别用于语音播报开关、蜂鸣器报警阈值的增减调节。
2 系统电路设计
系统电路主要由STM32最小系统、超声波测距电路、OLED显示电路、蜂鸣器报警电路、光敏电阻电路、温度传感器电路、GSM模块电路、录音模块电路与按键电路组成。
2.1 STM32最小系统电路
STM32F103C8T6作为系统核心,负责各模块数据的采集、逻辑处理与外设控制。其主频72MHz,具备丰富的外设接口,包括USART、I2C、SPI与ADC,能够满足多模块并行工作的需求。最小系统电路包括3.3V稳压电源电路、时钟电路与复位电路,保证核心运行稳定。
2.2 超声波测距电路
系统选用HC-SR04超声波传感器,其工作原理是发射超声波后接收反射波,通过时间差计算障碍物距离。模块通过TRIG和ECHO引脚与STM32连接,TRIG端触发脉冲,ECHO端返回高电平持续时间,STM32通过定时器输入捕获功能计算距离。
2.3 OLED显示电路
选用0.96寸OLED液晶显示屏,分辨率128×64,使用I2C接口与STM32通信。显示内容为“前方距离障碍物xx.xm”,并实时刷新。OLED具有低功耗、高对比度的优势,适合盲杖小型化需求。
2.4 蜂鸣器电路
蜂鸣器采用有源蜂鸣器,由STM32 GPIO控制。当距离小于阈值时GPIO输出高电平驱动蜂鸣器,同时触发语音提示。
2.5 光敏电阻电路
光感模块由光敏电阻与分压电路组成,电压信号接入STM32的ADC通道。光线强度降低时,电压变化显著,单片机检测后驱动LED灯开启。
2.6 温度传感器电路
采用DS18B20温度传感器,通过单总线协议与STM32通信,实时采集温度数据。系统根据设定的温度阈值,进行语音提示,如“温度升高,多喝热水”或“注意防寒保暖”。
2.7 GSM短信报警电路
使用SIM900A GSM模块,支持AT指令控制。STM32通过USART与模块通信,当按下报警按键时,发送AT指令控制模块发送短信“help me”至预设手机号。
2.8 录音模块电路
录音功能采用ISD1820芯片,支持录音与播放功能。STM32通过IO口控制录音与播放按键输入,实现语音存储与播放,提供个性化的语音提示功能。
2.9 按键电路
设计三枚独立按键:
- 语音播报开关键:控制是否启用距离语音提示。
- 蜂鸣器阈值增加键:增加蜂鸣器触发距离。
- 蜂鸣器阈值减少键:减少蜂鸣器触发距离。
所有按键均采用下拉电阻,防止浮空。
3 程序设计
系统软件采用模块化设计,主要包括主程序、超声波测距程序、OLED显示程序、蜂鸣器报警程序、光感控制程序、温度监测程序、GSM短信程序、录音播放程序与按键处理程序。
3.1 主程序设计
主程序负责各模块的初始化与循环调用,确保数据采集与控制逻辑的正常执行。
#include "stm32f10x.h"
#include "usart.h"
#include "oled.h"
#include "ultrasonic.h"
#include "ds18b20.h"
#include "gsm.h"
#include "key.h"
#include "light.h"
#include "buzzer.h"
#include "voice.h"int main(void)
{SystemInit();USART_InitConfig();OLED_Init();Ultrasonic_Init();DS18B20_Init();GSM_Init();Key_Init();Light_Init();Buzzer_Init();Voice_Init();while(1){float distance = Ultrasonic_GetDistance();float temp = DS18B20_ReadTemp();uint8_t lightState = Light_Check();uint8_t keyValue = Key_Scan();OLED_ShowDistance(distance);OLED_ShowTemp(temp);if(distance <= 0.5){Buzzer_On();Voice_Play("距离过近,注意避让!");}else{Buzzer_Off();}if(lightState == 0)Light_On();elseLight_Off();if(temp > 30)Voice_Play("温度升高,多喝热水");else if(temp < 10)Voice_Play("温度降低,注意防寒保暖");if(keyValue == KEY_ALARM)GSM_SendMessage("help me");Delay_ms(100);}
}
3.2 超声波测距程序
float Ultrasonic_GetDistance(void)
{uint32_t time;float distance;TRIG_High();Delay_us(20);TRIG_Low();while(!ECHO_Read());time = 0;while(ECHO_Read()){time++;Delay_us(1);}distance = (time * 0.0343) / 2;return distance;
}
3.3 OLED显示程序
void OLED_ShowDistance(float dis)
{char buf[20];sprintf(buf, "距离: %.2fm", dis);OLED_ShowString(0, 0, buf);
}
3.4 蜂鸣器报警程序
void Buzzer_On(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_5);
}
void Buzzer_Off(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_5);
}
3.5 光感控制程序
uint8_t Light_Check(void)
{uint16_t adcValue = ADC_GetConversionValue(ADC1);return (adcValue > 2000) ? 1 : 0; // 1表示光亮,0表示黑暗
}
3.6 温度传感器程序
float DS18B20_ReadTemp(void)
{int temp = DS18B20_GetData();return (float)temp / 16.0;
}
3.7 GSM短信程序
void GSM_SendMessage(char *msg)
{USART_SendString("AT+CMGF=1\r\n"); Delay_ms(1000);USART_SendString("AT+CMGS=\"+8613812345678\"\r\n");Delay_ms(1000);USART_SendString(msg);USART_SendData(0x1A); // 发送结束符
}
3.8 录音播放程序
void Voice_Play(char *msg)
{// 此处为模拟语音播放接口,实际通过ISD1820实现录音与播放USART_SendString("Voice:");USART_SendString(msg);
}
3.9 按键程序
uint8_t Key_Scan(void)
{if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) return KEY_VOICE;if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 0) return KEY_ADD;if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 0) return KEY_SUB;if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == 0) return KEY_ALARM;return 0;
}
4 总结
本设计基于STM32单片机实现了盲人智能拐杖,集成超声波测距、OLED显示、蜂鸣器报警、光感照明、语音播报、温度监测、短信报警与录音播放等功能。系统的硬件电路设计紧凑,软件结构模块化,能够有效提升盲人出行的安全性与便利性。通过该系统,用户不仅能够实时感知周围环境,还能在危险情况下向监护人求助,真正实现了技术的人文关怀与实用性结合。