Romeo for Edison扩展板

概述

Romeo for Edison Controller 是以intel Edison模块(Intel Edison 是一个低成本的片上系统 (SoC) 开发平台,使发明家、企业家和消费品设计师可以原型设计并开发物联网 (IoT) 和耐用的计算产品。)的多功能控制板。同样基于Arduino开放源代码的Simple I/O平台和linux平台,并且具有使用类似jave,C语言的开发环境,同时我们可以通过web、上位机等远程来控制Romeo for Edison Controller平台。Romeo for Edison Controller不仅可直插各类Switch,Sensor等输入设备,同样可直插多类LED,舵机等输出设备。板子还集成了电机驱动模块,可通过外接6~20V电压,直接驱动电机。Romeo for Edison Controller也可以独立运作为一个可以跟软件沟通的平台,例如,flash,processing,Max/MSP,VVVV等互动软件...Romeo for Edison Controller不但有完整的Arduino Leonardo的功能,还集成了2路电机驱动、无线数传模块、数字与模拟IO扩展口、I2C总线接口等功能。

技术规格

  • 微处理器:Intel Edison模块(双核, 500MHz Intel Atom CPU 和100MHz Intel Quark 微控制器)
  • 工作电压:5V
  • 直流输出:5V/3.3V
  • 输入电压:6-20V
  • Digital I/O(数字):14
  • Analog I/O(模拟):6
  • IO引脚直流电流:10mA
  • 电机驱动模块恒定输出电流:2x2A
  • 体积:100x88x15mm

功能简述

  • Digital I/O(数字): D0-D13,A0-A5
  • PWM口:4个 (数字引脚3,5,6和9)
  • 支持USB供电与外部供电自动切换
  • 支持SPI下载接口
  • 支持1组I2C/TWI接口
  • 支持2路电机驱动,峰值电流2A,4个控制口使用跳线切换
  • 支持Broadcom 43340 802.11 a/b/g/n 双频带(2.4 和 5GHz)WiFi
  • 蓝牙 4.0

引脚说明

Romeo for Edison Controller如何使用

Romeo for Edison Controller 快速入门

A.硬件环境的搭建

1)元件清单

1x Romeo for Edison

1x Edison模块

2x micro USB数据线

1x 电脑

2)硬件连接图

B.软件环境的搭建

1)系统环境

windows7/windows8

2)Edison Arduion IDE环境搭建 (2015/10月更新IDE下载与安装)

1.下载Arduion IDE(选择1.6.以上版本)
A、下载地址
B、把下载好的Arduino IDE包解压到非中文目录
C、打开IDE,选择"Tools > Board > Boards Manager"

点击安装”Intel i686 Boards by Intel version 1.6.2+1.0——Edison“板卡,安装完成之后就可以在板卡中找到Edison的板子了。

2)配置Edison Arduino IDE所用的英文环境
A、开始菜单

B、点击控制面板

C、点击更改语言设置

D、更改语言(English)和点击确定

E、进入这个目录,看到“arduino.exe” 文件,并打开,如果打开成功则配置正确

3)驱动安装

1.下载驱动
A、FTDI drivers
B、[Windows Driver setup 1.0.0]

2.安装FTDI drivers
A、双击CDM v2.10.00 WHQL Certified.exe文件

B、点击“Extract”

C、点击“Next”

D、点击“Finish”

3.安装Windows Driver setup 1.0.0
A、双击.exe文件开始安装

B、点击“Next”和“I Agree”

C、最好直接点击“Install”,也可以把软件安装你喜欢的目录。

D、点击“OK”。

E、点击“Finish”.

4、测试开发环境
A、打开Arduino IDE

B、点击“File > Examples >Basics>Blink”打开

C、点击“Tools >Board”和挑选“Intel Edison”

E、找到计算机图标,右键点击“计算机”和点击管理,双击“设备管理器”查看串口号

F、选择COM4

G、点击下载

H、观察板子上的L灯是否闪亮,如果闪亮,环境就搭建好了

Romeo for Edison Controller 典型应用

数字口的应用

A. 外接LED实验

1.元件清单和连接图

1x micro USB数据线

1x Romeo for Edison Controller板子

1x 英特尔® Edison模组

1x 数字食人鱼红色LED发光模块

2.应用程序

    int ledPin = 13;                // 定义LED为 pin 13
    void setup()
    {
      pinMode(ledPin, OUTPUT);      // 设置数字端口13为输出模式
    }
    void loop()
    {
      digitalWrite(ledPin, HIGH);   // 数字端口置高,LED亮
      delay(1000);                  // 延时
      digitalWrite(ledPin, LOW);    // 数字端口置低,LED灭
      delay(1000);                  // 延时
    }
B. 按键实验

1.元件清单和连接图

1x micro USB数据线

1x Romeo for Edison Controller板子

1x 英特尔® Edison模组

1x 数字食人鱼红色LED发光模块

1x 数字大按钮模块

2.应用程序

    int buttonPin = 3;     // 定义按键为 pin 3
    int ledPin =  13;      // 定义LED为 pin 13

    int buttonState = 0;

    void setup() {
      pinMode(ledPin, OUTPUT);     // 设置数字端口13为输出模式
      pinMode(buttonPin, INPUT);   // 设置数字端口2为输入模式
    }

    void loop(){
      buttonState = digitalRead(buttonPin);  //读取Pin 2的状态

      if (buttonState == HIGH) {      //判断是否为高
        digitalWrite(ledPin, HIGH);   //如果是高,设置LED亮
      }
      else {
        digitalWrite(ledPin, LOW);    //如果是低,设置LED灭
      }
    }
C. 多舵机实验

1.元件清单和连接图

1x micro USB数据线

1x Romeo for Edison Controller板

1x 英特尔® Edison模组

3x TowerPro SG50舵机

1x 直流电源

2.应用程序

    #include <Servo.h>
    Servo servo1;
    Servo servo2;
    Servo servo3;
    void setup(){
      servo1.attach(3);               //定义舵机1控制口为Pin3
      servo2.attach(5);              //定义舵机2控制口为Pin5
      servo3.attach(9);              //定义舵机3控制口为Pin6
      Serial.begin(19200);//设置波特率
      Serial.print("Ready");
    }

    void loop(){
      static int v = 0;
      if ( Serial.available()) {
        char ch = Serial.read();       //读取串口数据
        switch(ch) {
          case '0'...'9':
            v = v * 10 + ch - '0';  //字符换算成10进制
            break;
          case 'a':             //如果数据后带a,则表示是servo1的数据,比如串口发送85a
            servo1.write(v);
            v = 0;
            break;
          case 'b':             //如果数据后带b,则表示是servo2的数据,比如串口发送90b
            servo2.write(v);
            v = 0;
            break;
          case 'c':             //如果数据后带c ,则表示是servo3的数据,比如串口发送180c
            servo3.write(v);
            v = 0;
            break;
        }
      }
    }

Romeo for Edison Controller 电机和模拟端口库使用教程

注意:我们为Romeo for Edison更新了大量的驱动库,为了便于管理,我们将会把Romeo4Edison库移植到了github做更新。
其中NG.ino为ATmega8固件,DFRobotEdison为Edison电机和模拟端口驱动库

新版Romeo for Edison电机驱动库
旧版Romeo for Edison电机驱动库

注意:
2015年9月之后的出产的Romeo for Edison将默认烧录最新固件,请使用对应的驱动库使用,以避免出现bug现象。早期的产品通过升级Atmeg8固件,完成更新,也可以继续使用旧版的驱动库。

将下载之后的库文件放在Arduino的库文件夹内:例如:\arduino-1.6.3\libraries目录下。

电机端口的使用

1)驱动电机的应用

1.元器件清单和连接图

1x micro USB数据线

1x Romeo for Edison Controller板

1x 英特尔® Edison模组

1x 金属齿轮减速电机

2.应用程序


    /*
     *Copyright (c) 2014, Chengdu Geeker Technology Co., Ltd.
     *All rights reserved
     *
     *FileName : Motor.ino
     *File Tag :
     *Summary  : moter control example
     *
     *Version  : V1.2
     *Author   : ouki.wang(ouki.wang@dfrobot.com)
     *Time     : 2015.10.10

     *Version  : V1.1
     *Author   : weibing.deng(15196617738@163.com)
     *Time     : 2015.1.7
     *
     *Version  : V1.0
     *Author   : weibing.deng(15196617738@163.com)
     *Time     : 2014.12.22
     */
    #include <DFRobot.h>
    #include <IIC1.h>
    DFrobotEdison Motor1;
    DFrobotEdison Motor2;

    void setup() {
      Motor1.begin(M1); /*Initialize motor1*/
      Motor2.begin(M2); /*Initialize motor2*/
    }

    void loop() {
      Motor2.move(); /*motor rotate with the fastest speed*/
      Motor1.move();
      delay(3000);
      Motor2.setDirection(CLOCKWISE); /*Motor M2 clockwise rotation*/
      Motor1.setDirection(CLOCKWISE); /*Motor M1 clockwise rotation*/

      Motor2.setSpeed(100); /*set speed 100(0-255)*/
      Motor1.setSpeed(100); /*set speed 100(0-255)*/
      delay(3000);

      Motor2.setDirection(ANTICLOCKWISE); /*Motor M2 anticlockwise rotation*/
      Motor2.setSpeed(200); /*set speed 200(0-255)*/
      Motor1.setDirection(ANTICLOCKWISE); /*Motor M1 anticlockwise rotation*/
      Motor1.setSpeed(200); /*set speed 300(0-255)*/
      delay(3000);

      Motor2.stop(); /*stop moter*/
      Motor1.stop(); /*stop moter*/
      delay(3000);
    }

模拟端口的使用

和arduino标准一样,只是要加入我们的库,参照: arduino官方


/*
 *Copyright (c) 2014, Chengdu Geeker Technology Co., Ltd.
 *All rights reserved
 *
 *File Name : analogRead.ino
 *File Tag  :
 *Summary   : A0-A5 port Analog reading example
 *
 *Version   : V1.0
 *Author    : weibing.deng(15196617738@163.com)
 *Time      : 2014.12.22
 */
#include <DFRobot.h>
#include <IIC1.h>

unsigned int value = 0;

void setup() {
 Serial.begin(9600);
}

void loop() {
  value = analogRead(A0);
  Serial.print("A0=");Serial.println((int)value);
  value = analogRead(A1);
  Serial.print("A1=");Serial.println((int)value);
  value = analogRead(A2);
  Serial.print("A2=");Serial.println((int)value);
  value = analogRead(A3);
  Serial.print("A3=");Serial.println((int)value);
  value = analogRead(A4);
  Serial.print("A4=");Serial.println((int)value);
  value = analogRead(A5);
  Serial.print("A5=");Serial.println((int)value);

  delay(2000);
}

ATmaga8固件更新

1)更新ATmaga8模块I2C通信固件NG.ino
Edison通过I2C与ATmega 8进行通信,他可以以此来达到Edison来电机和读取A0-A5的模拟数据的效果。(**出厂已烧录最新固件,老版本的亦可以通过以下方法来更新。**需要FTDI下载器)
1.下载NG程序 Github NG固件

2.硬件连接图

3.软件下载

A、双击Arduino图标,选择板子

B、选择芯片型号

C、点击下载

Trouble Shooting

  1. 问题:Win XP/ Win 7 不兼容怎么办?

回答:Win7系统对Edison的支持有差异,只有部分能兼容,推荐使用Win 8。 安装完驱动,请重启电脑

  1. 问题:电机驱动老是跑飞,怎么办?

回答:更新ATmega8最新固件,V1.1已修复此问题

  1. 问题:未使用OTG口时COM口在系统下无法敲入命令行进行Debug

回答:该问题是由于Intel Edison模块需要在VBUS脚检测到高电平(或者USB_ID脚拉低)之后才允许COM口敲入命令行。也就是说,客户如果需要在COM口敲命令行Debug,则必须在OTG口插上OTG线(OTG线可不接任何设备),或者将OTG口通过Micro USB线连接计算机。在不使用命令行调试功能时,COM能作为普通串口正常使用。

更多

Romeo for Edison 原理图
Romeo for Edison library V1.1 (旧版)
Romeo for Edison library V1.2 (新版)

<File:nextredirectltr.png>购买 Romeo for Edison Controller 爱迪生机器人控制主板(不含Edison)(SKU:DFR0331)

<File:nextredirectltr.png>购买 Romeo for Edison Controller 爱迪生机器人控制主板(含Edison)(SKU:DFR0350)