YFROBOT创客社区

标题: PS2无线手柄单片机应用,PS2解码,PS2控制舵机,PS2遥控小车stm32,arduino的PS2库 [打印本页]

作者: aosini    时间: 2015-5-28 16:32
标题: PS2无线手柄单片机应用,PS2解码,PS2控制舵机,PS2遥控小车stm32,arduino的PS2库
    ps2手柄是索游戏机的遥控手柄,索尼的系列游戏主机在全球很是畅销。不知什么时候便有人打起ps2手柄的主意,破解了通讯协议,使得手柄可以接在其他器件上做遥控使用,比如遥控我们熟悉的四轮车与机器人。突出的特点是现在这款手柄性价比极高。按键丰富,方便扩展到其它应用中。
[attach]976[/attach]
移步优酷观看:http://v.youku.com/v_show/id_XMTQ5MzM0NjMyMA==.html
[vedio=375,500]https://player.youku.com/embed/XMTQ5MzM0NjMyMA==[/vedio]

一、接收器线号
[attach]1102[/attach]
1
2
3
4
5
6
7
8
9
DI/DAT
DO/CMD
NC
GND
VDD
CS/SEL
CLK
NC
ACK  
    批次不同,接收器的外观会有所区别,一个上有电源灯红灯,一个上没有电源灯,但使用方法是一样的,引脚定义是一样的。
二、手柄的使用、连接配对说明
    PS2手柄由手柄和接收器两个部分组成,手柄需要两节7号1.5V供电,接收器的电源和控制器使用同一电源,电源范围为3~5V,不能接反,不能超电压,过压和反接,都会使接收器烧坏
    手柄上有个电源开关,ON开/OFF关,将手柄开关打到ON上,在未搜索到接收器的状况下,手柄上的灯会不停的闪,在一定时间内,还未搜索到接收器,手柄将进入待机模式,手柄上的灯将灭掉,这时,按下“START”键,唤醒手柄。
    接收器供电,在未配对的状况在,绿灯闪。
    手柄打开,接收器供电,手柄和接收器会自动配对,这时灯常亮,手柄配对成功。按键“MODE”(手柄批次不同,上面的标识有可能是"ANALOG",但不会影响使用),可以选择“红灯模式”、“绿灯模式”。
    有些用户反映,手柄和接收器不能正常配对!多数问题是,接收器的接线不正确,或程序有问题。
    解决方法:接收器只接电源(电源线一定要连接正确),不接任何数据线和时钟线,一般情况下手柄是能够配对成功。配对成功后灯常亮,说明手柄是好的。这时再检查接线是否正确,程序移植是否有问题。
三、时序及数据意义
[attach]1103[/attach]
通讯时序图
    在时钟下降沿时,完成数据(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解码通讯常见问题汇总》,看是否能够解决,如不能解决请回复或直接联系我。

[attach]975[/attach]


作者: 雷柏    时间: 2015-5-28 16:43
来瞧瞧                              
作者: wangyv    时间: 2015-6-11 20:49
老板给的舵机库有问题啊,编译过不去,有错误啊
作者: aosini    时间: 2015-6-12 08:25
wangyv 发表于 2015-6-11 20:49
老板给的舵机库有问题啊,编译过不去,有错误啊

没有呀,都是验证好后再发布的。用keil3打开的。
作者: UNO    时间: 2015-6-16 18:17
学习PS2的用法来制作东西
作者: aosini    时间: 2015-6-25 11:22
wdyong1971 发表于 2015-6-25 11:04
学习一下,买了俩个。

谢谢支持
作者: kingson3721    时间: 2015-6-29 11:56
这个需要 ps2+舵机的资料很少
作者: kingson3721    时间: 2015-6-29 11:59
老大  有没有arduino控制舵机的例程,很需要啊
作者: aosini    时间: 2015-6-30 08:50
kingson3721 发表于 2015-6-29 11:59
老大  有没有arduino控制舵机的例程,很需要啊

在arduino库中是有的,有对应的例程,ArduinoIDE-1.5.4\libraries\Servo\examples,在这个文件夹中,您找一下
作者: imetal    时间: 2015-6-30 15:43
感谢分享感谢分享感谢分享
作者: gyy4606    时间: 2015-7-4 18:53
学习看看


作者: chi5277    时间: 2015-7-4 19:54
学习一下,谢谢。
作者: wcm_e    时间: 2015-7-10 10:29
学习, 谢谢了!
作者: w282654276    时间: 2015-7-11 20:05
he很好谢谢楼主
作者: 小白不白    时间: 2015-7-14 14:35
来学习学习~~
作者: feixiang1990    时间: 2015-7-18 21:58
学习一下啊啊 啊啊啊啊啊啊
作者: 见龙在田    时间: 2015-7-18 22:54
正是我想要的。。。
作者: wz133    时间: 2015-7-20 17:25
这个好赞
作者: donssn@163.com    时间: 2015-7-25 16:51
这个需要学习学习啊。。。。。。。。。。。。
作者: Kero    时间: 2015-7-25 16:57
Good Share,THX
作者: Onecode    时间: 2015-7-27 13:38

作者: wheverat    时间: 2015-7-28 23:53
看看来学习下
作者: bratsun    时间: 2015-7-31 11:07
看看看看看看
作者: 雨之源14    时间: 2015-7-31 17:42
且让我来看看
作者: 牛解庖丁    时间: 2015-8-3 17:41
刚开始研究ps2,来取取经
作者: 海梦1993    时间: 2015-8-5 12:43
学习一下

作者: AllBlue    时间: 2015-8-6 19:52
顶,支持
作者: mahaodong1992    时间: 2015-8-10 11:03
受益匪浅,希望楼主多多分享相关资源,不胜感激
作者: vgboy8866    时间: 2015-8-14 07:59
学习一下。。。。。。。。
作者: Hopeful    时间: 2015-8-17 12:31
赞一个,对我来说现在太有用了
作者: 机器人love着    时间: 2015-8-17 22:18
多谢楼主分享啊!
作者: wjx10210    时间: 2015-8-22 09:19
好好学习一下  希望是真的
作者: 916689926    时间: 2015-8-22 16:11
看看能不能有用
作者: 阿明    时间: 2015-8-26 16:46
非官方让他是打发时光W
作者: 阿明    时间: 2015-8-26 16:58
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
作者: 温ぁ哥ゥけ尔    时间: 2015-9-1 09:56
学习PS2的用法来制作遥控小车
作者: yeying    时间: 2015-9-1 11:27
很不错哦!很不错哦!很不错哦!很不错哦!很不错哦!
作者: 字符233    时间: 2015-9-1 14:20
学习PS2的用法来控制车子的
作者: jenny    时间: 2015-9-2 11:43
能不能支持STM32?
作者: Alan    时间: 2015-9-2 17:33
MSP430可以用吗
作者: Alan    时间: 2015-9-2 17:34
回复了也不能下载是怎么了。/
作者: Alan    时间: 2015-9-2 17:36
Alan 发表于 2015-9-2 17:33
MSP430可以用吗

下载不了资料,楼主可以给我发一份吗。forwoshitjy@live.com
作者: Alan    时间: 2015-9-2 17:36
Alan 发表于 2015-9-2 17:33
MSP430可以用吗

下载不了资料,楼主可以给我发一份吗。forwoshitjy@live.com
作者: aosini    时间: 2015-9-3 19:07
Alan 发表于 2015-9-2 17:34
回复了也不能下载是怎么了。/

当时为了防止恶意注册注水,所以需要邮箱激活验证的,
作者: aosini    时间: 2015-9-3 19:08
Alan 发表于 2015-9-2 17:36
下载不了资料,楼主可以给我发一份吗。

好的 已经发到您邮箱了 请查收一下
作者: 詹姆斯19931010    时间: 2015-9-4 18:54
学习一下,,,,,,,,
作者: aosini    时间: 2015-9-7 08:17
jenny 发表于 2015-9-2 11:43
能不能支持STM32?

可以的, 例程就是用stm32的,并实验遥控小车
作者: mengdeersijiu    时间: 2015-9-7 13:56
正有需要啊谢谢分享
作者: 111fire    时间: 2015-9-15 11:20
很好很好

作者: 超超    时间: 2015-9-16 10:30
很好的,我喜欢
作者: ganlinufo    时间: 2015-9-22 20:18
正好需要这资料。。谢谢楼主
作者: hunt618    时间: 2015-9-24 13:37
最讨厌回复了!
作者: 邹姆斯特朗    时间: 2015-9-25 09:55
ArduinoIDE-1.5.4\libraries\Servo\examples,在这个文件夹中
作者: 天天开心    时间: 2015-10-3 16:50
PS2X_lib.h
作者: altim    时间: 2015-10-5 11:35
好东西,多谢分享
作者: hero_sun    时间: 2016-2-2 19:10
程序在哪儿?
作者: linux_MCU    时间: 2016-3-11 10:06
你好,请问这款手柄支持飞思卡尔单片机吗?谢谢
作者: aosini    时间: 2016-3-11 10:56
linux_MCU 发表于 2016-3-11 10:06
你好,请问这款手柄支持飞思卡尔单片机吗?谢谢

可以的,只要移植一下就可以了。
作者: AllBlue    时间: 2016-4-28 17:24
airlovelj 发表于 2016-4-28 16:47

缺少库文件
作者: yuyous    时间: 2016-7-16 17:26
谢谢分享                                 
作者: pumpitup    时间: 2016-8-10 18:15
实验大致成功,就是有点小问题。
一是dat cmd sel clk分别接13 11 10 12,是不是可以改为任意的端口
二是pressures如果设置为true,error会返回3,但是后续的实验中,可以读出按键轻重
三是read_gamepad(false, 震动强度)中,前一个false有啥作用?
作者: aosini    时间: 2016-8-13 11:01
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页的内容,有助于您的理解。

作者: derek    时间: 2016-9-26 11:54
PS2配对成功了,但没有数据输出,请问接收器端输出的spi是主模式还是从模式,没有clk,cs也没反应!
作者: aosini    时间: 2016-9-26 13:40
derek 发表于 2016-9-26 11:54
PS2配对成功了,但没有数据输出,请问接收器端输出的spi是主模式还是从模式,没有clk,cs也没反应!

接收器只接VCC和GND,手柄和接收器就能够配对成功。
CLK和CS信号是由单片机发出,单片机和接收器之间通讯,接收器接收手柄发来的信号,具体的内容请看《PS2解码通讯手册》
作者: as3323722    时间: 2016-9-26 17:26
请问STM32破解   配对成功 但是数据发送一直是固定值怎么办  我用的控制舵机的程序  发送接受值到USART1观察的
作者: derek    时间: 2016-9-28 14:23
aosini 发表于 2016-9-26 13:40
接收器只接VCC和GND,手柄和接收器就能够配对成功。
CLK和CS信号是由单片机发出,单片机和接收器之间通 ...

配对成功的了,按手册说明发命令,C:\Users\Derek\Desktop\PS2解码通讯及例程V1.7DI/DAT一直没有数据,请问可能是什么原因波形图如附件:黄色CLK,绿色CMD,蓝色DAT;

作者: aosini    时间: 2016-9-29 08:05
as3323722 发表于 2016-9-26 17:26
请问STM32破解   配对成功 但是数据发送一直是固定值怎么办  我用的控制舵机的程序  发送接受值到USART1观 ...

您好,您直接使用“ps2震动实验(keil5)”,配对成功不能说明数据接收就正常,例程适用于stm32f103系列的单片机,线连接的时候注意一下信号线所对应的IO口。
作者: aosini    时间: 2016-9-29 08:23
derek 发表于 2016-9-28 14:23
配对成功的了,按手册说明发命令,DI/DAT一直没有数据,请问可能是什么原因波形图如附件:黄色CLK,绿色CMD ...

配对成功不能说明数据接收就正常,例程适用于stm32f103系列的单片机,如果不是,需要根据自己的单片机而改动一下,线连接的时候注意一下信号线所对应的IO口。
作者: firefly    时间: 2016-10-17 17:23
下载后 3、PS2解码通讯手册.pdf; 4、PS2解码通讯常见问题汇总.pdf。文件加密了,打不开,密码是什么?

作者: TRknight    时间: 2016-10-17 22:06
您好,请问手册里说的时钟频率250kHZ是由           
                   CLK_H;
                  delay_us(10);
                  CLK_L;
                  delay_us(10);  中间的延时函数 控制的么?
为什么我将延时增加十倍之后才能收到信号?
作者: aosini    时间: 2016-10-18 07:50
TRknight 发表于 2016-10-17 22:06
您好,请问手册里说的时钟频率250kHZ是由            
                   CLK_H;
                  delay_us(10);

这个还真的没有遇到过。是不是初始化的时间有问题?您检测一下看看

作者: logicbug    时间: 2016-10-29 10:56
下载学习,多谢楼主!
作者: sylbox    时间: 2017-1-20 16:24
这个很好,来的很及时
作者: eddie5492001t    时间: 2017-2-2 15:16
請問  連接完後用serial monitor看,執行example.ino 按下PS2按鈕後出現一堆圖形亂碼,你有遇過嗎, 這要怎麼處理ㄋ
作者: aosini    时间: 2017-2-4 08:02
eddie5492001t 发表于 2017-2-2 15:16
請問  連接完後用serial monitor看,執行example.ino 按下PS2按鈕後出現一堆圖形亂碼,你有遇過嗎, 這要怎麼 ...

您看一下串口波特率是否设置正确
作者: 陈空空ol    时间: 2017-2-19 21:28
你好,我想问个问题就是,我用的是STM32的程序,关于手柄按键怎么用啊,里面是函数自直接调用还是要自己编写啊
作者: chou4525    时间: 2017-2-20 16:35
謝謝樓主的分享
作者: elementary    时间: 2017-3-15 16:04
找了好久!!!
作者: elementary    时间: 2017-3-18 22:53
居然来下载了两次!消耗了两次积分!谢谢分享
作者: liyuyao001    时间: 2017-3-19 14:38
谢谢分享,已经买了遥控器,研究研究。
作者: AllBlue    时间: 2017-3-19 19:13
liyuyao001 发表于 2017-3-19 14:38
谢谢分享,已经买了遥控器,研究研究。

加油了,有问题还可以回来问
作者: bujqr    时间: 2017-4-25 23:19
LZ,原厂PS2有线手柄和单片机连的时候需要加驱动,是电流驱动吗?用ULN2003可以吗?
作者: 番茄柿炒蛋    时间: 2017-5-16 12:00
谢谢老板分享!!!
作者: twing    时间: 2017-5-16 15:42
谢谢老板,学习 学习
作者: ren_345    时间: 2017-7-29 23:42
感谢分享!
作者: xom    时间: 2018-1-30 11:17
謝謝分享謝謝分享
作者: AllBlue    时间: 2018-1-31 08:27
bujqr 发表于 2017-4-25 23:19
LZ,原厂PS2有线手柄和单片机连的时候需要加驱动,是电流驱动吗?用ULN2003可以吗?

手柄和单片机连接不需要驱动,不过要注意电压,应该是3.3V电压
作者: 290026425    时间: 2018-4-3 22:49
压缩包里的程序可以做什么用呀
作者: 290026425    时间: 2018-4-3 23:07
示例程序上马达是哪个端口

作者: userjie    时间: 2018-4-9 23:58
请问楼主,20组机器人比赛,大家都用你们的同款ps2无线手柄,会不会造成相互干扰而控制错对象?
作者: UNO    时间: 2018-4-10 08:08
userjie 发表于 2018-4-9 23:58
请问楼主,20组机器人比赛,大家都用你们的同款ps2无线手柄,会不会造成相互干扰而控制错对象?

需要一组一组配对,一起配对可能会导致乱配对
作者: userjie    时间: 2018-4-10 21:05
UNO 发表于 2018-4-10 08:08
需要一组一组配对,一起配对可能会导致乱配对

配完对后就不会干扰了是吧。。。
但如果一个手柄进入休眠,按start再次启动。这时场内有许多手柄在工作,该手柄还能正确找到自己的机器吗?
作者: UNO    时间: 2018-4-13 08:03
userjie 发表于 2018-4-10 21:05
配完对后就不会干扰了是吧。。。
但如果一个手柄进入休眠,按start再次启动。这时场内有许多手柄在工作 ...

只要场地没有未配对,且没通电的接收就不会乱配对。
作者: 13719272278    时间: 2018-5-29 17:40
u8 PS2_DataKey()
{
        u8 index;

        PS2_ClearData();
        PS2_ReadData();

        Handkey=(Data[4]<<8)|Data[3];     //这是16个按键  按下为0, 未按下为1
        for(index=0;index<16;index++)
        {            
                if((Handkey&(1<<(MASK[index]-1)))==0)
                return index+1;
        }
        return 0;          //没有任何按键按下
}
请问这个检测手柄按键的函数是不是有问题,好像不能准确检测16个按键,求指点
作者: wwrrpp    时间: 2018-6-11 20:34
有朋友成功把ps2手柄移植到stm32f4系列上么?我尝试了数天,摇杆输入模拟量一直不成功,无法切换“红灯模式”(按下MOOD后,闪几下,红灯仍不亮),将DO接头拔下后,可切换“红灯模式”,接上DO又变回绿灯。请问是与IO口配置有关吗?或者其它什么原因? 谢谢!
作者: TT1998    时间: 2018-7-25 22:14
没有51的程序吗
作者: UNO    时间: 2018-7-27 08:04
TT1998 发表于 2018-7-25 22:14
没有51的程序吗

没有的
作者: duan    时间: 2018-7-30 16:12
衷心的感谢,
作者: 860921464    时间: 2018-10-27 09:58
没有 stm32f10x_lib.h 头文件怎么办?
作者: zsulyq    时间: 2019-2-26 12:37
keil c的,有没有Arduino版本的




欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) Powered by Discuz! X3.1