什么是ACK:
Alexa Connect Kit(ACK)是亚马逊提供的一项托管服务。 通过ACK,开发者无需编写 Alexa技能(Alexa skill)、管理云服务、或开发复杂的网络和安全固件,即可轻松将产品连接到 Alexa。只需要将ACK模块集成到产品中,并支付一次性固定成本。ACK提供托管服务、软件和工具,可用于持续开发和管理Alexa connected智能产品。ACK使创建和管理Alexa控制的Wi-Fi的智能设备变得更简单、更快速、更具有经济效益。
使用 ACK 构建的产品包括通过语音和移动应用程序(Alexa App)进行的Alexa控制, 亚马逊简易配网(Amazon Frustration-Free Setup),亚马逊Wi-Fi简单设置(Amazon Wi-Fi Simple Setup),亚马逊快速补充服务(Amazon Dash Replenishment Service)。
ACK产品组成部分:
-
ACK模块–集成到基于 ACK 的设备中的 Amazon 管理的硬件组件。ACK模组出厂前将烧录 ACK 固件,并预配置连接到 ACK 托管的云服务授权。亚马逊的 ACK 固件提供了各种开箱即用功能,支持用户轻松构建支持 Alexa 的物联网设备,无需管理云服务、编写 Alexa Skill、手机 APP 或其他复杂设备。目前有ESP32-PICO-V3-ZERO,MT7697H两款ACK模组可以选择。
-
ACK设备 SDK–Amazon提供的设备SDK,可在你的设备微控制器(HMCU)上运行并处理 Alexa 命令、管理设备状态并实施 ACK 功能。 HMCU 可通过 UART 接口连接 ACK 模组,然后实现与外设的连接。
-
ACK 托管服务–亚马逊为您提供基于云的 ACK 托管服务和合作,以及特定的设备的后端功能。这包括 Alexa 功能管理工具、用于为基于 ACK 的设备定义、收集和存储日志和指标的工具,以及用于支持服务以监控 ACK 设备的性能和健康状况及其与互联网和亚马逊服务的连接的工具.
-
ACK开发者控制台–亚马逊管理的在线门户,允许您配置和管理基于 ACK 的产品和设备。
HMCU的选择:
HMCU有多种选择,亚马逊官网上推荐了5个HMCU,亚马逊官网下载的SDK里面有STM32和Arduino版本的HMCU软件。其它型号的HMCU程序需要从MCU公司的网站上下载。
设备SDK的软件构架:
由上图可知,ACK的软件大部分是由亚马逊开发和维护的,对于开发者来说,只要修改和编写HMCU的软件(ACK设备SDK), ACK设备SDK由两部分组成:
- ACK主机MCU实现核心(ImplCore),您可以将其集成到设备的HMCU应用程序中。
- ACK主机MCU示例应用程序,可作为设备HMCU应用程序的起点或参考。
ACK设备SDK整体架构如图所示。橙色部分表示开发者需要实现的组件
设备SDK源代码结构:
-
根目录:各种自述文件(readme)和开源软件版权相关的通知。
-
applications:ACK主机MCU示例应用程序,演示如何在各种设备上使用ACK设备SDK。这些只是源代码;针对具体的HMCU的掩饰代码位于user\platform目录下。
-
core:核心的主体。将所有这些文件编译到HMCU应用程序中。确保core、core\generated和core\generated\v3avs_capabilities在编译器的包含路径中。
-
doc:ACK设备SDK的说明文档。
-
external:开源软件,将所有这些文件编译到HMCU应用程序中。确保external\nanopb在编译器的include路径中。
-
include: 使用ImplCore需要含在HMCU应用程序中的C语言头文件,。
-
user:和具体平台(HMCU)相关的示例应用程序源代码和项目结构。具体平台的示例源代码主要有两部分,应用程序(Application)和引导加载程序(Bootloader)。
User/main.c源代码片段
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_USART1_UART_Init();
MX_CRC_Init();
/* Initialize interrupts */
MX_NVIC_Init();
/* USER CODE BEGIN 2 */
void setup(void);
setup();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
void loop(void);
loop();
}
/* USER CODE END 3 */
}
Application/SmartLight.c
// Called once, for one-time initialization.
void setup(void)
{
// Initialize ACK Host MCU Implementation Core.
ACK_Initialize();
// Initialize the previous tick.
g_previousTick = ACKPlatform_TickCount();
}
// Called over and over, for main processing.
void loop(void)
{
ACK_Process();
// Timers are checked every loop iteration.
CheckShutoffTimer();
CheckBlinkingMode();
// In order to work with timers, we save time of the previous tick and calculate the difference.
uint32_t newTick = ACKPlatform_TickCount();
g_timerGap = newTick - g_previousTick;
g_previousTick = newTick;
}
ACK产品认证:
Alexa Connect Kit(ACK)的设备在开始制造和发布之前,必须通过 Works with Alexa (WWA) 和 Frustration-Free Setup (FFS) 认证您的设备。
参考资料:
https://developer.amazon.com/en-US/alexa/devices/connected-devices/development-resources/alexa-connect-kit
https://github.com/OpenNuvoton/ACK-HMCU
CSDN博客仅作为本人工作学习之余的笔记使用,无任何商业目的,如果侵犯了你的隐私或权益,请随时联系作者,本人将及时删除相关内容