希望您喜欢构建连接到云的 Blinky 项目的过程。您已经使用 PlatformIO 配置、构建、烧录和监控了 Core2 for AWS IoT Kit 的固件。现在,您的设备已经在您的 AWS 账户中注册为 AWS IoT 事物,使用永远不会离开设备的嵌入式设备证书和私有密钥来实现安全的云连接。您连接到了 AWS IoT Core,通过 MQTT 从设备发送了消息,并从 AWS IoT 控制台的 MQTT 客户端接收了 MQTT 消息,并可以从 MQTT 客户端切换设备上的指示灯。
虽然 AWS IoT Kit 项目不教授 C 语言,也不要求对 C 语言的了解,但它对嵌入式开发至关重要。来自底层代码的控制和灵活性允许您从硬件中获得最大的潜力。如果你不熟悉 C 编程,但想学习或者你希望深入我们提供的应用程序代码,Jens Gustedt 在 Creative Commons license 下提供了 Modern C ,它可以免费 下载 。
设备上的应用程序使用 FreeRTOS 内核 - 一种实时操作系统 (RTOS)。它绑定到了您应用程序代码编译的二进制文件中(以及其他库和驱动程序)。FreeRTOS 内核将一个代码块作为一个 task 进行调度,以共享处理器运行时。有些任务通常会永远循环,以创建要发送到 AWS 的消息、处理接收到消息、更新显示、闪烁 LED 等。
Core2 for AWS IoT Kit 封装了一个 240MHz 双核处理器,然而,与目前常见的 4+GHz 的 8+ 核计算机相比,它显得很无力。为了充分利用宝贵的处理器时间,FreeRTOS 内核将 tasks in a states(任务置于一种状态) ,例如运行或挂起。FreeRTOS 内核为微控制器应用程序提供了通过快速切换单个任务来优化处理器的能力。一个任务可以在另一个任务处于挂起或阻塞状态时运行(见下图)。与更简单的 super loop applications 相比,这提供了并发的表象,并极大地提高了嵌入式应用程序的性能。
虽然 super loop applications 更容易编程,但代码的区域阻塞/延迟其他代码的执行导致 MCU 处于闲置状态。连接到 AWS 云的设备将有变化的往返延迟和带宽限制,这使得使用 RTOS 的性能优势成为必要。RTOS 为其他应用程序提供了显著的优势,在这些应用程序中,最重要的是不丢失数据,能够执行关键操作而不被其他代码块的执行(例如健康和安全)所阻碍,或者仅仅是驱动一个显示屏。
要学习更多关于 RTOS 和 FreeRTOS 的内容,查看 这些视频 并浏览 FreeRTOS.org 。
在本示例中使用的
AWS IoT Device SDK for Embedded C
简化了与 AWS IoT 的连接和消息 收/发,并能够和安全元件共同工作简化设备认证。Device SDK for Embedded C 在 Core2-for-AWS-IoT-EduKit/Blink-Hello-World/components/esp-aws-iot/
文件夹内。
设备的硬件功能,如屏幕、电源管理芯片、安全元件、扬声器、麦克风、六轴
惯性测量单元
(IMU)、触摸驱动器、LED条等都捆绑为一个板级支持包 (BSP)。BSP 是带有 APIs 的驱动程序,提供了一种访问硬件特性的简化方式。BSP 位于 Core2-for-AWS-IoT-EduKit/Blink-Hello-World/components/core2foraws/
文件夹中。在本例中,SK6812 驱动程序用于控制侧 LED 条,
LVGL库
用于在显示器上显示元素。要查看 BSP 可用的 API (application programming interface, API) 及其使用,请参见 Core2 for AWS IoT Kit API 参考。
进入下一章节, 智能恒温器 。
AWS IoT Kit now features direct access to
AWS re:Post
, which is a community-driven, questions-and-answers service. Search re:Post using the
AWS IoT Kit
tag to see if your question has been asked and answered. If not, ask a new question using the AWS IoT Kit
tag.