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
    +关注

    关注

    135

    文章

    9499

    浏览量

    388662
  • 物联网
    +关注

    关注

    2939

    文章

    47317

    浏览量

    407750
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    极简主义者的福音:GPIO关机功能,短按长按一代码搞定!

    的POWER_ON按键,实现短按三次/长按五秒关机的功能。 Air8000支持LuatOS开发,应用示例持续更新中。开关机键demo示例相关资料,可通过下方链接获取。 最新源码下载: https
    的头像 发表于 10-26 16:58 814次阅读
    极简主义者的福音:GPIO关机<b class='flag-5'>功能</b>,短按长按一<b class='flag-5'>代码</b>搞定!

    使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板

    以下是使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板的详细步骤指南: 一、准备工作 ✅ 硬件需求: 项目 要求 开发板 Arduino ESP32(支持
    发表于 10-16 12:41

    触觉智能RK3576开发板OpenHarmony开源鸿蒙系统USB控制传输功能示例

    本文介绍OpenHarmony开源鸿蒙系统的USB控制传输功能实现及相关代码示例,基于触觉智能RK3576开发板PurplePiOH2演示。OpenHarmony的USB通信
    的头像 发表于 09-30 16:31 1215次阅读
    触觉智能RK3576开发板OpenHarmony开源鸿蒙系统USB控制传输<b class='flag-5'>功能</b><b class='flag-5'>示例</b>

    SEMTECH 芯片LR1121方案应用 :Arduino烧写指南及demo板应用

    本文将详细介绍LR1121芯片的技术特性,思为无线LoRa1121系列模块的规格,并提供详尽的Arduino开发环境搭建、示例代码解析、硬件连接指南以及DEMO板使用方法。我们致力于通
    的头像 发表于 09-10 11:45 613次阅读
    SEMTECH 芯片LR1121方案应用 :<b class='flag-5'>Arduino</b>烧写指南及demo板应用

    请问如何构建 emWin 示例代码

    如何构建 emWin 示例代码
    发表于 09-04 07:25

    代码自动化测试平台ATECLOUD功能详解

    平台通过三大优势显著区别于传统系统: 1.零代码快速构建:无需编程即可实现测试方案搭建; 2.即插即用设备生态:兼容主流测试仪器,降低集成门槛; 3.全维度数据智能:定制化报告模板与数据分析中心为行业独有
    的头像 发表于 08-20 17:32 770次阅读
    零<b class='flag-5'>代码</b>自动化<b class='flag-5'>测试</b>平台ATECLOUD<b class='flag-5'>功能</b>详解

    Air780EGH开源代码来袭!定位功能快速入门指南

    欢迎探索Air780EGH开源生态!最新版本解锁定位功能源代码,无论你是新手还是资深开发者,都能通过简洁的示例代码快速上手。从初始化配置到实时定位数据获取,一站式解决定位开发痛点。 下文将以
    的头像 发表于 07-29 16:13 417次阅读
    Air780EGH开源<b class='flag-5'>代码</b>来袭!定位<b class='flag-5'>功能</b>快速入门指南

    【Milk-V Duo S 开发板免费体验】Milk-V DuoS之使用Arduino开发小核

    ; Blink 测试程序,该程序功能实现的是 Arduino 设备板载 LED 闪烁,DuoS 中也是支持的。 注: 在编译下载代码之前,请确保您的计算机中安装了 python 环境
    发表于 07-17 21:01

    上传示例代码后,CYPD3171不再可编程是怎么回事?

    我有一个使用 CYPD3171 芯片的定制板,用于定制移动电源应用。在第一个测试 PCB 上我上传了示例代码,但后来我发现我无法再对其进行编程。我查看了引脚排列的代码和 GUI,发现
    发表于 07-15 08:01

    TC397开发板如何使用AscLin的slave功能

    大家好,我正在使用tc397开发板进行LIN通信功能的开发,我通过官方所提供的示例代码进行了测试,当作为master时,功能没有问题。因为官
    发表于 07-14 07:40

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    迭代,不断完善,示例代码功能也越来越健全。使用Arduino IDE进行开发,由于驱动库是相互兼容的,很多代码不需要修改就可以直接使用,这就
    发表于 05-13 09:28

    (开源代码版)手把手教学:DVP摄像头拍照&amp;上传功能示例

    通过本开源示例即可完成DVP摄像头的拍照、图像预处理及云端上传全流程。示例代码包含完整工程、硬件配置说明及调试技巧,从环境搭建到功能实现,一步步带你构建稳定可靠的图像数据采集与传输系统
    的头像 发表于 04-21 15:23 801次阅读
    (开源<b class='flag-5'>代码</b>版)手把手教学:DVP摄像头拍照&amp;上传<b class='flag-5'>功能</b><b class='flag-5'>示例</b> !

    如何获取SMBus示例代码

    想找一个用硬件SMBus外设的示例代码,但是在网上找到的很多都是HAL库的版本,我目前的代码是用的标准库,想知道ST官方有没有相关的示例代码
    发表于 03-10 07:16

    用于 SPI 绝对编码器的 Arduino 示例代码

    作者:Damon Tarry, Design Applications Engineer, Same Sky 本 Arduino 示例代码教程旨在为用户提供一个坚实的起点,以便通过串行外设接口
    的头像 发表于 01-26 21:35 1292次阅读
    用于 SPI 绝对编码器的 <b class='flag-5'>Arduino</b> <b class='flag-5'>示例</b><b class='flag-5'>代码</b>

    I2C总线与Arduino的接口示例

    在现代电子设计中,I2C总线因其简单性和灵活性而广受欢迎。它允许多个设备共享同一通信线路,从而节省空间和成本。Arduino,作为一个多功能的微控制器平台,自然也支持I2C通信。 I2C总线
    的头像 发表于 01-17 15:34 2358次阅读