YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 93365|回复: 114
打印 上一主题 下一主题

PS2无线手柄单片机应用,PS2解码,PS2控制舵机,PS2遥控小车stm32,arduino的PS2库

  [复制链接]

签到天数: 63 天

[LV.6]常住居民II

跳转到指定楼层
楼主
发表于 2015-5-28 16:32:01 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
    ps2手柄是索游戏机的遥控手柄,索尼的系列游戏主机在全球很是畅销。不知什么时候便有人打起ps2手柄的主意,破解了通讯协议,使得手柄可以接在其他器件上做遥控使用,比如遥控我们熟悉的四轮车与机器人。突出的特点是现在这款手柄性价比极高。按键丰富,方便扩展到其它应用中。

移步优酷观看:http://v.youku.com/v_show/id_XMTQ5MzM0NjMyMA==.html


一、接收器线号

1
2
3
4
5
6
7
8
9
DI/DAT
DO/CMD
NC
GND
VDD
CS/SEL
CLK
NC
ACK  
    批次不同,接收器的外观会有所区别,一个上有电源灯红灯,一个上没有电源灯,但使用方法是一样的,引脚定义是一样的。
  • DI/DAT:信号流向,从手柄到主机,此信号是一个8bit的串行数据,同步传送于时钟的下降沿。信号的读取在时钟由高到低的变化过程中完成。
  • DO/CMD:信号流向,从主机到手柄,此信号和DI相对,信号是一个8bit的串行数据,同步传送于时钟的下降沿。
  • NC:空端口;
  • GND:电源地;
  • VDD:接收器工作电源,电源范围3~5V;
  • CS/SEL:用于提供手柄触发信号。在通讯期间,处于低电平;
  • CLK:时钟信号,由主机发出,用于保持数据同步;
  • NC:空端口;
  • ACK:从手柄到主机的应答信号。此信号在每个8bits数据发送的最后一个周期变低并且CS一直保持低电平,如果CS信号不变低,约60微秒PS主机会试另一个外设。在编程时未使用ACK端口。
二、手柄的使用、连接配对说明
    PS2手柄由手柄和接收器两个部分组成,手柄需要两节7号1.5V供电,接收器的电源和控制器使用同一电源,电源范围为3~5V,不能接反,不能超电压,过压和反接,都会使接收器烧坏
    手柄上有个电源开关,ON开/OFF关,将手柄开关打到ON上,在未搜索到接收器的状况下,手柄上的灯会不停的闪,在一定时间内,还未搜索到接收器,手柄将进入待机模式,手柄上的灯将灭掉,这时,按下“START”键,唤醒手柄。
    接收器供电,在未配对的状况在,绿灯闪。
    手柄打开,接收器供电,手柄和接收器会自动配对,这时灯常亮,手柄配对成功。按键“MODE”(手柄批次不同,上面的标识有可能是"ANALOG",但不会影响使用),可以选择“红灯模式”、“绿灯模式”。
    有些用户反映,手柄和接收器不能正常配对!多数问题是,接收器的接线不正确,或程序有问题。
    解决方法:接收器只接电源(电源线一定要连接正确),不接任何数据线和时钟线,一般情况下手柄是能够配对成功。配对成功后灯常亮,说明手柄是好的。这时再检查接线是否正确,程序移植是否有问题。
三、时序及数据意义

通讯时序图
    在时钟下降沿时,完成数据(1bit))的发送与接收。
    当主机想读手柄数据时,将会拉低CS线电平,并发出一个命令“0x01”;手柄会回复它的ID“0x41=模拟绿灯,0x73=模拟红灯”;在手柄发送ID的同时,主机将传送0x42,请求数据;随后手柄发送出0x5A,告诉主机“数据来了”。
    idle:数据线空闲,该数据线无数据传送。
    一个通讯周期有9个字节(8位),这些数据是依次按传送的。
顺序
DO
DI
Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7
0
0X01
idle

1
0x42
ID

2
idle
0x5A

3
idle
data
SELECTL3R3STARTUPRIGHTDOWNLEFT
4
idle
data
L2R2L1R1、△、○、╳、□
5
idle
data
PSS_RX0x00=left0xFF=right
6
idle
data
PSS_RY0x00=up0xFF=down
7
idle
data
PSS_LX0x00=left0xFF=right
8
idle
data
PSS_LY0x00=up0xFF=down
当有按键按下,对应位为“0”,其他位为“1”,例如当键“SELECT”被按下时,Data[3]=11111110B,
红灯模式时:左右摇杆发送模拟值,0x00~0xFF之间,且摇杆按下的键值L3、R3有效;
绿灯模式时:左右摇杆模拟值为无效,推到极限时,对应发送UP、RIGHT、DOWN、LEFT、△、○、╳、□,按键L3、R3无效。
详细手册说明及例程请下载附件,线的连接方式根据您的程序进行正确连接
在这里我们提供一个附件,里面的内容包括:
1、PS2例程(PS2解码例程(主控stm32,c语言编写解码例程)、PS2控制小车程序、PS2控制舵机例程);
2、PS2-Arduino-lib(Arduino例程);
3、PS2解码通讯手册.pdf;
4、PS2解码通讯常见问题汇总.pdf。
打开文件后请首先阅读ReadMeFirst.txt,提高您浏览的效率。
如果您遇到问题,先先打开《PS2解码通讯常见问题汇总》,看是否能够解决,如不能解决请回复或直接联系我。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 支持支持3 反对反对

签到天数: 63 天

[LV.6]常住居民II

沙发
 楼主| 发表于 2015-6-12 08:25:30 | 显示全部楼层
wangyv 发表于 2015-6-11 20:49
老板给的舵机库有问题啊,编译过不去,有错误啊

没有呀,都是验证好后再发布的。用keil3打开的。
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

板凳
 楼主| 发表于 2015-6-25 11:22:13 | 显示全部楼层
wdyong1971 发表于 2015-6-25 11:04
学习一下,买了俩个。

谢谢支持
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

地板
 楼主| 发表于 2015-6-30 08:50:26 | 显示全部楼层
kingson3721 发表于 2015-6-29 11:59
老大  有没有arduino控制舵机的例程,很需要啊

在arduino库中是有的,有对应的例程,ArduinoIDE-1.5.4\libraries\Servo\examples,在这个文件夹中,您找一下
回复 支持 0 反对 1

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

5#
 楼主| 发表于 2015-9-3 19:07:37 | 显示全部楼层
Alan 发表于 2015-9-2 17:34
回复了也不能下载是怎么了。/

当时为了防止恶意注册注水,所以需要邮箱激活验证的,
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

6#
 楼主| 发表于 2015-9-3 19:08:03 | 显示全部楼层
Alan 发表于 2015-9-2 17:36
下载不了资料,楼主可以给我发一份吗。

好的 已经发到您邮箱了 请查收一下
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

7#
 楼主| 发表于 2015-9-7 08:17:49 | 显示全部楼层
jenny 发表于 2015-9-2 11:43
能不能支持STM32?

可以的, 例程就是用stm32的,并实验遥控小车
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

8#
 楼主| 发表于 2016-3-11 10:56:10 | 显示全部楼层
linux_MCU 发表于 2016-3-11 10:06
你好,请问这款手柄支持飞思卡尔单片机吗?谢谢

可以的,只要移植一下就可以了。
回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

9#
 楼主| 发表于 2016-8-13 11:01:20 | 显示全部楼层
pumpitup 发表于 2016-8-10 18:15
实验大致成功,就是有点小问题。
一是dat cmd sel clk分别接13 11 10 12,是不是可以改为任意的端口
二是 ...

您好
1、这个端口是可以自己随意定义的,在程序的开始部分,自己定义一下端口就可以。
2、可以看它的错误提示“可能不支持”,我估计是因为手柄的版本不同,怕手柄无这项功能,可以配置,但手柄如果无这项功能,就不会输出按键轻重值。
3、这个您需要看一下库文件,PS2X_lib.cpp,找到这函数,看一下程序就会明白的。它就是用来控制手柄中两个震动电机的函数,结合我们的《ps2解码通讯手册》中数据意义对照表。
在函数boolean PS2X::read_gamepad(boolean motor1, byte motor2) 中,有这样一条语句:char dword[9] = {0x01,0x42,0,motor1,motor2,0,0,0,0};,就是震动及震动幅度配置,可以看一下我们《ps2解码通讯手册》中第8页的内容,有助于您的理解。

评分

参与人数 1威望 +2 收起 理由
admin + 2

查看全部评分

回复 支持 反对

使用道具 举报

签到天数: 63 天

[LV.6]常住居民II

10#
 楼主| 发表于 2016-9-26 13:40:38 | 显示全部楼层
derek 发表于 2016-9-26 11:54
PS2配对成功了,但没有数据输出,请问接收器端输出的spi是主模式还是从模式,没有clk,cs也没反应!

接收器只接VCC和GND,手柄和接收器就能够配对成功。
CLK和CS信号是由单片机发出,单片机和接收器之间通讯,接收器接收手柄发来的信号,具体的内容请看《PS2解码通讯手册》
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-5-3 00:38 , Processed in 0.052234 second(s), 30 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表