本帖最后由 q8780456 于 2016-11-26 13:17 编辑
首先感谢Digilent创客平台能给我这次机会,让我将所学和实际相结合,增长了不少实实在在的硬技能和宝贵的调试经验。
本月任务一挑战书:自制可穿戴运动设备(基于最小FPGA系统Cmod A7) 任务描述:挑战者需基于FPGA最小系统Cmod A7,在为期四周的时间内制作一个可穿戴运动设备,实现记录GPS位置数据,实时计算移动距离和平均速度,并通过蓝牙模块将数据发送到手机上的功能。 项目介绍: 近几年,可穿戴智能装备正从科幻片走向现实。通过可穿戴装备可以检测每天的运动量,记录运动数据等。我们熟悉的可穿戴运动设备包括Fitbit、小米手环等。本次挑战中,我们将使用FPGA最小系统Cmod来DIY一个可穿戴运动设备。Cmod体积小而功能强大,共有52个数字接口和两个模拟输入,可以外接各种传感器来监测运动数据,比如PmodGPS、PmodACL加速度传感器等,还可以开发扩展功能,如通过模拟输入监测心跳等。
项目完成度:实现对运动的完整监测:运动距离,最大/平均运动速度,运动时间,时间日期,随时可以通过蓝牙获取及时运动信息。 项目创新点:实现了基于MicroBlaze的软核嵌入式系统设计,摆脱了使用纯逻辑代码的不方便,并且外挂了512KB的SRAM,足以应对大量的数据处理和保存。 项目展望 :仅仅使用了8个数据IO口,保留了大量的外部接口做外部扩展。如果时间充裕的话,接下来可以加载一个Pmod_OLED做运动时的实时显示;再加上Pmod_ACL可以做精确的计步分析。由于Microblaze的灵活性和FPGA与生俱来的并行特性,做复杂的穿戴设备比基于MCU方案的要有很大优势! DIY动手指南 Step1:材料准备 1.CMOD A7-35T开发板 2.Pmod GPS模块 3.Pmod BT2蓝牙模块
软件平台:VIVADO 2015.2 SDK 2015.2 STEP2: 系统设计框图 由于本项目要计算平均速度、运动距离,和不断传输各种蓝牙数据,纯逻辑代码设计十分繁琐,本设计采用基于MicroBlaze的设计。
由于在软核内编写了大量的驱动和信号处理代码,FPGA芯片内部RAM不够,本人使用了SRAM作为Microblaze的Memory。 对于GPS信号截取到的经纬度信息,本人采用Google地图距离算法,实现两个位置之间距离的计算。同时抛弃GPS内的时间信息,采用自添加的AXI timer作为时间的准确计时。 手机端使用蓝牙调试助手,可以显示 穿戴设备传出的各种信息,留串口给PC做Debug用。 Step3:系统功能设置
实物图和手机端界面如上图所示: 实物图中,左侧边为GPS模块,右侧边为蓝牙模块,中间是迷你FPGA开发板CMOD A7,底座是三节干电池组成的电池仓负责供电。 手机端界面:预先安装“蓝牙调试助手pro”,使用键盘模式。功能就如按钮所示,简单实用。“运动开始”键按下发送‘1’,"运动结束"键按下发送‘0’。具体发送的消息由下面演示。
Step4:程序设计
本设计程序设计分为两步,一是 基于VIVADO的硬件驱动和软核环境搭建,二是基于 SDK 的C算法设计。 下面给出两者大概框图。
具体如何从VIVADO到SDK的过程不多赘述,网上资料很多。
http://xilinx.eetrend.com/blog/10459 之前写的一博文篇有详细描述。 Step5:硬件连接 JA输出口 1~6 IO口接Pmod蓝牙模块的1~6IO口,JP1~4跳线帽接口都不接,默认115200bps传输速率。7~12 IO接Pmod GPS的1~6 IO口 ,这样可以方便解决一个Pmod 口无法插2个模块的困难了。
同时,外接电源时 24 => VCC ,25=>GND。 Step6:可穿戴设备性能测试 兼功能说明书
首先,明确下只有在开阔地,旁边无高频设备干扰的情况下 才可以正常接收到GPS信息。
这是我的测试场地,11/24日晚上8点,地点Soochow大学电子楼。 我们点击手机端的“开始运动”。 如右图所示,可以看到当前位置的GPS经纬度信息。 走到对角,点击“停止运动",这时候FPGA会发出相关运动的蓝牙信息。 如:运动时间、运动平均速度、最大速度、运动距离。最后,还有当天日期! 有高清实测视频在附件,有兴趣的可以点击看下。
|