Releases: QingchenWait/ShipDominator
驭船术 V7:最终版本
驭船术 V7
最终交付的版本,可用于垃圾收集船实物的控制程序。
-
更新和修复
新增 - 引入了两个新的 DC 马达,用于控制船体中用于运输垃圾的传送带,可以通过蓝牙控制它们的启停。
修改 - 适配了 Arduino Mega 2560 版控制器。
修改 - 适配了在实物中使用的两个马达驱动板(具体型号将在下面提及)。
修改 - 为了控制程序的易调试性,删去了 OLED 屏幕显示运行状态的功能,改为直接在遥控端 APP 上进行显示。 -
使用的零件
Arduino Mega 2560 开发板 x1;面包板 x1;9V 电源模块 x1;DC 马达 x4;
Cytron MDD10A 10A 5-30V Dual Channel 马达驱动板 x1(用于驱动为船体提供航行动力的马达);
L293D 600mA Dual H-Bridge Motor Driver Shield x1(用于驱动使传送带运转的马达);
HC-05 蓝牙接收模块 x1;Android手机 x1;“蓝牙调试器”安卓端软件; -
注意事项
(1) 对于一块新的蓝牙模块,首先需要向 Arduino 烧录V6
版本中附带的Bluetooth_AT_InitializeV2
文件夹下的程序(或者直接下载本版本下的文件,然后使用Bluetooth_AT_Initialize
文件夹下的程序)。这个程序的功能,是将 HC-05 模块初始化,并自动设定各项参数。接线方式如图:
(2) 马达驱动板的厂商,已经对引脚功能进行了预先定义,在接线的时候,需要遵循这些定义。L293D 驱动板的功能如下表所示:
Motor | Control | PWM | IN1 | IN2 |
---|---|---|---|---|
MOTOR1 | M1A/M1B | D6 | D2 | D3 |
MOTOR2 | M2A/M2B | D9 | D4 | D5 |
MOTOR3 | M3A/M3B | D10 | D7 | D8 |
MOTOR4 | M4A/M4B | D11 | D12 | D13 |
L293D | MDD10A | HC-05 | |||
---|---|---|---|---|---|
引脚名称 | To Arduino | 引脚名称 | To Arduino | 引脚名称 | To Arduino |
DIR1 | D31 | D6 | D3 | VCC | 5V |
PWM1 | D5 | D2 | D39 | GND | GND |
DIR2 | D33 | D3 | D41 | TXD | RX |
PWM2 | D6 | D9 | D4 | RXD | TX |
GND | GND | D4 | D43 | ||
D5 | D45 |
- 控制端 APP 逻辑
(1) Power On 按钮: 发送 P - 开启所有马达
(2) Power Off 按钮:发送 O - 关闭所有马达
(3) Left 按钮:发送 L - 左转3秒
(4) Right 按钮:发送 R - 右转3秒
(5) Speed Up 按钮:发送 W - 提高转速
(6) Speed Down 按钮: 发送 S- 降低转速
(7) Turning L 按钮:按下时发送 A - 持续左转;松开时发送 T - 停止左转
(8) Turning R 按钮:按下时发送 D - 持续右转;松开时发送 T - 停止左转
(9) Belt On 按钮:按下时发送 B - 启动传送带;
(10) Belt Off 按钮:按下时发送 E - 关闭传送带;
控船术 V6
控船术 V6
之前的数个更新版本,并未加入此分支。这里直接给出在实物阶段之前的 V6 测试版本。
-
更新和修复
新增 - 蓝牙远程控制功能。可以在手机上安装蓝牙串口通讯 APP,连接到蓝牙模块,实现稳定便捷的远程遥控。
新增 - OLED 状态屏显功能:在船体上安装一块 OLED 屏幕,可以同时在船体和遥控端 APP 上,查看实时运行状态。
新增 - 加速 / 减速功能:为马达设置了 3 档速度,可以在手机遥控端实现船体的 加速 / 减速 。
新增 - 持续转向功能:在手机遥控端,按住按钮,可以一直转向,直到松开按钮。 -
使用的零件
Arduino Uno 开发板 x1;面包板 x1;供电模块 x1;DC电机 x2;L293D控制芯片 x1;
HC-05 蓝牙接收模块 x1;Android手机 x1;“蓝牙调试器”安卓端软件;SSD1306 128x64 I2C OLED 模块。 -
注意事项
(1) 在向Ardunio上传烧录程序之前,需要预先导入 Adafruit_SSD1306-2.2.0 和 Adafruit-GFX-Library-1.7.6 两个驱动 OLED 屏幕的第三方库。 需要在主界面顶部的菜单中,选择“项目 - 加载库 - 添加 .ZIP库“,找到它们的压缩包文件。
(2) Adafruit_SSD1306 库,默认的配置是针对于驱动 128x32 分辨率的屏幕。因此,在加载库函数完成以后,必须要对库函数进行修改。这个第三方库的位置,一般在 "文档 - Arduino - libraries - Adafruit_SSD1306"里。打开这个文件夹,可以看到一个名为 Adafruit_SSD1306.h 的文件。用记事本的方式打开它,找到 "//#define SSD1306_128_64" 语句,将它前面的 "//" 删去,这样可以让这一行取消注释、发挥作用;然后将 "#define SSD1306_128_32" 语句前面加上 "//" ,将其注释掉。
(3) 为了让L293D成功控制转速,必须把芯片的两个Enable端连接到Arduino上的PWM引脚,这样才能为芯片传传递具有脉冲宽度的PWM信号。在Arduino上,有标注 "~" 的引脚才是PWM引脚。
(4) 对于一块新的蓝牙模块,首先需要向 Arduino 烧录 Bluetooth_AT_InitializeV2 文件夹下的程序。这个程序的功能,是将 HC-05 模块初始化,并自动设定各项参数。接线方式如图:
-
控制端 APP 逻辑
(1) Power On 按钮: 发送 P - 开启马达
(2) Power Off 按钮:发送 O - 关闭马达
(3) Left 按钮:发送 L - 左转3秒
(4) Right 按钮:发送 R - 右转3秒
(5) Speed Up 按钮:发送 W - 提高转速
(6) Speed Down 按钮: 发送 S- 降低转速
(7) Turning L 按钮:按下时发送 A - 持续左转;松开时发送 T - 停止左转
(8) Turning R 按钮:按下时发送 D - 持续右转;松开时发送 T - 停止左转
控船术 V2
控船术 V2
-
更新和修复
新增 - 通过 L293D 控制芯片,使用 Arduino 同时驱动两个 DC 马达,并通过红外遥控器控制马达启停。
修改 - 由于第二个马达的引入,修改了马达控制引脚的变量名。“L" 开头的变量代表左侧马达,"R" 开头的变量代表右侧马达。
修改 - 响应输入信号后留给系统中断的延迟,由 delay(500) 修改为 delay(200) 。暂未对程序的运行产生负面影响。 -
使用的零件
Arduino Uno 开发板 x1;面包板 x1;供电模块 x1;DC电机 x2;L293D控制芯片 x1;
红外接收器 x1;遥控器 x1;导线若干。 -
注意事项
(1) 在向Ardunio上传烧录程序之前,需要预先导入 IRremote 库。 需要在主界面顶部的菜单中,选择“项目 - 加载库 - 添加 .ZIP库“,找到名为IRremote的压缩包文件。
(2) 为了让L293D成功控制转速,必须把芯片的两个Enable端连接到Arduino上的PWM引脚,这样才能为芯片传传递具有脉冲宽度的PWM信号。在Arduino上,有标注 "~" 的引脚才是PWM引脚。
(3) 关于两个GND引脚的接线:鉴于UNO板在数字信号区只有一个GND引脚,将两个马达都接在该区域内的引脚显然是不现实的。可以像接线图中所示、利用面包板创建并联电路。 -
控制逻辑
(1) 按下电源键:两只马达同时开始运转。
(2) 按下 |<< 键:模拟左转,左马达停转,右马达转动;3秒后,两只马达继续正常运转。
(3) 按下 >>| 键:模拟右转,右马达停转,左马达转动;3秒后,两只马达继续正常运转。
(4) 按下STOP键:两只马达同时停转。
控船术 V1
控船术 V1
-
新增功能
一些基本功能的实现:成功使用Arduino驱动DC马达,并通过红外遥控器控制马达启停。 -
使用的零件
Arduino Uno 开发板 x1;面包板 x1;供电模块 x1;DC电机 x1;L293D控制芯片 x1;
红外接收器 x1;遥控器 x1;导线若干。 -
注意事项
(1) 在向Ardunio上传烧录程序之前,需要预先导入 IRremote 库。 需要在主界面顶部的菜单中,选择“项目 - 加载库 - 添加 .ZIP库“,找到名为IRremote的压缩包文件。
(2) 在录制实验结果视频的时候,发现手机的摄像头,以及OLED屏幕,居然会对红外接受模块产生干扰,导致接收失败!这一点仍然需要进一步验证。