基于单片机的智能手势识别与控制系统

目 录
摘 要 I
Abstract II
第一章 设计概述 5
1.1 研究背景及其意义 5
1.2 国内外研究现状 5
1.3 此次设计实现的功能 7
第二章 系统设计方案 8
2.1 系统设计方案 8
2.2 主要元器件选择 8
2.2.1 主控芯片方案 8
2.2.2 显示模块方案选择 9
2.2.3 无线传输方案选择 9
第三章 硬件设计 10
3.1单片机最小系统 10
3.1.1主控模块电路 10
3.1.2 晶振电路 12
3.1.3 复位电路 13
3.1.4 电源电路 14
3.1.5下载电路 15
3.2 MPU6050手势识别模块 16
3.3 LCD1602显示模块电路 17
3.4 蓝牙模块(ECB02) 19
第四章 系统程序设计 21
4.1 编程软件介绍 21
4.2 主机系统主流程设计 21
4.3 主机系统主流程设计 22
4.4 LCD1602液晶显示子流程 23
4.5 蓝牙模块子流程 24
第五章 仿真测试 25
5.1仿真总图 25
5.1功能仿真测试 25
第六章 实物测试 27
6.1实物焊接 27
6.2 上电实物测试 27
6.3功能实物测试 28
总结 29
致谢 30
参考文献 31
附录 32
附录一:原理图 32
附录二:PCB 33
附录三:主程序 34
国内高校对手部动作捕捉技术的研究一直在进行。2014 年上海交通大学研制了一款基于惯性传感器的数据手套,该手套共箭 6 个惯性传感器,分别放置在手指和手背上。对于手指弯曲动作的解析运用了神经网络算法,可以较准确地解算出手掌和手指的空间旋转状态,但是该数据手套没有相关的定位措施,只能应用于静态手势识别,2015 年,台湾国立台北大学研制了一款基于9 轴惯性传感器与力敏传感器的数据手套,用于手部医疗康复训练。该手套结构简便,布线合理,具备较强的姿态解析能力,但是也属于静态手势识别,存在无法改变空间位置的问题139。2016 年东南大学研制了一款面向虚拟现实应用的数据手套,该手套在大臂和小臂处增加了惯性传感器,以大臂终点作为姿态解算起点,将大臂和小臂视作连杆,实时解算手部的空间位置,该方案扩展了手部的空间运动范围。但是,该数据手套将每根手指视为一根连杆,指关节的弯曲运动无法获得,手部运动解析不完全。
1.3 此次设计实现的功能
提出了一种手势识别智能控制器,进行了相关电路设计,并搭建了系统仿真实验,编制了相应的复杂手势识别模块。主要实现以下功能:
1、从机部分:通过MPU6050识别手势(上下左右),则通过蓝牙将数据发送到主机部分
2、主机部分:通过蓝牙接收到从机的检测数据,通过LCD1602显示(up down left right)

第二章 系统设计方案
2.1 系统设计方案
本设计以单片机为核心控制器,加上其他模块一起组成此次设计手势控制器的整个系统,此次设计包括主机核对从机,主机和从机可以分为三部分:中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。
从机的输入包括MPU6050检测用户的手势,检测当前的手势为向上、向下、向左、还是向右;第二部分是供电模块,通过该模块可给整个系统进行供电;输出通过蓝牙将检测的数据传输到从机。
主机的输入包括两个部分,第一部分是蓝牙模块将检测的数据通过该模块传输到从机的显示模块上,第二部分是供电模块,给主机进行供电;输出通过显示模块显示当前用户的手势。具体系统框图如图3.1所示。

图3.1 系统框图

从机部分
/**********************************
包含头文件
**********************************/
#include "main.h"
#include "uart.h"
#include "MPU6050.h"

/**********************************
变量定义
**********************************/
uint time_num = 0;											//10ms计时变量

char send_buf[20];
int MPU6050_accel_x = 0;								//X轴加速度
int MPU6050_accel_y = 0;								//Y轴加速度
int MPU6050_accel_z = 0;								//Z轴加速度
int MPU6050_gyro_x = 0;									//X轴角速度
int MPU6050_gyro_y = 0;									//Y轴角速度
int MPU6050_gyro_z = 0;									//Z轴角速度
/**********************************
函数声明
**********************************/
void Delay_function(uint x);						//延时函数(ms)
void Monitor_function(void);						//监测函数


/****
*******	主函数 
*****/
void main()
{
	Uart_Init();											//串口初始化函数
	Delay_function(50);									  //延时50ms
	MPU6050_Init();
	Delay_function(50);									  //延时50ms
	
	while(1)
	{
		Monitor_function();									//监测函数

		Delay_function(10);									//延时10ms
		time_num++;											    //计时变量+1
		if(time_num == 5000)
		{
			time_num = 0;
		}
	}
}


















作者:shejizuopin

物联沃分享整理
物联沃-IOTWORD物联网 » 基于单片机的智能手势识别与控制系统

发表回复