如何通过蓝牙将PS3手柄连接到Arduino

手头正好有一个PS3遥控手柄(DUALSHOCK3),尝试将它连接至Arduino上,实现对小车的控制。开始认为将PS3手柄通过蓝牙连接到Arduino上比较麻烦,但实际并不像我想象的那么难。下面让我们来谈谈通过蓝牙如何将PS3手柄与Android进行配对。

PS3 DUALSHOCK3 通过usb_host_shield实现与Arduino的连接

一、安装USB扩展板的Arduino库文件

Arduino usb host shield

老套路,首先启动Arduino IDE,启动后先不管它。连接USB控制器和arduino的方法有很多,但本文使用的是USB_Host_shield_2.0 library 扩展库。先下载这个库文件 USB_Host_Shield_2.0 Library,下载后得到‘USB_Host_Shield_2.0-master.zip’文件,这里不需要解压缩,回到Arduino IDE,“项目–>加载库–>添加一个.zip库”,在弹出窗口中导航到‘USB_Host_Shield_2.0-master.zip’文件存放的位置,选中它后,点击“打开”按钮,即可完成USB_Host_shield_2.0 library 扩展库的添加。

Arduino IDE添加zip扩展库

库文件添加完成后,IDE并不会有任何提示,我们需要去验证它是否真的添加成功了,再回到Arduino IDE,“文件–>示例–>USB Host shield library 2.0 ”这里增加了一个第三方库,则表示库文件添加成功了。同时在USB Host shield library 2.0 下应该还能看到‘PS3BT’的示例文件,后续会用到。

Arduino添加usb host shield library

二、蓝牙适配器与PS3手柄的配对

因为USB HOST Shield扩展板本身都没带蓝牙功能,要实现蓝牙连接需要添加USB蓝牙适配器。本文是用的是CSR V4.0蓝牙适配器。

1、修改settings.h文件,找到42行 #define ENABLE_UHS_DEBUGGING 0,修改为:#define ENABLE_UHS_DEBUGGING 1,这样可以通过串口监视器监控连接状态。

////////////////////////////////////////////////////////////////////////////////
// DEBUGGING
////////////////////////////////////////////////////////////////////////////////

/* Set this to 1 to activate serial debugging */
#define ENABLE_UHS_DEBUGGING 1

2、将USB扩展板插到Arduino uno上,将蓝牙适配器插到USB扩展板的USB接口。

usb host shield添加bluetooth适配器

3、打开Arduino IDE,打开“文件–>示例–>USB Host shield library 2.0–>PS3BT ”,写入前需要对示例代码做点小修改,目的是可存储蓝牙地址。

/* You can create the instance of the class in two ways */
//PS3BT PS3(&Btd); // This will just create the instance
PS3BT PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); // This will also store the bluetooth address

PS3BT代码修改

同时,上图中:Serial.begin(115200)需要将串口波特率修改为9600,写入PS4BT。串口监视器显示如下:

蓝牙适配器的 MAC address

这里可看到蓝牙适配器的MAC地址。

4、拔下拉延适配器,将PS3手柄通过USB数据线插入USB扩展板的USB接口,然后在按“PS”按钮,手柄上的LED等将会一直闪烁,同时串口监视器将读出PS3手柄的MAC地址;

读取PS3手柄的MAC地址

5、再移除PS3手柄,将蓝牙适配器插回USB扩展板,大约5秒后,手柄LED灯将停止闪烁且1号LED等常亮,此时如果没有按“PS”按钮的话,配对就完成了。同时串口监视器显示如下:

PS3 DUALSHOCK3手柄与Arduino配对成功状态

总结

PS3手柄与Arduino的配对过程与其他大多数蓝牙设备的配对有所差异。PS3手柄与Arduino的配对,需要先通过USB扩展板将蓝牙适配器的MAC地址存储下来,然后再将手柄的MAC地址也读取并存储下来,这样才能完成配对。小提示:在PS3手柄的底部有一个重置插孔,可以通过它把配对状态清除掉。

标签: