打印
[CW32F030系列]

【CW32F030CxTx StartKit开发板】2智能导盲手杖

[复制链接]
103|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yangjiaxu 于 2024-6-30 08:50 编辑
#申请原创# @21小跑堂 @21ic小管家
上一篇介绍了关于【CW32F030CxTx StartKit开发板】开发环境搭建与单总线调试 感觉CW32的开发还是比较容易的,今天我想利用CW32F030CxTx StartKit开发板来设计一款简易的智能导盲手杖,其实做这个的初衷也是想利用单片机技术,传感器技术和无线通信技术来帮助这些盲人可以稍微方便的走进社会,在生活方面提升一些便利。
本智能避障导盲手杖可以通过HC-SR04超声波测距模块实现前方的障碍物识别,通过识别出障碍物之后,可以反馈给单片机进行数据处理,处理结果之后单片机通过控制语音播放模块实现对使用者进行语音提示,让其可以有效的躲避前方障碍物。通过通信模组与单片机通信,实现可以手动触发GPS/北斗的定位功能,将使用者的行踪通过短信的方式传送给前期设定好的紧急联系人的手机之上,随时可以让联系人知道自己身在何处。可以很方便快捷的找到自己。
本系统主要是基于CW32F030CxTx StartKit开发板的智能避障导盲手杖的设计与实现,下位机代码是通过C语言的方式编程实现。总体由单片机控制系统、传感器节点、人机交互和通信节点等结构组成。主要功能是通过CW32单片机来获取传感器采集到的环境数据,使用HC-SR04超声波测距模块实现对前方的障碍物进行检测;同时还具有语音播放模组进行语音播放,可以有效的方便盲人快速做出应对反应。采用通信模组进行远程通知。图1是智能导盲手杖的系统结构框图。图2是硬件电路组成。
图1智能导盲手杖系统结构框图
图2智能导盲手杖电路
接下来是代码组成,具体逻辑是开机进行所需外设的初始化,初始化完成之后播放欢迎语,表示开机成功,接下来主函数主要是两部分组成,一部分是传感器,如果超声波测距传感器检测到距离小于10cm,则进行语音提示“前方有障碍,请注意”另一部分是进行无线通讯,这里无线通讯采用的GSM+北斗定位模块实现(由于买了这个模块还没到,所以先写个模拟程序)具体逻辑是利用北斗定位模块进行当前位置获取,获取之后利用GSM实现将定位坐标用短信的方式发送给设定好的手机号码,这也是上文说到的紧急联系人,这样就可以快速找到使用智能导盲手杖的亲人,十分方便。以下是程序代码实现。
#include "main.h"

#include "Uart.h"

#include "BTIM.h"

#include "delay.h"

#include "HC_SR04.h"

#include "Vioce.h"

#include "Key.h"

intmain()

{

BTIM_Init(); //基本定时器记录回波信号脉宽持续时间

HC_GPIO_Init();//Trig、Echo引脚初始化

Key_GPIO_Init();//按键初始化

UART3_Init(); //串口3初始化

OnelineInit();//初始化语音播放引脚

Oneline_Send_One_Data(0x01);//播放欢迎语

while(1)

{

if(Measure_Distance() <= 100)//小于十厘米

{

if(ReadVioceBusy() == 1)

{

Oneline_Send_One_Data(0x02);//播放报警音频

}

Delay_ms(300);//控制测距周期

}

if(Read_K1 == 0)

{

Delay_ms(10);

if(Read_K1 == 0)

{

printf("AT+CSCS=\"GSM\"\r\n");

Delay_s(1);

printf("AT+CMGF=1\r\n");

Delay_s(1);

printf("AT+CSCA?\r\n");

Delay_s(1);

printf("AT+CSMP=17,167,0,241\r\n");

Delay_s(1);

printf("AT+CMGS=\"188********\"\r\n");//此处修改为对方的电话号

Delay_s(1);

printf("116.310312,39.992877\r\n");

printf("0x1a");

Delay_s(1);

}

}

}

}

void BTIM1_IRQHandler(void) //基本定时器1中断服务函数

{

if(BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV))

{

BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV); //清除标志位

time++;

}

}

【CW32实现简单的智能导盲手杖的简单功能】 https://www.bilibili.com/video/B ... 68bcfb2b9904edd3b32
总的来说,使用CW32还是比较方便的,代码例程比较多,开发起来毫无压力,并且这个芯片的性能和资源来说,完全适合做一些类似于智能导盲手杖这种传感器+MCU+无线通信的物联网方面的产品,其实本设计还有很大的优化空间,比如智能导盲手杖大致是基于电池供电的,因此需要做到低功耗方面的考虑,同时,超声波测距离虽然准确但是距离受限制,因此后续传感器可以采用雷达或者红外避障传感器,这样的话会好一些,同时可以加入六轴姿态传感器,可以监测用户是否摔倒这种情况,可以多一分关爱保障。最后,感谢芯源与21ic联合举办的这次测评活动,感觉十分受益,而且在开发期间遇到的问题,在芯源的生态技术群中得到了非常好的技术支持,在这里感谢各位~

智能导盲手杖的应用源码.rar

945.27 KB

使用特权

评论回复
沙发
caigang13| | 2024-7-1 08:31 | 只看该作者
如果能与地图接口获取各个路口的红绿灯状态和时间是不是更好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:擅长电路设计、物联网产品开发、射频产品开发,喜欢打篮球,技术交流,欢迎各位来聊~

534

主题

2225

帖子

5

粉丝