86Duino Zero 硬件说明

简介

86Duino Zero 是一款 x86 架构的开源微电脑开发板,内部采用高性能 32 位元 x86 相容的处理器 Vortex86EX,可以相容并执行 Arduino 的程式。Zero 为 86Duino 的入门款,提供与 Arduino UNO 及 Leonardo 一致的输出入介面,并在板上内建网路、USB 2.0、SD 卡等 Arduino UNO 及 Leonardo 缺少的接口,让使用者不需外接扩充板便可使用这些功能。此外,Zero 亦提供数十倍于 Arduino 的执行速度,可满足更高计算量需求的应用场合。

相容 Arduino 使得 86Duino Zero 的学习门槛低,即便没有电子电机相关科系背景,只要具备基本电脑操作能力,就能容易学会使用,适合让使用 Arduino、微电脑及嵌入式系统的初学者、设计师、艺术家、业余爱好者、任何有兴趣的人,打造自己专属的电子互动艺术装置。

硬体规格

  • 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 个电源输入 USB Device 接口(5V 输入,Type B micro-USB 母座,同时也是烧录程式接口)
  • 1 个 7V-12V 外部电源输入接口
  • 17 根数位输出/输入接脚(GPIO)
  • 1 个 TTL 序列接口(UART)
  • 1 组 Encoder 接口
  • 6 根 A/D 输入接脚
  • 7 根 PWM 输出接脚
  • 1 个 SPI 接口
  • 1 个 I2C 接口
  • 2 根 5V 电压输出接脚,2 根 3.3V 电压输出脚
  • 长:76.98mm,宽:53.34mm
  • 重量:41g

I/O 接口布局

尺寸图

86Duino Zero 大小基本与 Arduino Leonardo 相同,如下图所示:(完整尺寸图下载

zero_size

此外由下图亦可看出 Zero 的固定孔位置(红圈处)亦与 Arduino Leonardo 相同。

1

接口布局

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

pin

透过 Pin-Out Diagram 可以看到 Zero 的接脚(下图红框处)与 Arduino Leonardo 是相容的,因此 Zero 可以堆叠 Arduino Uno 及 Leonardo 使用的扩展板(例如 Arduino WiFi Shield)。

2

I/O 接口功能简介

一、电源系统

86Duino Zero 有两个电源输入接口,一个为外部电源输入接口,为黑色电源插座(Power Jack),见左下图红圈处的圆形插孔;可输入电压的范围是 7V ~ 12V。

1

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

2

使用者可透过上面任一接口为 Zero 供电。当您透过外部电源供电时,电源会被输入到板上内建的稳压晶片,产生稳定的 5V 电压来供应板上所有零件的正常运作,如下图所示:

3

当您透过 micro-USB 接头供电时,由 USB 主机输入的 5V 电压会直接以 by-pass 方式被用来为板上零件供电。外部电源接头与 micro-USB 接头可以同时有电源输入,此时 Zero 会透过内建的自动选择电路(如下图)自动选择稳定的电压供应来源。

power5

经由外部电源插座的电源连接方式

使用黑色电源插座供电时,您需准备一个输出在 7V ~ 12V 之间的家用电源变压器,电源接头为 2.1mm 公头。将电源变压器插上黑色电源插座,即完成电源的连接,如下图所示:

4

建议您应该选择至少可输出 0.5A 电流的电源变压器。

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

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

86one_usb_device_protect_sch

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

power7

除了使用电脑的 USB 插座供电外,也可以使用 USB 电源供应器(如智慧型手机充电器)来供电,如下所示:

power8

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

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

电源指示灯

当 86Duino Zero 正确地连接电源后,电源指示灯“ON”会亮起,如下图:

power9

电源输出接口

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

5

3.3V、5V 输出接脚可做为电子实验电路的电压源,其中 3.3V 接脚最高输出电流为 400mA,5V 接脚最高输出电流为 600mA。VIN 输出和黑色电源插座的外部电源输入是共用的,换句话说,两者在电路上是连接在一起的;VIN 接脚主要用于供给外部装置较高电压或较大电流的电源。

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

二、Micro SD卡插槽

86Duino Zero 支援最大 32GB SDHC 的 Micro SD 卡,不支援 SDXC。

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

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

开机顺序

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

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

Micro SD 卡插入方向

Micro SD 插槽位于 Zero 背面,请按下面图片方式插入 Micro SD 卡即可:

sd1

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

sd11

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

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

8

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

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

gpio2

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

四、LED 指示灯

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

7

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

86one_L13_sch

五、RESET

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

6

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

reset2

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

reset3

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

86Duino Zero 提供 6 个类比输入,为 AD0 ~ AD5,位置如下图所示:

10

每一个通道都具有最高 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 接脚。此外,应注意 Zero 的 A/D 接脚不能像 Arduino Leonardo 一样切换成数位输出入接脚。

接线范例

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

3

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

七、I2C 接口

86Duino Zero 提供一组 I2C,为 SDA 和 SCL。配置如下图:

1

您可以在 86Duino Coding 开发环境里使用 Wire 函式库来操作 I2C 接口。Zero 支援 I2C 规范的 standard mode(最高 100Kbps)、fast mode(最高 400Kbps)、high-speed mode(最高 3.3Mbps)三种速度模式与外部设备通讯。根据 I2C 规范,与外部设备连接时,需要在 SCL 和 SDA 脚位加上提升电阻(参考 Wiki 百科上的说明)。提升电阻的阻值与 I2C 速度模式有关,对于 Zero,在 100Kbps 和 400Kbps 的速度模式下,我们建议加上 4.7k 欧姆的提升电阻;在 3.3Mbps 速度模式下,建议加上 1K 欧姆的提升电阻。

接线范例

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

i2c3

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

2

八、PWM 接口

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

9

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

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

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

九、TTL 串列埠(UART TTL)

86Duino Zero提供 1 组 UART TTL,为 TX1 (1) / RX1 (0),其通讯速度(鲍率)最高可达 6Mbps。您可以使用 Serial1 函式库来接收和传送资料。UART TTL 接口的位置如下图:

15

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

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

接线范例

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

uart2

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

16

uartS2

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

十、SPI 接口

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

14

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

十一、LAN 网路接口

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

13

17

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

接线范例

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

4

十二、USB 2.0 接口

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

18

19

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

接线范例

下图以 86Duino Zero 配线包内附的转接线为例,示范连接 USB 滑鼠:

5

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

6

十三、Encoder 接口

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

22

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

接线范例

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

encoder2

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

3

十四、CMOS 电池

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

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

86zero_battery

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

十五、PCI-E Target 接口

您可能会注意到 86Duino Zero 板末突出一段像是 PCI-E 介面卡的金手指接头,如下图红框处。这个 PCI-E 金手指平常只是装饰和造型(无误),据说 Zero 的设计者认为加上这一段小尾巴让板子看起来比较可爱……

86zero_pcie

这个接头事实上是设计给进阶黑客(hackers)玩的,要启动它的功能,必须对 Zero 进行 hardware hacking 才行 ── 这要求对 Vortex86EX 有充份的认识,以及对 PCI-E 介面有深入的瞭解。可以说,启动 PCI-E 金手指功能,是 Zero 设计者留给 86Duino 爱好者的一个自我成长挑战。

由于 PCI-E 金手指平常并无作用,除非您能成功启动其功能,否则请勿随意将 Zero 插到一般电脑主机板的 PCI-E 插槽上:

86zero_pcie


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

7

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

86Duino Zero 配线包内含如下图所示线材,由左至右分别为 micro-USB 电源线(程式烧录线)、USB Host 接口线、RJ45 乙太网路接口线。

24

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


展示影片


硬体说明主页面

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.