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

    文章

    9043

    浏览量

    366781
  • 物联网
    +关注

    关注

    2903

    文章

    44257

    浏览量

    371159
  • Arduino
    +关注

    关注

    187

    文章

    6463

    浏览量

    186629
收藏 人收藏

    评论

    相关推荐

    TPS929xxx-Q1示例代码

    电子发烧友网站提供《TPS929xxx-Q1示例代码.pdf》资料免费下载
    发表于 11-13 14:59 0次下载
    TPS929xxx-Q1<b class='flag-5'>示例</b><b class='flag-5'>代码</b>

    LP5891-Q1示例代码用户指南

    电子发烧友网站提供《LP5891-Q1示例代码用户指南.pdf》资料免费下载
    发表于 11-12 14:08 0次下载
    LP5891-Q1<b class='flag-5'>示例</b><b class='flag-5'>代码</b>用户指南

    BQ40Z80量产校准代码示例

    电子发烧友网站提供《BQ40Z80量产校准代码示例.pdf》资料免费下载
    发表于 09-27 09:34 0次下载
    BQ40Z80量产校准<b class='flag-5'>代码</b><b class='flag-5'>示例</b>

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码
    的头像 发表于 07-30 09:14 710次阅读
    怎样用<b class='flag-5'>Arduino</b><b class='flag-5'>测试</b>锂电池容量

    功能测试是白盒还是黑盒测试

    功能测试是软件测试的一种方法,主要用于验证软件的功能是否满足需求规格说明书中的要求。功能测试可以
    的头像 发表于 05-30 14:53 726次阅读

    功能测试主要做什么 功能测试包含哪些测试

    功能测试是软件测试的一个重要组成部分,主要目的是验证软件的功能是否满足需求规格说明书(SRS)中定义的功能要求。
    的头像 发表于 05-29 16:05 4952次阅读

    功能测试和接口测试的区别

    功能测试和接口测试是软件测试的两个重要方面,它们在确保软件质量和性能方面发挥着关键作用。本文将详细介绍
    的头像 发表于 05-29 16:02 838次阅读

    关于STM32 DMAMUX模块具体的应用示例代码

    有人通过公众号微信留言,询问是否有关于STM32 DMAMUX模块具体的应用示例代码。同时,个人也发现,虽然STM32片内的DMAMUX不是什么新模块,似乎还是很多人并不太熟悉。这里借机聊聊这方面的内容,重点演示相关功能的实现,
    的头像 发表于 03-25 09:15 2323次阅读
    关于STM32 DMAMUX模块具体的应用<b class='flag-5'>示例</b><b class='flag-5'>代码</b>

    arduino控制步进电机代码

    中,我们将详细介绍如何使用Arduino来控制步进电机的代码。 步进电机通常用于需要精确控制角度和位置的应用中,例如3D打印机、数控铣床和机器人等。通过使用Arduino来控制步进电机
    的头像 发表于 02-14 16:29 1878次阅读

    arduino中while循环怎么跳出

    执行某段代码的情况。然而,如何在合适的时机跳出 while 循环是一个需要注意的问题。本文将详细介绍 Arduino 中 while 循环的基本概念,以及如何使用不同的技巧跳出该循环来实现代码
    的头像 发表于 02-14 16:22 2385次阅读

    如何使用Arduino设置热敏电阻来创建温度计

    在本教程中,我们将指导您如何使用Arduino设置热敏电阻以创建基本温度计。提供的原理图、试验板图和示例代码将使热敏电阻工作变得简单明了。
    的头像 发表于 02-11 10:37 2254次阅读
    如何使用<b class='flag-5'>Arduino</b>设置热敏电阻来创建温度计

    TH244A001 - 32位Arduino开发资源进阶介绍(1)

    修改源代码来使用模块,而笙泉科技的Arduino-Throne也有在Arduino IDE下提供开发包。 Visual Studio Code IDE具有更加丰富的接口设置和扩展功能
    发表于 12-21 19:17

    工程师说 | 使用Chat-GPT为RL78 MCU(Arduino)编写AI代码

    摘要 本篇文章中我将介绍如何使用Chat-GPT和与Arduino兼容的RL78板进行AI编程,以及其实际应用示例。 Taisuke Kodama Staff Application
    的头像 发表于 12-21 18:20 991次阅读
    工程师说 | 使用Chat-GPT为RL78 MCU(<b class='flag-5'>Arduino</b>)编写AI<b class='flag-5'>代码</b>

    Arduino功能及其限制

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

    二进制DAC示例介绍

    电子发烧友网站提供《二进制DAC示例介绍.pdf》资料免费下载
    发表于 11-28 11:23 1次下载
    二进制DAC<b class='flag-5'>示例</b><b class='flag-5'>介绍</b>