資料介紹
描述
歡迎,好奇的朋友!我們生活在一個互聯(lián)網(wǎng)革命的時代,現(xiàn)在比以往任何時候都更容易進行實驗和創(chuàng)新,以提出可以對全球數(shù)百萬人產(chǎn)生積極影響的絕妙想法。
曾經(jīng)想為您家中的架子、抽屜、衣柜或門增加一點額外的安全性嗎?當談到使用互聯(lián)網(wǎng)進行創(chuàng)新時,在我們可用的數(shù)千個平臺和工具中,有幾個脫穎而出的是和. 在這個項目中,我們將修改一個標準架子,使其擁有一個使用人臉驗證解鎖的安全系統(tǒng)。我們將用C#構(gòu)建一個Windows 窗體應(yīng)用程序,它可以存儲、驗證和解鎖受信任的面孔。它用于面部驗證和Bolt IoT Cloud API,用于與 Bolt WiFi 模塊和 Arduino 進行通信。我們將 Bolt WiFi 模塊與Arduino Uno連接,它將控制伺服電機鎖定/解鎖門。Arduino
Bolt IoT
FacePlusPlus API
興奮的?讓我們開始吧。
背景
我將這個項目作為由 Internshala Trainings 舉辦的創(chuàng)新挑戰(zhàn)和物聯(lián)網(wǎng)培訓的一部分。他們的培訓有助于了解處理 API 服務(wù)、面向?qū)ο?a target='_blank' class='arckwlink_none'>編程以及最重要的是使用 Bolt WiFi 模塊的基礎(chǔ)知識。可以在此處找到作為本次培訓的一部分完成的 Capstone 項目的概要。在這個項目的開發(fā)過程中,很多這些概念都派上了用場。因此,非常感謝 Internshala 團隊讓這一切成為可能。
第 1 步:構(gòu)建軟件
我們將使用 Visual Studio 構(gòu)建一個 Windows 窗體應(yīng)用程序。此應(yīng)用程序在 Windows 機器上運行,將負責管理授權(quán)人臉、使用 FacePlusPlus API 驗證人臉以及與 Bolt WiFi 模塊通信。我們將使用 C# 進行編碼。
啟動 Visual Studio 并創(chuàng)建新的 Windows 窗體應(yīng)用程序項目。如果您完全不熟悉 Visual Studio,我建議您學習使用 Visual Studio 進行 Windows 窗體應(yīng)用程序開發(fā)的基礎(chǔ)知識。這和這都是很好的入門資源。
在本教程中,我將僅使用項目中執(zhí)行主要和重要功能的代碼片段來解釋代碼。瀏覽整個代碼將是乏味且不必要的,因為其中大部分都是不言自明且有據(jù)可查的。
我們的 Visual Studio 項目將 3 個庫用于各種目的。他們是:
- AForge .NET:一種流行的 .NET 框架,用于 Windows 中的圖像處理。我們使用它從網(wǎng)絡(luò)攝像頭捕獲圖像。
- Bolt IoT API .NET:我用 C# 編寫的非官方客戶端庫,用于與 Bolt Cloud API 進行通信。
- Newtonsoft JSON:一種流行的 .NET 高性能 JSON 框架。用于在我們的項目中解析 A??PI 響應(yīng)。
注意:為了清楚了解上述 API 中不同方法的用法,請參閱各自的文檔here 、here和here 。
入門
在開始編碼之前,我們需要設(shè)置一些東西。
1. Bolt Cloud API 憑證
如果您還沒有,請訪問cloud.boltiot.com并設(shè)置一個帳戶。登錄后,將您的 WiFi 模塊與 Bolt Cloud 鏈接。為此,請在您的手機上下載 Bolt IoT 設(shè)置應(yīng)用程序。按照應(yīng)用程序中的說明將您的設(shè)備與您的帳戶相關(guān)聯(lián)。這涉及將 Bolt 與本地 WiFi 網(wǎng)絡(luò)配對。成功鏈接后,您的儀表板將顯示您的設(shè)備。您現(xiàn)在可以從儀表板獲取您的設(shè)備 ID和API 密鑰。
2. FacePlusPlus API 憑證
我們在這個項目中依賴的另一個 API 服務(wù)是FacePlusPlus API。它是一個免費平臺,提供各種圖像識別服務(wù)。我們將其用于面部識別。創(chuàng)建一個帳戶并轉(zhuǎn)到 FacePlusPlus 控制臺。轉(zhuǎn)到下方并單擊。記下新生成的API Key和API Secret 。API Key
Apps
+Get API Key
現(xiàn)在您應(yīng)該準備好以下內(nèi)容:
private readonly string BOLT_DEVICE_ID = "BOLTXXXXXX";
private readonly string BOLT_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
private readonly string FPP_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
private readonly string FPP_API_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
我們創(chuàng)建一個名為 的 Bolt 類的新全局實例myBolt
,通過它我們將與 WiFi 模塊進行所有未來的通信:
myBolt = new Bolt(BOLT_API_KEY, BOLT_DEVICE_ID);
也就是說,現(xiàn)在讓我們看看我們的應(yīng)用程序如何執(zhí)行一些核心功能。
1. 鎖定/解鎖門
我們設(shè)計了這樣的電路,當數(shù)字引腳 0 為HIGH
時,門應(yīng)該被鎖定,而當數(shù)字引腳 3 為 時HIGH
,門應(yīng)該被解鎖。稍后我們討論電路原理圖時會更清楚地說明這一點。
對于鎖定,我們使用DigitalMultiWrite
庫中的方法將HIGH
值寫入 D0 并將 LOW 值寫入 D3。這將向 Arduino 發(fā)出鎖門信號。同樣對于解鎖,我們將LOW
值寫入 D0 并將HIGH
值寫入 D3。這將向 Arduino 發(fā)出解鎖門的信號。我們將在本教程后面討論 Arduino 代碼和電路設(shè)計。
執(zhí)行鎖定的代碼:
private async Task LockDoor()
{
MultiPinConfig multiPinConfig = new MultiPinConfig();
MultiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.High); //Lock Signal
multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.Low); //Unlock Signal
await myBolt.DigitalMultiWrite(multiPinConfig);
multiPinConfig = new MultiPinConfig();
multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); //Lock Signal
multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.Low); //Unlock Signal
await myBolt.DigitalMultiWrite(multiPinConfig);
}
執(zhí)行解鎖的代碼:
private async Task UnlockDoor()
{
MultiPinConfig multiPinConfig = new MultiPinConfig();
multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); //Lock Signal
multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.High); //Unlock Signal
await myBolt.DigitalMultiWrite(multiPinConfig);
multiPinConfig = new MultiPinConfig();
multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); //Lock Signal
multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.Low); //Unlock Signal
await myBolt.DigitalMultiWrite(multiPinConfig);
}
2. 添加/刪除可信面孔
可信人臉的圖像數(shù)據(jù)被編碼為 Base64 字符串,并存儲在本地機器中。還存儲了每個人臉的對應(yīng)名稱列表。在我們的程序中,要添加人臉,我們首先驗證當前幀中是否有可用的人臉。我們使用FacePlusPlus的Detect API來執(zhí)行此操作。它返回一個 JSON 響應(yīng),其中包含檢測到的面部特征。如果沒有檢測到人臉,則響應(yīng)將是[]
。一旦檢測到人臉,我們就會保存圖像的 base64 編碼字符串和相應(yīng)的名稱。這是添加可信面孔的視頻演示。
去除臉部非常簡單。按刪除按鈕將從保存的列表中刪除圖像數(shù)據(jù)和名稱。
添加和保存人臉信息的代碼:
//Converting image to base64 string and adding it to the list.
ImageDataList.Add(ImageToBase64((Image)PreviewBox.Image.Clone()));
//Adding name of the face to the list
NameList.Add(FaceNameTextBox.Text.Trim());
//Saves the face image data as a base encoded string, along with its name
Properties.Settings.Default.Base64ImageData = ImageDataList;
Properties.Settings.Default.FaceNames = NameList;
Properties.Settings.Default.Save();
刪除人臉信息的代碼:
//Removing face information at specified position in the list
NameList.RemoveAt(e.RowIndex);
ImageDataList.RemoveAt(e.RowIndex);
//Saving the the list after removal of a face
Properties.Settings.Default.FaceNames = NameList;
Properties.Settings.Default.Base64ImageData = ImageDataList;
Properties.Settings.Default.Save();
查看附加項目中的代碼,其中每行中都將流程解釋為注釋,以便有一個清晰的想法。
3.人臉驗證
我們通過使用FacePlusPlus 中的比較 API來驗證人臉是否可信。在此過程中,我們線性迭代保存列表中的每個人臉,并將其與捕獲的圖像進行比較。如果 API 返回超過 80% 的置信度,我們將解鎖門。
進行此比較的代碼如下所示:
WebClient client = new WebClient();
byte[] response = client.UploadValues("https://api-us.faceplusplus.com/facepp/v3/compare", new NameValueCollection()
{
{ "api_key", FPP_API_KEY },
{ "api_secret", FPP_API_SECRET },
{ "image_base64_1", face1Base64},
{ "image_base64_2", face2Base64}
});
});
string confidence = JObject.Parse(System.Text.Encoding.UTF8.GetString(response))["confidence"].ToString();
WebClient.UploadValues方法將請求連同要比較的兩個人臉的 base64 編碼人臉數(shù)據(jù)和我們的 API 憑據(jù)一起發(fā)送到 FacePlusPlus API。使用Newtonsoft JSON庫解析響應(yīng)并confidence
獲取值。閱讀比較 API文檔以清楚地理解參數(shù)。
4. 聽鐘線
我們計劃提供一個物理按鈕,類似于呼叫鈴按鈕,以便用戶可以在看著攝像頭時按下以解鎖門。為了使這成為可能,我們需要創(chuàng)建一個新的專用線程來持續(xù)偵聽鈴聲按鈕按下事件。
在本教程的后面,我們將看到如何使用按鈕以及按下按鈕時它將如何使 Bolt WiFi 模塊HIGH
的 D4 引腳。現(xiàn)在,我們只假設(shè)上述情況。所以在這個線程中,我們不斷地計算 D4 引腳的值。如果是,我們將其作為鈴聲事件并進行人臉捕獲和驗證。DigitalRead
HIGH
這是將在鈴聲偵聽線程上連續(xù)運行的代碼:
while (ListenForBell)
{
Response R = await myBolt.DigitalRead(DigitalPins.D4);
if (R.Value == "1")
{
RingBell_Click(null, null);
Thread.Sleep(2000);
}
Thread.Sleep(2000);
}
我們在每次迭代之間停止并等待 2 秒。否則會很快耗盡 Bolt Cloud API 的使用配額。
第 2 步:構(gòu)建 Visual Studio 項目
在此處下載整個項目。在 Visual Studio 中打開文件。解決方案加載后,打開文件并使用您的 API 憑據(jù)更新代碼。按名為“開始”的綠色播放按鈕,構(gòu)建并運行程序。 Facebolt Doorlock.sln
Form1.cs
該程序允許您從連接到系統(tǒng)的攝像頭設(shè)備中進行選擇,并查看來自攝像頭的實時信息。您可以添加/刪除受信任的面孔。開始人臉監(jiān)控。一旦程序驗證了您的 Bolt 設(shè)備的連接性,您就可以直接從程序中按鈴或鎖門。
如果您現(xiàn)在對程序中人臉驗證、鎖定和解鎖的工作方式感到困惑,沒關(guān)系。一旦我們看到電路原理圖設(shè)計和Arduino代碼,就會變得更加清晰。最后,我還將分解每個操作的事件流。
第 3 步:電路設(shè)計和 Arduino 代碼
在我們的電路中,我們打算實現(xiàn)以下功能:
- 分別用于鎖定和解鎖門狀態(tài)的紅色和綠色 LED 指示燈。
- 一個按鈕,就像一個呼叫鈴開關(guān)。按下時,我們的 WinForms 應(yīng)用程序應(yīng)驗證面部并在成功進行面部身份驗證后打開門。
- 另一個按鈕來鎖門。
- 在門鈴響起和門鎖時發(fā)出蜂鳴聲的蜂鳴器。
我們項目的電路連接如下圖所示:
如果您還沒有,請從此處下載 Arduino IDE并將您的 Arduino 連接到系統(tǒng)。在上傳代碼之前,請確保您已在 IDE 設(shè)置中設(shè)置了正確的 Arduino 模型和端口。
Arduino代碼:
#include
#define ServoPin 4
#define LockSignalPin 2
#define UnLockSignalPin 3
#define BellButtonPin 5
#define LockButtonPin 8
#define RingBellSignalPin 6
#define BuzzerPin 7
#define GreenLedPin 9
#define RedLedPin 10
Servo myServo;
void setup()
{
pinMode(LockSignalPin, INPUT);
pinMode(UnLockSignalPin, INPUT);
pinMode(BellButtonPin, INPUT);
pinMode(LockButtonPin, INPUT);
pinMode(BuzzerPin, OUTPUT);
pinMode(RedLedPin, OUTPUT);
pinMode(GreenLedPin, OUTPUT);
pinMode(RingBellSignalPin, OUTPUT);
digitalWrite(RedLedPin, LOW);
digitalWrite(GreenLedPin, LOW);
digitalWrite(RingBellSignalPin, LOW);
myServo.attach(ServoPin);
Serial.begin(9600);
}
void loop()
{
int lockButton, lock, unlock, bell;
char snum[5];
lock = digitalRead(LockSignalPin);
unlock = digitalRead(UnLockSignalPin);
// Check if lock signal from Bolt is HIGH
if(lock == HIGH)
{
// Turn motor to locked position
myServo.write(120);
// Set LED indications
digitalWrite(GreenLedPin, LOW);
digitalWrite(RedLedPin, HIGH);
// Buzz locking sound
digitalWrite(BuzzerPin, HIGH);
delay(1000);
digitalWrite(BuzzerPin, LOW);
delay(1000);
}
// Check if unlock signal from Bolt is HIGH
else if(unlock == HIGH)
{
// Turn motor to unlocked position
myServo.write(0);
// Set LED indications
digitalWrite(GreenLedPin, HIGH);
digitalWrite(RedLedPin, LOW);
delay(2000);
}
bell = digitalRead(BellButtonPin);
if(bell == HIGH) // User pressed bell ring betton
{
// Signal Bolt that ring button was pressed
digitalWrite(RingBellSignalPin, HIGH);
// A calling bell sound pattern !
digitalWrite(BuzzerPin, HIGH);
delay(100);
digitalWrite(BuzzerPin, LOW);
delay(20);
digitalWrite(BuzzerPin, HIGH);
delay(200);
digitalWrite(BuzzerPin, LOW);
delay(100);
digitalWrite(BuzzerPin, HIGH);
delay(100);
digitalWrite(BuzzerPin, LOW);
delay(20);
digitalWrite(BuzzerPin, HIGH);
delay(200);
digitalWrite(BuzzerPin, LOW);
delay(1500);
// Turn off the signal
digitalWrite(RingBellSignalPin, LOW);
}
lockButton = digitalRead(LockButtonPin);
if(lockButton == HIGH) // User pressed lock betton
{
// Turn motor to locked position
myServo.write(120);
// Set LED indications
digitalWrite(GreenLedPin, LOW);
digitalWrite(RedLedPin, HIGH);
// Buzz locking sound
digitalWrite(BuzzerPin, HIGH);
delay(1000);
digitalWrite(BuzzerPin, LOW);
}
}
事件流
現(xiàn)在我們已經(jīng)準備好 WinForm 應(yīng)用程序和 Arduino 設(shè)計,讓我們深入研究代碼并探索每個操作的控制流程。
1. 響鈴按鈕按下
2. 鎖定按鈕按下
上述兩個操作也可以直接從 Windows 窗體應(yīng)用程序執(zhí)行。
在這里,我們可以觀察到Bolt WiFi 模塊作為 Windows 窗體應(yīng)用程序和 Arduino 之間的重要無線接口。Bolt Cloud API 的使用使我們能夠擴展我們的項目并在 Android 等其他平臺上構(gòu)建應(yīng)用程序,并使用我們的手機解鎖門!這種靈活性是物聯(lián)網(wǎng)和 Bolt 平臺的力量所在。
現(xiàn)在我們已經(jīng)完成了軟件設(shè)計部分,讓我們繼續(xù)構(gòu)建一個可鎖定的門機制。
第 4 步:構(gòu)建硬件
我有一個鞋架,所以在這個項目中,我將用它來演示鎖具。您可以使用架子、門或衣柜或任何具有可破解鎖定機制的東西。這真的取決于你。
我們需要建立一個耦合機構(gòu),將我們的伺服電機與鎖連接起來。為此,我的想法是使用一個瓶子和另一個瓶蓋的截斷頸部。將瓶頸連接到伺服電機,將蓋子連接到鎖上。然后我們將使用尼龍線將它們連接起來。每當電機轉(zhuǎn)動時,這將導致鎖定/解鎖動作。
所需的瓶蓋上鉆有一個孔,如下圖所示。我們將把它連接到鞋架的鎖軸上。
另一個瓶子的蓋子必須連接到伺服電機上。我們使用銅線將蓋子連接到電機的轉(zhuǎn)軸。
現(xiàn)在我們需要將這兩者結(jié)合起來。為此,我們使用尼龍線。使用所需長度的線制作一個環(huán),并將線連接到兩個蓋子上。
一旦耦合,它們可以引起相互旋轉(zhuǎn)的動作:
現(xiàn)在我們已經(jīng)準備好轉(zhuǎn)動機構(gòu),是時候進入鎖并修復我們的瓶頸了。我們在上面鉆了一個孔,所以我們需要做的就是從機架上擰下鎖軸,將瓶頸放在上面,然后重新擰緊鎖。
現(xiàn)在唯一要做的就是將伺服電機固定在鞋架上。我們將使用熱膠槍將電機密封到機架上。
調(diào)整好螺紋長度并充分擰緊后,我們就完成了最后的設(shè)置。如下圖所示,伺服電機可以正確鎖門和開鎖!
您不一定必須使用瓶頸 - 螺紋耦合方法。使用最適合和方便您的鎖系統(tǒng)的任何方法。
幸運的是,我在機架的正確位置開了一個小口。這使我能夠輕松地連接伺服電機。經(jīng)過一些裝飾工作和貼標后,我們最終的智能鞋架現(xiàn)已準備就緒。
我們現(xiàn)在都準備好了。剩下要做的就是啟動電路,在 WinForms 應(yīng)用程序上添加一個受信任的面孔,并享受我們門上的人臉鎖安全性。您需要同時為 Arduino 和 Bolt WiFi 模塊供電。我使用 10000 毫安時的移動電源為他們倆供電。我使用的網(wǎng)絡(luò)攝像頭是 Microsoft LifeCam VX-800。它很舊,但仍然比筆記本電腦的相機好。請查看演示視頻。它詳細顯示了我們項目的工作。
結(jié)論
哈夫..那是相當長的。該項目是由 Bolt IoT 提供支持的 Internshala 物聯(lián)網(wǎng)培訓的成果。雖然這個項目非常簡單,但它向我們展示了物聯(lián)網(wǎng)的潛力以及它如何讓人們的日常生活更輕松。
無論如何..這對我來說是一次很棒的學習經(jīng)歷。我希望你們會喜歡構(gòu)建它,我很高興看到你們會想出什么新的創(chuàng)新。最后,我衷心感謝 Internshala 和 Bolt IoT 的培訓團隊使這項事業(yè)成為可能。
這是一個包裝!
?
?
- Lifi安全系統(tǒng)開源設(shè)計
- 家庭報警安全系統(tǒng)開源分享
- 手勢解鎖防盜系統(tǒng)開源分享
- 帶有電報警報的安全系統(tǒng)開源案例
- 使用BOLT的實時安全系統(tǒng)
- Arduino安全系統(tǒng)
- 智能家居安全系統(tǒng)開源分享
- 基于蔡氏電路的通信安全系統(tǒng)設(shè)計與實現(xiàn) 13次下載
- 家用火災安全系統(tǒng)規(guī)則標準下載 13次下載
- 嵌入式安全系統(tǒng)產(chǎn)品指南 8次下載
- 基于CA技術(shù)的網(wǎng)絡(luò)信息安全系統(tǒng)(winpcap驅(qū)動軟件) 4次下載
- 網(wǎng)絡(luò)信息安全系統(tǒng)的測試方法 23次下載
- 可編程安全系統(tǒng)、安全總線系統(tǒng)
- 無線多功能家庭安全系統(tǒng)
- 基于網(wǎng)格的裝備遠程保障安全系統(tǒng)實現(xiàn)
- 深度識別人臉識別有什么重要作用嗎 100次閱讀
- 基于OpenCV的人臉識別系統(tǒng)設(shè)計 1.1w次閱讀
- DIY一個電子卡鎖安全系統(tǒng) 1954次閱讀
- 分享一個不錯的安全系統(tǒng)報警電路圖 2960次閱讀
- 如何利用MFRC522制作RFID讀卡安全系統(tǒng) 2867次閱讀
- firefly人臉識別一體機介紹 1785次閱讀
- 設(shè)計一個家庭安全控制系統(tǒng)的詳細資料概述 5932次閱讀
- 華為新研究讓似乎安全的人臉識別不再安全 4688次閱讀
- 人臉考勤系統(tǒng)設(shè)計方案 1.1w次閱讀
- 關(guān)于結(jié)合人臉模板和人臉特征的人臉識別技術(shù)智能系統(tǒng)研究過程詳解 1793次閱讀
- 這種遠超密碼、指紋的快速解鎖方式有多厲害! 2.6w次閱讀
- 基于人臉和指紋的身份識別認證系統(tǒng)解決方案 2915次閱讀
- vivo指紋解鎖手機有哪些 2w次閱讀
- 人臉識別解鎖手機有哪些_人臉識別解鎖手機全都在這里 6.9w次閱讀
- 汽車安全系統(tǒng)技術(shù)架構(gòu)分析 1065次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多