简介
新一代RoemoV2是以ATmega32U4为主芯片的多功能控制板。同样基于Arduino开放源代码的Simple I/O平台,并且具有使用类似jave,C语言的开发环境。RoMeo不仅可直插各类Switch,Sensor等输入设备,同样可直插多类LED,舵机等输出设备。板子还集成了电机驱动模块,可通过外接6~20V电压,直接驱动电机。RoMeo也可以独立运作为一个可以跟软件沟通的平台,例如,flash,processing,Max/MSP,VVVV等互动软件...Romeo不但有完整的Arduino Leonardo的功能,还集成了2路电机驱动、无线数传模块、数字与模拟IO扩展口、I2C总线接口等功能。
使用USB口调试电机的时候,请关闭电机开关!
否则,过大的外部供电会使Romeo烧坏。
V2版的Romeo和V1版的Analog模拟量3-P排针
有所更改,如果您用以前的模拟量传感器,请注意正确接线。不正确的电源接线会烧坏传感器等设备。
**注意:**
上传程序时,请在Arduino IDE下选择版型:Leonardo,否则编译上传出错。
串口通信设备:对于串口通信设备,如:Xbee,蓝牙模块,WiFi模块等,请在代码中使用Serial1.***()。Serial.***()用于电脑端软件,如串口助手, Arduino IDE的Serial Monitor,通过USB线调试Romeo。阅读: "Arduino官方说明"
模拟口A0:当您使用A0口作为模拟量输入/输出时,请关掉按钮选择开关,即:拨到OFF的位置。因为板子上的5个按钮是连接在A0上的,如果打开,A0口的读数不正确
产品参数
- 微控制器:ATmega32u4
- 引导装载程序:Arduino Leonardo
- 工作电压:5V
- 直流输出:5V/3.3V
- 输入电压(推荐):7-12V
- 输入电压(极限):6-20V
- 数字端口外部电源电压:5-20V
- IO引脚直流电流:40mA
- 3.3V引脚直流电流:50mA
- 电机驱动模块恒定输出电流:2A
- 体积:89x84x14mm
- Digital I/O(数字): D0-D16,A0-A5 (23个)
- Analog I/O(模拟): A0-A5,A6-A11(在数字接口4,6,8,9,10,12上)) (12个)
- PWM口:7个 (数字引脚3,5,6,9,10,11和13)
- 支持USB供电与外部供电自动切换
- 支持ISP下载功能
- 集成APC220无线数传/DF-Bluetooth蓝牙模块接口
- 支持3组I2C/TWI接口
- 支持2路电机驱动,峰值电流2A,4个控制口使用跳线切换
- 支持5个按键输入(模拟口0),支持开关切换
- 支持公母排阵
- 支持Xbee和XBee形式的WiFi,蓝牙和RF模块
引脚说明

外部电源/电机电源输入: 你可以从Motor Power In的接线柱端子连接线,标示“M_VIN”为电源正,当电机电源小于12V时,控制器可以和电机共用一个电源,Power In Selection 开关拨到ON;当电机电源大于12V时,Power In Selection 开关必须拨到OFF,同时控制器需要单独供电。
**注意**:最大供电电压不能超过20V直流
新版本烧录教程
RoMeo如何使用
Arduino IDE的使用:
Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用来写代码,下载代码的地方。任何的Arduino产品都需要下载代码后才能运作。我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果代码就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件实现取决于代码。
数字口的使用
A. 板载L灯实验
先来个预热,做个最简单的实验。Romeo和Arduino一样,有个连接到数字口13的板载LED(L),先来亮个灯吧!把Romeo连到电脑上后,打开Arduino IDE,选择Boards --> Arduino Leonardo 和串口com。
演示代码:
程序功能:板载的L灯会每秒闪烁一次。
B. 外接LED实验
如果你想外接个LED,可以按下图进行连接,下载实验A中相同的代码,可以实现相同的效果。
程序功能:外接LED灯会每秒闪烁一次。
C. 按键实验
我们来做个简单的互动实验,按键按下,LED灯亮,松开,LED熄灭。按下图连接。
演示代码:
程序功能:按下灯亮,松开灯灭。
D. 舵机实验
如果想让东西动起来,离不开舵机。令人兴奋的是,Arduino提供了一个Servo库,让初学者能很快的用上舵机,来看下吧!
演示代码:
程序功能:舵机从0°-180°,再从180°转回0°。
E. 多舵机实验
RoMeo数字端口扩展端子是按照舵机的线序设计的,所以可以直接控制舵机。接一个舵机时由于电流不大,所以可以暂时使用RoMeo上的5V供电,但如果Romeo控制器可以控制多个舵机,用USB的5V供电就不够了,这时就需要从数字端口外部电源输入端供电,电源电压取决于你所需舵机的正常工作电压,我们这里使用的5V舵机,所以接入5V开关电源供电即可。

演示代码:
程序功能:通过IDE中的串口助手,发送舵机度数控制舵机转动的角度,比如发送字符85a表示舵机1转动85度,发送字符180c表示舵机3转动180度。
如何打开串口?
打开Arduino IDE,右上角有个放大镜的图标,鼠标放在上面会显示串口监视器,点击该图标。
打开串口后,设置串口监视器的波特率为19200。
就可以直接从串口输入相应的值了,比如我们这里输入"85a",让第一个舵机转85°。
F. 电机驱动实验
RoMeo上集成了2路电机驱动,这是为了让机器人爱好者节约大量制作硬件的时间,而把开发重点放在软件上。电机驱动电路采用L298芯片,峰值电流可达2A。当使用电机驱动时,又会涉及到电源供电问题,如下图所示的接线方法,M_VIN接正极,GND接负极。还有就是记得把开关拨到"ON"端。

PWM控制模式
引脚 | 功能 |
---|---|
4 | 电机1方向控制 |
5 | 电机1PWM控制 |
6 | 电机2PWM控制 |
7 | 电机2方向控制 |
PWM模式
电机驱动电路控制端使用短路跳线选通,用的时候接通,不用就断开。
演示代码:
程序功能:串口输入"w","s","a","d",电机会有相应的动作。
PLL控制模式
Romeo也支持PLL相位锁相环控制模式。
- 实际使用效果为:
- 启动控制引脚输出高电平电机才能启动,为低电平时则电机禁止启动;
- 方向控制引脚pwm信号为中位值时(约100左右,不同电机需要测试得出),电机停止;
- 方向控制引脚pwm信号偏离中位值越多速度越大;
- 方向控制引脚pwm信号大于中位值正转,小于中位值则反转。
引脚 | 功能 |
---|---|
4 | 电机1启用控制 |
5 | 电机1方向控制 |
6 | 电机2方向控制 |
7 | 电机2启用控制 |
"PLL模式"
演示代码:
程序功能:串口输入"w","x","s",电机会有相应的动作。
串口端口的使用
RoMeo有两个串口Serial1和Serial。Serial1通过数字端口的Pin 0(RX)和Pin 1(TX)来对外通信。Serial而只是与USB通信。下面我们会针对这两个串口来做几个简单的实验,来体会一下它们之间的区别。
程序的下载正是使用的串口Serial1,只不过被USB芯片将TTL串口转换成了USB接口而已。串口是个很常用的通讯端口,也是RoMeo最基本的通讯口,使用时需要注意端口电平和设置波特率。代码中的波特率需要与串口监视器的波特率设置一致。
Arduino语言提供了几个函数[https://wiki.dfrobot.com.cn/Serial.available__(Serial.available)]、[https://wiki.dfrobot.com.cn/Serial.read__(Serial.read)]、[https://wiki.dfrobot.com.cn/Serial.print__(Serial.print)]、[https://wiki.dfrobot.com.cn/Serial.write__(Serial.write)],实现串口的通讯操作,下面做个串口输入通讯的实验,通过USB接口和RoMeo串口通讯,将USB电缆插到USB口上并与电脑连接。
A. 串口监视器的串口输入
演示代码:
程序功能:使用IDE的串口助手发送字母“A”,RoMeo接收到后判断是不是“A”,如果是则让L灯闪烁一下, 否则不进行任何操作。
B. 串口监视器的串口输出
演示代码:
程序功能: RoMeo从串口间隙性的发送字符串“Hello! DFRobot”。下面用IDE的串口助手观察结果。注意:代码的波特率与串口波特率保持一致。
C. RoMeo串口无线数传(APC220)实验
RoMeo兼容APC220无线数传模块和DF-BluetoothV2蓝牙模块。
APC220无线数传模块的通信信道是半双工的,可以完成一点对一点,一点对多点的通讯。这二种方式首先需要设1个主站,其余为从站,所有站点都必须设置一个唯一的地址。通信的协调由主站控制,主站采用带地址码的数据帧发送数据或命令,所有从站全部都接收,并将接收到的地址码与本机地址码比较,地址不同则将数据丢掉,不做响应,若地址码相同,则将接收的数据传送出去。以上过程可以通过软件设置RFID Enable 自动实现,也可有用户通过上层协议完成。当设置RFID Enable时,APC220模块将自动比较所接收数据是否地址匹配,但不会自动应答,若地址匹配模块会将地址、数据传给终端设备。另外,组网必须保证在任何一个瞬间,同一个频点通信网中只有一个电台处于发送状态,以免相互干扰。APC220可以设置多个频道,所以可以在一个区域实现多个网络并存。
详细教程可见:APC220无线数传模块配置教程
把APC220,直接插在RoMeo上,而另一块APC220通过USE to Serial模块直接插在PC端的USB口即可。

此时,在设备管理器会显示两个串口。给Romeo下载下段代码。
注意:APC220模块会占用串口端口,在下载程序的时候,请拔下APC220模块。

演示代码:
程序功能:RoMeo从串口间隙性的发送字符串“Hello,DFRobot!”,经过APC220发射到空中,被接到电脑上的APC220接收到。下面用Arduino IDE 串口助手观察结果。PC端的APC220在电脑中显示为COM2,串口助手设置串口号为APC220的COM2,波特率和程序设置的一致为9600,其他默认即可,打开两个串口就可以看见结果。如下图所示,Romeo端发送,PC端接收。
D. RoMeo串口蓝牙模块(DF-BluetoothV3)实验
RoMeo集成了一个TTL电平的无线数传接口,兼容APC220无线数传模块和DF-BluetoothV3蓝牙模块。蓝牙模块能做各种应用,,可与各种蓝牙适配器、蓝牙手机配对使用。拨码开关可设置模块状态,LED Off可关闭LINK灯进入省电模式,AT Mode可使模块进入AT指令模式,通过AT指令可以修改波特率和主从机模式,将2个模块分别设置为主模块和从模块后,2个模块就可以自由配对进行数据传输,也非常适用于2个单片机之间的数据通讯。
详细教程可见:DF-BluetoothV3蓝牙串口模块教程
使用的时候同样注意Serial与Serial1在使用上的区别。

E. RoMeo串口XBee模块实验
Xbee模块是采用ZigBee技术的无线模块,通过串口与单片机等设备间进行通信,能够非常快速地实现将设备接入到ZigBee网络的目的。这是一款2.4G的XBee无线模块 。此模块采用802.15.4协议栈,通过串口与单片机等设备间进行通信,支持点对点通信以及点对多点网络。此模块的天线为导线天线,简单,方便。
详细教程可见:[XBee模块配置教程](https://wiki.dfrobot.com.cn/SKU_TEL0014_XBee_1mW_Zigbee%E6%97%A0%E7%BA%BF%E6%95%B0%E4%BC%A0%E6%A8%A1%E5%9D%97_100%E7%B1%B3%E4%BC%A0%E8%BE%93

演示代码:(发送端)
演示代码:(接收端)
程序功能:两块XBee直接通信,一块XBee发送数据,而另一块接收数据,可以从串口中,分别读到发送而接收一致。
模拟口的使用
A. 五个按键实验
RoMeo集成了5个按键S1~S5,通过模拟端口0控制。使用模拟按键需要时,如下图中所示,把开关拨到"ON"状态。
演示代码1:
程序功能:分别按住S1到S5键,会看见LED闪烁的频率不同,这因为按键接入电阻不同,分到模拟口的电压就不同,AD采集到的数据也就不同。
演示代码2:
程序功能:打开IDE串口助手,波特率选择9600,分别按下S1~S5,会看见IDE串口助手里显示按键对应的字符串。
B. 测距实验
Romeo有5过模拟口的扩展插针,扩展口针脚排列根据GP2D12红外距离传感器设计,所以可以直接连接使用。GP2D12是日本SHARP公司生产的红外距离传感器,测量距离20~150cm模拟输出,它的输出模拟量与距离成反比,这点需要注意。
演示代码:
程序功能:打开IDE串口助手,波特率选择19200,将手放到GP2D12正上方不同的高度,会看见IDE串口助手里显示的数据变化。
C. I2C总线实验
RoMeo的模拟口2(SDA) 和 3(SCL) 具有I2C总线功能。我们设计时特意把I2C总线引出,做了3组插针,方便连接I2C器件。下个实验实现两块控制板之间通信。
I2C总线定义I2C(‘intel’ -Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既可以是主控器(或被控器),又可以是发送器(或接收器),这取决于它所要完成的功能。
这里我们让其中一块Romeo作为主机,而另外一块作为从机。
该实验来自宜昌城老张,原地址
代码涉及的函数可以查阅,Arduino官网 Wire库
演示代码:(主机部分)
演示代码:(从机部分)
程序功能:主机向从机循环发送字符串"light is "和字节x,x为1或0,从机接收后,把数据显示在它的串口监视器中,如下图。然后当主机通知从机向它上传数据时,会把x值再上传回主机,然后赋值给变量c。当主机程序判断c为1,则点亮主机数字端口13相连的LED,否则熄灭LED。
疑难解答
更多问题及有趣的应用,可以访问论坛进行查阅或发帖!