开启辅助访问
 找回密码
 立即注册

利用Arduino平台,让XBox手柄遥控你的电动玩具

morningnews 回答数2 浏览数1113
声明:本文并不包含广告,作者没有同卖家进行任何的商业合作,也不保证供货。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
物美价廉的电动遥控小车遍地皆是。这些小车都会带一台比较廉价的4通道遥控系统,体积大而操纵诡异。家里游戏机的手柄用起来倒是很舒服。这篇文章介绍如何使用游戏机手柄来遥控电动遥控小车。
系统架构



系统架构

整个系统分为两部分,车载部分和无线中继。这两个部分实际上可以合二为一,主要是考虑到车上不适合放太多东西,以及不同手柄的适配问题,所以选择了分开的方案。
车载电子

物料清单如下:

车载端物料清单

物理安装

首先将马达驱动扩展板和Arduino Uno合体。上电之后绿色指示灯亮。
顽皮龙D-12的电机、电池、开关端子都是XH公头,2.54mm的杜邦线就可以插进去而且比较牢固。按照如下步骤操作:

  • 取一对杜邦线,一端与玩具车的电机链接,另一端剥去塑料壳,用钳子压扁,接在Motor扩展板的任意一台马达通道上(例如通道4)。
  • 取单根杜邦线,链接开关的端子和电池端子。再取一对杜邦线,一端链接电池负极和开关的另一端子;另一端接在Motor扩展板的电源通道上(剥去塑料壳,用钳子压扁)
  • 将转向舵机的线直接链接在Motor扩展板的SERVO_1上(即靠近板子边缘的那个),注意红色为电源正极
  • 取一组三根杜邦线,把串口透传模块的VCC和GND链接到SERVO_2 的VCC和GND上,再把串口透传模块的RX接在SERVO_2的信号线上。
软件写入

我们需要的是Arduino的Motor Shield库,在安装库界面搜索并安装这个库:

注意shield V1字样

库安装好之后,可以利用自带的Motor例子跑一跑。也可以利用自带的Servo库,将servo attach到pin10上,观察前轮的转向。如果你的USB是链接到一台带有外接电源的USB Hub上,则可以完全不用小车自带的电池。
如果测试没有问题,则可以下载作者开发的驱动程序:
无线透传模块要按照文档配置好,确保没有问题,就可以把另外一台模块使用USB转串口,接到电脑上,然后给小车接通电源,从电脑上启动串口调试助手,发送十六进制指令,遥控小车。每个指令都是一台字节。指令如下:

  • 0xC0~0xCF,前进,速度依次增大(0xC0为停止)
  • 0xE0~0xEF,后退,速度依次增大
  • 0x80~0x84,左转向,角度依次增大(0x80为归位)
  • 0xA0~0xA4,右转向,角度依次增大
车上的部分就到此为止。你至少可以在电脑上通过发送命令的方式遥控小车了。
无线中继

无线中继是把手柄的指令翻译为刚才我们定义的小车指令。
物料清单如下:

无线中继的物料清单

实际上还需要刚才的一些杜邦线和插针。通常USB Host Shield不会帮你焊接,所以还需要一些焊接的工具和材料。
对USB Host Shield迷你板进行Hack

为啥选用迷你版,主要是成本上的考虑。与官方兼容的大板是和Arduino Uno匹配的,售价比较高,一块就90元。而且我们还希望使用ESP-32这种性能比较高的单片机,省事以后扩展为语音识别之类的。
我们在国内能够买到的这个迷你板,存在设计上的缺陷:因为主控芯片是3.3V的,板子出于成本考虑没有做电压转换,而且也没有预留的焊盘。如果板子不hack掉,那么它只能驱动3.3V的USB设备,这样就非常奇怪了。
hack的方法,是用美工刀割开给USB供电的导线,并从外部引入5V电源:如下图:

注意2K2附近的刀割划痕,与之相连的焊盘上已经焊接了5V电源供入的条线针

硬件链接

将硬件以下图方式链接在一起,ESP-32以及无线串口都可以使用3.3V,所以可以直接链接。

无线中继的硬件链接,左侧红色是无线串口

烧录固件

首先,安装USB Shield的库。官方的库有点问题,笔者已经进行了修缮,见
然后安装ESP-32的SoftSerial库:

最后烧入协议转换的固件,协议转换固件比较简单,就是把XBox的LT转换为前进,RT转换为后退,左侧无极轴用于方向
使用道具 举报
| 来自上海
当贝投影