×

如何使用W5100S EVB Pico连接到Azure IoT Central

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-14

符筹荣

分享资料个

描述

使用 WIZnet 的 W5100S-EVB-Pico 板,我将总结使用 X.509 证书连接到 Azure IoT Central 的内容。

W5100S-EVB-Pico 是一款基于 Raspberry Pi 最近发布的 RP2040 微控制器芯片和 WIZnet 以太网芯片 W5100S 的评估板。

可以和树莓派Pico平台在同一个环境下开发,通过W5100S可以使用以太网。您可以参考下面的链接了解设备信息。

硬件设置

硬件设置很简单。

只需连接微型 5 针电缆即可为 W5100S-EVB-Pico 供电。

此外,为了使用网络,我使用以太网电缆连接到支持 DHCP 服务器的 AP。

pYYBAGNY5xGAJ45qAAaEA9LoYvE147.jpg
 

开发环境(Windows 10、VS Code)

有关设置开发环境的信息在官方文档(入门指南)中。

我参考了文档的 Windows 和 Visual Studio Code 环境部分。

可以在下面的链接中找到该文档。

开发环境配置在指南中有很好的描述,大家可以根据自己的开发环境进行操作。

要检查的一件事是安装和使用 Visual Studio 2019 的构建工具如果通过 VS 命令提示符运行 VS Code,则可以使用相关工具。

起初,我尝试在不检查这部分的情况下进行构建,但它一直失败,所以我再次阅读指南并应用了内容。

必须先安装 Visual Studio 构建工具。

使用开发人员命令提示符运行 VS Code

要使用 Visual Studio 的构建环境,请通过Developer Command Prompt for VS 2019以下方式运行 VS Code:

这将打开设置了所有正确环境变量的 Visual Studio Code,以便正确配置工具链。
 
pYYBAGNY5xOANm8JAABMAXVO4Pw411.png
 

VS 代码设置

要构建 VS Code 设置,CMake 和 Pico SDK 路径设置如下。

"cmake.cmakePath": "C:\\Program Files\\CMake\\bin\\cmake.exe",
"cmake.configureSettings": {
    "PICO_SDK_PATH": "D:\\_RaspberryPi_Pico\\pico-sdk"
},

Github 存储库

代码使用了WIZnet提供的RP2040-HAT-AZURE-C项目。

使用 git 命令将项目克隆到本地 PC。

git clone https://github.com/Wiznet/RP2040-HAT-AZURE-C

通过 Developer Command Prompt 运行 VS code,然后通过 Open Folder 菜单打开项目目录。

 
poYBAGNY5xaAYmr3AAAgGgsf8lM662.png
 

IoT Central 应用程序设置

借助 IoT Central 试用计划(7 天),您无需订阅 Azure 即可创建和使用应用程序。

7 天后需要 Azure 订阅。

有关详细信息,请参阅 MS Azure 指南。

使用 OpenSSL 创建证书

生成用于设备身份验证的 X.509 证书。我使用了 OpenSSL,请参阅下面的指南。

我将在下面生成证书并将它们输入到 IoT Central 应用程序和设备代码中。

为了使用 OpenSSL 命令,我使用了 WSL(Linux 的 Windows 子系统)环境。

用于创建根 CA 和子 CA 的 .conf 文件按原样使用指南中的内容,仅更改了名称。

  • 根 CA
  • 从属 CA
  • 设备证书

根 CA 设置和创建

  • 创建根 CA 目录结构
  • 创建 rootca.conf 文件
  • 生成证书
~$ mkdir rootca
~$ cd rootca/
~/rootca$ mkdir certs db private
~/rootca$ touch db/index
~/rootca$ openssl rand -hex 16 > db/serial
~/rootca$ echo 1001 > db/crlnumber
*# Change certificate name (commonName)**
~/subca$ vi rootca.conf
~/rootca$ openssl req -new -config rootca.conf -out rootca.csr -keyout private/rootca.key
~/rootca$ openssl ca -selfsign -config rootca.conf -in rootca.csr -out rootca.crt -extensions ca_ext

子证书设置和创建

  • 创建子 CA 目录结构
  • 创建 subca.conf 文件
  • 生成证书
~/rootca$ cd ..
~$ ls
~$ mkdir subca
~$ cd subca/
~/subca$ mkdir certs db private
~/subca$ touch db/index
~/subca$ openssl rand -hex 16 > db/serial
~/subca$ echo 1001 > db/crlnumber
# Change certificate name (modify commonName value)
~/subca$ vi subca.conf
~/subca$ openssl rand -hex 16 > ../rootca/db/serial
~/subca$ openssl req -new -config subca.conf -out subca.csr -keyout private/subca.key
~/subca$ openssl ca -config ../rootca/rootca.conf -in subca.csr -out subca.crt -extensions sub_ca_ext

占有证明(验证证书)

之前在 IoT Central 中创建的注册。subca.crt

注册 IoT Central 组

单击新建按钮 → 创建新的注册组

  • 名称:指定一个可识别的名称
  • 证明类型:证书 (X.509)

如果单击“保存”按钮进行保存,注册证书的屏幕将出现在底部。

 
poYBAGNY5xuAIh7ZAACsfqfpL98841.png
 

单击“管理主要”按钮后,单击文件夹形状的图标以上传证书。

上传subca.crt

点击生成验证码按钮生成并复制验证码。

使用 OpenSSL 生成经过验证的证书。此时输入生成的验证码。

~/subca$ openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
~/subca$ openssl req -new -key pop.key -out pop.csr
****Paste the verification code into Common Name**

~/subca$ openssl ca -config subca.conf -in pop.csr -out pop.crt -extensions client_ext

单击验证按钮后,从出现的文件选择弹出窗口中选择生成的验证证书。

 
poYBAGNY5x6APh6lAABPT7ew798034.png
 

(如果看不到文件,请选择查看所有文件的选项)

pYYBAGNY5yCAOhy2AACe3Bf_gso452.png
 

所有权证明完成后,状态将更改为已验证,如上面的屏幕所示。

现在组注册已完成,将创建要在设备上使用的证书。

设备证书

  • 生成设备证书。
  • 输入在输入通用名称时要使用的设备 ID。
$ openssl genpkey -out device.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
$ openssl req -new -key device.key -out device.csr
==> Common Name (e.g. server FQDN or YOUR name) []: Enter w5100s-evb-pico-01

$ openssl req -text -in device.csr -noout
$ openssl ca -config subca.conf -in device.csr -out device.crt -extensions client_ext

在代码编写过程中,将创建设备证书文件并将其添加为变量。

构建并运行

修改并执行一些应用程序代码。

修改主代码

设置要在主代码中使用的示例应用程序。

由于我们将使用 X.509 证书进行配置,因此我们将其定义为APP_PROV_X509.

// The application you wish to use should be uncommented
//
//#define APP_TELEMETRY
//#define APP_C2D
//#define APP_CLI_X509
#define APP_PROV_X509

修改 sample_certs 代码

生成的设备证书必须作为变量添加到 sample_certs.c。

用于连接 IoT Central X.509 证书身份验证的变量如下。

pYYBAGNY5yKAekUxAAAu7Ck_ocQ934.png
 
对于 pico_az_COMMON_NAME,使用与创建设备证书时写入的 Common Name 相同的值。

 

将证书文件转换为变量(使用 Bash shell)

要将证书值作为变量添加到设备源代码中,必须将值转换为变量形式。

可以用VS Code打开文件直接编辑,但是每次都编辑文件比较麻烦,所以我使用了MS Guide提供的脚本。

详细信息可以在下面的链接中找到。

一旦将脚本中的输入更改为目标文件名并将其按原样粘贴到 shell 中,就会以变量的形式输出结果值。要更改参数的路径,只需更改输入部分。

用 Vim 创建一个脚本文件 (.sh) 并使用它。

创建证书转换脚本

$ vi convert_cert.sh
input=$1
bContinue=true
prev=
while $bContinue; do
    if read -r next; then
        if [ -n "$prev" ]; then
            echo "\"$prev\\n\""
        fi
        prev=$next
    else
        echo "\"$prev\";"
        bContinue=false
    fi
done < "$input"

运行脚本

$ chmod +x convert_cert.sh
$ ./convert_cert.sh 

密钥文件也可以用同样的方法进行转换。

将证书更新为代码

将相应的值放入sample_cert.c文件中。

const char pico_az_id_scope[] = "";
const char pico_az_COMMON_NAME[] = "w5100s-evb-pico-01";
const char pico_az_CERTIFICATE[] =
"-----BEGIN CERTIFICATE-----\n"
"MIIDQDCCAiigAwIBAgIPAoh1JOyCoN2l8TasygP2MA0GCSqGSIb3DQEBCwUAMCUx\n"
...
"3agwSktbbJYEpQt2sZrdgIf5V3RsZH2/wZtLBBiVFismcVVEgY2qnBQXNxyQcc0z\n"
"9Vz3OITjhrWKTMkF0l/TNiy4eEU=\n"
"-----END CERTIFICATE-----";
const char pico_az_PRIVATE_KEY[] =
"-----BEGIN PRIVATE KEY-----\n"
"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDpHayE/0vdXbp2\n"
...
"W10KeONpLN+MyMr0fDgsHb6Bc5Re/S4s+CgprfvxiHLgQSFlb1wfCXG3xvuqgJk+\n"
"vrEySFLI2uifS0f64HLVtAPe\n"
"-----END PRIVATE KEY-----";

建造

单击 VS Code 底部的 Build 按钮或按快捷键 **F7** 进行构建。

第一次构建可能需要几分钟才能完成。

 
pYYBAGNY5yeAekl2AAAXzzmAT_k344.png
 
[main] Building folder: RP2040-HAT-AZURE-C
[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.exe" --build d:/_RaspberryPi_Pico/RP2040-HAT-AZURE-C/build --config Debug --target all -j 10 --
[build] Warning: NMake does not support parallel builds. Ignoring parallel build command line option.
[build] [  0%] Built target bs2_default
[build] [  1%] Built target bs2_default_padded_checksummed_asm
[build] [ 12%] Built target mbedcrypto
...
...
[build] [ 97%] Built target LOOPBACK_FILES
[build] [ 97%] Built target FTPSERVER_FILES
[build] [ 98%] Built target HTTPSERVER_FILES
[build] [100%] Built target MQTT_FILES
[build] Build finished with exit code 0

使用 W5100S-EVB-Pico 运行

构建成功完成后,将在构建目录中创建输出。

W5100S-EVB-Pico 中使用的固件是 main.uf2 文件。

上传固件

通过以下步骤将固件复制到设备。

在按下 W5100S-EVB-Pico 的BOOTSEL 按钮的同时,通电使其进入存储模式。

main.uf2文件复制到驱动器的顶级路径。

  • 设备将自动重启。

检查在 IoT Central 中创建的设备

确认设备创建

 
poYBAGNY5ymAXu4lAAA9LeVOqGI349.png
 

检查示例代码发送的示例数据

 
pYYBAGNY5yyAXdQzAACPlqcQCwk241.png
 

设备监控

可以使用 Terra Term 或 Putty 等终端程序监控设备运行状态。

在Windows设备管理器中查看W5100S-EVB-Pico对应的COM端口号,在终端程序中设置对应的端口进行连接。

在 Terra Term 的情况下,您可以通过如下设置进行连接。

pYYBAGNY5y-AbBXfAAA--7aK0-w120.png
 
 
pYYBAGNY5zKAX1o-AAO1YpYemN0733.png
 

分享

推特 脸书 领英

发表评论


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !