0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

测试Arduino代码示例及功能介绍

工程师兵营 2018-08-15 09:52 次阅读

业界认为,物联网 (IoT) 对紧凑型无头微控制器板的快速增长起到了重要作用,控制器板专为传感器和致动器等多种边界节点设备而设计。 凭借其无线微控制器、少量 I/O和极低能耗,此此类开发板和模块将成为众多将数据馈送至云分析服务的设备。 许多应用都要求更多计算资源、操作员接口和连接选项。

不论是执行网关功能、聚合许多传感器的数据,还是启动本地控制或多种功能,都需要具有更多功能和资源的单板计算机。 制造商们在设法打造可满足每件设备所有不同需要的嵌入式器件,他们多数会选择一种平台方法——使用一块嵌入式主板并按需添加外设。 对于中小批量,在市场上大量越来越流行的开源单板计算机 (SBC) 中选择一台的优势更加显著。 这不仅可以省去大量 NRE 成本、无线监管认证和软件启动,还让开发团队可以在设计的应用程序方面快速上手,而不必对可能需要集成的各种器件进行评估、设计和原型开发。

对于许多工程团队,IoT 的一个显著影响是,处理新项目的方式会有根本性转变。 团队可能完全有能力从零开始设计嵌入式板,但在很紧凑的期限内交付工作设计才是最终目标。 对于在创建自己的开发板前使用 SBC 平台快速评估设计的人来说,访问所有机械文件、布局和 BOM 都很有必要。

图 1: UDOO Neo

开发人员可能考虑使用的 SBC 的一个代表是 UDOO Neo。 UDOO Neo 分为基本版、扩展板和完整版,是一个全面的低成本系统,且均基于适合 AndroidLinux 的 Freescale i.MX6SoloX 应用处理器构建。 本文将着重探讨 Neo 完整版。 此 Freescale 器件在单一芯片上嵌入一个运行频率为 1 GHz 的强大单核 ARM® Cortex®-A9 处理器,以及一个运行频率高达 200 MHz 的 ARM Cortex-M4 I/O 实时协处理器。 这些器件通过高速 AXI 总线连接在一起,能共享和使用大量硬件实施的功能,例如 GPIO、UARTI2C 等。 开发人员通过对可编辑进行复用,可以分配外设功能的配置由哪个内核使用。

UDOO Neo 完整版具有 1 GB 闪存,丰富的 GPIO、串行接口、完整的 Wi-Fi 802.11 b/g/n 和 BLE 连接。 此板配备有嵌入式 9 轴运动传感器、3 轴加速度计、磁力仪和陀螺仪、LVDS、HDMI、相机和音频接口,适合许多工业设计。

操作系统的角度看,Cortex-A9 内核可以运行 Android Lollipop 或 UDOObuntu (14.04 LTS)。 Cortex-M4 拥有完整堆栈 Arduino 环境的访问权限,包括完整的 Arduino 扩展板排针,进一步使其成为一个非常灵活的平台。

图 2: UDOO Neo 完整版板的主要特性

图 2 中显示为红色的外部引脚,在 GPIO 模式下默认分配给 Cortex-A9。 因此,这些引脚可直接从文件系统(Linux、Android)控制。 显示为绿色的内部引脚由尺寸与 Arduino UNO 引脚输出相同的 Cortex-M4 来分配和控制。

此板由单一 6 – 15 VDC 电源供电,所有的 GPIO 为 3.3 VDC。 图 3 的示意框图强调了基于 i.MX 应用处理器的主要组成部分和接口。

Neo 适合用作无头计算平台;或通过添加 LVDS 触摸面板或 HDMI 设备,用作适合用户控制的平台。 如果您的预期应用不需要运动传感器或同样多的内存,则可以选择 Neo 的基本或扩展版本,以节省板的成本。 对于许多远程应用,无头配置是可取的,通过 SSH 远程端子或类似端子与之通信

UDOO Neo 的 i.MX6 框图

图 3:UDOO Neo 的 i.MX6 框图

UDOO Neo 入门再简单不过了。 让开发板运行的所有必要信息及更全面的配置和代码示例可在 Wiki-style 网站上找到。 如果您需要,此网站还提供全面的机械布局文件和 BOM 清单。

此板在供货时未安装任何操作系统。 不论您选择 Linux 还是 Android,都需要容量为 8 GB 或以上的 microSD 卡。 从 Neo 的文档网站将您选择的操作系统下载到 PC 或笔记本电脑,然后执行解压缩。 您还需要将 microSD 卡插入卡插槽或 USB 适配器。 访问计算机的命令行,完整详情见此处,并遵循指示来卸载卡及所有分区,然后再传输操作系统映像。 完成后,请记得,您需要同步或弹出卡以正确关闭映像写入。

现在,将 microSD 卡插入 Neo,连接鼠标和键盘(通常为 USB)、HDMI 显示器(建议最初就使用,以查看一切是否正常运行),然后再通电。 很快,开发板上绿色和黄色 LED 闪烁,假设选择了Linux,进入 UDOO Ubuntu 桌面前屏幕上会显示 Linux 企鹅 Tux 标志。 您可以通过这一熟悉的桌面使用 Linux 的所有普通功能及实用工具。 针对 Neo 配置的 Arduino IDE 也会在 Linux 平台中预加载,并通过桌面现成可用。 下一步是连接 Neo 的 Web 控制面板。 执行此操作有多种方式,可以通过让 Neo 的浏览器指向其 udooneo.local Web 服务器,或指向板自身的 IP 地址(如果您知道)。 请见图 4。

图 4: UDOO Neo Web 控制面板

可通过该控制面板充分了解 Neo 内部发生的情况。 除了提供有关有线和无线连接状态的信息以及传感器和板摘要信息外,还提供配置选项,用于设置并连接到无线接入点、完成地区设置和更改显示输出。 还提供来自加速度计、陀螺仪和磁力仪的轴与模数数据,您可以通过轻轻地四周移动开发板来测试其操作。

Web 控制面板上还提供测试 Arduino 代码草稿示例和写入一些简单的代码的功能,请见图 5。 熟悉 Arduino UNO 等开发板的人,从图 5(打开引脚 13)的应用示例中可以看出是个简单的‘“”闪烁“”示例。 Neo 的红色 LED 已连接至此引脚,因此上传此代码草稿会导致其闪烁。 请注意,编程应用程序中的 Ardublocky 应用程序允许以图形、互联逻辑块的方式创建 Arduino 代码草稿。

图 5: Arduino Web IDE 和代码草稿样本

正如前文所述,Neo 配备有两组 GPIO。 可从 Arduino 代码草稿访问的 GPIO 称作内部排针,最内侧的排针组和从 Linux 内访问的 GPIO 则称为外部排针。 默认情况下,所有 GPIO 都配置为输入,但可配置为输入或输出,且在需要时可产生内核中断。 引脚复用允许 MPU 向外部引脚分配更专门的任务。

可从 Linux 内访问的 GPIO

图 6: 可从 Linux 内访问的 GPIO。 单击此处查看全尺寸图像。

可以在命令行使用以下简单命令控制 GPIO 引脚:

echo out > /gpio/pin19/direction – 将引脚设置为输出引脚,或

echo in > /gpio/pin19/direction – 将引脚设置为输入引脚

指定为输出的引脚,可使用 echo 0 > /gpio/pin19/value 设置为低,零伏;

或使用 echo 1 > /gpio/pin19/value 设置为高,+3.3 VDC

输入引脚值可使用 cat /gpio/pin19/value 来读取

除了从 /sys/class/gpio 目录创建链接外,UDOObuntu Linux 中预安装的 udoo-gpio-export 软件包还负责导出所有 GPIO 作为输入。 有关这类高级要求的更多信息,请见 UDOO 文档。

Cortex-A9 和 Cortex-M4 内核之间通过双向虚拟化串行引脚进行通信,使用共享内存交换数据。 可以在 Linux 中通过使用 /dev/ttyMMC 来读取,例如 minicom –D /ttyMCC;或使用 Serial0 对象在 Arduino 代码草稿内读取。

UDOO Neo 完整版板拥有三个运动传感器。 14 位加速度计和 16 位磁力仪位于相同封装(一种 Freescale FXOS8700CQ 器件内。 加速度计拥有三个可动态选择的满量程范围:+/-2 g、+/- 4 g 或 +/- 8g。

3 轴陀螺仪是 Freescale FXAS21002C。

它们被连接至 I2C 总线,请见图 7,并可通过任一内核访问。

图 7: 显示传感器和器件配置的 I2C 总线

在命令行,它们可以使用

echo 1 > /sensors/accelerometer/enable 或 echo 1 > /sensors/gyroscope/enable 来启用,并可使用 cat /sensors/magnetometer/data 等命令来读取一次性的值。

嵌入式应用当然可以通过相关 I2C 寄存器直接从它们读取。 加速计和磁力仪使用地址 0x1E,陀螺仪使用 0x20。

也可以通过更高级的语言(例如 Python)来访问传感器。 在使用任何新开发板的早期,您都会希望开发板设计具备开源与社区性质。 关于这方面的一个很好例子是 GitHub 上的 Neo.GPIO Python 库,该库提供在 Cortex-A9 上运行的 Python 应用程序的传感器接口代码。 Python 已包含在 UDOObuntu 发行版中,因此,使其成为在 Neo 上进行开发的必然选择。 使用前,您需要从 GitHub 下载 .ZIP 文件,然后将其解压缩到将要创建 Python 应用程序所在的目录。 在 .ZIP 文件中还包括了多个代码示例,图 8 中显示了其简化版本。

图 8: 读取陀螺仪并显示其中数据的 Python 程序

要在命令行运行图 8 中显示的 Python 代码,您必须以 root 的身份运行。 如果您使用的是如上所述的 UDOO Neo,您的用户帐户为 udooer,那么您需要按以下方式使用 GyroExample.py 程序。 请见图 9。

echo udooer | sudo –S su –c ‘python GyroExample.py’

图 9: GyroExample.py 代码运行的截屏

UDOO Neo 是全面且强大的 SBC,可以用作工业 IoT 应用的理想开发平台。 通过使用 Neo,您可极快运行初始应用,并以最具时间和成本效益的方式让产品上市。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8639

    浏览量

    361612
  • 物联网
    +关注

    关注

    2865

    文章

    41524

    浏览量

    358063
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184764
收藏 人收藏

    评论

    相关推荐

    Arduino功能及其限制

    Arduino是一种开源电子原型平台,它基于易于使用的硬件和软件,可以用于制作各种嵌入式系统。然而,尽管Arduino非常强大,但它也有一些功能上的限制。本文将详细介绍
    的头像 发表于 12-21 14:15 372次阅读

    LabVIEW关于USRPRIO的示例代码

    LabVIEW关于USRPRIO的示例代码 USRPRIO 通常以两种方式使用: 1 基于 FPGA 的编程 对于希望修改USRP上的底层FPGA代码以添加自定义DSP模块的应用,请使用USRP
    发表于 11-16 20:22

    自己编写函数示例代码很难吗?分享几个示例

    Q A 问: Arduino Uno的函数示例 我决定自己编写函数示例代码,因为这应该是Arduino中的基本
    的头像 发表于 11-16 16:05 202次阅读
    自己编写函数<b class='flag-5'>示例</b><b class='flag-5'>代码</b>很难吗?分享几个<b class='flag-5'>示例</b>!

    安全驱动示例代码和实现

    示例代码获取和集成 本示例中的驱动只实现了对内存的读写操作,并提供了测试使用的TA和CA。 读者可使用如下指令从GitHub上获取到示例
    的头像 发表于 10-30 16:07 368次阅读
    安全驱动<b class='flag-5'>示例</b><b class='flag-5'>代码</b>和实现

    Arduino的PWM控制代码

    如果你需要一个具体的代码示例,我可以为你提供一个Arduino的PWM控制代码Arduino是一款常用的开源电子原型平台,它提供了PWM
    发表于 09-21 08:57

    如何测试HTTP请求示例

    电子发烧友网站提供《如何测试HTTP请求示例.zip》资料免费下载
    发表于 07-13 11:35 1次下载
    如何<b class='flag-5'>测试</b>HTTP请求<b class='flag-5'>示例</b>

    Arduino光敏电阻示例KY-018

    电子发烧友网站提供《Arduino光敏电阻示例KY-018.zip》资料免费下载
    发表于 07-10 11:17 2次下载
    <b class='flag-5'>Arduino</b>光敏电阻<b class='flag-5'>示例</b>KY-018

    RAA489204 示例代码快速入门指南

    RAA489204 示例代码快速入门指南
    发表于 06-30 19:59 0次下载
    RAA489204 <b class='flag-5'>示例</b><b class='flag-5'>代码</b>快速入门指南

    RAA489220 BFE 示例代码快速入门指南

    RAA489220 BFE 示例代码快速入门指南
    发表于 06-30 19:46 0次下载
    RAA489220 BFE <b class='flag-5'>示例</b><b class='flag-5'>代码</b>快速入门指南

    RAA489204 示例代码软件手册

    RAA489204 示例代码软件手册
    发表于 06-30 19:23 0次下载
    RAA489204 <b class='flag-5'>示例</b><b class='flag-5'>代码</b>软件手册

    RAA489220 电池前端示例代码手册

    RAA489220 电池前端示例代码手册
    发表于 06-30 19:11 0次下载
    RAA489220 电池前端<b class='flag-5'>示例</b><b class='flag-5'>代码</b>手册

    如何从Arduino取回代码/程序

    电子发烧友网站提供《如何从Arduino取回代码/程序.zip》资料免费下载
    发表于 06-09 10:50 1次下载
    如何从<b class='flag-5'>Arduino</b>取回<b class='flag-5'>代码</b>/程序

    【沁恒 CH32V208 开发板免费试用】RTT 模拟Arduino库开发项目

    操作系统。本文将介绍如何使用RTT模拟Arduino库在沁恒 CH32V208开发板上进行开发,并提供一些示例代码。通过本文的介绍可以了解如
    发表于 05-24 20:31

    如何在代码V中使用示例模型

    CODE V 示例模型可以在 SolvNetPlus 知识库中找到。每个示例模型都包含一个 PDF 文档,其中解释了您将学习的功能、描述示例模型,并提供了使用
    的头像 发表于 05-24 14:47 410次阅读
    如何在<b class='flag-5'>代码</b>V中使用<b class='flag-5'>示例</b>模型

    在哪里可以找到关于Arduino主机上运行的NFC的示例代码

    我在哪里可以找到关于在 Arduino 主机上运行的 NFC 的示例代码? 例如 NCF3320 和 Arduino(atmega,尤其是...)。
    发表于 05-05 08:50