业界认为,物联网(IoT)对紧凑型无头微板的快速增长起到了重要作用,板专为传感器和致动器等多种边界节点设备而设计。凭借其无线微、少量I/O和极低能耗,此此类开发板和模块将成为众多将数据馈送至云分析服务的设备。许多应用都要求更多计算资源、操作员接口和连接选项。
不论是执行网关功能、聚合许多传感器的数据,还是启动本地控制或多种功能,都需要具有更多功能和资源的单板计算机。制造商们在设法打造可满足每件设备所有不同需要的嵌入式器件,他们多数会选择一种平台方法——使用一块嵌入式主板并按需添加外设。对于中小批量,在市场上大量越来越流行的开源单板计算机(SBC)中选择一台的优势更加显著。这不仅可以省去大量NRE成本、无线监管认证和软件启动,还让开发团队可以在设计的应用程序方面快速上手,而不必对可能需要集成的各种器件进行评估、设计和原型开发。
对于许多工程团队,IoT的一个显著影响是,处理新项目的方式会有根本性转变。团队可能完全有能力从零开始设计嵌入式板,但在很紧凑的期限内交付工作设计才是最终目标。对于在创建自己的开发板前使用SBC平台快速评估设计的人来说,访问所有机械文件、布局和BOM都很有必要。
图1:UDOONeo
开发人员可能考虑使用的SBC的一个代表是UDOONeo。UDOONeo分为基本版、扩展板和完整版,是一个全面的低成本系统,且均基于适合Android和Linux的Freescalei.MX6SoloX应用处理器构建。本文将着重探讨Neo完整版。此Freescale器件在单一芯片上嵌入一个运行频率为1GHz的强大单核ARM®Cortex®-A9处理器,以及一个运行频率高达200MHz的ARMCortex-M4I/O实时协处理器。这些器件通过高速AXI总线连接在一起,能共享和使用大量硬件实施的功能,例如GPIO、UART、I2C等。开发人员通过对可编辑进行复用,可以分配外设功能的配置由哪个内核使用。
UDOONeo完整版具有1GB闪存,丰富的GPIO、串行接口、完整的Wi-Fi802.11b/g/n和BLE连接。此板配备有嵌入式9轴运动传感器、3轴加速度计、磁力仪和陀螺仪、LVDS、HDMI、相机和音频接口,适合许多工业设计。
从操作系统的角度看,Cortex-A9内核可以运行AndroidLollipop或UDOObuntu(14.04LTS)。Cortex-M4拥有完整堆栈Arduino环境的访问权限,包括完整的Arduino扩展板排针,进一步使其成为一个非常灵活的平台。
图2:UDOONeo完整版板的主要特性
图2中显示为红色的外部引脚,在GPIO模式下默认分配给Cortex-A9。因此,这些引脚可直接从文件系统(Linux、Android)控制。显示为绿色的内部引脚由尺寸与ArduinoUNO引脚输出相同的Cortex-M4来分配和控制。
此板由单一6–15VDC电源供电,所有的GPIO为3.3VDC。图3的示意框图强调了基于i.MX应用处理器的主要组成部分和接口。
Neo适合用作无头计算平台;或通过添加LVDS触摸面板或HDMI设备,用作适合用户控制的平台。如果您的预期应用不需要运动传感器或同样多的内存,则可以选择Neo的基本或扩展版本,以节省板的成本。对于许多远程应用,无头配置是可取的,通过SSH远程端子或类似端子与之通信。
图3:UDOONeo的i.MX6框图
UDOONeo入门再简单不过了。让开发板运行的所有必要信息及更全面的配置和代码示例可在Wiki-style网站上找到。如果您需要,此网站还提供全面的机械布局文件和BOM清单。
此板在供货时未安装任何操作系统。不论您选择Linux还是Android,都需要容量为8GB或以上的microSD卡。从Neo的文档网站将您选择的操作系统下载到PC或笔记本电脑,然后执行解压缩。您还需要将microSD卡插入卡插槽或USB适配器。访问计算机的命令行,完整详情见此处,并遵循指示来卸载卡及所有分区,然后再传输操作系统映像。完成后,请记得,您需要同步或弹出卡以正确关闭映像写入。
现在,将microSD卡插入Neo,连接鼠标和键盘(通常为USB)、HDMI显示器(建议最初就使用,以查看一切是否正常运行),然后再通电。很快,开发板上绿色和LED闪烁,假设选择了Linux,进入UDOOUbuntu桌面前屏幕上会显示Linux企鹅Tux标志。您可以通过这一熟悉的桌面使用Linux的所有普通功能及实用工具。针对Neo配置的ArduinoIDE也会在Linux平台中预加载,并通过桌面现成可用。下一步是连接Neo的Web控制面板。执行此操作有多种方式,可以通过让Neo的浏览器指向其udooneo.localWeb服务器,或指向板自身的IP地址(如果您知道)。请见图4。
图4:UDOONeoWeb控制面板
可通过该控制面板充分了解Neo内部发生的情况。除了提供有关有线和无线连接状态的信息以及传感器和板摘要信息外,还提供配置选项,用于设置并连接到无线接入点、完成地区设置和更改显示输出。还提供来自加速度计、陀螺仪和磁力仪的轴与模数数据,您可以通过轻轻地四周移动开发板来测试其操作。
Web控制面板上还提供测试Arduino代码草稿示例和写入一些简单的代码的功能,请见图5。熟悉ArduinoUNO等开发板的人,从图5(打开引脚13)的应用示例中可以看出是个简单的‘“”闪烁“”示例。Neo的红色LED已连接至此引脚,因此上传此代码草稿会导致其闪烁。请注意,编程应用程序中的Ardublocky应用程序允许以图形、互联逻辑块的方式创建Arduino代码草稿。
图5:ArduinoWebIDE和代码草稿样本
正如前文所述,Neo配备有两组GPIO。可从Arduino代码草稿访问的GPIO称作内部排针,最内侧的排针组和从Linux内访问的GPIO则称为外部排针。默认情况下,所有GPIO都配置为输入,但可配置为输入或输出,且在需要时可产生内核中断。引脚复用允许MPU向外部引脚分配更专门的任务。
图6:可从Linux内访问的GPIO。单击此处查看全尺寸图像。
可以在命令行使用以下简单命令控制GPIO引脚:
echoout>/gpio/pin19/direction–将引脚设置为输出引脚,或
echoin>/gpio/pin19/direction–将引脚设置为输入引脚
指定为输出的引脚,可使用echo0>/gpio/pin19/value设置为低,零伏;
或使用echo1>/gpio/pin19/value设置为高,+3.3VDC
输入引脚值可使用cat/gpio/pin19/value来读取
除了从/sys/class/gpio目录创建链接外,UDOObuntuLinux中预安装的udoo-gpio-export软件包还负责导出所有GPIO作为输入。有关这类高级要求的更多信息,请见UDOO文档。
Cortex-A9和Cortex-M4内核之间通过双向虚拟化串行引脚进行通信,使用共享内存交换数据。可以在Linux中通过使用/dev/ttyMMC来读取,例如minicom–D/ttyMCC;或使用Serial0对象在Arduino代码草稿内读取。
UDOONeo完整版板拥有三个运动传感器。14位加速度计和16位磁力仪位于相同封装(一种FreescaleFXOS8700CQ器件内。加速度计拥有三个可动态选择的满量程范围:+/-2g、+/-4g或+/-8g。
3轴陀螺仪是FreescaleFXAS21002C。
它们被连接至I2C总线,请见图7,并可通过任一内核访问。
图7:显示传感器和器件配置的I2C总线
在命令行,它们可以使用
echo1>/sensors/accelerometer/enable或echo1>/sensors/gyroscope/enable来启用,并可使用cat/sensors/magnetometer/data等命令来读取一次性的值。
嵌入式应用当然可以通过相关I2C寄存器直接从它们读取。加速计和磁力仪使用地址0x1E,陀螺仪使用0x20。
也可以通过更高级的语言(例如Python)来访问传感器。在使用任何新开发板的早期,您都会希望开发板设计具备开源与社区性质。关于这方面的一个很好例子是GitHub上的Neo.GPIOPython库,该库提供在Cortex-A9上运行的Python应用程序的传感器接口代码。Python已包含在UDOObuntu发行版中,因此,使其成为在Neo上进行开发的必然选择。使用前,您需要从GitHub下载.ZIP文件,然后将其解压缩到将要创建Python应用程序所在的目录。在.ZIP文件中还包括了多个代码示例,图8中显示了其简化版本。
图8:读取陀螺仪并显示其中数据的Python程序
要在命令行运行图8中显示的Python代码,您必须以root的身份运行。如果您使用的是如上所述的UDOONeo,您的用户帐户为udooer,那么您需要按以下方式使用GyroExample.py程序。请见图9。
echoudooersudo–Ssu–c‘pythonGyroExample.py’
图9:GyroExample.py代码运行的截屏
UDOONeo是全面且强大的SBC,可以用作工业IoT应用的理想开发平台。通过使用Neo,您可极快运行初始应用,并以最具时间和成本效益的方式让产品上市。