基于STM32的智能倒车雷达-人体感应+语音提示

 本设计的硬件构成:

本设计由STM32单片机核心板+OLED显示屏电路+超声波测距模块+语音播报模块+红外人体感应模块+蜂鸣器电路+蓝牙模块电路+按键电路+电源电路组成。

功能介绍:

1、系统采用STM32单片机作为控制器;采用超声波模块实时检测后方障碍物的距离。采用OLED显示屏幕实时显示障碍物距离,后方是否有人,以及报警距离;

2、人体感应传感器检测后方是否有人;若有人,语音播报后方有人信息。

3、可以按键设置报警距离,当小于设置阈值时,蜂鸣器报警;按键1为设置键,按键2为加一键,按键3为减一键。

4、系统通过无线通信连接手机APP,手机APP实时显示距离信息,并且可以设置距离阈值;

5、APP可发送指令:发送“A”:获取系统状态;发送“+”或“-”:调整倒车距离报警值;

主要物料清单及型号:

显示屏:OLED-0.96寸;

单片机:STM32F103C8T6;

超声波测距模块:HC-SR04;

蜂鸣器:5V有源蜂鸣器;

人体传感器:SR602;

语音播报模块:JQ6500;

蓝牙模块:HC-05/06;

部分程序源码:

int main(void)
{
  u8 key=0;
  u16 datatemp[1];
  BEEP_Init();
  KEY_Init();
  delay_init();         //延时函数初始化    
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  uart_init(9600);   //串口1初始化为115200
  usart3_Init(9600);   //串口3初始化为9600
  LED_Init();           //LED端口初始化
  UltrasonicWave_Configuration();  //初始化超声IO
  TIM3_Cap_Init(1,72-1);  //以1Mhz的频率计数,第一个选项,最小只能是1 
  TIM2_Int_Init(999,7199);//10Khz的计数频率,计数到1000为100ms  
  OLED_Init();
  OLED_ColorTurn(0);//0正常显示,1 反色显示
  OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
  OLED_DisplayInit();
  TL=datatemp[0];
   
  
//  if(TL<5||TL>400)   
//  TL=50;
//  ceju();    //开启超声波测距
  
  while(1)
  {
    key=KEY_Scan(0);   //按键扫描
    KEY_Handle(key);   //处理按键动作
    APP_Handle(revData);   //APP指令处理
    revData=0;
    
    if(HR602==1)     //判断是否有人
    {
      LEDP=0;
      LEDS=0;
      people_flag=10;   
    }
    else
    {
      LEDP=1;
    }
    
    if(T_100ms>=10)    //1s周期处理数据
    {
      T_100ms=0;
      
      if(refresh==1)
        APP_refresh();    //刷新APP数据
      
      if(S<=TL)     //小于阈值,蜂鸣器开始响,对应指示灯亮,否则蜂鸣器不响
      {
        BEEP=~BEEP;
      }
      else
      {
        BEEP=1;
      }
      
      if(people_flag>0)    //如果有人存在,开启语音播报
      {
        people_flag--;
        V_100ms++;
        if(V_100ms>=2)
        {
          play_voice();   //开启语音播报
          V_100ms=0;
        }
      }
      else
      {
        LEDS=1;
        V_100ms=0;
      }
    }

    show();   //调用显示函数
    t++;      //变量自加,加到5的时候,对5取余会等于0,则启动一次测距函数
    if(t%5==0)
    {
      t=0;
      ceju();  //开启超声波测距
    }
  }
 }

资料

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F407IGT6单片机 HC-SR501人体红外感应模块(串口屏显示)KEIL软件工程源码, int main(void) { uint8_t state; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); HMI_USARTx_Init(); /* 初始化LED */ LED_GPIO_Init(); HC_SR501_GPIO_Init(); /* 无限循环 */ while (1) { state=HC_SR501_StateRead(); switch(state) { case HC_SR501_LOW: HMI_string_setting("page1.t1.txt=\"无人\""); break; case HC_SR501_HIGH: HMI_string_setting("page1.t1.txt=\"有人\""); break; } } } /** * 函数功能: 向串口屏发送数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_value_setting(const char *val_str,uint32_t value) { uint8_t tmp_str[30]={0}; uint8_t i; sprintf((char *)tmp_str,"%s=%d",val_str,value); for(i=0;i<strlen((char *)tmp_str);++i) { HMI_USARTx->DR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } /** * 函数功能: 向串口屏发送浮点数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_string_setting(const char *val_str) { uint8_t tmp_str[50]={0}; uint8_t i; sprintf((char *)tmp_str,val_str); for(i=0;i<strlen((char *)tmp_str);++i) { HMI_USARTx->DR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值