86Duino One 硬件说明

简介

86Duino One 是一款 x86 架构的开源微电脑开发板,内部采用高性能 32 位元 x86 相容的处理器 Vortex86EX,可以相容并执行 Arduino 的程式。此款 86Duino 是特别针对机器人应用所设计,因此除了提供相容 Arduino Leonardo 的接脚外,也特别提供了机器人常用的周边介面,例如:可连接 18 个 RC 伺服机的专用接头、RS485 通讯介面、CAN Bus 通讯介面、六轴惯性感测器等。此外,其内建的特殊电源保护设计,能防止如电源反插等错误操作而烧毁电路板,并且与伺服机共用电源时,板上可承载达 10A 的电流。

One 针对机器人应用所提供的丰富且多样性接口,大幅降低了使用者因缺少某些接口而需另寻合适控制板的不便。任何使用 Arduino 及嵌入式系统的机器人设计师,及有兴趣的爱好者、自造者,皆可用 One 来打造专属自己的机器人与自动化设备。

硬体规格

  • CPU 处理器:x86 架构 32 位元处理器 Vortex86EX,主要时脉为 300MHz(可用 SysImage 工具软体超频至最高 500MHz)
  • RAM 记忆体:128MB/1GB 工规 DDR3 SDRAM
  • Flash 记忆体:内建 8MB,出厂已安装 BIOS 及 86Duino 韧体系统
  • 1 个 10M/100Mbps 乙太网路接口
  • 1 个 USB Host 接口
  • 1 个 MicroSD 卡插槽
  • 1 个 Mini PCI-E 插槽
  • 1 个音效输出插槽,1 个麦克风输出插槽(内建 Realtek ALC262 高传真音效晶片)
  • 1 个电源输入 USB Device 接口(5V 输入,Type B micro-USB 母座,同时也是烧录程式接口)
  • 1 个 6V-24V 外部电源输入接口(2P 大电流绿色端子台)
  • 45 根数位输出/输入接脚(GPIO),含 18 个 RC 伺服机接头
  • 3 个 TTL 序列接口(UART)
  • 1 个 RS485 串列埠
  • 4 组 Encoder 接口
  • 7 根 A/D 输入接脚
  • 11 根 PWM 输出接脚
  • 1 个 SPI 接口
  • 1 个 I2C 接口
  • 1 个 CAN Bus 接口
  • 三轴加速度计
  • 三轴陀螺仪
  • 2 根 5V 电压输出接脚,2 根 3.3V 电压输出脚
  • 长:101.6mm,宽:53.34mm
  • 重量:56g

I/O 接口布局

尺寸图

86Duino One 大小与 Arduino Mega 2560 相同,如下图所示:(完整尺寸图下载

86Duino_One_Size-spec

此外由下图可看出 One 的固定孔位置(红圈处)亦与 Arduino Mega 2560 相同,并且相容 Arduino Leonardo。

3_board_hole_positions

接口布局

86Duino One 的 Pin-Out Diagram 如下(点击放大):

86Duino_one_web_all_pins

透过 Pin-Out Diagram 可以看到 One 在前半段 Arduino 标准接脚处(下图红框处)与 Arduino Mega 2560 及 Arduino Leonardo 是相容的,但后半段 RC 伺服机接头处与 Arduino Mega 2560 不同,因此 One 可以堆叠 Arduino Uno 及 Leonardo 使用的短型扩展板(例如 Arduino WiFi Shield),但不能直接堆叠 Arduino Mega 2560 专用的长型扩展板(例如 RAMPS 1.4)。

3_board_io_pins

I/O 接口功能简介

一、电源系统

86Duino One 有两个电源输入接口,一个为外部电源输入接口,为工业用绿色端子台(左下图红圈处),其上有标示电源正极与负极两个接孔,可输入大电流电源,电压范围为 6V ~ 24V。

Green_power_jack

另一个电源输入接口为烧录程式用的 micro-USB 接头(见左下图红圈处),输入电压必须为 5V。

USB_power_jack

使用者可透过上面任一接口为 One 供电。当您透过绿色端子台供电时,电源会被输入到板上内建的稳压晶片,产生稳定的 5V 电压来供应板上所有零件的正常运作。当您透过 micro-USB 接头供电时,由 USB 主机输入的 5V 电压会直接以 by-pass 方式被用来为板上零件供电。绿色端子台与 micro-USB 接头可以同时有电源输入,此时 One 会透过内建的自动选择电路(如下图)自动选择稳定的电压供应来源。

USB_power_sch

经由绿色端子台的电源连接方式

绿色端子台可用来输入机器人伺服机需要的大电流电源,输入的电压会以 by-pass 方式被连接到所有 VIN 接脚上,并且也输入到稳压晶片(regulator)中来产生稳定的 5V 电压输出。此电源输入端的电路如下所示:

power_protect_sch

由于机器人的电源通常功率较大,操作不慎容易将电路板烧坏,所以我们在电路上加入了较强的 TVS 二极体保护,可防止电源突波(火花)及电源反插(正负极接反)等状况破坏板上元件。(注意,电源反插保护有其极限,使用者应避免反插超过 40V 的电压。)

power_protect_chips

以电池供电:
通常机器人会使用可输出大电流的电池作为动力来源,您可直接将电池的正负极导线锁到绿色端子台来为 One 供电。

86one_example_battery_power

以电源变压器供电:
若希望使用一般家用电源变压器为 One 供电,建议可制作一个连接变压器的转接头。这里我们拿电源接头为 2.1mm 公头的变压器为例,准备一个 2.1mm 的电源母座(如下图),将两条导线分别焊在电源母座的正极和负极,然后导线另一端锁在绿色端子台上,再将电源母座与变压器连接,便可完成变压器到绿色端子台的转接。

86one_example_powerjack

86one_example_power_adapter

直流电源供应器的连接方式:
使用直流电源供应器为 One 供电相当简单,直接将电源供应器的正负极输出,以正接正、负接负的方式锁到绿色端子台的正负极输入即可。

86one_example1_power

经由 micro-USB 接头的电源连接方式

可透过板上 micro-USB 接头取用 USB 主机孔或 USB 充电器的 5V 电压为 One 供电。为避免不当操作造成 USB 主机孔损害,此接头内建了 1 安培保险丝做为保护:

86one_usb_device_protect_sch

使用者只要准备一条 micro-USB 转 Type A USB 的转接线(例如:智慧型手机的传输线;86Duino One 配线包内含此线),便可利用其将 One 连接至 PC 或笔电的 USB 孔来供电,如下所示:

86one_example_usb_power

亦可用此线将 One 连接至 USB 充电器来供电:

86one_example_usb_power_adapter

请注意,当 86Duino One 没有外接任何装置(如 USB 键盘滑鼠)时,至少需要 440mA 的电流才能正常运作;一般 PC 或笔电的 USB 2.0 接口可提供最高 500mA 的电流,足以供应 One 运作,但如果 One 接上外部装置(包含 USB 装置及接到 5V 及 3.3V 输出的实验电路),由于外部装置会消耗额外电流,使得整体消耗电流可能超出 500mA,这时用 PC 的 USB 2.0 接口供电便显得不适当,可以考虑改由能提供 900mA 的 USB 3.0 接口或可提供更高电流的 USB 电源供应器(如智慧型手机的充电器)来为 One 供电。

注:有些老旧或设计不佳的 PC 及笔电在 USB 接口上设计不太严谨,能提供的电流低于 USB 2.0 规范的 500mA,用这样的 PC 为 86Duino One 供电可能使其运作不正常(如无法开机或无法烧录程式),此时应换到另一台电脑再重新尝试。

电源指示灯

当 86Duino One 的绿色电源端子或 micro-USB 电源接口输入正确的电源后,电源指示灯“ON”会亮起,如下图:

86one_example_power_led

电源输出接口

86Duino One 板上配置有许多根电压输出接脚,可分为三类:3.3V、5V 和 VIN,如下图:

86one_power_outputs

3.3V、5V 输出接脚可做为电子实验电路的电压源,其中 3.3V 接脚最高输出电流为 400mA,5V 接脚最高输出电流为 1000mA。VIN 输出和绿色端子台的外部电源输入是共用的,换句话说,两者在电路上是连接在一起的;VIN 接脚主要用于供给机器人伺服机等大电流装置的电源。

请注意,若您的实验电路需要消耗超过 1A 的大电流(例如直流马达驱动电路),应该使用 VIN 输出接脚为其供电,避免使用 5V 和 3.3V 输出接脚供电。此外,由于 VIN 输出电压一般皆高 5V,使用上应避免将 VIN 与其它 I/O 接脚短路,否则将导致 I/O 接脚烧毁。

二、MicroSD 卡插槽

86Duino One 支援最大 32GB SDHC 的 MicroSD 卡,不支援 SDXC。

请注意,如果您打算在 Micro SD 卡中安装 Windows 或者 Linux 作业系统, Micro SD 卡本身的存取速度将直接影响作业系统的开机时间与执行速度,建议使用 Class 10 的 Micro SD 卡较为合适。

我们另外提供了 SysImage 工具程式,让您在 Micro SD 卡上建立可开机的 86Duino 韧体系统。让 86Duino 韧体系统在 Micro SD 卡上执行,可带来一些好处,请参考更进一步的说明

开机顺序

One 开机时,BIOS 会到三个地方去寻找可开机磁碟:内建的 Flash 记忆体、MicroSD 卡、USB 随身碟。搜寻顺序是 MicroSD 卡优先,然后是 USB 随身碟,最后才是 Flash。内建的 Flash 记忆体在出厂时,已经预设安装了 86Duino 韧体系统,如果使用者在 One 上没有插上可开机的 MicroSD 卡或 USB 随身碟,预设就会从 Flash 开机。

注:请注意,当您插上具有开机磁区的 MicroSD 卡或 USB 随身碟,请确保该 MicroSD 卡或 USB 随身碟上已安装 86Duino 韧体系统或其它作业系统(例如 Windows 或 Linux),否则 One 将因找不到作业系统而开机失败。

Micro SD 卡插入方向

MicroSD 插槽位于 One 背面,请依照下图方式插入 MicroSD 卡即可:

86one_example_micro_sd

您可能注意到 One 的 MicroSD 插槽位置比 Arduino SD 卡扩展板及一般嵌入式系统开发板的插槽更深入板内,这是刻意的设计,目的是让 MicroSD 卡插入后完全不突出板边(见下图)。当 One 用在机器人格斗赛或其它会进行激烈动作的装置上,这种设计可避免因为意外撞击板边而发生 MicroSD 卡掉落的惨剧。

86one_example_micro_sd2

三、GPIO 接脚(数位输出/输入接脚)

86Duino One 提供 45 根 GPIO 接脚,如下图所示。在 86Duino Coding 开发环境内,您可以呼叫 digitalWrite 函式在这些脚位上输出 HIGHLOW,或呼叫 digitalRead 函式来读取脚位上的输入状态。

86one_GPIOs

每根 GPIO 都有输入和输出方向,您可以呼叫 pinMode 函式来设定方向。当 GPIO 设定为输出方向时,输出 HIGH 为 3.3V,LOW 为 0V,每根接脚电流输出最高为 16mA。当 GPIO 为输入方向时,输入电压可为 0 ~ 5V。

86Duino One 和 Arduino 类似,部分 GPIO 接脚具有另一种功能,例如:在脚位编号前带有 ~ 符号,代表它可以输出 PWM 信号;带有 RX 或 TX 字样,代表它可以输出 UART 串列信号;带有 EA、EB 、EZ 字样,代表可以输入 Encoder 信号。我们各取一组脚位来说明不同功能的符号标示,如下图所示:

86one_io_functions

有关 GPIO 的更多说明,可参考基础硬体观念

RC 伺服机接头

86Duino One 右恻编号 21 ~ 38 之 GPIO 接脚设计为 RC 伺服机接头,可直接用来连接 RC 伺服机,不需另外透过转接板。您可以在 86Duino Coding 开发环境里使用 Servo 函式库来控制这些伺服机动作。

RC 伺服机接头脚位定义如下:

86one_servo_pinout

由于 RC 伺服机种类繁多且品质不一,我们在此接头的每一根 GPIO 接脚上皆加入了 200 欧姆限流保护电阻(如下电路所示),做基本的防护。我们也对 One 电路板进行了特别设计,使其可乘载 18 颗伺服机同时运行时可能消耗的大电流,原则上,10A 以下的电流皆可承受。

86one_rcservo_sch

请注意,RC 伺服机没有防呆接头,插拔时应避免将 RC 伺服机接反;此外,RC 伺服机接头上的 VIN 与 GPIO 相当靠近,操作上应特别小心,不可将 VIN 与 GPIO 短路,以免造成 GPIO 烧毁,也请不要将 VIN 接到 86Duino 任意一只脚,例如 5V、3.3V、CAN BUS、TX、RX、I2C 和 SPI 脚位,以免被 VIN 的高电压击穿。

RC 伺服机接线范例

RC 伺服机接头针脚排列方式符合市面上常见的讯号、电源、地线之标准排列方式,使用时请对齐伺服机信号脚位置直接将其插上即可,如下图所示:

86one_example_servo

有些廉价 RC 伺服机设计不良,在启动瞬间会大幅干扰 VIN 电源之供给,将 VIN 电源拉低至 6V 以下,这会使 One 的 CPU 模组启动欠压保护而停机。如发生这种状况,您的一个解决方法是更换可瞬间供应大电流的外部电源(例如:伺服机专用电池)以克服伺服机的干扰,另一方法是从 micro-USB 接头另外供应稳定的 5V 电源给 One 的 CPU 模组,这是市面上伺服机控制板常见的双电源供电方式,如下图所示:

86one_example_many_servos

四、LED 指示灯

LED 是开发中最常用的状态指示设备,在 86Duino One 板上共有四个指示灯:(1) 电源指示灯(POWER LED),在板上标记为 ON,插上电源时会亮起(绿灯);(2) TX LED 灯,当 One 透过 USB Device 送出资料给 PC 时,此指示灯会闪烁;(3) RX LED 灯,当 One 透过 USB Device 从 PC 接收资料时,此指示灯会闪烁;(4) 板上标记为 L 的 LED 灯,可透过 Pin 13 (标记为 13 的 GPIO 接脚)控制其亮灭。

86one_example_leds

Pin 13 与 L 指示灯的连接电路如下图所示。当 Pin 13 输出 HIGH 时,L 指示灯会亮起(橘灯);输出 LOW 时,L 指示灯会熄灭。

86one_L13_sch

五、RESET

86Duino One 在板子左上角提供一个 RESET 按钮,在左下方提供一根 RESET 接脚,如下图所示。

86one_reset_buttun

RESET 接脚,内部连接到 CPU 模组上的重置晶片,在 RESET 接脚上制造一个低电压脉冲可让 One 重新开机,RESET 接脚电路如下所示:

86one_reset_sch1

RESET 按钮内部与 RESET 接脚相连接,按下 RESET 按钮同样可使 One 重新开机:

86one_reset_sch

六、A/D 接脚(类比输入接脚)

86Duino One 提供 7 通道 A/D 输入,为 AD0 ~ AD6,位置如下图所示:

86one_ad_pins

每一个通道都具有最高 11 bits 的解析度,您可以在 86Duino Coding 开发环境下呼叫 analogRead 函式来读取任一通道的电压值。为了与 Arduino 相容,由 analogRead 函式读取的 A/D 值解析度预设是 10 bits,您可以透过 analogReadResolution 函式将解析度调整至最高 11 bits。

请注意,每一个 A/D 通道能输入的电压范围为 0V ~ 3.3V,使用上应严格限制输入电压低于 3.3V,若任一 A/D 通道输入超过 3.3V,将使所有通道读到的数值同时发生异常,更严重者甚至将烧毁 A/D 接脚。此外,应注意 One 的 A/D 接脚不能像 Arduino Leonardo 一样切换成数位输出入接脚。

接线范例

这个范例中,我们使用 One 侦测 AA 电池电压。将电池正极接到 AD0 ~ AD6 其中一个,电池负极接到 GND,即可呼叫 analogRead 函式读取电池电压。接线如下所示:

86one_example_adc_connect

有关 A/D 的更多说明,可参考基础硬体观念

七、I2C 接口

86Duino One 提供一组 I2C 接口,为 SDA 和 SCL,位置如下:

86one_i2c_pins

您可以在 86Duino Coding 开发环境里使用 Wire 函式库来操作 I2C 接口。One 支援 I2C 规范的 standard mode(最高 100Kbps)、fast mode(最高 400Kbps)、high-speed mode(最高 3.3Mbps)三种速度模式与外部设备通讯。根据 I2C 规范,与外部设备连接时,需要在 SCL 和 SDA 脚位加上提升电阻(参考 Wiki 百科上的说明)。提升电阻的阻值与 I2C 速度模式有关,One 在内部已经加上 2.2k 欧姆的提升电阻(如下图所示),在 100Kbps 和 400Kbps 的速度模式下不需再额外加提升电阻;在 3.3Mbps 速度模式下,则建议另外再加上 1.8K ~ 2K 欧姆的提升电阻。

86one_i2c_pull_up_sch

接线范例

我们以 RoBoard Module RM-G146 9 轴惯性感测器为例,示范如何将它和 One 的 I2C 接口连接起来。下图显示 RM-G146 的脚位配置:

example_i2c_senser

因 One 已内建 I2C 提升电阻,我们只需直接将 One 的 5V 输出接脚接到 RM-G146 的 5V 输入,GND 互相对接,I2C 通道也互相对接,便可正确使 One 与 RM-G146 透过 I2C 互相通讯。接线如下图所示:

86one_example_i2c_connect

八、PWM 输出

86Duino One 提供 11 个 PWM 输出通道(与 GPIO 共用脚位),分别为 3、5、6、9、10、11、13 、29、30、31、32,位置如下图:

86one_pwm_pins

您可以在 86Duino Coding 开发环境里呼叫 analogWrite 函式来让这些接脚输出 PWM 信号。One 的 PWM 通道允许最高 25MHz 或 32-bit 解析度输出信号,但为了与 Arduino 相容,预设输出频率为 1KHz,预设解析度为 8 bits。

analogWrite 函式输出的 PWM 频率固定为 1KHz 无法调整,不过,您可呼叫 analogWriteResolution 函式来提高其输出的 PWM 信号解析度至 13 bits。若您需要在 PWM 接脚上输出其它频率,可改用 TimerOne 函式库来输出 PWM 信号,最高输出频率为 1MHz。

有关 PWM 的更多说明,可参考基础硬体观念

九、TTL 串列埠(UART TTL)

86Duino One 提供 3 组 UART TTL,分别为 TX (1) / RX (0)、TX2 (16) / RX2 (17)、TX3 (14) / RX3 (15),其通讯速度(鲍率)最高可达 6Mbps。您可以使用 Serial1 ~ Serial3 函式库来接收和传送资料。UART TTL 接口的位置如下图:

86one_UART_pins

请注意,这三组 UART 信号都属于 LVTTL 电压准位(0 ~ 3.3V),请勿将 12V 电压准位的 RS232 接口信号直接接到这些 UART TTL 接口,以免将其烧毁。

值得一提的是,One 的 UART TTL 皆具有全双工与半双工两种工作模式。当工作于半双工模式时,可与要求半双工通讯的机器人 AI 伺服机直接连接,不像 Arduino 与 Raspberry Pi 需额外再加全双工转半双工的介面电路。UART TTL 的半双工模式可在 86Duino sketch 程式中以 Serial1 ~ Serial3 函式库提供的 begin 函式切换。

接线范例

本范例示范如何连接 One 与 Robotis 公司出品的 Dymanixel AX-12+ 机器人伺服机。下图为 AX-12+ 外观及其脚位标示:

AX_12_pin_out

AX-12+ 采用半双工 UART TTL 对外通讯,因此 One 的 UART 应以半双工模式与之相连。在半双工模式下,UART 的 TX 接脚用来接收与传送串列资料,RX 则保留不使用,因此这里我们直接将 AX-12+ 的 DATA 接脚与 One 的 Pin 1 (TX1) 对接,VIN 对接,GND 也对接,如下图所示:

86one_example_ax12_pinout

86one_example_ax12_connect

连接完毕后,便可在 86Duino sketch 程式中使用 Serial1 与 AX-12+ 通讯。注意,One 与 AX-12+ 的鲍率需设定为相同,通讯才会正常;另外,VIN 需提供伺服机正确工作电压(7V ~ 10V),AX-12+ 才会转动。

十、RS485 串列埠

86Duino One 提供一组 RS485 接口,与外部设备通讯的速度(鲍率)最高可达 6Mbps。您可以使用 Serial485 函式库来接收和传送资料。其接脚位置如下图:

86one_rs485_pinout

请注意,RS485 与 UART TTL 不同,采差动信号输出,因此无法与 UART TTL 互连及通讯。

86one_rs485_sch

接线范例

RS485 接口可用于连接要求 RS485 通讯的机器人 AI 伺服机,这里我们以 Robotis 公司出品的 Dymanixel RX-28 伺服机作为示范。下图为 RX-28 外观及其脚位标示:

rx28_pinout

直接将 One 的 RS485 接脚、VIN、GND 与 RX-28 对接,即可在 86Duino sketch 程式中使用 Serial485 互相通讯:

86one_example_rx28

86one_example_rx28_connect

注意,One 与 RX-28 的鲍率需设定为相同,通讯才会正常;另外,VIN 需提供伺服机正确工作电压(12V ~ 16V),RX-28 才会转动。

十一、CAN Bus 网路接口

CAN Bus 是一种工业通讯协定,可以支持高安全等级及有效率的即时控制,常被用于各种车辆与自动化设备上,详细介绍可参考 Wiki 百科。86Duino One 板上提供了一组 CAN Bus 接口,位置如下:

86one_CAN_pins

您可以在 86Duino Coding 开发环境里使用 CANBus 函式库来操作 One 的 CAN Bus 接口。

必须一提的是,One 与 Arduino Due 的 CAN Bus 接口实作并不相同,One 板上已内建 TI SN65HVD230 的 CAN 收发器来产生 CAN Bus 物理层信号(如下图),可直接与外部 CAN Bus 装置相连;Arduino Due 并没有内建 CAN 收发器,必须在其 CAN Bus 脚位另外加上 CAN 收发器,才能连接 CAN Bus 装置。

86one_CAN_sch

因为 Arduino Due 缺乏 CAN 收发器,所以 One 的 CAN Bus 接口不能与 Arduino Due 的 CAN Bus 接口直接对接,这种接法是无法通讯的。

接线范例

本范例使用 LAWICELAB 公司出品的 CAN232 装置作为示范。下图为 CAN232 外观及其脚位标示:

CAN232_pinout

CAN232 需要 6V ~ 15V 的电源,可用 One 的 VIN 接脚供电。因此直接将 One 的 CAN Bus 接脚、VIN、GND 与 CAN232 对接,两者即可互相通讯,如下图所示:

86one_example_CAN232

86one_example_can232_connect

十二、SPI 接口

86Duino One 提供一组 SPI 接口,位置与 Arduino Leonardo 及 Arduino Due 相容,并额外增加了 SPI 通讯协定的 CS 接脚信号,如下所示:

86one_spi_pins

您可以在 86Duino Coding 开发环境里使用 SPI 函式库来操作 SPI 接口。

十三、LAN 网路接口

86Duino One 背面提供一个 LAN 接口,支援 10/100Mbps 传输速度,您可以使用 Ethernet 函式库来接收和传送资料。LAN 接口的位置及脚位定义如下所示:

86one_LAN_port

86one_LAN_pinout

LAN 接口是 1.25mm 的 4P 接头,因此您需要制作一条 RJ45 接头的转接线(86Duino One 配线包内含此线)来连接网路线。不将 RJ45 母座焊死在板上,是为了方便机器人设计师将 RJ45 母座安置到机器人身上容易插拔网路线的地方,而不用迁就控制板的安装位置。

接线范例

下图以 86Duino One 配线包内附的转接线为例,示范网路线的连接:

86one_example_LAN_connect

十四、Audio 接口

86Duino One 内建 HD Audio 音效卡,并透过高传真音效晶片 Realtek ALC262 提供一组双声道音效输出和一组麦克风输入,内部电路如下图。在 86Duino Coding 开发环境中,您可以使用 Audio 函式库来输出立体音效。

86one_audio_sch

Realtek ALC262 音效晶片位于 One 背面,位置如下:

86one_audio_chip

音效输出和麦克风输入接口位于音效晶片下方,为两个 1.25mm 的 4P 接头,如下图所示,左边为 MIC(麦克风输入),右边为 LINE_OUT(音效输出):

86one_audio_pinout

若您希望连接 TRS 端子的耳机/扩音器及麦克风,您需要制作 TRS 母座转接线(86Duino One 配线包内含两条 3.5mm TRS 转接线)。不将 TRS 母座焊死在板上,同样是为了方便机器人设计师将 TRS 母座安置到机器人身上容易插拔扩音器及麦克风的地方,而不用迁就控制板的安装位置。

接线范例

下图以 86Duino One 配线包内附的转接线为例,示范音效输出至耳机的连接:

86one_example_Audio_connect

十五、USB 2.0 接口

86Duino One 有一个 USB 2.0 Host 接口,可外接 USB 装置(如 USB 键盘及滑鼠)。在 86Duino Coding 开发环境下,可使用 USB Host 函式库来存取 USB 键盘、滑鼠。当您在 One 上安装 Windows 或 Linux 作业系统时,USB 接口亦可接上 USB 无线网卡及 USB 摄影机,来扩充无线网路与视讯影像功能。USB 接口位置及脚位定义如下:

86one_usbhost_port

86one_usbhost_port

USB 接口是 1.25mm 的 5P 接头,因此您需要制作一条 USB 接头母座的转接线(86Duino One 配线包内含一条 USB Type A 母座转接线)来连接 USB 装置。不将 USB 母座焊死在板上,同样是为了方便机器人设计师将 USB 母座安置到机器人身上容易插拔 USB 装置的地方,而不用迁就控制板的安装位置。

接线范例

下图以 86Duino One 配线包内附的转接线为例,示范连接 USB 键盘:

86one_example_usb_keyboard_connect

若您需要连接两个以上的 USB 装置,可以使用 USB Hub 扩充更多 USB 插槽,下图示范利用 USB Hub 同时连接 USB 键盘及滑鼠:

86one_example_usb_connect

十六、Encoder 接口

86Duino One 提供 4 组 Encoder 接口,每组接口有三根接脚,分别标为 A、B、Z ,如下所示:

86duino_encoder_pinout

86one_encoder_pinout_table

Encoder 接口可用于读取光学增量编码器及 SSI 绝对编码器信号。在 86Duino Coding 开发环境下,您可以使用 Encoder 函式库来读取这些接口的数值。每一个 Encoder 接口可允许的最高输入信号频率是 25MHz。

接线范例

我们以 AM4096 旋转编码器 IC 为例,示范如何将它和 One 的 Encoder 接口连接起来。下图显示 AM4096 的脚位配置:

AM4096_pins

上图的输出接脚中,有一组为增量编码器信号输出,即 A/B Phase,接脚标示为 A、B 、Ri。这里我们以 One 第一组 Encoder 接口(Encoder0)为例,将 AM4096 的 A、B 、Ri 个别连接到 42、43、44,然后再将 AM4096 的电源 Vdd 接到 3.3V,AM4096 的 GND 接到 One 的 GND,如此便可正确使 One 与 AM4096 透过 Encoder 接口互相通讯。连接图如下所示:

86one_example_encoder_connect

十七、三轴加速度计与三轴陀螺仪

86Duino One 板上内建一颗三轴加速度计与三轴陀螺仪感测晶片 LSM330DLC,可用于感测机器人的姿态。您可以在 86Duino Coding 开发环境里使用 FreeIMU1 函式库来读取它。

86one_gero_sch

感测晶片在板上的位置如下图所示:

86one_gero_position

下图标示感测晶片 X-Y-Z 坐标方位在 One 电路板上的对应:

86one_3axis_directions

请注意,这颗感测晶片连接在 One 的 I2C 接口上,占用 0x18 及 0x6A 两个 I2C 地址(此为 7-bit 地址,对应的 8-bit 地址是 0x30 及 0xD4),若您在外部接上具有相同地址的 I2C 装置,将可能发生冲突。

十八、Mini PCI-E 接口

86Duino One 背面提供一个 Mini PCI-E 插槽(下图红框处),可用来安装 Mini PCI-E 扩充卡,例如:VGA 显示卡或 WiFi 无线网卡。

86one_minipcie_slot

Mini PCI-E 插槽的电路图如下所示:

86one_pcie_sch

连接范例

下面我们示范如何安装 Vortex86VGA 显示卡(如下图)使 One 具备萤幕输出功能。

86one_mini_pcie_VAG_card

下图是 Vortex86VGA 显卡所附的配件,包含一条 VGA 输出线、两个螺丝、六个螺帽;螺丝与螺帽用于 Mini PCI-E 卡的固定。

VGA_wires

显卡安装方式如下。首先把螺丝穿过 CMOS 电池两旁的固定孔,如下图红圈处:

86one_example_VGA_connect1

翻到 One 背面,分别在两根螺丝各锁上两个螺帽,如下图:

86one_example_VGA_connect2

接着让 Vortex86VGA 晶片朝上把显卡斜斜地插入 One 的 Mini PCI-E 插槽, 注意要插到底以避免接触不良:

86one_example_VGA_connect3

接着下压显卡,使其固定孔穿过先前固定好的两根螺丝,再接着锁上螺帽固定,如下图红圈处:

86one_example_VGA_connect4

将 VGA 输出线装到显卡上:

86one_example_VGA_connect5

最后把 VGA 接头连接到萤幕即可。One 打开电源后,Vortex86VGA 显卡上的红色 LED 电源灯将会亮起(左下图红圈处),并且萤幕上出现开机讯息:

86one_example_VGA_connect6

注:请注意,86Duino One 接上 Vortex86VGA 显卡后,总耗电量会提升为 600mA @ 5V,超出 USB 2.0 规范的 500mA,因此您不可用一般 PC 的 USB 2.0 插槽为 One 及 Vortex86VGA 供电。

十九、CMOS 电池

大部份 x86 电脑拥有一块 CMOS 记忆体用以保存 BIOS 设定及实时时钟(RTC)记录的时间日期。CMOS 记忆体具有断电后消除记忆的特点,因此 x86 电脑主机板通常会安置一颗外接电池来维持 CMOS 记忆体的存储内容。

86Duino One 做为 x86 架构开发板,同样具备上述的 CMOS 记忆体及电池,如下图红圈处所示:

86one_battery

不过,One 的 CMOS 记忆体只用来记录实时时钟时间及 EEPROM 函式库的 CMOS bank 资料,并不储存 BIOS 设定;因此,CMOS 电池故障并不影响 One 的 BIOS 正常开机运行,但会造成 EEPROM 函式库储存在 CMOS bank 的资料散失,并使 Time86 函式库读到的实时时钟时间重置。为确保 EEPROM 及 Time86 函式库的正常运作,平时请勿随意短路或移除板上的 CMOS 电池。


附录一:86Duino One 脚位名称与 Vortex86EX GPIO Ports 的对应关系

GPIO_pins_map
GPIO_pins_map2

附录二:86Duino One 配线包内容

86Duino One 配线包内含如下图所示线材,由左至右分别为 micro-USB 电源线(程式烧录线)、USB Host 接口线、RJ45 乙太网路接口线、音讯输出与麦克风输入接口线。
86one_wire_package

附录三:86Duino One 硬体原始码


展示影片


硬体说明主页面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.