首页 > 评测 > 让96Board更好用--96Boards Sensors Mezzanine 评测

让96Board更好用--96Boards Sensors Mezzanine 评测

Linaro   96Boards   Sensor   Mezzanine    Grov   Arduino   ATMega328   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • Mezzanine可以将Grove模块和Arduino兼容的扩展板连接到96Boards底板上,板载一个ATMega328微控制器,可以使用Arduino IDE进行编程。总的来说,Mezzanine让96board的适用性得到了极大的提升,不在曲高和寡。

 Linaro推出96Boards规范,迅速吸引了大量开源厂商的加入。在统一的规范之下,硬件设计和软件移植变得更简单,最重要的是变得“大一统”了。然而96Boards中有些与当前流行的硬件接口不一致的方式,主要包括:提供了独立的低、高速外部接口;使用1.8V作为接口电压;使用2mm的Pin间距。

为什么采用这样的设计?官方的解释如下:

• 为什么会有一个单独的低速和高速连接器?这种设计允许使用低速信号的扩展产品(即,如果他们不需要高速功能,则不需要使用扩展板/模块来使用高速连接器) 。至于高速连接器,因为诸如CSI,DSI和HSIC的现代高速总线需要阻抗匹配的连接器。

• 使用1.8V作为标准扩展接口电压。大多数移动/嵌入式SoC使用1.8V进行输入输出, 我们考虑实施一种允许支持多个I / O电压的方案,但这样会带来复杂性和价格的飙升。我们还考虑在3.3V或5V上进行标准化,但实现了这一功能的话,我们会在很多情况下在基板上将电平转换为3.3V或5V,然后在扩展板上再次降至1.8V 的情况。

• 使用2mm插头用于低速扩展模块。虽然在制造商社区中不那么受欢迎,因为不是2.54mm,这是有意为之,表明这与其他3.3V / 5V社区主板不兼容。通过DIY和电子产品经销商可轻松获得2mm连接器硬件,同时在这些扩展板上获取所需要的3.3V/5V电压。

96Boards Sensors Mezzanine(后文简称Mezzanine)板就是用来填补这些”坑“的!

rId21.jpg

Mezzanine使传感器和设备可以简单方便地连接到任何96Boards兼容的基板。有了它,可以将Grove模块和Arduino兼容的扩展板连接到96Boards底板上,该板提供了在96Boards平台上开始试验和原型设计所需的一切。

扩展板提供18个Grove模块的插座,一个兼容Arduino的扩展接口和两个SPI接头。它还包括一个ATMega328微控制器,可以使用Arduino IDE进行编程,并且可以保持大多数Arduino UNO程序兼容。

rId22.jpg

各接口的含义如下

1. Low Speed Expansion connector

2. USB UART console connector

3. Reset and Power buttons

4. 5V I2C Grove connectors

5. 5V GPIO Grove connector

6. 3.3V I2C Grove connectors

7. 3.3V GPIO Grove connectors

8. ATMEGA D3-D7 Grove connectors

9. ATMEGA A0-A2 Grove connectors

10. ATMEGA I2C Grove connector

11. ATMEGA Arduino compatible socket

12. ATMEGA Reset and Power LEDs

该扩展板提供了3.3/5V兼容接口,如果需要使用1.8V的工作电压,可以从原生的接口引出。

扩展板上包含ATMeg328微控制器,完全可以把它当成一块Arduino开发板来使用,不过由于缺少Arduini UNO的一些外围电路,直接通过UART来上传代码可能会有问题,最佳的办法是使用专用的编程器来上传编译后的代码,本文使用USBTiny来给进行编程。

rId24.png

上图中标注编号为11的就是专用的SPI下载器,将USBTiny与其连接,可以实现代码上传功能

传统的Arduino编程是通过串口来进行的,然而这里根本就没有使用串口,因为我们是使用编程器来进行编程的。

设置时注意,开发板类型仍然是选择Arduino UNO,编程器类型要选择具体的编程器,如这里应该选择USBTinyISP。

先来点个灯,打开Arduino自带的例程Blink,在下载的时候按下图操作

rId25.png

对于Arduino来说,一般直接点击Upload按钮,但是使用编程器的话,需要按住Shift键,再点击Upload按钮,此时会通过编程器来上传程序。

虽然在使用时没有差别,但是Serial Monitor不能用了,因为根本就没有Serial。

该扩展板主要还是用来给96Boards来提供扩展连接功能,更准备的说,是为96Boards提供低速扩展接口连接功能。当然,如果要体验其方便的96Boards扩展功能,我们需要一块真正的96Board来进行试验,这次我们使用的是来自VAMRS的ROCK960

rId26.jpg

该板提供的低速扩展接口与96Boards定义的接口完全一致,另外该板也支持libmraa/upm库,用来体验外设非常方便。

rId27.png

这是ROCK960与96Boards规范提供的GPIO接口对应图,与扩展板的接口是完全一致的。

rId28.jpg

将扩展板与ROCK960连接,可以看到大小尺寸都非常吻合,这就是标准化带来的好处。

接下来我们将libmraa的代码下载到ROCK960上,来体验其方便的外设扩展功能。

执行命令

git clone https://github.com/intel-iot-devkit/mraa

编译libmraa并安装,就可以使用libmraa来控制外设。libmraa提供了几个小程序用来检测硬件,运行结果如下

rId29.png

这里列出的是GPIO及I2C接口列表,libmraa提供了控制这些接口通信的API。不过libmraa提供的接口更接近原生操作,如果要使用具体的设备,则可以使用upm库来进行操作。

下面使用Grove RGB LCD作为测试设备,这是一款1602显示屏,支持RGB类型的背光,LCD通过I2C接口来通信。连接如下,

rId30.jpg

注意LCD的工作电压是5V的,所以连接的时候要连接到I2C0,如果不使用扩展板的话,则需要用户自己搭建一个电平转换电路来实现连接。

接下来的事情就简单的,写个简单的代码来测试LCD的工作,如下

from upm import pyupm_jhd1313m1 as lcd

mylcd = lcd.Jhd1313m1(0, 0x3e, 0x62)

mylcd.clear()

mylcd.setColor(0, 0, 255)

mylcd.setCursor(0, 0)

mylcd.write('Hello, world')

运行这一段代码,得到的结果如下

rId31.jpg

是不是非常方便,扩展板解决了电平转换(1.8V)、接口(2mm间距)问题,结合libmraa库,连接和使用外设变得前所未有的简单!

这样看来,96Boards Sensors Mezzanine 确实是使用和开发96Boards的必备硬件!再加上扩展板本身搭载的ATMega328,还可以把它当成一个Arduino来使用。

按照官方的文档,是可以直接通过96Boards的UART来对扩展板上的Arduino进行编程的,只是在测试过程中未能成功,据官方的说法,需要重新刷写Arduino固件,重新刷写固件后也没有成功。另据DragonBoard 410C用户反映,需要移除扩展板上的R5电阻,不过似乎移除后结论依旧!不过直接在ROCK960上使用Arduino IDE结合USBTiny来对Arduino进行编程倒是没有问题!

  • 本文系21ic原创,未经许可禁止转载!

网友评论