資料介紹
描述
早在 2020 年 11 月,我就發(fā)布了我的 The Things Network V2 Azure IoT Hubs & IoT Central Gateway。該項目是關(guān)于構(gòu)建物聯(lián)網(wǎng) (TTN)HTTP 應(yīng)用程序集成,它啟用Azure IoT 中心和Azure IoT Central與Azure IoT 中心設(shè)備供應(yīng)服務(wù) (DPS)供應(yīng)支持的連接。
該項目使用了“符合流行語”的Microsoft Azure服務(wù)選擇,但它不支持云到設(shè)備 (C2D) 消息,存在消息排序問題,并且部署和設(shè)置復(fù)雜。(還有其他問題,但不值得在這里重新討論)
然后在 2021 年 3 月,我再次嘗試使用我的 The Things Industries(TTI) V3 Azure IoT 連接器,它是一個TTI(消息隊列遙測傳輸)MQTT 集成,也使用了 TTI應(yīng)用程序和終端設(shè)備 API 。
此版本使用MQTTNet (這是一個很棒的庫)和在應(yīng)用程序啟動時連接到Azure IoT Hub或Azure IoT Central的 TTI 設(shè)備。即使我使用多個線程并對 Application 和 EndDevice 請求進(jìn)行分頁,這個過程也很慢。
該應(yīng)用程序更容易調(diào)試,因為我可以在桌面上運行它,并且更容易配置,因為我將配置轉(zhuǎn)移回appsettings.json文件(我可能會重新考慮放棄Azure Key Vault支持的決定)。
此版本具有基本的Azure 數(shù)字孿生定義語言 (DTDL)支持,因此可以在Azure IoT Central中“自動”預(yù)配設(shè)備。
我還添加了對Azure IoT Hubs和Azure IoT Central的C2D 支持,并基于下行鏈路消息有效負(fù)載確認(rèn)標(biāo)志跟蹤消息傳遞。我發(fā)現(xiàn)TTI 交付進(jìn)度更新的順序可能有問題。
在生產(chǎn)環(huán)境中使用基于MQTT的集成后,我發(fā)現(xiàn)它過于“有狀態(tài)”并且無法從意外事件中很好地恢復(fù)。(還有其他問題,但不值得在這里重新討論)
然后在 2021 年 10 月,我決定我的“學(xué)習(xí)之旅”還沒有結(jié)束,我將構(gòu)建另一個TTI 連接器,該連接器將 Azure 存儲隊列用于 C2D 和 D2C 消息。
試用該應(yīng)用程序后,我意識到消息排序和部署復(fù)雜性可能是一個問題(我忘記了我的 TTN V2 網(wǎng)關(guān)學(xué)習(xí)),所以我暫停了項目。(雖然我確實認(rèn)為這個項目可能對一些集成項目有用)
此時,我回顧了從多個 TTI 集成項目中學(xué)到的知識,并決定再次嘗試使用The Things Stack(TTS) 網(wǎng)絡(luò)掛鉤集成。
我的“The Things Industries(TTI) V3 connector revisited”項目是一個身份轉(zhuǎn)換云網(wǎng)關(guān),它將LoRaWAN EndDevices映射到Azure IoT Hub Devices 。
連接器為每個LoRaWAN設(shè)備創(chuàng)建一個DeviceClient ,并且可以使用Azure 設(shè)備連接字符串或Azure 設(shè)備預(yù)配服務(wù) (DPS) 。
在我所有的集成中,TTI 一直是設(shè)備配置的單一事實來源 (SSOT) ,因為LoRaWAN配置設(shè)置的數(shù)量和復(fù)雜性會使從其他應(yīng)用程序管理它成為一個難題。(我還考慮過使用TTSEndDevice 模板來創(chuàng)建我可能會回來的設(shè)備)
當(dāng)前版本的一個限制是,EndDevice 將連接到Azure IoT Hub (提供應(yīng)用程序配置連接字符串或Azure IoT Hub DPS ),并且只有在收到 TTI 上行鏈路或Azure IoT Hub D2C 消息后才會處理 C2D 消息。一體化。
這可能是一個問題(尤其是在重新啟動集成后)或配置了新設(shè)備。我考慮過添加幾個Azure HTTP 觸發(fā)器函數(shù),應(yīng)用程序調(diào)用這些函數(shù)可以檢查設(shè)備的連接狀態(tài)并可選擇啟動連接。(短期內(nèi)從 TTI EndDevice 用戶界面或 API 模擬上行鏈路應(yīng)該可以工作)
我從D2C 消息傳遞開始,然后添加了C2D 消息傳遞,然后添加了支持DTDLV2 的 Device Provisioning(DPS) ,然后擴展了C2D 消息傳遞,最后實現(xiàn)了Azure IoT Central D2C和C2D (使用少參數(shù)、單值和JavaScript 對象表示法(JSON )有效載荷命令)
該應(yīng)用程序的核心是五個Azure HTTP 觸發(fā)函數(shù)(已發(fā)送函數(shù)當(dāng)前未使用)和一個為 C2D 調(diào)用的方法(與SetReceiveMessageHandlerAsync方法連接)消息。
Azure IoT 中心可以調(diào)用方法(同步)或將消息(異步)發(fā)送到設(shè)備進(jìn)行處理。Azure IoT 中心 DeviceClient有兩個方法SetMethodDefaultHandlerAsync和SetReceiveMessageHandlerAsync ,它們可以處理直接方法和消息。
在對以前的 TTI 連接器進(jìn)行了一些實驗之后,我發(fā)現(xiàn)DirectMethods的同步特性不適用于LoRAWAN通常“不規(guī)則”的上行鏈路,因此目前不支持它們。
該集成廣泛使用了Microsoft.Extensions.Logging功能和Azure Application Insights ,因此調(diào)試、監(jiān)控和故障查找更省時。
我已將有用的“元數(shù)據(jù)”添加到各個日志項中,因此更容易跟蹤為處理事件而執(zhí)行的所有步驟,例如 ReceiveMessageCallback 、AbandonAsync 、CompleteAsync和RejectAsync C2D 消息處理中使用的 LockToken。
應(yīng)用程序配置概述
可以使用appsettings.json文件配置應(yīng)用程序(對桌面開發(fā)和調(diào)試很有用)
{
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=...",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"APPINSIGHTS_INSTRUMENTATIONKEY": "..."
},
"TheThingsIndustries": {
"WebhookBaseURL": "https://....eu1.cloud.thethings.industries/api/v3/as/applicat ions",
"Applications": {
"seeeduinolorawan": {
"webhookId": "azure-iot-hub-connector",
"APIKey": "..."
},
"Wisnode Devices": {
"webhookId": "azure-iot-hub-connector",
"APIKey": "..."
},
"dragino-lht65": {
"webhookId": "azure-iot-hub-connector",
"APIKey": "..."
},
"SeeeduinoLoRaWAN100": {
"webhookId": "azure-iot-hub-connector",
"APIKey": "..."
},
"rak3172": {
"webhookId": "azure-iot-hub-connector",
"APIKey": "..."
},
"application1": {
"webhookId": "azure-iot-hub-connector",
"APIKey": "..."
}
}
},
"AzureIoT": {
"DeviceClientCacheSlidingExpiration": "P2H30M",
"IoTHub": {
"IoTHubConnectionString": "HostName=...",
"Applications": {
"SeeeduinoLoRaWAN": {
"DtdlModelId": "dtmi:ttnv3connectorclient:SeeeduinoLoRaWAN4cz;1"
},
"Wisnode Devices": {
},
"Dragino LHT65": {
}
}
},
"DeviceProvisioningService": {
"IdScope": "0ne..",
"Applications": {
"seeeduinolorawan": {
"DtdlModelId": "dtmi:ttnv3connectorclient:SeeeduinoLoRaWAN4cz;1",
"GroupEnrollmentKey": "...",
},
"Wisnode Devices": {
"GroupEnrollmentKey": "..."
},
"dragino-lht65": {
"GroupEnrollmentKey": "..."
},
"rak3172": {
"GroupEnrollmentKey": "..."
},
"application1": {
"DtdlModelId": "dtmi:ttnv3connectorclient:FezduinoWisnodeV14x8;4",
"GroupEnrollmentKey": "..."
}
}
},
"IoTCentral": {
"methods": {
"LightsGoOn": {
"Port": 10,
"Payload": "{"value_1": 1}"
},
"LightsGoOff": {
"Port": 10,
"Payload": "{"value_1": 0}"
},
"value_0": {
"Port": 20
},
"value_1": {
"Port": 21
},
"value_2": {
"Port": 22
},
"TemperatureOOBAlertMinimumAndMaximum": {
"Port": 23
},
}
}
暫存和生產(chǎn)部署的首選方法)是使用Azure 門戶Azure 功能配置刀片
Things Industries Webhook 集成配置
要發(fā)送下行鏈路和接收上行鏈路消息,必須配置 TTI 應(yīng)用程序和TTI 連接器并配置 API 密鑰。
注意 – TTN URL 和 Azure IoT 中心設(shè)備標(biāo)識符區(qū)分大小寫
TTI 連接器需要webhookbaseURL ,然后是每個 TTI 應(yīng)用程序和一個API 密鑰,以及 WebhookId
當(dāng)調(diào)用 Azure Functions 時,Azure Function Host Key會在名為“x-functions-key”的HTTP 標(biāo)頭中傳遞
當(dāng)調(diào)用TTI webhook 下行鏈路端點時, TTI 應(yīng)用程序密鑰在標(biāo)準(zhǔn)HTTP 授權(quán)標(biāo)頭中傳遞。
Azure IoT 中心連接配置
TTI 連接器需要共享訪問簽名 (SAS) 設(shè)備策略連接字符串才能連接到Azure IoT 中心。
Azure IoT Hub設(shè)備必須手動或通過Azure IoT Hub REST API進(jìn)行預(yù)配。我已經(jīng)試用了一個Azure 邏輯應(yīng)用程序,它管理設(shè)備配置并且可以在操作失敗時穩(wěn)健地處理所需的補償事務(wù)。
如果同時配置了Azure IoT 中心/Azure IoT 中心設(shè)備預(yù)配 (DPS) 支持,則 TTI 連接器應(yīng)用程序?qū)⒉粫印?/font>
Azure IoT 中心設(shè)備預(yù)配服務(wù) (DPS) 配置
TTI 連接器支持用于獨立Azure IoT 中心應(yīng)用程序的Azure IoT 中心設(shè)備預(yù)配服務(wù) (DPS) 。TTI 連接器實現(xiàn)還支持用于設(shè)備配置的Azure IoT Central 數(shù)字孿生定義語言( DTDL V2 )。
Azure IoT 中心設(shè)備預(yù)配服務(wù)支持使用X.509證書、可信平臺模塊 (TPM)和使用共享訪問簽名(SAS) 安全令牌的對稱密鑰進(jìn)行設(shè)備證明。
Things Industries(TTI) V3 Azure IoT 連接器僅支持對稱密鑰設(shè)備證明。
如果Azure IoT 中心/ Azure IoT 中心設(shè)備預(yù)配 (DPS)支持兩者/兩者均未配置,則 TTI 連接器應(yīng)用程序?qū)⒉粫印?/font>
Azure IoT 中心設(shè)備預(yù)配服務(wù) (DPS)具有確定設(shè)備分配方式的服務(wù)級別設(shè)置。有四種支持的分配策略:
- 均勻加權(quán)分布:鏈接的物聯(lián)網(wǎng)中心同樣可能有設(shè)備配置給它們。默認(rèn)設(shè)置。如果您僅將設(shè)備預(yù)配到一個 IoT 中心,則可以保留此設(shè)置。
- 最低延遲:將設(shè)備預(yù)配到設(shè)備延遲最低的 IoT 中心。如果多個鏈接的 IoT 集線器將提供相同的最低延遲,則供應(yīng)服務(wù)會在這些集線器之間散列設(shè)備
- 通過注冊列表進(jìn)行靜態(tài)配置:注冊列表中所需 IoT 中心的規(guī)范優(yōu)先于服務(wù)級別分配策略。
- 自定義(使用 Azure 函數(shù)):自定義分配策略使您可以更好地控制如何將設(shè)備分配給 IoT 中心。這是通過使用 Azure 函數(shù)中的自定義代碼將設(shè)備分配給 IoT 中心來實現(xiàn)的。設(shè)備預(yù)配服務(wù)調(diào)用您的 Azure 函數(shù)代碼,提供有關(guān)設(shè)備和代碼注冊的所有相關(guān)信息。您的函數(shù)代碼將執(zhí)行并返回用于預(yù)配設(shè)備的 IoT 中心信息。
在我的測試環(huán)境中,我使用均勻加權(quán)分布,當(dāng)我預(yù)置 1000 臺設(shè)備時,它們分布在我的五個Azure IoT 中心。
Azure IoT Central DPS 配置
TTI 連接器支持Azure IoT Central應(yīng)用程序所需的Azure IoT 中心設(shè)備預(yù)配服務(wù) (DPS) (有一種預(yù)配單個設(shè)備的方法) 。TTI 連接器實現(xiàn)還支持用于“自動”設(shè)備預(yù)配的Azure IoT Central 數(shù)字孿生定義語言( DTDL V2 )。
如果同時配置了Azure IoT 中心/Azure IoT 中心設(shè)備預(yù)配 (DPS) 支持,則 TTI 連接器應(yīng)用程序?qū)⒉粫印?/font>
第一步是配置Azure IoT Central 注冊組(確保“自動連接該組中的設(shè)備”為“零接觸”配置)并將IDScope和組注冊密鑰復(fù)制到 TTI 連接器配置
然后,我為我的RAK3172 分線板基于 .Net Core 供電的測試設(shè)備創(chuàng)建了一個 Azure IoT Central 模板。
還可以使用在 TTI 連接器配置中指定的可選 dtdlmodelid 為 TTI 應(yīng)用程序設(shè)置設(shè)備模板 @Id。
Azure IoT Hub 設(shè)備到云 (D2C)
LoRaWAN設(shè)備使用共享訪問簽名 (SAS) 設(shè)備策略連接字符串連接到Azure IoT 中心。我正在使用Device Twin Explorer顯示遙測數(shù)據(jù)并向我的傳感器節(jié)點發(fā)送消息。
如果有效負(fù)載已被有效負(fù)載格式化程序解碼,則將對其進(jìn)行后處理,然后包含在消息有效負(fù)載中。
try
{
JObject telemetryEvent = new JObject
{
{ "ApplicationID", applicationId },
{ "DeviceEUI" , payload.EndDeviceIds.DeviceEui},
{ "DeviceID", deviceId },
{ "Port", port },
{ "Simulated", payload.Simulated },
{ "ReceivedAtUtc", payload.UplinkMessage.ReceivedAtUtc.ToString("s", CultureInfo.InvariantCulture) },
{ "PayloadRaw", payload.UplinkMessage.PayloadRaw }
};
// If the payload has been decoded by payload formatter, put it in the message body.
if (payload.UplinkMessage.PayloadDecoded != null)
{
EnumerateChildren(telemetryEvent, payload.UplinkMessage.PayloadDecoded);
}
// Send the message to Azure IoT Hub
using (Message ioTHubmessage = new Message(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(telemetryEvent))))
{
// Ensure the displayed time is the acquired time rather than the uploaded time.
ioTHubmessage.Properties.Add("iothub-creation-time-utc", payload.UplinkMessage.ReceivedAtUtc.ToString("s", CultureInfo.InvariantCulture));
ioTHubmessage.Properties.Add("ApplicationId", applicationId);
ioTHubmessage.Properties.Add("DeviceEUI", payload.EndDeviceIds.DeviceEui);
ioTHubmessage.Properties.Add("DeviceId", deviceId);
ioTHubmessage.Properties.Add("port", port.ToString());
ioTHubmessage.Properties.Add("Simulated", payload.Simulated.ToString());
await deviceClient.SendEventAsync(ioTHubmessage);
logger.LogInformation("Uplink-DeviceID:{deviceId} SendEventAsync success", deviceId);
}
}
catch( Exception ex)
{
logger.LogError(ex, "Uplink-DeviceID:{deviceId} SendEventAsync failure", deviceId);
// If retries etc fail remove from the cache and it will get tried again on the next message
_DeviceClients.Remove(deviceId);
}
Azure IoT Hub 云到設(shè)備 (C2D)
基本 Azure IoT 中心 C2D 消息傳遞僅需要端口號、TTI 確認(rèn)、隊列和優(yōu)先級(如果未提供)使用默認(rèn)值。
- 確認(rèn) - 真/假
- 隊列 - 推送/替換
- 優(yōu)先級 - 最低/低/低于正常/正常/高于正常/高/最高
這些選項在消息屬性中指定。為了測試此功能,我使用了Azure Device Explorer Twin應(yīng)用程序,該應(yīng)用程序還顯示消息傳遞進(jìn)度。
如果負(fù)載無效,則假定JSON是Base64編碼的(需要額外驗證)并復(fù)制到下行鏈路消息的 payload_raw 字段中。
如果有效載荷是有效的JSON ,它被“嫁接”(想不出更好的詞)到TTI 下行鏈路消息 decoded_pa??yload 字段中。
Azure IoT Central 設(shè)備到云 (D2C)
連接器“轉(zhuǎn)換”了The Things Industries(TTI) MyDevices Cayenne 低功耗協(xié)議 (LPP) 有效負(fù)載格式化程序的輸出(它還支持自定義編碼器/解碼器,但尚未經(jīng)過廣泛測試),以便它可以被Azure IoT Central攝取.
用于處理TTI 上行鏈路消息的Azure 函數(shù)首先反序列化JSON負(fù)載,丟棄任何LoRaWAN 控制消息和具有空負(fù)載的消息。
為了測試更復(fù)雜的場景,我創(chuàng)建了一個Azure IoT Central 設(shè)備模板,該模板具有“功能類型”的位置。
如果消息已由有效負(fù)載格式化程序成功解碼,則 PayloadDecoded 內(nèi)容將被“嫁接”到Azure IoT Central 遙測消息中。
Azure IoT Central 位置遙測消息的格式與 TTI Cayenne LPP Payload格式化程序的輸出格式略有不同,因此必須對有效負(fù)載進(jìn)行“后處理”(使用新的Azure IoT Central 地圖遙測入口功能,這可能不是必需的) .
我可能必須擴展后處理以支持其他Cayenne LPP 或第三方有效負(fù)載格式化程序。
Azure IoT Central 云到設(shè)備 (C2D)
要發(fā)送下行鏈路消息,TTI 需要一個無法通過 Azure IoT Central 命令設(shè)置提供的LoRaWAN 端口號(加上可選隊列、確認(rèn)和優(yōu)先級值),因此這些值在集成配置中進(jìn)行配置。
我的集成僅使用離線排隊命令,因為消息通常不會立即傳遞到傳感器節(jié)點,特別是如果傳感器節(jié)點僅每半小時/小時/天發(fā)送一條消息。
每個 TTI 應(yīng)用程序都有零個或多個Azure IoT Central 命令配置,這些配置指定 LoRaWAN 端口號,以及可選的有效負(fù)載、已確認(rèn)的 TTI 下行鏈路消息、優(yōu)先級和隊列設(shè)置。
無參數(shù)命令
即使該命令沒有參數(shù),也必須配置下行鏈路消息負(fù)載(當(dāng)前只有JSON編碼的負(fù)載,考慮到原始Base64負(fù)載支持)
此示例說明如何使用內(nèi)置的Cayenne LPP 有效負(fù)載格式化程序配置打開和關(guān)閉燈的命令。
枚舉參數(shù)
此示例顯示如何通過從選項列表中選擇所需狀態(tài)來配置打開和關(guān)閉風(fēng)扇的命令。
單值參數(shù)
此示例顯示如何配置用于設(shè)置警報的最低溫度的命令。
JSON 參數(shù)
此示例說明如何配置命令以設(shè)置警報的最低和最高溫度。
交貨確認(rèn)
為了處理消息傳遞確認(rèn),將包含消息LockToken 的相關(guān)標(biāo)識符添加到下行鏈路有效負(fù)載中的相關(guān) ID 。
唯一需要的消息屬性是 LoRaWAN 端口號,確認(rèn)、隊列、優(yōu)先級和有效負(fù)載字段是可選的。
如果端口號屬性或任何其他屬性不正確,則調(diào)用DeviceClient.RejectAsync ,這會從設(shè)備隊列中刪除消息并向服務(wù)器指示無法處理該消息。
使用存儲在 TTI CorrelationID 中的 Azure 令牌跟蹤消息傳遞確認(rèn)過程。
未確認(rèn)的消息
TTI 連接器調(diào)用CompleteAsync方法(使用 TTI CorrelationIDs 列表中的 LockToken),該方法在調(diào)用“排隊”Azure 函數(shù)時從Azure IoT 中心設(shè)備隊列中刪除消息。
確認(rèn)消息
如果消息傳遞成功(調(diào)用 Ack 函數(shù)),則會調(diào)用CompleteAsync方法(使用 TTI CorrelationIDs 列表中的 LockToken)從 Azure IoT 中心設(shè)備隊列中刪除消息。
如果消息傳遞失?。ㄕ{(diào)用失敗的函數(shù)),則調(diào)用AbandonAsync方法(使用 TTI CorrelationIDs 列表中的 LockToken)將下行鏈路消息放回 Azure IoT 中心設(shè)備隊列。
如果消息傳遞不成功(調(diào)用 Nack 函數(shù)),則會調(diào)用RejectAsync方法(使用 CorrelationIDs 列表中的 LockToken),該方法從設(shè)備隊列中刪除消息并向服務(wù)器指示無法處理該消息。
消息 Failed( AbandonAsync )、Ack( CompleteAsync ) 和 Nack( RejectAsync ) 的處理方式需要進(jìn)行更多測試,以確認(rèn)我對 TTI 確認(rèn)消息傳遞順序的理解。
謹(jǐn)防
當(dāng)Azure IoT 中心下行鏈路消息超時并重新發(fā)送時,將確認(rèn)消息與不定期發(fā)送上行鏈路消息的設(shè)備一起使用可能會導(dǎo)致奇怪的問題。
執(zhí)行摘要
這個項目已經(jīng)付出了一年多的努力。我學(xué)到了很多關(guān)于LoRaWAN以及The Things Industries如何運作的知識。
有時是一些愚蠢的事情,比如拖慢進(jìn)度的錯字
在我確信它已準(zhǔn)備好投入生產(chǎn)之前,我對該軟件進(jìn)行了一個月的浸泡測試,但有幾次我達(dá)到了我的Azure 支出限制,這禁用了我的所有服務(wù),因此我不得不重新運行浸泡測試。
如果您有任何問題或反饋給我留言,我在Twitter上,我的博客上有更多關(guān)于我的“學(xué)習(xí)之旅”的詳細(xì)信息。
- FET430UIF V3固件降級程序 0次下載
- The Things Network V2 Azure物聯(lián)網(wǎng)中心和物聯(lián)網(wǎng)中心網(wǎng)關(guān)
- 如何將手機連接到Azure IoT Central
- 3M卡連接器microSD數(shù)據(jù)手冊.pdf 6次下載
- NODEMCU V3燒寫 AT固件
- 正點原子ESP8266獲取網(wǎng)絡(luò)天氣適配戰(zhàn)艦V3 25次下載
- 戰(zhàn)艦V3 STM32103封裝庫下載 79次下載
- GAKATO光速達(dá)中控解決方案V3 0次下載
- V3硬件設(shè)計指南V1.0 68次下載
- FY2005K編程器軟件V3安裝程序 40次下載
- ITIL V3白皮書 0次下載
- PDP4218三星V3屏電源工作原理及時序
- S60 V3(opda)手機權(quán)限破解+去除簽名限制
- 摩托羅拉V3手機原理圖紙
- 摩托羅拉v3電路圖
- 連接器的類型及應(yīng)用 801次閱讀
- 什么是連接器?連接器有哪些種類? 2917次閱讀
- 3D打印技術(shù)制造連接器有什么優(yōu)勢 1126次閱讀
- 連接器到底是什么?連接器有哪些類型 9260次閱讀
- 連接器的基礎(chǔ)知識入門介紹 1.1w次閱讀
- FFC連接器與FPC連接器的差別及常用種類有哪些 8721次閱讀
- 貼片連接器是什么它有什么作用 1w次閱讀
- 射頻連接器的選用 1918次閱讀
- fpc連接器結(jié)構(gòu)_fpc連接器原理 1w次閱讀
- 電子連接器是什么_電子連接器的材料 5704次閱讀
- 關(guān)于射頻同軸連接器的詳細(xì)介紹 1.2w次閱讀
- 什么是射頻連接器_射頻連接器有什么用 3.7w次閱讀
- 電子連接器結(jié)構(gòu) 2206次閱讀
- 射頻連接器是什么_射頻連接器分類與規(guī)格介紹 2.5w次閱讀
- 連接器的應(yīng)用與連接器的市場發(fā)展 2414次閱讀
下載排行
本周
- 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元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 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十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多