Funpack第六期_max32660+MPU6050+OLED计步手表原型
使用max32660评估版驱动mpu6050加速度计通过判断上下晃动来实现计步功能,并用oled显示时间及运动时间和迈步次数.
标签
Funpack
MAX32660
陈团团
更新2021-03-31
913

Funpack第六期说明文档

  我是来自安徽师范大学18级通信工程的一名学生,,这次是第二次参加funpack的活动,很高兴也很荣幸能够参加funpack的这次活动.

  那么本期活动的任务是实现一个智能手表的简单原型,包括:

  1. 能显示基本的时间;
  2. 配合任意形式的一个显示屏及一种或多种传感器或其他器件,实现一个智能手表的相关功能,比如:针对运动的计步器、针对健康的血压监测和跌倒报警等等

本期开发板MAX32660评估系统提供结构紧凑的开发平台,在微小、易于使用的电路板实现对MAX32660全部特性的访问。主板上已安装基于MAX32625PICO的调试适配器;完成编程后,可将其直接拆卸。调试模块支持可选的10引脚Arm® Cortex®调试连接器,用于实现DAPLink功能。组合尺寸为0.65in x 2.2in,而主板独立尺寸为0.65in x 0.95in。外部连接采用双排连接头,兼容过孔和SMT应用。该电路板以非常小的空间提供强大的处理子系统,很容易集成到各种应用中。FkSOH9ySHDecc1cKAVekuzgqSWWP

活动中我所使用的传感器是mpu6050传感器,它对陀螺仪和加速度计分别用了三个16位的adc,将其测量的模拟量转化为可输出的数字量,为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的.

(mpu手册链接:https://max.book118.com/html/2018/1102/5113101144001324.shtm)

FtVdtRWL0Fbt39Wz4bk84NoCmqO-

代码如图,主要代码分别为初始化,apds信息获取以及oled显示:

    Pin_Init();
    printf("Pin Init OK");

    if (SPI_Init(SPI0A, 0, SPI_SPEED) != 0)
    {
        Console_Init();
        printf("Error configuring SPI\n");
        while (1) {}
    }
    sys_cfg.tmr = MXC_TMR0;
    if (RTC_Init(MXC_RTC, 16*SECS_PER_HR+40*SECS_PER_MIN+0, 0, &sys_cfg) != E_NO_ERROR) {
        printf("Failed RTC_Setup().\n");
        return -1;
    }
    if (RTC_EnableRTCE(MXC_RTC) != E_NO_ERROR) {
        printf("Failed RTC_EnableRTCE().\n");
        return -1;
    }
    OLED_Init();

    //MPU_Init();
dmp_get_pedometer_step_count(&step_count); //µÃµ½¼Æ²½²½Êý
        dmp_get_pedometer_walk_time(&walk_time); //µÃµ½¼Æ²½ËùÓÃʱ¼ä
		
        MPU_Get_Accelerometer(&aacx,&aacy,&aacz);	//µÃµ½¼ÓËٶȴ«¸ÐÆ÷Êý¾Ý
        sec = RTC_GetSecond();

        day = sec / SECS_PER_DAY;
        sec -= day * SECS_PER_DAY;

        hr = sec / SECS_PER_HR;
        sec -= hr * SECS_PER_HR;

        min = sec / SECS_PER_MIN;
        sec -= min * SECS_PER_MIN;
        OLED_ShowChar(10, 8, (char)(48+hr/10),24);
        OLED_ShowChar(20, 8, (char)(48+hr%10),24);
        OLED_ShowChar(30, 8, (char)(46+(sec%2?12:13)),24);
        OLED_ShowChar(40, 8, (char)(48+min/10),24);
        OLED_ShowChar(50, 8, (char)(48+min%10),24);
				OLED_ShowNum(40,30,step_count,5,16,1);
        OLED_ShowNum(40,50,(walk_time/1000),5,16,1);
        OLED_Refresh();

  演示如图,首先是屏幕的第一行显示时间,第二行显示运动次数,第三行为运动时间,初始都为零:FuRSc-up8ALvCd72_Zk6-rWGokLa

接着拿起面包板上下摇晃几次之后,示数产生变化:FlzFjIdCgUxVEVypWNiX3NjeKdVe

可以看到程序初步完成了所需要实现的功能.

  以上就是本次活动我所完成的作业了,本次活动让我第一次接触到没有使用过的开发平台,锻炼了我的学习能力,使我受益匪浅,也让我熟悉了max评估版的基本使用方法,锻炼了我的编程开发能力.很感谢funpack的这次活动,以后也还会多多参加支持活动,希望活动能越办越好,培养更多人才!

附件下载
c.zip
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号