资料介绍
描述
使用 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。
开发环境(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,以便正确配置工具链。
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 菜单打开项目目录。
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)
如果单击“保存”按钮进行保存,注册证书的屏幕将出现在底部。
单击“管理主要”按钮后,单击文件夹形状的图标以上传证书。
上传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
单击验证按钮后,从出现的文件选择弹出窗口中选择生成的验证证书。
(如果看不到文件,请选择查看所有文件的选项)
所有权证明完成后,状态将更改为已验证,如上面的屏幕所示。
现在组注册已完成,将创建要在设备上使用的证书。
设备证书
- 生成设备证书。
- 输入在输入通用名称时要使用的设备 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 证书身份验证的变量如下。
对于 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** 进行构建。
第一次构建可能需要几分钟才能完成。
[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 按钮的同时,通电使其进入存储模式。
- W5100S-EVB-Pico 引脚:https ://docs.wiznet.io/Product/iEthernet/W5100S/w5100s-evb-pico#pin-out
- 如果您进入存储模式,则会出现名为 RPI-RP2 的设备驱动器。(Windows 环境)
将main.uf2
文件复制到驱动器的顶级路径。
- 设备将自动重启。
检查在 IoT Central 中创建的设备
确认设备创建
检查示例代码发送的示例数据
设备监控
可以使用 Terra Term 或 Putty 等终端程序监控设备运行状态。
在Windows设备管理器中查看W5100S-EVB-Pico对应的COM端口号,在终端程序中设置对应的端口进行连接。
在 Terra Term 的情况下,您可以通过如下设置进行连接。
分享
发表评论
- Arduino Raspberry Pi Pico/RP2040以太网:W5100S EVB Pico
- W5100S EVB Pico与Node RED开源
- 将W5100S作为3线SPI连接到Pico
- 将WizFi360 EVB Pico连接到Azure IoT Cloud
- 使用RP2040和W5100S的无套接字功能
- 与Azure IoT Central的分布式网格集成
- 使用Azure MT3620和Azure IoT Central的风车监视器
- RaspberryPi Pico Web服务器w5100S(W5500)
- 如何将手机连接到Azure IoT Central
- 制作测试Wiznet模(W5500 io/W5100S io)的测试夹具
- 在W5100S EVB Pico上使用Micropython连接到Azure IoTHub
- W5100与MCU的连接方式
- 基于Si5100-EVB光收发器的参考设计
- 传承自W5100全部优点的W5100S 43次下载
- W5100 Arduino W5100 Test 43次下载
- 使用SPI驱动wiznet的网络接口芯片W5xxx 1760次阅读
- 树莓派Pico文件系统应用:数据记录器 1000次阅读
- 使用Raspberry Pi Pico W和MicroPython开发物联网应用 1673次阅读
- Pico W的无线功能 883次阅读
- 使用MM32F3270基于Azure RTOS定时器组的应用 1477次阅读
- 如何用RaspberryPi Pico来控制直流电机? 3970次阅读
- IoT系统架构和网络类别 3544次阅读
- dfrobotEthernet W5100扩展板简介 2211次阅读
- W5100与MCU三种连接方法 5491次阅读
- W5100学习之电气规格 1223次阅读
- W5100学习之应用资料 2751次阅读
- W5100学习之功能描述 3804次阅读
- W5100学习之W5100寄存器 2156次阅读
- W5100学习之引脚定义、引脚布局 4327次阅读
- W5100单片网络接口芯片简单介绍 8185次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多