RISC-V MCU + 盲人智能导航系统

      本系统以CH32V307VCT6为核心控制器,结合超声测距传感器、GPS定位导航模块、图像传感器、红外避障模块、蓝牙模块等,设计一款盲人智能导航系统。针对盲人视力障碍导致的出行不便的问题,设计一个可方便使用的导航设备,能够为盲人提供避障进行相应的提示,并可监视盲人出行,使盲人能够安全、方便的出行。在盲人日常出行中,该系统不仅可以实时将路面平整、障碍物、积水、行人等路况信息、路口红绿灯交通信息等通过语音播报精准传递给盲人。并且可以在盲人发生意外时(如摔倒、走失等),实时将当前图像与位置信息(蓝牙模块)通过短信与电话等方式反馈给家人,并且设有“向行人求助”和“一键报警”功能。另外,系统中的光敏部件增添了夜间照明功能,为盲人自主出行保驾护航。 

具体功能:

(1)利用六轴姿态传感器感知盲人运动状态,实时在屏幕上显示。当盲人静止时,屏幕上显示“State:REST”,当盲人运动时,屏幕上显示“State:WAVE”,

当盲人运动时,屏幕上显示“State:WAVE”,当盲人摔倒时,屏幕上显示“State:HELP”。

(2)系统利用超声波测距模块能够识别红绿灯、高速接近的车辆,行人等障碍,检测超声波测距模块输出高电平的时间来判断障碍物距离盲人的时间,及时提醒盲人,引导盲人出行;另外红外对光传感器能够给对近距离障碍物及时感知,起到紧急避障作用。

(3)系统利用CH9141蓝牙模块,能够将盲人遇到的困难通过短信发给盲人家属。当盲人遇到紧急危险时,按下按键Wake_up可以发送“I have a problem,I need help.”短信到亲人手机,保护盲人安全。

实物整体结构图如图1所示,该导航系统以CH32V307VCT6为控制核心。系统由以下模块,组成:主控制器;超声波探测模块实现障碍物的探测;红外对光传感器实现对近距离障碍物的及时探测报警;蜂鸣器实现避障的语音提示功能;DVP摄像头模块识别路况;CH9141蓝牙模块实现“一键报警”功能;六轴姿态传感器实现防摔检测;光敏电阻模块实现夜间照明;电源模块。

        

                                    图1实物整体结构图

代码开源:https://github.com/rainbow929/mangren.git

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是CH32V307VCT6超声波测距的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "ch32v307.h" // 包含CH32V307VCT6芯片的头文件 // 定义超声波测距使用的引脚 #define TRIG_PIN 5 #define ECHO_PIN 6 // 定义超声波测距使用的时钟频率和声速 #define CLOCK_FREQUENCY 12000000 // 单位:Hz #define SPEED_OF_SOUND 340 // 单位:m/s // 定义超声波测距的最大距离和超时时间 #define MAX_DISTANCE 4 // 单位:m #define TIMEOUT (MAX_DISTANCE / ((float)SPEED_OF_SOUND / 2)) // 单位:s int main() { // 初始化引脚 ch32v307_gpio_init(TRIG_PIN, CH32V307_GPIO_OUTPUT); ch32v307_gpio_init(ECHO_PIN, CH32V307_GPIO_INPUT); // 发送超声波 ch32v307_gpio_write(TRIG_PIN, CH32V307_GPIO_LOW); ch32v307_delay_us(2); ch32v307_gpio_write(TRIG_PIN, CH32V307_GPIO_HIGH); ch32v307_delay_us(10); ch32v307_gpio_write(TRIG_PIN, CH32V307_GPIO_LOW); // 等待超声波的回声 int timeout_us = (int)(TIMEOUT * 1000000); int start_time = ch32v307_micros(); while (ch32v307_gpio_read(ECHO_PIN) == CH32V307_GPIO_LOW) { if (ch32v307_micros() - start_time > timeout_us) { return -1; // 超时错误 } } int echo_start_time = ch32v307_micros(); while (ch32v307_gpio_read(ECHO_PIN) == CH32V307_GPIO_HIGH) { if (ch32v307_micros() - start_time > timeout_us) { return -1; // 超时错误 } } int echo_end_time = ch32v307_micros(); // 计算距离 int pulse_duration = echo_end_time - echo_start_time; float distance = ((float)pulse_duration / 2) * ((float)SPEED_OF_SOUND / 1000000); // 输出距离 printf("Distance: %.2f m\n", distance); return 0; } ``` 需要注意的是,上述代码中使用的 `ch32v307.h` 头文件是针对 CH32V307VCT6 芯片的头文件,如果您使用的是其他型号的芯片,可能需要修改头文件中的引脚映射和函数名称等信息。同时,为了保证测距的准确性,还需要确保超声波传感器的工作电压和信号电平等参数正确设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值