(1)作品名称:体感手套
(2)作品实现功能简介:
体感手套实现的功能是在一种智能手套,可以记录手的位置旋转和角度,通过解析这些位置信号,生成对于x对于运动的控制信号。
这个控制命令通过FTHR开发板的UART口传送到蓝牙模块,通过蓝牙模块把控制信号发送出去,实现体感手套的远程控制。
为了显示控制实现的效果,同时开发一个手机app,演示这个控制信号的控制效果。具体实现是一个基于web的VR图像,手套的控制信号,控制VR图像中的一个模型的状态变化。这个演示的效果,说明基于MAX32630FTHR的体感手套,可以作为独立的VR控制器来丰富VR控制的效果。
(3)原理图:
(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编程后输出的文档
,和可执行文件
。 其中,设定串口和蓝牙传输部分的语句为,
- void sendingXY(char xyDirection);
- // Hardware serial port over UART2
- Serial btlink(P3_1, P3_0); // serial(Tx,Rx); UART2
其中采集数据和量化的语句为
- imu.getGyroAccXYZandSensorTime(accData, gyroData, sensorTime, accConfig.range, gyroConfig.range);
- imu.getTemperature(&imuTemperature);
-
- // printf("ACC xAxis = %s%4.3f\n", "\033[K", accData.xAxis.scaled);
- // printf("ACC yAxis = %s%4.3f\n", "\033[K", accData.yAxis.scaled);
- // printf("ACC zAxis = %s%4.3f\n\n", "\033[K", accData.zAxis.scaled);
-
- printf("GYRO xAxis = %s%5.1f\n", "\033[K", gyroData.xAxis.scaled);
- printf("GYRO yAxis = %s%5.1f\n", "\033[K", gyroData.yAxis.scaled);
- printf("GYRO zAxis = %s%5.1f\n\n", "\033[K", gyroData.zAxis.scaled);
-
- // printf("Sensor Time = %s%f\n", "\033[K", sensorTime.seconds);
- // printf("Sensor Temperature = %s%5.3f\n", "\033[K", imuTemperature);
-
- if (gyroData.xAxis.scaled > 1*xyTHRESHOLD) {
- xyDirection='6';}
- else if (gyroData.xAxis.scaled < (-1)*xyTHRESHOLD) {
- xyDirection='4';}
- else if (gyroData.yAxis.scaled > 1*xyTHRESHOLD) {
- xyDirection='8';}
- else if (gyroData.yAxis.scaled < (-1)*xyTHRESHOLD) {
- xyDirection='2';}
-
- printf("xyDirection = %s%x\n", "\033[K", xyDirection);
- sendingXY(xyDirection); //Sending xyDirection to bluetooth via UART
-
6.2 使用js和html编写的app程序为
其中,使用a-frame管理并控制的语句为,
- <script>
- AFRAME.registerComponent('handle-events', {
- schema: {
- color: {default: 'red'}
- },
-
- init: function () {
-
- var data = this.data;
- var el = this.el; // <a-box>
- var defaultColor = el.getAttribute('material').color;
- var turnWidth ='1';
- var turnHeight ='1';
-
-
- var getCounter = document.getElementById("counter");
- if (getCounter='6') {
- turnWidth ='1';}
- else if if (getCounter='4') {
- turnWidth ='0.5';}
- else if if (getCounter='8') {
- turnHeight ='1';}
- else if if (getCounter='2') {
- turnHeight ='0.5';}
-
- el.setAttribute('width', turnWidth);
- el.setAttribute('height', turnHeight);
-
- }
- });
-
- </script>
(7)大赛作品演示视频 :7.1 硬件连接
7.2 手机截屏
7.3操作视频。(登陆不成功,先上传源文件)
VID_1.MOV
(7.76 MB)
(下载次数: 19, 2017-9-26 15:57 上传)
(8)作品总结和展望:
这个完成后,安装在手套中,用电池供电,完成全部设计,在供电和尺寸上还需要优化。
本帖最后由 北方 于 2017-9-26 15:57 编辑