北方 发表于 2017-9-26 15:06

体感手套 #7 提交项目

本帖最后由 北方 于 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)相关分享帖集锦:体感手套 #1-项目介绍 体感手套 #2 IMU传感器数据采集体感手套 #3 蓝牙透传连接和手机APP测试体感手套 #4 简单蓝牙连接手机程序测试通过体感手套 #5 使用A-frame的手机VR演示和调整体感手套 #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操作视频。(登陆不成功,先上传源文件)
(8)作品总结和展望:这个完成后,安装在手套中,用电池供电,完成全部设计,在供电和尺寸上还需要优化。

okhxyyo 发表于 2017-10-2 15:39

汇总贴在此:
体感手套—by 北方
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=564975&fromuid=536508
(出处: 电子工程世界-论坛)
页: [1]
查看完整版本: 体感手套 #7 提交项目