資料介紹
描述
使用 WIZnet 的 W5100S-EVB-Pico 板,我將總結(jié)使用 X.509 證書連接到 Azure IoT Central 的內(nèi)容。
W5100S-EVB-Pico 是一款基于 Raspberry Pi 最近發(fā)布的 RP2040 微控制器芯片和 WIZnet 以太網(wǎng)芯片 W5100S 的評估板。
可以和樹莓派Pico平臺在同一個環(huán)境下開發(fā),通過W5100S可以使用以太網(wǎng)。您可以參考下面的鏈接了解設(shè)備信息。
硬件設(shè)置
硬件設(shè)置很簡單。
只需連接微型 5 針電纜即可為 W5100S-EVB-Pico 供電。
此外,為了使用網(wǎng)絡(luò),我使用以太網(wǎng)電纜連接到支持 DHCP 服務(wù)器的 AP。
開發(fā)環(huán)境(Windows 10、VS Code)
有關(guān)設(shè)置開發(fā)環(huán)境的信息在官方文檔(入門指南)中。
我參考了文檔的 Windows 和 Visual Studio Code 環(huán)境部分。
可以在下面的鏈接中找到該文檔。
開發(fā)環(huán)境配置在指南中有很好的描述,大家可以根據(jù)自己的開發(fā)環(huán)境進行操作。
要檢查的一件事是安裝和使用 Visual Studio 2019 的構(gòu)建工具。如果通過 VS 命令提示符運行 VS Code,則可以使用相關(guān)工具。
起初,我嘗試在不檢查這部分的情況下進行構(gòu)建,但它一直失敗,所以我再次閱讀指南并應(yīng)用了內(nèi)容。
必須先安裝 Visual Studio 構(gòu)建工具。
使用開發(fā)人員命令提示符運行 VS Code
要使用 Visual Studio 的構(gòu)建環(huán)境,請通過Developer Command Prompt for VS 2019
以下方式運行 VS Code:
這將打開設(shè)置了所有正確環(huán)境變量的 Visual Studio Code,以便正確配置工具鏈。
VS 代碼設(shè)置
要構(gòu)建 VS Code 設(shè)置,CMake 和 Pico SDK 路徑設(shè)置如下。
"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 應(yīng)用程序設(shè)置
借助 IoT Central 試用計劃(7 天),您無需訂閱 Azure 即可創(chuàng)建和使用應(yīng)用程序。
7 天后需要 Azure 訂閱。
有關(guān)詳細信息,請參閱 MS Azure 指南。
使用 OpenSSL 創(chuàng)建證書
生成用于設(shè)備身份驗證的 X.509 證書。我使用了 OpenSSL,請參閱下面的指南。
我將在下面生成證書并將它們輸入到 IoT Central 應(yīng)用程序和設(shè)備代碼中。
為了使用 OpenSSL 命令,我使用了 WSL(Linux 的 Windows 子系統(tǒng))環(huán)境。
用于創(chuàng)建根 CA 和子 CA 的 .conf 文件按原樣使用指南中的內(nèi)容,僅更改了名稱。
- 根 CA
- 從屬 CA
- 設(shè)備證書
根 CA 設(shè)置和創(chuàng)建
- 創(chuàng)建根 CA 目錄結(jié)構(gòu)
- 創(chuàng)建 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
子證書設(shè)置和創(chuàng)建
- 創(chuàng)建子 CA 目錄結(jié)構(gòu)
- 創(chuàng)建 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 中創(chuàng)建的注冊。subca.crt
注冊 IoT Central 組
單擊新建按鈕 → 創(chuàng)建新的注冊組
- 名稱:指定一個可識別的名稱
- 證明類型:證書 (X.509)
如果單擊“保存”按鈕進行保存,注冊證書的屏幕將出現(xiàn)在底部。
單擊“管理主要”按鈕后,單擊文件夾形狀的圖標以上傳證書。
上傳subca.crt
點擊生成驗證碼按鈕生成并復制驗證碼。
使用 OpenSSL 生成經(jīng)過驗證的證書。此時輸入生成的驗證碼。
~/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
單擊驗證按鈕后,從出現(xiàn)的文件選擇彈出窗口中選擇生成的驗證證書。
(如果看不到文件,請選擇查看所有文件的選項)
所有權(quán)證明完成后,狀態(tài)將更改為已驗證,如上面的屏幕所示。
現(xiàn)在組注冊已完成,將創(chuàng)建要在設(shè)備上使用的證書。
設(shè)備證書
- 生成設(shè)備證書。
- 輸入在輸入通用名稱時要使用的設(shè)備 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
在代碼編寫過程中,將創(chuàng)建設(shè)備證書文件并將其添加為變量。
構(gòu)建并運行
修改并執(zhí)行一些應(yīng)用程序代碼。
修改主代碼
設(shè)置要在主代碼中使用的示例應(yīng)用程序。
由于我們將使用 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 代碼
生成的設(shè)備證書必須作為變量添加到 sample_certs.c。
用于連接 IoT Central X.509 證書身份驗證的變量如下。
對于 pico_az_COMMON_NAME,使用與創(chuàng)建設(shè)備證書時寫入的 Common Name 相同的值。
?
將證書文件轉(zhuǎn)換為變量(使用 Bash shell)
要將證書值作為變量添加到設(shè)備源代碼中,必須將值轉(zhuǎn)換為變量形式。
可以用VS Code打開文件直接編輯,但是每次都編輯文件比較麻煩,所以我使用了MS Guide提供的腳本。
詳細信息可以在下面的鏈接中找到。
一旦將腳本中的輸入更改為目標文件名并將其按原樣粘貼到 shell 中,就會以變量的形式輸出結(jié)果值。要更改參數(shù)的路徑,只需更改輸入部分。
用 Vim 創(chuàng)建一個腳本文件 (.sh) 并使用它。
創(chuàng)建證書轉(zhuǎn)換腳本
$ 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
密鑰文件也可以用同樣的方法進行轉(zhuǎn)換。
將證書更新為代碼
將相應(yīng)的值放入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** 進行構(gòu)建。
第一次構(gòu)建可能需要幾分鐘才能完成。
[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 運行
構(gòu)建成功完成后,將在構(gòu)建目錄中創(chuàng)建輸出。
W5100S-EVB-Pico 中使用的固件是 main.uf2 文件。
上傳固件
通過以下步驟將固件復制到設(shè)備。
在按下 W5100S-EVB-Pico 的BOOTSEL 按鈕的同時,通電使其進入存儲模式。
- W5100S-EVB-Pico 引腳:https ://docs.wiznet.io/Product/iEthernet/W5100S/w5100s-evb-pico#pin-out
- 如果您進入存儲模式,則會出現(xiàn)名為 RPI-RP2 的設(shè)備驅(qū)動器。(Windows 環(huán)境)
將main.uf2
文件復制到驅(qū)動器的頂級路徑。
- 設(shè)備將自動重啟。
檢查在 IoT Central 中創(chuàng)建的設(shè)備
確認設(shè)備創(chuàng)建
檢查示例代碼發(fā)送的示例數(shù)據(jù)
設(shè)備監(jiān)控
可以使用 Terra Term 或 Putty 等終端程序監(jiān)控設(shè)備運行狀態(tài)。
在Windows設(shè)備管理器中查看W5100S-EVB-Pico對應(yīng)的COM端口號,在終端程序中設(shè)置對應(yīng)的端口進行連接。
在 Terra Term 的情況下,您可以通過如下設(shè)置進行連接。
分享
發(fā)表評論
- Arduino Raspberry Pi Pico/RP2040以太網(wǎng):W5100S EVB Pico
- W5100S EVB Pico與Node RED開源
- 將W5100S作為3線SPI連接到Pico
- 將WizFi360 EVB Pico連接到Azure IoT Cloud
- 使用RP2040和W5100S的無套接字功能
- 與Azure IoT Central的分布式網(wǎng)格集成
- 使用Azure MT3620和Azure IoT Central的風車監(jiān)視器
- RaspberryPi Pico Web服務(wù)器w5100S(W5500)
- 如何將手機連接到Azure IoT Central
- 制作測試Wiznet模(W5500 io/W5100S io)的測試夾具
- 在W5100S EVB Pico上使用Micropython連接到Azure IoTHub
- W5100與MCU的連接方式
- 基于Si5100-EVB光收發(fā)器的參考設(shè)計
- 傳承自W5100全部優(yōu)點的W5100S 43次下載
- W5100 Arduino W5100 Test 43次下載
- 使用SPI驅(qū)動wiznet的網(wǎng)絡(luò)接口芯片W5xxx 1760次閱讀
- 樹莓派Pico文件系統(tǒng)應(yīng)用:數(shù)據(jù)記錄器 1000次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網(wǎng)應(yīng)用 1673次閱讀
- Pico W的無線功能 883次閱讀
- 使用MM32F3270基于Azure RTOS定時器組的應(yīng)用 1477次閱讀
- 如何用RaspberryPi Pico來控制直流電機? 3970次閱讀
- IoT系統(tǒng)架構(gòu)和網(wǎng)絡(luò)類別 3544次閱讀
- dfrobotEthernet W5100擴展板簡介 2211次閱讀
- W5100與MCU三種連接方法 5491次閱讀
- W5100學習之電氣規(guī)格 1223次閱讀
- W5100學習之應(yīng)用資料 2751次閱讀
- W5100學習之功能描述 3804次閱讀
- W5100學習之W5100寄存器 2156次閱讀
- W5100學習之引腳定義、引腳布局 4327次閱讀
- W5100單片網(wǎng)絡(luò)接口芯片簡單介紹 8185次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 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開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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次下載 | 免費
評論
查看更多