使用 W5300 TOE 在 STM32 Nucleo 板上设置 FreeRTOS 示例以进行 AWS IoT 连接

本指南详细介绍了如何配置和测试 FreeRTOS 示例以连接到 AWS IoT

转发: Setting up a FreeRTOS Example on STM32 Nucleo Board using W5300 TOE for AWS IoT Connection

项目介绍

如何使用 freeRTOS 示例测试与 AWS IoT 的连接

第一步:准备软件

使用 freeRTOS 示例测试连接到 AWS IoT 需要以下串行终端程序,请从以下链接下载并安装。

第二步:准备硬件

将 W5300 TOE Shield 与 STM32 Nucleo429ZI 板相结合。

将以太网电缆连接到 W5300 TOE Shield 以太网端口。

使用 5 针微型 USB 电缆将 STM32 Nucleo-144 板连接到台式机或笔记本电脑。

第 3 步:设置 AWS IoT

为了通过 freeRTOS 连接到 AWS IoT,必须将开发环境配置为使用 AWS IoT。

此示例是通过配置 AWS IoT Core 进行测试的。 请参阅下面文档的“创建 AWS IoT 资源”部分并进行相应配置。

有关 AWS IoT 的更多信息,请参阅以下文档。

步骤 4:通过 freeRTOS 示例设置连接 AWS IoT

要测试通过 freeRTOS 连接 AWS IoT 示例,应在代码中完成少量设置。

  1. 在 'main.c' 中设置网络配置,例如 IP,这是通过 'W5300-TOE-FREERTOS-C/Core/Src/' 目录中的 freeRTOS 连接 AWS IoT 示例。

设置 IP、其他网络设置以适合您的网络环境以及是否使用 DHCP。

/* Network */
static wiz_NetInfo g_net_info =
    {
        .mac = {0x00, 0x08, 0xDC, 0x12, 0x34, 0x56}, // MAC address
        .ip = {192, 168, 11, 2},                     // IP address
        .sn = {255, 255, 255, 0},                    // Subnet Mask
        .gw = {192, 168, 11, 1},                     // Gateway
        .dns = {8, 8, 8, 8},                         // DNS server
        .dhcp = NETINFO_DHCP                         // DHCP enable/disable
};
  1. 设置 AWS IoT 配置。

MQTT_DOMAIN 应设置为 AWS IoT 数据终端节点,并且不需要设置 MQTT_USERNAME 和 MQTT_PASSWORD。 设置 MQTT_CLIENT_ID 与 AWS IoT Core 设置期间创建的内容相同。

/* AWS IoT */
#define MQTT_DOMAIN "account-specific-prefix-ats.iot.ap-northeast-2.amazonaws.com"
#define MQTT_PUB_TOPIC "$aws/things/my_rp2040_thing/shadow/update"
#define MQTT_SUB_TOPIC "$aws/things/my_rp2040_thing/shadow/update/accepted"
#define MQTT_USERNAME NULL
#define MQTT_PASSWORD NULL
#define MQTT_CLIENT_ID "my_rp2040_thing"
  1. 设置设备证书和密钥。

您必须输入在步骤 2 中下载的根证书、客户端证书和私钥。

根证书使用 RSA 2048 位密钥、Amazon Root CA 1,并且不使用公钥。

设备证书和密钥可以在 W5300-TOE-FREERTOS-C\Core\Inc' 目录中的“mqtt_certificate.h”中设置。

uint8_t mqtt_root_ca[] =
"-----BEGIN CERTIFICATE-----\r\n"
"...\r\n"
"-----END CERTIFICATE-----\r\n";

uint8_t mqtt_client_cert[] =
"-----BEGIN CERTIFICATE-----\r\n"
"...\r\n"
"-----END CERTIFICATE-----\r\n";

uint8_t mqtt_private_key[] =
"-----BEGIN RSA PRIVATE KEY-----\r\n"
"...\r\n"
"-----END RSA PRIVATE KEY-----\r\n";
  1. 以下是有关如何在 freeRTOS 中添加任务的分步指南。

-编写任务函数

首先,编写任务将运行的函数。 该函数通常由无限循环组成,您可以在其中定义任务将执行的操作。

void aws_example_task(void *argument){
    while(1)
    {
        // Your task implementation here...
    }
}

-定义任务句柄和属性

在创建任务之前,您必须定义任务句柄和任务属性。

osThreadId_t awsExampleTaskHandle;
const osThreadAttr_t aws_example_attributes = {
  .name = "awsExampleTask",
  .stack_size = 128 * 4,
  .priority = (osPriority_t) osPriorityNormal,
};

- 创建任务

使用 osThreadNew 函数创建任务。 该函数将任务函数、传递给任务函数的参数以及任务属性作为参数。

awsExampleTaskHandle = osThreadNew(aws_example_task, NULL, &aws_example_attributes);

第 5 步:构建

完成 AWS 示例配置后,在您正在使用的 IDE 中进行构建。

构建完成后,将生成固件下载到 STM32 Nucleo-144 板。

第6步:上传并运行

  1. 使用 Tera Term 连接到 STM32 Nucleo-144 板的串行 COM 端口。

重置你的主板。

如果通过 freeRTOS 连接 AWS IoT 示例在 Nucleo-144 板上正常运行,您可以看到 W5300 的网络信息,连接到 AWS IoT 并发布消息。

  1. 如果您通过 AWS IoT Core 中的测试功能将消息发布到步骤 4 中配置的订阅主题,您可以看到 Nucleo-144 板收到有关订阅主题的消息。

文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值