体感手套 #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)作品总结和展望:这个完成后,安装在手套中,用电池供电,完成全部设计,在供电和尺寸上还需要优化。
汇总贴在此:
体感手套—by 北方
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=564975&fromuid=536508
(出处: 电子工程世界-论坛)
页:
[1]