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

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

3天内不再提示

基于STM32的PS2遥控小车

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-06-20 10:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


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

0a1cfade-f02b-11ec-ba43-dac502259ad0.jpg图片来自网络0a2d4c5e-f02b-11ec-ba43-dac502259ad0.jpg图片来自网络

1.PS2手柄控制

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

0a3c22c4-f02b-11ec-ba43-dac502259ad0.jpg图片来自网络

2.PS2手柄时序

0a4ad260-f02b-11ec-ba43-dac502259ad0.png

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如下表

0a5483f0-f02b-11ec-ba43-dac502259ad0.png

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

//读取手柄数据
voidPS2_ReadData(void)
{
volatileu8byte=0;
volatileu16ref=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。

pYYBAGKv2lGADGLTAAGcZDMcmxU149.png

3.PS2手柄测试

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

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

4.电机实物接线图解

0a70123c-f02b-11ec-ba43-dac502259ad0.png图片来自平衡之家小车

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

5.TB6612FNG使用说明

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

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

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

0a8c7f4e-f02b-11ec-ba43-dac502259ad0.png图片来自平衡之家小车

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

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

0aa57a62-f02b-11ec-ba43-dac502259ad0.png

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

6.舵机转向控制

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

点击查看:STM32驱动舵机的原理与实现

后台回复:PS2小车,即可获取项目源码!

0ab75700-f02b-11ec-ba43-dac502259ad0.png

审核编辑 :李倩

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

    关注

    2313

    文章

    11193

    浏览量

    374604
  • 信号
    +关注

    关注

    12

    文章

    2929

    浏览量

    80403
  • PS2
    PS2
    +关注

    关注

    0

    文章

    51

    浏览量

    20155

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    微型遥控赛车开源项目介绍

    给各位电子 DIY 与遥控模型爱好者分享一款超有创意的开源项目:微型遥控赛车。我把经典游戏《马力欧赛车》的核心互动机制搬到现实,小车通过板载传感器识别赛道道具,自动实现加速、打转、减速等物理反馈,搭配多模式控制,可玩性拉满
    的头像 发表于 04-22 13:47 80次阅读
    微型<b class='flag-5'>遥控</b>赛车开源项目介绍

    解锁电子革命:PS2P - ARC抗游隙弧形位置传感器深度解析

    解锁电子革命:PS2P - ARC抗游隙弧形位置传感器深度解析 在电子科技飞速发展的今天,传感器作为连接现实世界与数字世界的桥梁,其性能和可靠性对众多领域的应用至关重要。今天,我们就来详细探讨
    的头像 发表于 12-12 09:35 543次阅读

    【CW32L012小车测评】到手小车测评其中基本功能

    开箱介绍 在CW小程序中购买了小车,其中的包装特别好,外面有个箱子来装着,其中我们将外包装拆开,可以看见我们本次购买的小车的本体,我购买的是焊接完成的,所以我可以开箱直接试用,方便很多,如果大家追求
    的头像 发表于 11-24 22:59 437次阅读
    【CW32L012<b class='flag-5'>小车</b>测评】到手<b class='flag-5'>小车</b>测评其中基本功能

    扔掉手机APP吧!教你用乐鑫科技ESP32-S3 2.8寸彩屏爆改专业遥控器!启明云端乐鑫代理

    麦克纳姆轮小车玩家在用手机当遥控器操作小车时,糟心的体验也“清奇”的一致:兴致正浓时一个弹窗或电话就让操控瞬间掉线,关键时刻卡顿延迟让最帅操作变最尬场景,玩家的体验着实差劲!不要再让遥控
    的头像 发表于 11-24 18:05 682次阅读
    扔掉手机APP吧!教你用乐鑫科技ESP32-S3 2.8寸彩屏爆改专业<b class='flag-5'>遥控</b>器!启明云端乐鑫代理

    【项目实战】基于STM32F103的智能小车(远程控制、超声波避障、循迹、红外遥控)有教程代码

    在嵌入式开发学习中,实战项目是将理论转化为能力的最佳载体——本次【项目实战】聚焦基于STM32的智能小车,不仅整合了红外遥控、微信小程序远程物联控制、自适应巡线、动态避障系统、交互式显示屏五大
    的头像 发表于 09-08 16:06 1702次阅读
    【项目实战】基于<b class='flag-5'>STM32</b>F103的智能<b class='flag-5'>小车</b>(远程控制、超声波避障、循迹、红外<b class='flag-5'>遥控</b>)有教程代码

    智能小车设计源码和图纸资料

    智能小车设计源码和图纸
    发表于 08-25 15:38 1次下载

    PS176HDMQFN48GTR2规格书

    DP转HDMI协议转换器PS176是一个DisplayPort 1.2a到HDMI 2.0协议转换器,可以接收视频和音频流从DisplayPort链接并转换为TMDS输出。TMDS发射器符合HDMI
    发表于 07-02 11:09 2次下载

    芯岭技术XL117PS无线发射芯片,高度集成,支持315/433MHz频段

    输出使通信距离更远,零功耗待机模式可使电池用的更加持久。XL117PS采用SOP8封装。 XL117PS芯片专为低功耗遥控应用设计。适合用于遥控门禁系统,电动车/汽车钥匙,智能照明开关
    的头像 发表于 06-17 15:16 1414次阅读
    芯岭技术XL117<b class='flag-5'>PS</b>无线发射芯片,高度集成,支持315/433MHz频段

    基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)下载

    基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)推荐下载!
    发表于 05-29 21:45

    芯岭技术XL117PS无线发射芯片,集成编码器,支持EV1527标准编码

    ,5V时为10mA。此外,还有良好的ESD保护和低电压报警功能。 XL117PS应用范围涉及遥控门禁、电动车遥控器、照明开关和遥控玩具
    的头像 发表于 05-28 15:22 1269次阅读
    芯岭技术XL117<b class='flag-5'>PS</b>无线发射芯片,集成编码器,支持EV1527标准编码

    STM32裸机及FreeRTOS项目分享:U575智能手表+F103智能循迹避障小车(附全套教程/代码)

    条理。今天就给大家分享2个项目,一个是STM32裸机项目智能手表,另一个是RTOS项目智能小车,两个项目都配套项目教程文档和项目源码,可以在文末添加好友免费领取。智能手表项目项目简介本项
    的头像 发表于 05-27 17:09 1778次阅读
    <b class='flag-5'>STM32</b>裸机及FreeRTOS项目分享:U575智能手表+F103智能循迹避障<b class='flag-5'>小车</b>(附全套教程/代码)

    【每周推荐】基于STM32开发项目实例下载(含PCB、原理图、源码等)

    1、手机APP远程控制,智能家居监测、智能控制系统(含源码)手机APP远程控制,智能家居监测、智能控制系统(STM32L4、服务器、安卓源码)项目实例下载!2、基于STM32蓝牙控制小车
    的头像 发表于 05-27 08:05 1458次阅读
    【每周推荐】基于<b class='flag-5'>STM32</b>开发项目实例下载(含PCB、原理图、源码等)

    基于STM32蓝牙控制小车系统设计(硬件+源代码+论文) 项目实例下载

    基于STM32蓝牙控制小车系统设计(硬件+源代码+论文) 项目实例下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-23 20:55

    【硬核项目】STM32F103 智能小车全栈开发:红外循迹 / 避障算法 + WiFi 远程控制,附原理图与代码

    今天为大家推荐一款功能强大的STM32多功能智能小车——华清远见STM32F103智能云控小车。这款小车集红外
    的头像 发表于 05-16 17:11 2478次阅读
    【硬核项目】<b class='flag-5'>STM32</b>F103 智能<b class='flag-5'>小车</b>全栈开发:红外循迹 / 避障算法 + WiFi 远程控制,附原理图与代码

    PS2-41/NF 系列与PS2-41-200/NF系列功率分配器/合路器

    PS2-41/NF系列和PS2-41-200/NF系列是MCLI专为射频系统设计的高精度功率分配器与合路器,广泛应用于通信基站、雷达系统及工业电子设备中。其核心优势在于低插入损耗、高隔离度以及出色
    发表于 05-16 09:45