所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

【PinPong Board】PinPongBoard 结合手势传感器控制大疆无人机

天明zzb 天明zzb 2021-04-24 17:03:01
2
0
简单

直接拆箱上图

projectImage
projectImage

拿到手里的开发版确实惊艳到我了,高度集成合种传感器~~~依次有OLED显示屏、红外接受/发射模块、声音传感器、光线传感器、2路电机驱动、温湿度传感器、陀螺仪、RGB全彩灯、蜂鸣器、按键模块、电位器、WIFI模块只能说太良心了!!!

dfrobot的做工说实话在座吃瓜的大老爷们都知道,那就是很nice.

拆开立马找根数据线跟PinPongBoard过上了没羞没臊的上手测试,由于我用的苹果系统,插上开发版电脑竟然没识别到~·不管啦,后面在看这个问题,拿起身边的WIN电脑开肝。

今天我们的主角将和大疆的Robimaster TT共同演出。嗯还有配角~PAJ7620U2 手势识别传感器

各位坐好、开始表演了

材料清单 材料清单
1x
PinPong Board
1x
DJI Robomaster TT
1x
PAJ7620U2 手势识别传感器
步骤1 步骤1
安装PinPong python库

安装库的方法很简单,有python基础的同学基本都知道、我们这里直接上命令(直接使用国内源)

pip install pinpong -i http://mirrors.aliyun.com/pypi/simple/

当然这里有的同学没怎么接触python,觉得python一套安装下来很费劲,那接下来的软件让你眼界大开

那就是 Mind+

这里特别说明下只有win最新版本才有python模块

projectImage

点击python模式即可开始编程,再点击项目文件中的加号添加文件,这里注意给文件命名的同时要写上后缀.py

不然创建的只是一个文档,希望官方后面可以优化

projectImage

接下来我们就直接在这个软件立马直接进行库的安装

点击库管理就可以看到硬件控制里面的第一个,我们需要的库,然后直接点击安装即可,有需要的同学可以把👆的源改为豆瓣…额我觉得豆瓣快点

projectImage
projectImage
步骤2 步骤2
安装完毕库之后我们简单的点亮板载 RGB LED

我们控制RGB灯的引脚为D9,我这里直接用官方提供的代码进行编程控制了,这里有个问题,有的电脑插上板子之后不识别,我们需要安装CH341驱动才可正常使用,驱动等会放附件里面,此段代码实验效果就是RGB灯闪烁

代码 代码
	                    					import time
from pinpong.board import Board,Pin,NeoPixel

NEOPIXEL_PIN = Pin.D9
PIXELS_NUM = 1 #灯数

Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别

np = NeoPixel(Pin(NEOPIXEL_PIN), PIXELS_NUM)

while True:
  np[0] = (255, 0 ,0) #设置RGB灯为红色
  time.sleep(2)
  np[0] = (0, 255 ,0) #设置RGB灯为绿色
  time.sleep(2)
  np[0] = (0, 0 ,255) #设置RGB灯为蓝色色
  time.sleep(2)
	                    				
projectImage
步骤3 步骤3
安装djitellopy库

和刚刚一样,点击库管理,这次需要进入PIP模式,输入djitellopy即可,然后运行即可安装,不得不说mind+这这个模块设计很人性化,用于青少年python教学也是非常方便

projectImage
步骤4 步骤4
安装完毕库之后,我们先写一段测试代码,控制无人机起飞降落
代码 代码
	                    					import time
from djitellopy import Tello

tello=Tello()
tello.connect()
tello.takeoff()
time.sleep(1000)
tello.land()
	                    				
projectImage
步骤5 步骤5
到这里我们介绍的差不多了,剩下的就是我们的手势识别传感器

官方介绍如下 :AJ7620U2手势识别传感器是一款以IIC通信的3D手势识别交互式传感器。工作电流仅3.5mA, 手势识别距离达20mm。在最远20cm范围内,可以识别的手势多达13种。该手势传感器具备良好的手势识别稳定性,反应快,准确率高,可识别多种手势。支持两种手势识别模式,高速模式(可识别9种)和低速模式(可识别13种)。支持用户自定义识别手势。

PAJ7620U2手势识别传感器在高速模式下可识别上,下,左,右,前,后,顺时针,逆时针,快速挥手。而低速模式除了支持高速基础包含的所有手势外,还支持慢速上下,慢速左右,慢速前后,乱序。此外,低速模式可以自定义单位采样时间,还可根据自己需要轻松定义识别手势。

市面上主流的手势传感器可识别手势通常仅为六种,而对于非接触式遥控器,手势游戏机等应用,仅有的基础性6种识别模式完全不够。而PAJ7620U2手势识别传感器的出现,解决了手势识别模式欠缺的问题。PAJ7620U2手势识别传感器广泛适用于非接触式遥控器,机器人交互,手势操作游戏机,手势控制酷炫灯光等应用。

关于传感器的详细说明,在产品的资料库中有详细说明,但是里面没有python的使用说明,因此PinPong就脱颖而出啦。

projectImage
步骤6 步骤6
连接手势传感器至PinPong Board

这里我们需要观察手势识别传感器的接口和PinPong Board开发版的对应接口

PinPong 开发版                 手势识别传感器

5V           --------------→       +

GND        -------------→        -

SCL         --------------→       C

SDL         --------------→        D

 

projectImage
步骤7 步骤7
编写代码,驱动手势传感器,代码
代码 代码
	                    					from pinpong.board import Board
from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture

Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
paj = PAJ7620U2()
paj.set_gesture_high_rate()            #设置高速模式
#paj.set_gesture_low_rate()            #设置低速模式
Gesture.print_all() #打印可识别的手势以及其编号
while True:
  description,gesture = paj.get_gesture()
  if gesture != Gesture.none:
    print("gesture code         =%s"%gesture)
    print("gesture description  =%s"%description)
	                    				
projectImage
步骤8 步骤8
最后一阶段,融合刚刚2段代码,实现人机交互
代码 代码
	                    					from djitellopy import Tello
from pinpong.board import Board
from pinpong.libs.dfrobot_paj7620u2 import PAJ7620U2,Gesture
tello=Tello()
tello.connect()
Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
#Board("uno","/dev/cu.wchusbserial1460").begin()
paj = PAJ7620U2()
paj.set_gesture_high_rate()            #设置高速模式
#paj.set_gesture_low_rate()            #设置低速模式
Gesture.print_all()
while True:
  description,gesture = paj.get_gesture()
  if gesture != Gesture.none:
    print("gesture code         =%s"%gesture)
    if description == "Right":
      tello.move_right(50)
    elif description == "Backward":
      tello.takeoff()
    elif description == "Forward":
      tello.land()
    elif description == "Left":
      tello.move_left(50)
    elif description == "Up":
      tello.move_up(30)
    elif description == "Down":
      tello.move_down(30)
    elif description == "Clockwise":
      tello.flip_forward()
    print("gesture description  =%s"%description)
	                    				
projectImage

上面的代码都是简单的示例,同学们拿去之后可以加入更加有意思的项目进去

到这里吧,这个教程贴已经接近尾声,祝大家顺利调试成功!

再次感谢DFRobot给的这么好的一个平台。

嗯…真的爽

附件 附件
Makelog作者原创文章,未经授权禁止转载。
2
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]