搭建 Devastator 机器人,在享受乐趣的同时学习传感器、MCU、软件和电机控制知识

要学习做一名创客,从套件搭建多功能机器人不失为一种有效的方法,因为它提供机会学习多个相关领域的知识,包括微控制器、传感器、电机、软件开发等。而且,不论对于初学者还是经验丰富的创客,都有大量的机器人套件、插件和在线帮助供其选择。
本文章讨论在基于 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)。
/*!
* @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 是基于创客的卓越平台,适合设计人员和创客在有趣且具备良好支持的环境中探索软件开发、微控制器功能、传感器选项和电机控制。
此外,Digi-Key 的网站上也提供了许多资源。例如,单击此处可了解关于 Arduino 平台编程的更多信息。Digi-Key 还提供帮助,使用最流行的 Pi 语言 Python 为 Raspberry Pi 编程。以上讨论的所有产品都有广泛的文档、应用说明和教程。
完成此项目后,还可以尝试其他许多项目。 Maker.io 致力于创客运动,可提供大量特色项目、资源、资金来源及其他支持。

用户喜欢...

电路设计人员对健壮,可穿戴的健康传感器系统设计的需求

今年全球可穿戴技术市场价值300亿美元,预计未来3年将增长9%,但从2019年开始,到2023年,增长率几乎将呈指数增长至100亿美元。 电路设计工程师需要快速将产品推向市场,但由于时间紧迫,...


使用光学传感器解决传感挑战

能够适应不断变化的应用要求的测量系统是首选,因为不断增长的成本压力需要较长的系统寿命和功能灵活性。开发此类系统的最有效方法是使用像PXI这样的软件定义的模块化架构。可以混合和...


实际传感器的调节技术

现代传感器可以检测多种真实的模拟属性 - 温度,力,压力,湿度,流量和功率,仅适用于初学者。反过来,它们通常与它们各自的环境刺激成比例地输出一定水平的电压,电流,电荷或电阻模...


电源引脚上的单线接口,用于传感器信号调节器校准

校准是许多传感器(或变送器)制造过程中的关键步骤,例如压力,温度和位置传感器。校准所需的一个关键组件是传感器和校准系统之间的通信接口。该通信接口涉及传感器和校准系统中的硬...


自主汽车传感器:处理器算法如何获得输入

尽管鉴于最近特斯拉级别S的死亡,有关自主汽车消亡的非技术性媒体报道,我想在本文中介绍传感器电子设备,结合更好和更精细的软件算法,最终将实现在未来十年内,一辆安全,完全自主...


相位多路复用技术改善了多传感器读数

一位同事正在研究设计智能手表,健身可穿戴设备等所固有的一些挑战。主要挑战之一是如何获得更好的信号质量以获得更准确的血氧测量。该解决方案基于我们之前的扩频技术经验。我们意识...


辐射传感器设计和应用:LS 3N163

无线实时辐射传感器网络为普通公众和在高辐射区域工作的人提供更好的辐射危害保护。结合辐射水平的实时本地化和全球热图,这些辐射网络将有助于政府和环境机构了解辐射景观,并在辐射...


带嵌入式传感器的地理标记兼容LoRaWAN

Everynet平台副总裁Jon Pearce会面。Pearce教会了我需要了解的关于LoRaWAN及其技术方面的所有内容;他在该领域拥有广泛的背景,特别是因为他以前是Microchip Technology的LoRaWAN产品的产品线经理,也是...


恩智浦S32V视觉和传感器融合评估板

概述 恩智浦S32V234-EVB是支持S32V230系列的评估系统和开发平台。该系列产品专为高性能、安全的计算密集型应用而设计,如汽车前视、环视和传感器融合。有两个EVB选件可用 - 一个有内置显示,...


S32V234适用于ADAS、NCAP前视摄像头、异物检测和识别、环视、机器学习和传感器融合应用

概述 S32V234是我们的第二代视觉处理器系列,旨在支持图像处理的计算密集型应用,并提供了一个ISP、强大的3D GPU、双APEX-2视觉加速器和安全性,以及支持SafeAssure。S32V234适用于ADAS、NCAP前视摄...


TLE493D-W2B6低功耗3D霍尔传感器提供精确的三维传感,功耗极低

TLE493D-W2B6低功耗3D霍尔传感器提供精确的三维传感,功耗极低。 TLE493D-W2B6采用小型6引脚封装,可直接测量磁场的x,y和z分量。 传感器可由微控制器配置,测量数据以数字格式提供给微控制器。...


这些传感器具有额外的感官感知

传感器是物联网(IoT)的支柱,用于从监控脉冲到家中空气质量的各个方面。它们可以跟踪电机的运行情况,甚至跟踪运动。 Microchip的MGC3140(图1)是一款三维(3D)手势识别控制器,面向汽车...


SAM L10 /L11ARM®Cortex®-M23 MCU

微芯片技术SAM L10 / L11 ARM皮质-M23 MCU是超低功率,32位MCU用的TrustZone,加密,和增强的正温度系数(PTC)。所述SAM L10 / L11的MCU来与32MHz的ARM皮质-M23芯与单周期硬件乘法器,硬件除法,嵌套矢量中...


Microchip Technology PIC32MK工业和电机控制MCU

Microchip Technology PIC32MK微控制器(MCU)提供一系列通信外设,并具有丰富的高性能模拟电机控制功能。 PIC32MK系列包括两个子集。所述PIC32MK MC的MCU目标精度的双电机控制应用。该PIC32MK GP的MCU都挤...


采用CapTIvate™触摸技术 MSP430FR25x2电容式触摸传感MCU

德州仪器(TI)MSP430FR25x2电容式触摸传感MCU 德州仪器(TI)MSP430FR25x2电容式触摸传感MCU是用于电容式触摸传感的超低功耗MSP430微控制器(MCU)。这些器件采用CapTIvate触摸技术,适用于具有1至1...


7 轴集成式解决方案(陀螺仪 + 加速计 + 压力)

InvenSense 的 ICM 20789 是 7 轴高性能集成式 6 轴惯性和气压压力传感器 InvenSense7 轴 ICM-20789 是一款集成的 6 轴惯性器件,结合了 3 轴陀螺仪、3 轴加速计和超低噪声 MEMS 电容式压力传感器,采用...