BeagleBone 属于开源单板计算机 (SBC),可与其它上百种与之类似的 SBC 共享各种设计意图。也就是说,BeagleBone 体积小、价格低,但功能却十分强大。BeagleBone 是供学生、业余爱好者以及专业人员使用的绝佳学习平台,可简化开发过程。
但正式启动项目前,还需要了解一些知识,以便更好地使用该平台。
虽然 2008 年首次发布 BeagleBoard 后已经经历了数次 BeagleBone (BB) 迭代,本文将主要介绍 BeagleBone Black 和 BeagleBone Green 板。
本文探讨这些技巧的主要目的并非是为了提供一个完整的课程,而是提供一些经验性信息和建议,以便新用户使用这些设备时避免误入陷阱和障碍。
1:BeagleBone 入门
不需要单独的键盘、鼠标和显示器。实际上,一些型号的 BeagleBone 并没有板载 HDMI 或显示端口。但这并不妨碍板的运行。只要通过 USB 电缆将 BeagleBone 插入到 PC,然后安装最新的 BeagleBone 驱动程序即可。接下来,在浏览器窗口通过 SSH(安全 shell)会话接入 BeagleBone(切勿使用 IE 浏览器)。
同时,确保购买一张用于 BeagleBone 的 MicroSD 卡,例如,ATP Electronics 的 AF8GUD3-OEM 10 类 8 GB 卡。更新操作系统需要额外的内存。
2:获得外壳
除非 BeagleBone 可直接放进项目机箱,否则请使用外壳。如果没有外壳,也可以将板固定在塑料板上。高密度聚乙烯砧板材料就是绝佳之选。外壳或塑料基板可以保护 BB 板免受撞击或意外冲击。
购买外壳时,请选择露出 GPIO 端口和 RESET 按钮的类型,如 Hammond Manufacturing 的 1593HAMBONETBU(图 1)。露出端口和按钮可以避免用户误以为要拆开盒子才能进行复位或将配件连接到 GPIO 针座上。
图 1:外壳将有助于保护电路板免受冲击,但要选择露出 GPIO 端口和 RESET 的类型,例如 Hammond Manufacturing 的 1593HAMBONETBU。(图片来源:Hammond Manufacturing)
3:警告:BeagleBone 板对于电源要求十分苛刻
初次使用 BB 板的用户常常会碰到这样一个的问题,就是插入电源后,板并未启动。通常,这是因为电源的电压上升时间缓慢,或电源因突然经历负载无法保持电压而瞬间下降。
虽然在 BeagleBone Black (BBB) 迭代中,已经对元器件选择进行了一些微小改动以消除这些问题;但选择好的电源仍然十分重要。切勿在电源上省钱。在电源上省几块钱,但可能导致设备有时无法工作,而且还要冒着损坏 BeagleBone 板的风险,这并不划算。使用类似 Volgen America/Kaga Electronics USA 的 KTPS12-05025WA-VI-P1 5 VDC、2.5 A、套管插头电源。BeagleBone 上的电源插孔可接受内外直径分别为 2.1 mm 和 5.5 mm 的套管类型电源连接器。
性能欠佳的电源也会对 Wi-Fi Dongle(如有使用)产生不利影响。Dongle 供电不足常表现为断断续续和连接失败。使用 Dongle 时,应确保电源(如 KTPS12-05025WA-VI-P1)至少可输出 2 A 电流。
如果启动失败,请尝试长按板卡上的复位按钮,直至电源保持稳定。然后松开按钮。同时,通过板上的电源按钮关闭 BB 板,而不是只拔出电源连接器。
遇到相关问题时,请勿通过 GPIO 针座为 BB 上电;通过 GPIO 上电会损坏 ARM CPU。
4:BeagleBone Black 的秘密武器:PRU
BeagleBone 的最大秘密武器是 PRU。PRU 意指“可编程实时单元”。PRU 为小型、小助手微控制器,能够分担主 CPU 的任务。
没有 PRU,可能需要其他硬件来对 I/O 进行快速或实时控制。假设引脚切换的速度可以和代码执行速度一样快。同时,它们也有其自身的一组外设,如 UART 和 PWM。PRU 的所有资源都可供主处理器使用。学习如何使用 PRU。它们将避免拼凑各种零件,从而增大了 BB 体积。
5:学习 Python
可以说,启动在 BeagleBone 上控制 GPIO 的最快方式就是编写一些 Python 代码。Debian 是当前最受青睐的 Linux 版本,BeagleBone 将其用作默认操作系统。Debian 内部的开发环境称为“Cloud 9”。 通过 SSH 进入 BeagleBone 后,在屏幕左侧菜单中可以看到 Cloud 9。
访问 Python.org 可下载可该板上运行的各版 Python 的说明文档。如需查看版本,请在命令行中输入“python”。该命令将调用 Python shell 并在顶部列出版本号。
如需创建 Python 图形化用户界面 (GUI),其中一种方法就是使用 Tkinter 库。Jan Bodner 编写的一本电子书针对该主题作过详细的探讨。
最后,新手容易忽略的是,Python 2.x.x 和 3.x.x 之间的不兼容问题。代码需要符合 BeagleBone 上 Python 版本的正确语法才能运行。也就是说,如果存在不兼容代码样本,可以通过编辑使其在板的 Python 版本上运行。<e>
6:打印 BeagleBone 引脚布局图片
BeagleBone 在板上几乎没有丝印任何引脚标识。虽然不方便,但确实可以让板更为小巧整洁。保存了这份引脚布局图便于参考(图 2)。
图 2:打印 BeagleBone GPIO 针座标识图。(图片来源:Embedded Basics)
7:BeagleBone Black 在选择 Wi-Fi Dongle 上极为挑剔
开始时,确保使用的 Dongle 已知可用于 BeagleBone,如 Adafruit 的 814 Wi-Fi USB Dongle(图 3)。
图 3:BeagleBone Black 对 Wi-Fi Dongle 极为挑剔,因此解决这一问题的方法就是使用已知的优良零件,如 Adafruit 814 Wi-Fi Dongle。(图片来源:Adafruit)
另一种获得 Wi-Fi 连接的方法是购买 BeagleBone Black Wireless(图 4)或 BeagleBone Green Wireless(图 5)。这些板迭代包含内置 Wi-Fi,因而无需使用 Dongle。
图 4:获得 Wi-Fi 连接的另一种方法是选择 BeagleBone Black Wireless。(图片来源:GHI Electronics)
注意,为了给 Wi-Fi 功能留出空间,将会牺牲这些板上的一些非无线版特性。例如,BeagleBone Green Wireless 获得了 Wi-Fi 和蓝牙功能,但损失了板载以太网。
图 5:牺牲了板载以太网来为 Wi-Fi 留出空间的 BeagleBone Green Wireless。(图片来源:Seeed Technology)
8:获得 Linux (Debian) 命令列表
为了成功浏览 Linux (Debian),请使用命令行。用 BeagleBone 启动 SSH 会话并在 Cloud 9 中打开一个新选项卡。在此选项卡,输入“help”并单击“Enter”即可获得命令列表。如需了解这些命名含义,只需输入“man” 后跟命令名称即可。随即屏幕上将出现更为详细的介绍。注意在 Linux 中,“文件夹”被称为“目录”。
9:Linux 不是实时操作系统
大部分 BeagleBone 用户会运行 Debian。Debian、其他 Linux 版本以及大多数其他操作系统运行时将处理时间进行了拆分,并解析到任何正在运行的进程。CPU 时间必须解析到内核、GUI、相关进程及任何正在运行的代码。OS 将消耗这些时钟周期的绝大部分。剩下的部分会为代码保留。如此一来,CPU 就不可能超出一定精度执行操作。例如,运行 Linux 的 BeagleBone 无法提供与常见 WS2812 LED 灯条通信所需的精确定时。实时任务应通过 PRU 处理。
10:一旦启动并运行,使用 Cape 和配件板来实现更快、更顺畅地操作
Cape 属于配件板,可提升 BeagleBone 的性能并迅速避免许多额外硬件要求。许多常见的任务需要用到多种不同的 Cape 和配件板。
例如,BeagleBone 本身没有板载 CAN 总线解释。需要使用 Cape 处理错综复杂的 CAN 总线通信,而不是编写代码对 CAN 总线进行位冲。
Cape 有很多种,如显示 Cape、传感器 Cape、电机驱动 Cape 以及原型 Cape,主要都是空白穿孔板,可插到 BB GPIO 针座上。Texas Instruments 甚至可提供一种分接 PRU 外设的 PRU Cape。
图 6:“分接”PRU 外设的 PRU Cape。(图片来源:Texas Instruments)
总结
BeagleBone SBC 是功能强大、应用广泛的计算平台,可快速启动电子项目而且还小有趣味。事先做一些考虑和研究,并结合一些经验人员的建议,启动过程将会更加顺利。