【单片机毕业设计】【mcuclub-dz-040】盲人拐杖【实物设计】

最近设计了一个项目基于单片机的盲人拐杖控制系统,与大家分享一下:
一、基本介绍
项目名:基于单片机的盲人拐杖控制系统设计

项目编号:mcuclub-dz-040

单片机类型:STM32F103C8T6

具体功能:

设计内容展示:

一、32实物图
单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

二、原理图
软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

三、PCB图
由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,
隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。

四、系统框图

本设计以单片机为核心控制器,加上其他模块一起组成此次设计盲人拐杖的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是GPS检测模块,通过该模块获取当前的定位;第二部分是超声波模块,通过该模块获取障碍物到拐杖的距离;第三部分是按键模块,通过该模块可以控制照明灯的开关;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是报警模块,当检测到距离小于障碍物最小值时进行报警提醒;第二部分是照明模块,检测到照明模块按键按下,控制照明灯打开;第三部分是GSM模块,检测到按键按下两次,将当前位置信息发送到用户的手机上。具体系统框图如图3.1所示。

五、软件设计流程

六、部分程序展示
软件版本:keil5
逻辑程序和驱动程序分开,分布于main.c和其他.c文件

 

/****
*******按键函数
*****/
void Key_function(void)
{
    key_num = Chiclet_Keyboard_Scan(0);        //按键扫描
    if(key_num ==1)                                            //有按键按下
    {
        LED = ~LED;
    }
    else if(key_num == 2)
    {
        sprintf(send_buf,"N:%f  E:%f",N_num_new,E_num_new);
        Sim900a_Send_English("15295492643", send_buf);
    }
}

/****
*******监测函数
*****/
void Monitor_function(void)
{
    if(time_num % 2 == 0)                                                                    //获取数据
    {
        distance_value = Hcsr04_GetDistance(25);                        //获取距离值
        
    }
    
    if(USART2_WaitRecive() == 0)                                                //通过GPS获取经纬度
    {
        if(strstr((char *)usart2_buf,"GNRMC"))
        {
            result = strstr((char *)usart2_buf,"A,");
            if(result != NULL)
            {
                result = result+2;
                N_num = (float)atof(result);
                N_du = (uint16_t)(N_num / 100.0);
                N_fen = N_num-N_du*100;
                N_num = N_du + N_fen/60.0;
                if(0 < N_num && N_num < 60)
                    N_num_new = N_num;
            }
            
            result = strstr((char *)usart2_buf,"N,");
            if(result != NULL)
            {
                result = result+2;
                E_num = (float)atof(result);
                E_du = (uint16_t)(E_num / 100.0);
                E_fen = E_num-E_du*100;
                E_num = E_du + E_fen/60.0;
                if(70 < E_num && E_num < 150)
                    E_num_new = E_num;
            }
        }
        
        USART2_Clear();
    }
}
/****
*******处理函数
*****/
void Manage_function(void)
{
    if(distance_value < 10)
    {
        
        if(time_num % 10 == 0)
        {
            BEEP = ~BEEP;
        }    
    }
    else
    {
        BEEP = 0;
    }
}

http://资料点击该链接到官网下载:www.mcubee.comicon-default.png?t=N7T8http://资料点击该链接到官网下载:www.mcubee.com 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业季站主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值