0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作由PS2手柄控制的遥控小车?

FPGA之家 来源:果果小师弟 作者:智果芯 2021-06-06 18:13 次阅读

摘要:PS2手柄是索尼的PlayStation2游戏机的遥控手柄。索尼的psx系列游戏主机在全球很是畅销。不知什么时候便有人打起ps2手柄的主意,破解了通讯协议,使得手柄可以接在其他器件上遥控使用,比如遥控我们熟悉的智能小车。突出的特点是这款手柄性价比极高,按键丰富,方便扩展到其它应用中。

1.PS2手柄控制

PS2手柄由手柄与接收器两部分组成,手柄主要负责发送按键信息;接收器与单片机(也可叫作主机,可直接用在PS2游戏机上)相连,用于接收手柄发来的信息,并传递给单片机,单片机也可通过接收器,向手柄发送命令,配置手柄的发送模式。

2.PS2手柄时序

1、CS线在通讯期间拉低,通信过程中CS信号线在一串数据(9个字节,每个字节为8位)发送完毕后才会拉高,而不是每个字节发送完拉高。

2、DO、DI在在CLK时钟的下降沿完成数据的发送和读取。

下降沿:数字电平从高电平(数字“1”)变为低电平(数字“0”)的那一瞬间叫作下降沿。

3、CLK的每个周期为12us。若在某个时刻,CLK处于下降沿,若此时DO为高电平则取“1”,低电平则取“0”。连续读8次则得到一个字节byte的数据,连续读9个字节就能得到一次传输周期所需要的数据。DI也是一样的,发送和传输同时进行。

STM32与PS2手柄 通信为例:

1、 首先STM32拉低CS片选信号线,然后在每个CLK的下降沿读一个bit,每读八个bit(即一个byte)CLK拉高一小段时间,一共读九组bit。这九个byte如下表

be73b02e-c55a-11eb-9e57-12bb97331649.png

对应的的手柄读取代码如下

//读取手柄数据 void PS2_ReadData(void) { volatile u8 byte=0; volatile u16 ref=0x01; CS_L; PS2_Cmd(0x01); //开始命令 PS2_Cmd(0x42); //请求数据 for(byte=2;byte《9;byte++) //开始接受数据 { for(ref=0x01;ref《0x100;ref《《=1) { CLK_H; CLK_L; delay_us(50); CLK_H; if(DI) Data[byte] = ref|Data[byte]; } delay_us(50); } CS_H; }

2、第1个byte是STM32发给接收器命令“0X01” ,是一个开始的命令。

3、第2个byte是STM32发给PS2一个0x42请求数据。PS2手柄会在第二个byte回复它的ID(0x41=绿灯模式,0x73=红灯模式)。

红灯模式时 :左右摇杆发送模拟值,0x00~0xFF 之间,且摇杆按下的 键值 L3 、 R3 有效;绿灯模式时 :左右摇杆模拟值为无效,推到极限时,对应发送 UP、RIGHT、DOWN、 LEFT、△、○、╳、□,按键 L3 、 R3 无效;

4、第3个byte时PS2 会给主机发送 “0x5A” 告诉STM32数据来了。

5、从第4个byte开始到第9个byte全是接收器给主机(stm32)发送的数据,每个byte定义如上图,当有按键按下,对应位为“0 ”,例如当键“SELECT”被按下时, Data[3]=11111110。

3.PS2手柄测试

手柄需要两节7号1.5V的电池供电,接收器和单片机共用一个电源,电源范围为3~5V,不能接反,不能超压,过压和反接,都会使接收器烧坏。手柄上有个电源开关,0N开/OFF关,将手柄开关打到0N上,在未搜索到接收器的状况下,手柄的灯会不停的闪,在一定时间内,还未搜索到接收器,手柄将进入待机模式,手柄的灯将灭掉,这时,只有通过“START”键,唤醒手柄。接收器供电,在未配对的情况下,绿灯闪。手柄打开,接收器供电,手柄和接收器会自动配对,这时灯常亮,手柄配对成功。下面是接线说明:

供电方面VDD接3.3~5V,GND接GND。接收器信号线与stm32连接方式DI-》PAODO-》PA1CS-》PA2CLK-》PA3

4.电机实物接线图解

一般的小直流电机只引出两个线,怎么这个电机有 6个线,而且还有两个大焊点呢?其实,那两个焊点分别和黄线和棕线是连接在一起的。也就是说只有6 个线,而6P 排线中,中间的四根线(红绿白黑)是编码器的线,只是用于测速,和直流电机本身没有联系。在实现开环控制的时候无需使用。我们只需控制施加在黄线和棕色线两端的直流电压大小和极性即可实现调试和换向。

5.TB6612FNG使用说明

要实现调试和换向功能,可以使用单片机实现的,但是单片机IO的带负载能力较弱,而直流电机是大电流感性负载,所以我们需要功率放大器件,在这里选择TB6612FNG。

TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。也许大家更熟悉L298N,其实这两者的使用基本一致的。而且,相比 L298N的热耗性和外围二极管续流电路,它无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。对于 PWM信号输入频率范围,高达100 kHz的频率更是足以满足我们大部分的需求了。

以下是TB6612FNG 的主要参数:最大输入电压:VM = 15V最大输出电流:Iout = 1.2A正反转/短路刹车/停机功能模式内置过热保护和低压检测电路以下是TB6612 模块测试一个电机的接线图:

VM直接接电池即可,VCC 是内部的逻辑供电,一般给3.3 或者5V 都行,模块的3 个GND 接任意一个即可,因为都是导通的,STBY置高模块才能正常工作。

完成上面的接线之后,我们就可以开始控制电机了,上图中红色部分的5个引脚控制一路电机,蓝色部分的控制另外一路电机,这里只讲其中的A 路,B路的使用是一样的。AO1 和AO2 分别接到电机的+和-。然后通过PWMA、AIN2、AIN1控制电机。其中PWMA 接到单片机的PWM 引脚,一般10Khz 的PWM 即可,并通过改变占空比来调节电机的速度。

AIN1接 3.3~5V、 AIN2 接GND、 PWMA接 3.3 ~5V。这样相当于控制电机满占空比正转;AIN1接 GND、 AIN2 接3.3~ 5V、 PWMA接 3.3~5V。这样相当于控制电机满占空比反转;

6.舵机转向控制

关于舵机的控制我在前面的一篇文章已经具体的说明了!

原文标题:基于STM32的PS2遥控小车

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355754
  • 电池
    +关注

    关注

    84

    文章

    10563

    浏览量

    129481

原文标题:基于STM32的PS2遥控小车

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA打砖块小游戏设计思路

    HDL, Vivado 平台上开发打砖块小游戏并使用 PS2 与 VGA 的基本思路: 一、整体架构设计 1. 输入模块: • PS2 接口模块:负责与 PS2 设备(如游戏手柄)进
    的头像 发表于 12-09 16:57 162次阅读

    自适应蓝牙控制智能小车

    ,并通过蓝牙实时的发送给微信小程序App,以实现对小车运行轨迹的控制。 1 系统框架结构 本系统分为2个部分,其分别为: 1)下位机智能小车控制
    发表于 10-07 23:08

    第13章-循迹功能 STM32智能小车循迹教程 PID循迹算法分析

    第13章-循迹功能 循迹小车讲解 原理分析 STM32智能小车循迹教程 红外对管使用 PID循迹算法分析V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、P
    的头像 发表于 08-21 16:27 1417次阅读
    第13章-循迹功能 STM32智能<b class='flag-5'>小车</b>循迹教程 PID循迹算法分析

    第14章-蓝牙遥控小车 蓝牙串口通讯讲解蓝牙APP遥控小车 蓝牙串口通讯讲解

    第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
    的头像 发表于 08-21 16:24 703次阅读
    第14章-蓝牙<b class='flag-5'>遥控</b><b class='flag-5'>小车</b> 蓝牙串口通讯讲解蓝牙APP<b class='flag-5'>遥控</b><b class='flag-5'>小车</b> 蓝牙串口通讯讲解

    索尼PS VR2的PC应用将于8月在Steam平台上推出

    意味着,玩家们将能够借助PS VR2的高端头显与Sense手柄,在Steam的广阔游戏库中自由探索并享受VR游戏的乐趣。
    的头像 发表于 07-26 15:31 945次阅读

    【项目展示】基于CW32的遥控循迹小车

    CW32循迹小车.zip_免费高速下载|百度网盘-分享无限制  一、概述 CW32循迹、遥控小车具有循迹和遥控两种功能,小车的硬件模块
    的头像 发表于 05-31 17:33 1295次阅读
    【项目展示】基于CW32的<b class='flag-5'>遥控</b>循迹<b class='flag-5'>小车</b>

    手柄控制代码及使用方法

    手柄控制代码及使用方法
    的头像 发表于 05-15 10:19 1767次阅读

    AGV小车升降平台控制

    简介: 应用于控制AGV小车升降,推拉,勾取动作 应用场景: 升降装置结构,AGV小车升降推拉装置结构 1、产品介绍: 本产品是AGV小车升降平台
    的头像 发表于 05-11 16:30 598次阅读
    AGV<b class='flag-5'>小车</b>升降平台<b class='flag-5'>控制</b>板

    超酷!基于ESP32自制一个蓝牙游戏手柄

    , * Select=11, Start=12, PS=13, L3=14 , R3=15} * * PS游戏手柄模式 * {SQUARE=1, X=2, CIRCLE=3
    发表于 05-06 16:59

    stm32f407连接ps2遥控手柄接收信号异常怎么解决?

    平台是stm32f407zgt6,试图把淘宝卖得很好的ps2无线遥控手柄接上去。spi2的pb12 13 14 15被用作microusb了,只能改用具有spi1功能的pa4 5 6
    发表于 04-11 08:18

    请问stm32H743II usb HOST如何识别双遥杆游戏手柄

    stm32H743II usb HOST 如何识别 双遥杆游戏手柄?北通usb游戏手柄插到PC上显示是XBOX 360手柄手柄上传为14个字节数据,分别为0-7两个遥杆的XY,8-9
    发表于 03-15 07:52

    索尼发布PS3更新,支持蓝光播放并修复漏洞 

    PS3发售以来已经超过18个春秋,它的影响力仍然可见。PlayStation Plus高级会员服务每月提供多样化的PS3游戏供玩家串流游玩,同时还允许会员访问包括PS1、PS2和PS
    的头像 发表于 02-28 15:12 1384次阅读

    北通发布全球首款采用星闪技术的手柄

    上个月,国产手柄厂商北通宣布其首款星闪手柄已完成开发,型号为北通阿修罗2 Pro+星闪版。这款手柄不仅是北通的新品,更是全球首款采用星闪技术的手柄
    的头像 发表于 01-15 15:21 914次阅读

    体感控制自平衡两轮电动车方案

    可使用手机app对小车实时进行蓝牙遥控,能够轻松畅快地实现控制小车的前进后退与左右转动。 小车可以自动平衡,拿起识别,可以通过蓝牙
    的头像 发表于 01-11 14:12 532次阅读
    体感<b class='flag-5'>控制</b>自平衡两轮电动车方案

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 7次下载