用两台TFmini Plus实现PPT切换

本文介绍了一个利用两台TFmini Plus雷达、Arduino DUE板等设备设计的PPT自动切换模块,通过检测手势来切换PPT页面。系统接线、工作原理和注意事项详述,并提供程序编写和使用说明。
摘要由CSDN通过智能技术生成

1、PPT自动切换模块简介

本模块利用北醒公司两台TFmini Plus、Arduino DUE板、一个低功率红外激光指向灯、两个LED指示灯、一个单向开关、一个双向开关和连接线结合设计。
系统作用:通过检测人的手势,操作PPT的上一页、下一页切换。

2、试验设备及接线

2.1 实验设备

  • Benewake TFmini Plus 标品
    在这里插入图片描述
    TFmini Plus(如图2.1所示),详细参数见TFmini Plus使用说明;
    本模块用来检测人的手势,当手或者手臂扫过时,测距状态发生改变。

  • Arduino DUE板
    在这里插入图片描述
    本模块使用DUE板检测雷达1和雷达2的测距状态,并利用自带的USB通信实现HID功能。
    Arduino DUE板(如图2.2所示),详细介绍和学习,请参考以下两个网站:
    中文社区
    英文官网

  • 激光指示灯
    在这里插入图片描述
    如图2.3所示,为红外激光指示灯,用来指示雷达的工作方向和大致区域。
    具体说明参考:https://m.tb.cn/h.eml6WNY?sm=032032

  • LED灯
    在这里插入图片描述在这里插入图片描述
    如图2.4所示,为LED灯,用来指示模块功能状态:绿灯为功能开启,红灯为功能关闭。

  • 单向开关
    在这里插入图片描述
    如图2.5所示,为单向开关,用来控制红外激光指示灯的打开和关闭。

  • 双向开关
    在这里插入图片描述
    如图2.6所示,为双向开关,用来控制PPT切换模块功能的打开和关闭。

  • 电脑
    在这里插入图片描述
    如图2.3所示,作为该系统的上位机,用来编写程序并上传到DUE板,并为模块供电。

  • 连接线
    在这里插入图片描述在这里插入图片描述
    如图2.7所示,为杜邦线和USB数据线。
    杜邦线——用于TFmini Plus与UNO板连接;
    USB数据线——用于DUE板与电脑连接、供电。

2.2 接线

在这里插入图片描述
如图2.9所示,为PPT切换模块的接线图,接线需要注意一下几个方面:

  1. TFmini Plus供电电压为5V,直接连接Arduino DUE板的5V和GND,其他雷达需查阅产品规格书,确保供电正常;
  2. 雷达1(RX,TX)连接DUE板的(TX3,RX3); 雷达2(RX,TX)连接DUE板的(TX1,RX1);
  3. 功能指示灯连接23,25引脚,通过检测开关状态,对应功能指示灯的关闭和打开。当功能打开时,绿灯亮起;功能关闭时,红灯亮起;

3、PPT切换原理及注意事项

3.1 注意事项

  1. TFmini Plus的采样率最大为1000,手臂挥动速度不应太大;
  2. 手臂滑动速度不应过小,即触发时间符合正常操作;
  3. 可以实现人一般速度走过,不触发PPT切换。

3.2 流程图

在这里插入图片描述

4、系统程序编写

#include <Keyboard.h>
/****************************************************************
定义引脚功能,控制引脚为27,29,显示引脚为23,25
*****************************************************************/
#define ON 23
#define OFF 25
#define LED_ON 27
#define LED_OFF 29
char left  = KEY_LEFT_ARROW; 
char right  = KEY_RIGHT_ARROW;
const int HEADER=0x59;//数据包帧头
/****************************************************************
定义模块功能初始状态参数
*****************************************************************/
bool receiveok1=false;
bool receiveok2=false;
bool status_complete1=false;
bool status_complete2=true;
/****************************************************************
变量DELAY可以控制模块的延迟时间,用以滤除人行走带来的误操作
*****************************************************************/
int DELAY=180;
int distance1=0;
int distance2=0;
int DISTANCE1=1200;
int DISTANCE2=1200;
int threshold=0;
unsigned long tim[2]={
   0};
int period=0;
/****************************************************************
声明函数,雷达数据获取函数和采集环境距离阈值函数
*****************************************************************/
int TFminione(void);
int TFminitwo(void);
int lidar_average(void);





/****************************************************************
引脚功能定义,初始化;
串口初始化;
采集周边环境,确定模块工作阈值;
*****************************************************************/
void setup() 
{
   
  pinMode(ON,INPUT);
  pinMode(OFF,INPUT);
  pinMode(LED_ON,OUTPUT);
  pinMode(LED_OFF,OUTPUT);
  digitalWrite(ON,HIGH);
  digitalWrite(OFF,HIGH);
  digitalWrite(LED_ON,LOW);
  digitalWrite(LED_OFF,LOW);  
  Serial1.begin(115200);//设置TFmini1与arduino的串口波特率
  Serial2.begin(115200);//设置TFmini2与arduino的串口波特率
  Serial3.begin(115200);//设置电脑与arduino的串口波特率
  int threshold1=lidar_average();
  threshold=threshold1-100;
  Serial3.print("threshold=");
  Serial3.println(threshold);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值