[作品提交] 体感手套 #7 提交项目

北方   2017-9-26 15:06 楼主
(1)作品名称:体感手套
(2)作品实现功能简介:
体感手套实现的功能是在一种智能手套,可以记录手的位置旋转和角度,通过解析这些位置信号,生成对于x对于运动的控制信号。
这个控制命令通过FTHR开发板的UART口传送到蓝牙模块,通过蓝牙模块把控制信号发送出去,实现体感手套的远程控制。
为了显示控制实现的效果,同时开发一个手机app,演示这个控制信号的控制效果。具体实现是一个基于web的VR图像,手套的控制信号,控制VR图像中的一个模型的状态变化。这个演示的效果,说明基于MAX32630FTHR的体感手套,可以作为独立的VR控制器来丰富VR控制的效果。
(3)原理图:
154717g9hh76zj2cbv89bz.jpg.thumb.jpg
(4)软硬件设计思路:
- 首先检测传感器的数据,然后整形量化后用2-4-6-8四个数字字符表示对x-y方向的控制信号;
- 然后设定串口UART2(P3_1,P3_0),传输这个控制信号命令;
- 蓝牙透传模块接受这个数据后直接发送;
在手机APP端,
- 通过蓝牙管理程序index.js完成搜寻蓝牙模块,连接的功能,然后接受这个控制命令,并输出到counter.innerHTML的位置上;
- 启动的VR视觉设计a-frame,在初始化场景,天空等之后,读取counter的进行数据更新和控制。
(5)相关分享帖集锦:
(6)作品的源代码:
6.1 FTHR开发板用mbed编程后输出的文档
FTHR_Gloove_uvision5_max32630fthr.zip (4.64 MB)
(下载次数: 5, 2017-9-26 14:59 上传)
,和可执行文件
FTHR_Gloove_MAX32630FTHR.bin (27.08 KB)
(下载次数: 1, 2017-9-26 14:59 上传)
其中,设定串口和蓝牙传输部分的语句为,
  1. void sendingXY(char xyDirection);
  2. // Hardware serial port over UART2
  3. Serial btlink(P3_1, P3_0); // serial(Tx,Rx); UART2
其中采集数据和量化的语句为
  1. imu.getGyroAccXYZandSensorTime(accData, gyroData, sensorTime, accConfig.range, gyroConfig.range);
  2. imu.getTemperature(&imuTemperature);
  3. // printf("ACC xAxis = %s%4.3f\n", "\033[K", accData.xAxis.scaled);
  4. // printf("ACC yAxis = %s%4.3f\n", "\033[K", accData.yAxis.scaled);
  5. // printf("ACC zAxis = %s%4.3f\n\n", "\033[K", accData.zAxis.scaled);
  6. printf("GYRO xAxis = %s%5.1f\n", "\033[K", gyroData.xAxis.scaled);
  7. printf("GYRO yAxis = %s%5.1f\n", "\033[K", gyroData.yAxis.scaled);
  8. printf("GYRO zAxis = %s%5.1f\n\n", "\033[K", gyroData.zAxis.scaled);
  9. // printf("Sensor Time = %s%f\n", "\033[K", sensorTime.seconds);
  10. // printf("Sensor Temperature = %s%5.3f\n", "\033[K", imuTemperature);
  11. if (gyroData.xAxis.scaled > 1*xyTHRESHOLD) {
  12. xyDirection='6';}
  13. else if (gyroData.xAxis.scaled < (-1)*xyTHRESHOLD) {
  14. xyDirection='4';}
  15. else if (gyroData.yAxis.scaled > 1*xyTHRESHOLD) {
  16. xyDirection='8';}
  17. else if (gyroData.yAxis.scaled < (-1)*xyTHRESHOLD) {
  18. xyDirection='2';}
  19. printf("xyDirection = %s%x\n", "\033[K", xyDirection);
  20. sendingXY(xyDirection); //Sending xyDirection to bluetooth via UART
6.2 使用js和html编写的app程序为
mobile_VR_MAX32630FTHR_final20170926.rar (3.22 KB)
(下载次数: 2, 2017-9-26 15:04 上传)
其中,使用a-frame管理并控制的语句为,
  1. <script>
  2. AFRAME.registerComponent('handle-events', {
  3. schema: {
  4. color: {default: 'red'}
  5. },
  6. init: function () {
  7. var data = this.data;
  8. var el = this.el; // <a-box>
  9. var defaultColor = el.getAttribute('material').color;
  10. var turnWidth ='1';
  11. var turnHeight ='1';
  12. var getCounter = document.getElementById("counter");
  13. if (getCounter='6') {
  14. turnWidth ='1';}
  15. else if if (getCounter='4') {
  16. turnWidth ='0.5';}
  17. else if if (getCounter='8') {
  18. turnHeight ='1';}
  19. else if if (getCounter='2') {
  20. turnHeight ='0.5';}
  21. el.setAttribute('width', turnWidth);
  22. el.setAttribute('height', turnHeight);
  23. }
  24. });
  25. </script>
(7)大赛作品演示视频 :
7.1 硬件连接
IMG_20170926_142356.jpg IMG_20170926_142432.jpg
7.2 手机截屏
Screenshot_2017-09-26-13-32-52.png
7.3操作视频。(登陆不成功,先上传源文件)
VID_1.MOV (7.76 MB)
(下载次数: 19, 2017-9-26 15:57 上传)
(8)作品总结和展望:
这个完成后,安装在手套中,用电池供电,完成全部设计,在供电和尺寸上还需要优化。
本帖最后由 北方 于 2017-9-26 15:57 编辑

回复评论 (1)

汇总贴在此:
体感手套—by 北方
https://bbs.eeworld.com.cn/forum. ... 4975&fromuid=536508
(出处: 电子工程世界-论坛)
玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2017-10-2 15:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复