学习做一名创客,搭建多功能机器人

佚名 发表于 2018-06-29 09:25:01 收藏 已收藏
赞(1) •  评论(0

学习做一名创客,搭建多功能机器人

佚名 发表于 2018-06-29 09:25:01

要学习做一名创客,从套件搭建多功能机器人不失为一种有效的方法,因为它提供机会学习多个相关领域的知识,包括微控制器、传感器、电机、软件开发等。而且,不论对于初学者还是经验丰富的创客,都有大量的机器人套件、插件和在线帮助供其选择。

本文讨论在基于 DF Robot 的 Devastator 坦克平台(图 1)搭建机器人时,应该考虑的一些实用步骤、问题和可能的升级。

DFRobot Devastator 图片

图 1:DFRobot Devastator 是可帮助设计人员和创客学习广泛的电子和软件技能的多功能平台。(图片来源:DFRobot)

为什么选择 Devastator?它坚固耐用,采用铝构造,并具有两个金属齿轮有刷直流电机。它能搬运重达 3 kg 的载荷,具有多个可用于安装传感器、伺服机构、机器人手和其他配件的安装孔,而且可兼容所有流行的、适合创客使用的微控制器板。

搭建完整的机器人系统

机器人附带底座、轮子、履带和两个电机,其他组件的选择则取决于设计人员。完整的系统需要一块微控制器板、一块电机驱动器板和一种输入命令的方法。可选的插件可能包括机器人手、摄像机等组件,或旨在提供一定程度的自主操作的防撞系统。

选择微控制器平台

Devastator 机器人可兼容多种流行的微控制器平台。Arduino 开源开发平台于 2003 年在意大利问世,并为初学者和专业设计人员广泛使用。Arduino Uno(图 2)使用 Microchip Technology(原 Atmel)的 ATmega328P 8 位 RISC 微控制器。

其他标准功能包括:一个受预编程的 ATmega16U2 微控制器控制的 USB 端口、多路数字输入和输出、一个模拟输入端口,以及一个用于软件更新的在线串行编程 (ICSP) 端口。更新的 Arduino Due 将内核升级为一个 32 位 ARM® Cortex®-M3。此内核还在下文讨论的 DFRobot 控制器板中使用,而该控制器板同时具备 Arduino 的兼容性和电机驱动器。

Arduino Uno 图片

图 2:Arduino Uno 是创客项目的流行选择,并且基于 Microchip Technology 的 ATmega328P 8 位 RISC 微控制器。(图片来源:Arduino)

Raspberry Pi 单板计算机最初在学校用于基础计算机科学教学,但如今在创客社区变得极为流行。最新的 Raspberry Pi 3 基于以 1.2 GHz 频率运行的 Broadcom 64 位四核 CPU。它包含 802.11n 无线 LAN、蓝牙 4.1 和低功耗蓝牙 (BLE)。还包含 1 GB RAM、一个微型 SD 卡插槽、4 个 USB 端口、多个 HDMI 和以太网端口、一个摄像头接口、40 个 GPIO 引脚,以及其他专用接口。

希望运用其现有经验的 Windows 专家可以从使用 Devastator 兼容型 LattePanda 控制器板开始,因为该板附带已安装并激活的完整版 Windows 10。该板使用一个以 1.8 Ghz 频率运行且捆绑了一个协处理器的四核 CPU,还使用了 Microchip 的 8 位 Atmega32u4 以实现 Arduino 兼容性。

LattePanda 附带 2 GB DDR3L RAM 和多达 32 GB 存储,一个 USB 3.0 和两个 USB 2.0 端口,Wi-Fi,蓝牙 4.0,一个协处理器,以及在两个处理器之间划分的合计 22 个 GPIO。

控制电机

确定微控制器内核后,下一步是选择电机控制板。Devastator 包含两个以 160 rpm(无负载)速度工作的 6 伏 (V) 电机。每个电机的最大输出扭矩为 0.8 kgf.cm (0.058 ft-lb.),最大失速电流为 2.8 安 (A)。

Raspberry Pi 需要插件扩展板来实现机器人特定的功能,不过 DFRobot 的 DFR0398 Romeo BLE Quad 板为 Arduino 爱好者提供了同时包含微控制器和电机驱动器的单板选件(图 3)。该板提供了比 UNO 衍生产品更强大的内核,但仍保持了 Arduino 软件兼容性。

微控制器为 STMicroelectronics 的 STM32F103RET6:此器件使用以 72 MHz 频率运行的 ARM® Cortex®-M3 32 位内核,并包含 512 KB 闪存、一个电机控制脉冲宽度调制 (PWM) 模块、16 个 12 位模数转换 (ADC) 通道,以及两个 12 位数模转换 (DAC) 通道。

DFRobot DFR0398 Romeo BLE Quad 图片

图 3:DFR0398 Romeo BLE Quad 是可兼容 Arduino 的机器人控制板,并带有蓝牙功能和用于四个电机的驱动器。(图片来源:DFRobot)

电机驱动器由两个 Microsemi HR8833 器件实现。每个 MOSFET 驱动器包含两个 H 桥驱动器,用于 Devastator 电机的双向控制。Romeo BLE Quad 包含四个编码器接口,而且集成了 Texas Instruments 的 CC2540 射频收发器,用于实现蓝牙 4.0 无线连接。

添加电源

微控制器板本身通用 USB 连接器以 5 伏电压运行,但电机需要具有更高电压和电流的便携式(即电池)电源。许多创客采用最初用于无线电遥控 (RC) 车的廉价可充电电池组。这些电池组通常具有 7 伏或更高的电压和超过 5000 毫安时 (mAh) 的容量,并且可以轻松更换原始连接器。Romeo BLE Quad 伺服电源端口可接受 7 到 10 伏直流电。

微控制器板编程

在微控制器板上安装软件非常简单,面向创客的供应商在其网站上提供了分步说明。

在确定操作系统 (OS) 时,选择因平台而异。LattePanda 板附带已安装好的 Windows。Raspberry Pi 提供了多种选项,包括 Windows IoT Core 和各种 Linux 版本。Raspbian 是开源 Debian Linux OS 的变型,也是创客社区中最常见的选择。

另一方面,Arduino 并不使用传统的操作系统;Arduino 平台使用的是一个通过代码序列重复循环的循环执行程序。开发人员使用开源的 Arduino 集成开发环境 (IDE) 编写和安装代码。它是以 Java 编写,并且适用于 Windows、Mac OS X 和 Linux 主机的跨平台应用。在 Arduino 环境中,有几个项目具有自己的术语。例如,Arduino 兼容型插件板被称为“盾板”,软件模块则被称为“草图”。

使用 Romeo BLE Quad 编程

由于 Romeo BLE Quad 板是包含高级外设的单板机器人解决方案,因此后面的讨论中将使用该板。

首先,为主机选择首选操作系统,并从 Arduino 网站下载相应的 IDE。尽管 DF Romeo BLE Quad 没有使用与标准 Arduino 硬件相同的 Atmega328 处理器,但软件开发流程是相似的,因为该板与 Arduino IDE 是兼容的。

该 IDE 支持超过 25 款的来自多家制造商的开发板,但 Romeo BLE Quad 不在其中。Romeo BLE Quad 是另一块 DFRobot 板 Bluno M3 的一个版本,并添加了电机驱动器。要配置 IDE,必须先从开源 GitHub 网站下载 Bluno M3 文件。

要安装此文件:

  1. 打开 Arduino IDE 并转至 File(文件)-> Preferences(偏好)。将 GitHub 链接复制到“Additional Boards Manager URLs(更多板管理器 URL)”框中,然后单击“OK(确定)”。

  2. 转至 Tools(工具)-> Board(板)-> Board Manager(板管理器),在搜索框中输入“Bluno M3”,然后单击“Install(安装)”。随即下载配置文件。

  3. 从 Tools(工具)-> Board(板)菜单中选择 Bluno M3 板。

系统现在做好了进行应用开发的准备。标准 IDE 支持 C 和 C++ 编程,并且包含多个代码示例。开发人员使用文本编辑器编写草图(程序)(图 4)。

Arduino IDE 屏幕和文本编辑器图片

图 4:Arduino IDE 屏幕和文本编辑器:新程序中包含两个必要的函数。(图片来源:Arduino)

然后 IDE 对代码进行调试,交叉编译,并通过在线串行编程 (ICSP) 端口将结果上传到微控制器板。Romeo BLE Quad 还可通过其蓝牙端口进行编程。

文本编辑器从一个新程序开始,该程序包含两个预载的必要函数,并且已准备好添加代码:setup() 用于配置初始条件并且仅执行一次,然后连续运行 loop()。

必须下载并安装两个 Arduino 库,才能使用 Romeo BLE Quad 来运行 Devastator 电机:Motor.h 和 PID_v1.h。

电机代码首先通过一个 include 语句请求将这两个库作为头文件,并定义 I/O 引脚和一些初始常数,然后在 setup() 部分配置电机(列表 1)。

Copy/*!* @file RemeoBLEQuadDrive.ino* @brief RemeoBLEQuadDrive.ino PID control system of DC motor**  RemeoBLEQuadDrive.ino Use PID control 4 way DC motor direction and speed** @author linfeng(490289303@qq.com)* @version  V1.0* @date  2016-4-14*/ #include "PID_v1.h"#include "Motor.h" Motor motor[4];int motorSpeed[4] = {-200,200,400,-400};/*Set 4 speed motor*//* Speed=motorSpeed/(32*(setSampleTime/1000))(r/s) */const int motorDirPin[4][2] = { //Forward, Backward/*Motor-driven IO ports*/  {8,23},  {7,9},    {24,14},  {4,25}};  //const double motorPidParam[3]={0.6,1,0.03};/*DC MOTOR,Yellow??180degree*///const double motorPidParam[3]={1.5,1,0.05};/*DC MOTOR,Yellow??90 degree*/const double motorPidParam[3]={1.2,0.8,0.05};/*Encoder V1.0,160rd/min ;19500/min; 32:1,Kr=3.5*/void setup( void ){  Serial1.begin(115200);     for(int i=0;i<4;i++){                                motor[i].setPid(motorPidParam[0],motorPidParam[1],motorPidParam[2]);/*Tuning PID parameters*/                                motor[i].setPin(motorDirPin[i][0],motorDirPin[i][1]);/*Configure IO ports*/                                motor[i].setSampleTime(100);/*Sets the sampling period*/                motor[i].setChannel(i);/*Sets the motor channel */                                motor[i].ready();/*Motor enable*/                motor[i].setSpeed(motorSpeed[i]);/*Set motor speed*/                }} void loop( void ){                for(int i = 0; i < 4; i++){                                motor[i].calibrate();/*motor PID calibrate*/                } }

列表 1:此 C 代码示例用于配置和控制 Romeo BLE Quad 的四个 Arduino 电机。(代码来源:DFRobot)

Setup() 和 loop() 部分用于配置和控制四个电机通道。由于 Devastator 底盘只需要两个电机,因此可将备件用于下面讨论的机器人手等配件。

以无线方式控制机器人

可以将一根 USB 电缆插入控制板,并操纵机器人四处移动,但通过 Wi-Fi 或蓝牙使用智能手机、平板电脑或计算机来无线控制它无疑要方便得多。如前所述,Romeo BLE Quad 包含与 Bluno 平台相同的蓝牙 4.0 模块。GitHub 提供了适用于 iOS 7.0+ 和 Android 4.3+ 的开源应用。利用这些应用,设计人员可以远程控制机器人并上传新的草图。

升级基本设计

组装基本设计之后,下一步通常是添加配件,使机器人能够执行一些有用的任务(图 5)。以下是一些升级尝试。

DFRobot URM37 v4.0 超声传感器和 Adafruit 397 摄像模块图片

图 5:DFRobot URM37 v4.0 超声传感器(左侧)和 Adafruit 397 摄像模块(右侧)是两种流行的配件(图片来源:DFRobot 和 Adafruit)

检测并避开障碍物是移动机器人需要的一项功能。DFRobot URM37 v4.0 超声传感器输出与距离成正比的电压,并且可兼容 Arduino 和 Raspberry Pi。该传感器可检测物体或墙壁的存在,然后由代码执行随机转向,机器人继续在新方向上移动。

将该机器人升级为移动摄像机是另一项流行的升级。Adafruit 397 摄像模块可以捕获视频或静态图片。该摄像机及其 CMOS 图像传感器能以 30 帧每秒 (fps) 的速度捕获 640 x 480 像素的图像,并且具备运动检测功能。

考虑在机器人手(例如图 6 所示的 DF05BB 倾斜/平移组件)上安装摄像机。该套件包含两个托架和两个 DF05 伺服电机,适合水平安装。

DFRobot DF05BB 倾斜/平移安装图片

图 6:DFRobot DF05BB 倾斜/平移安装附带两个伺服电机和两个托架。(图片来源:DFRobot)

全部组装到一起

完整的 Devastator 机器人包括底盘、控制器板、扩展板和超声传感器(图 7)。为方便起见,两个板位于平台上部,但如果需要一个顶部安装的可移动摄像机,则也有一个下部安装平台。

Devastator 底盘、控制器板、电机控制扩展板和超声传感器图片

图 7:此完整设计示例包括 Devastator 底座、控制器板、电机控制扩展板和超声传感器。(图片来源:DFRobot)

总结

DFRobot 是基于创客的卓越平台,适合设计人员和创客在有趣且具备良好支持的环境中探索软件开发、微控制器功能、传感器选项和电机控制。


赞(1)

收藏

相关话题
文章来源专栏
+关注

评论(0)

加载更多评论

参与评论

相关文章

分享到

QQ空间 QQ好友 微博
取消