本帖最后由 北方 于 2017-9-26 15:57 编辑
(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)作品的源代码: 其中,设定串口和蓝牙传输部分的语句为, - 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程序为
mobile_VR_MAX32630FTHR_final20170926.rar
(3.22 KB, 下载次数: 2)
其中,使用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操作视频。(登陆不成功,先上传源文件)
(8)作品总结和展望:
这个完成后,安装在手套中,用电池供电,完成全部设计,在供电和尺寸上还需要优化。
|