資料介紹
描述
更新(26/7/2022):
此項目托管在 Amazon Lambda 上的代碼需要更新,目前無法運行。
什么是天空查找器?
樂高一直致力于通過游戲發現和學習。使用這款 LEGO Mindstorms 小工具成為一名太空探險家,并將 Alexa 變成您的宇宙私人向導。Sky Finder 會向您展示天空中最有趣的恒星、行星甚至星系,而 Alexa 會告訴您有關它們的信息。
無需昂貴的望遠鏡即可在天空中看到許多令人興奮的事物,但如果沒有一些幫助則很難找到它們。該項目是一個樂高小工具,您可以使用標準的 Mindstorms EV3 套裝 (31313) 輕松拼搭,并發現從您的窗戶或后院可以看到的東西。
我為什么要建這個?
該項目參加了 hackster.io 上的 LEGO Mindstorms 語音挑戰賽。我想構建一些有趣且原創的東西,而這些東西無法單獨使用 Alexa 或 LEGOMindstorms 完成。
Alexa 和樂高的結合非常適合這個項目。Alexa 提供了一個友好的界面來探索天空,Sky Finder 小工具會告訴你在哪里看。觀看屏幕后,您的眼睛需要一段時間才能適應夜空的黑暗,因此語音界面是在深空和我們自己的太陽系中定位數百個不同物體的完美方式。
它能做什么?
Sky Finder 知道從北半球和南半球可見的所有星座;天空中許多最有趣的星星;我們太陽系中的所有行星;以及許多肉眼可見的深空天體,例如仙女座星系和昴宿星團。
它還會建議從您的位置可見的天空中有趣的事物,并為您提供有關您正在查看的內容的信息。
得益于亞馬遜 AWS 服務中可用的處理能力,Sky Finder 可以執行定位恒星、行星和其他天體所需的復雜計算,而僅靠 EV3 brick 很難完成這些計算。
使其易于構建
我想讓人們盡可能輕松地構建項目,從中學習并根據需要擴展項目。
- 該小工具僅使用 LEGO Mindstorms EV3 套裝 (31313) 中的零件
- 提供完整的樂高搭建說明
- 在 EV3 brick 上運行的代碼和 Alexa 技能代碼都是用 Python 編寫的
- 技能代碼可以由 Alexa 托管,因此一切都可以在 Alexa Skills 控制臺中完成。
完整演練:如何構建 Skyfinder
下面的演練包含有關如何制作您自己的 Skyfinder 的說明及其工作原理的信息。如果您想在不了解其工作原理的情況下構建它,只需按照編號說明進行操作即可。
構建樂高小工具
1. 使用本頁底部示意圖部分中的完整搭建說明搭建樂高小工具。

2. 小工具完成后,使用 4 根電纜將電機和傳感器連接到積木上。我建議如下:
使用 50 厘米電纜將顏色傳感器連接到 EV3 程序塊上的插座 1,確保電纜在 EV3 程序塊上方運行。
使用 25 厘米的電纜將觸摸傳感器連接到插座 4。您可能需要暫時將傳感器與小工具分離,以便更容易插入。
使用 25 厘米的電纜將大型電機連接到插座 D,小心地在 EV3 程序塊和電機之間鋪設電纜。
使用 35 厘米電纜將中型電機連接到插座 C。
設置 ev3dev 構建環境
3. 您需要將 ev3dev 操作系統安裝到您的 micro SD 卡上,從卡上啟動您的 EV3 程序塊,并將 EV3 連接到 Visual Studio Code 編輯器。LEGO MINDSTORMS 語音挑戰團隊在此處提供了一些分步說明。(除非您想了解更多信息,否則無需繼續執行任何任務)。
在 Alexa Developer Console 中注冊您的小工具
4. 接下來您需要在 Alexa 開發者控制臺中注冊您的小工具。LEGO MINDSTORMS 語音挑戰團隊再次提供了說明。按照此處的步驟 1-10進行操作,并記下Amazon ID和Alexa Gadget Secret。
該軟件

Sky Finder 由物理樂高硬件和兩個用 Python 編寫的軟件程序組成。第一個(“Alexa 技能”)在亞馬遜的云服務器上運行并處理來自 Echo 設備的語音命令,計算星星位置并創建一個有效載荷/命令,該有效載荷/命令被發送到 Sky Finder 小工具(通過 Echo)以移動電機.
第二個軟件程序也是用 Python 編寫的,在 EV3 程序塊上運行。它通過藍牙將 Sky Finder 小工具連接到 Echo 設備,然后收聽來自 Alexa 技能的命令,通過 Echo 轉發,并相應地移動電機。
在下一節中,我將介紹 Alexa skill 的一些主要功能,并解釋如何在 Alexa 開發人員控制臺中進行設置。
自定義 Alexa Skill - 設置
5. 要構建新的 Alexa 技能,請轉到Alexa Developer Console ,根據需要登錄并單擊“創建技能”按鈕。

6. 在下一個屏幕上,輸入您的技能名稱(Sky Finder 或您選擇的其他名稱)并選擇與您的 Echo 設備上的設置相匹配的語言/地區。接下來選擇Custom skill model 和Alexa-Hosted (Python) ,然后單擊Create Skill按鈕。

7. 在最后一個屏幕上,選擇Hello World模板并單擊“選擇”按鈕以創建新技能。設置需要幾分鐘時間。
自定義 Alexa Skill - 交互模型
自定義 Alexa 技能包括一個語音交互模型,它將用戶的口頭輸入映射到Python 軟件中的類可以處理的意圖。
Sky Finder 接受兩個主要意圖:
- ScanIntent:掃描部分天空以尋找有趣的物體,并告訴用戶它們是什么。(例如,您在南方能看到什么?)。
- LocateIntent:定位天空中的特定物體(恒星、行星、星座等),讓小工具指向它并向用戶提供有關該物體的一些信息。(例如定位金星)
語音交互模型還指定槽(或參數),其中包含上面兩個示例中以粗體顯示的羅盤方向或對象。
8. 首先我們需要啟用技能來使用我們的小工具,因此在“構建”選項卡上,從左側菜單中選擇界面并啟用自定義界面控制器。

9. 單擊頁面頂部的保存接口按鈕。

10. 接下來,從左側菜單中選擇JSON 編輯器。將本教程底部提供的 JSON 交互模型代碼下載到編輯器中,然后將文件拖放到編輯器上方的拖放區域。

11. 單擊屏幕頂部的保存模型按鈕,然后單擊構建模型按鈕。構建需要一分鐘左右的時間。您應該會看到意圖(LocateIntent 和 ScanIntent)及其相應的槽出現在屏幕左側。
單擊“意圖”以查看示例話語,這些話語是用戶可能會說出的觸發該意圖的示例。Alexa 的 AI 根據用戶所說的內容選擇最合適的話語 - 他們不必說出示例中列出的確切單詞。

單擊插槽類型以查看用戶可能會說的羅盤方向或(天體)物體的名稱,以及同義詞。插槽值還包含一個 ID,該 ID 將傳遞給唯一標識對象的 Python 代碼。例如,如果您是美國人,您可能會詢問“找到北斗七星”的技能,如果您是英國人,則可能會詢問“找到犁”的技能,但除了這些信息之外,還有“UMa”(大熊座)的官方名稱作為 ID 傳遞。

自定義 Alexa Skill - Lambda 函數
在本例中用 Python 編寫的 Lambda 函數包含 Alexa 技能的所有主要處理邏輯。它由許多處理意圖的方法組成。@ 語法根據 Alexa SDK 的要求將裝飾器應用于類。所有技能都遵循相似的結構,因此您可以輕松調整此技能,或亞馬遜團隊提供的適合您目的的技能,而不是完全從頭開始編寫。
12. 單擊開發人員控制臺的“代碼”選項卡。
13.將lambda_function.py 、utils.py和requirements.txt的內容替換為本頁底部Code部分對應文件的內容。
注意:目前,請忽略代碼部分中標記為“API 代碼”的同名文件
14. 右鍵單擊?? utils.py 下面的空間并選擇創建文件。

15.在 lambda 文件夾中創建一個名為data.py的新文件。

16.將本頁底部代碼部分的data.py文件內容復制到新文件中。
17. 單擊保存按鈕保存您創建的文件,如果您想查看下面解釋的代碼,則單擊 lambda_function.py 選項卡。

啟動請求
除了我們在交互模型中定義的兩個意圖(ScanIntent 和 LocateIntent)之外,還有一些內置的意圖需要處理。其中最重要的是 LaunchRequest,它在用戶打開技能時調用(“Alexa,打開 Sky Finder”)。
@skill_builder.request_handler(can_handle_func=is_request_type("LaunchRequest"))
def launch_request_handler(handler_input: HandlerInput):
LaunchRequest 處理程序方法首先檢查 Alexa 小工具是否已連接到 Echo 設備。
system = handler_input.request_envelope.context.system
api_access_token = system.api_access_token
api_endpoint = system.api_endpoint
# Get connected gadget endpoint ID.
endpoints = get_connected_endpoints(api_endpoint, api_access_token)
如果小工具已連接,端點 ID 將存儲在會話屬性中,以便我們將來可以將位置發送到小工具。
# Store endpoint ID for using it to send custom directives later.
logger.debug("Received endpoints. Storing Endpoint Id: %s", endpoint_id)
session_attr = handler_input.attributes_manager.session_attributes
session_attr["endpoint_id"] = endpoint_id
一般來說,每次用戶說話時都會再次調用 lambda 函數,因此我們需要在對話期間保留的任何變量都應存儲在會話屬性中。
定位意圖
LocateIntent 是我們定義的自定義意圖,當用戶要求 Sky Finder 在天空中定位某物時調用它。當我們收到 YesIntent 時,也會調用此處理程序方法。(稍后對此進行更多解釋)。
@skill_builder.request_handler(can_handle_func=lambda handler_input:
is_intent_name("AMAZON.YesIntent")(handler_input) or
is_intent_name("LocateIntent")(handler_input))
def locate_intent_handler(handler_input: HandlerInput):
首先,請求處理程序嘗試獲取我們在交互模型的插槽類型部分中指定的(天體)對象的唯一 ID,例如 UMa(大熊座)。
# Get the name of the object the user is trying to locate from the slot
slots = handler_input.request_envelope.request.intent.slots
try:
# See if it's been matched to one of the specified values for this slot type in the interaction model
object = slots["object"].resolutions.resolutions_per_authority[0].values[0].value.id
下一段代碼在我們定位對象時向用戶發送一個臨時響應(“定位大熊座......”)我不會在這里詳細解釋它,除了說 SpeakDirective 是一種發送在 lambda 函數完成執行之前響應 Echo 設備。
# Locate the object in space
az,alt,distance = utils.locate(object)
物體在天空中的位置使用方位角、高度坐標指定。方位角在 0 到 359 度之間,對應于羅盤方向。高度表示物體在天空中的高度,從地平線上的 0 度到頭頂正上方的 90 度。

接下來,處理程序準備來自 Alexa 的語音響應,告訴用戶對象已被定位,并提供一些有趣的事實(如果我們有)。
# object found and visible with a defined distance
compass = utils.degrees_to_dir(az)
speak_output = "{} Located. {} is currently {} kilometers from your location. {} {}".format(radar_ping, name, distance, description, data.ASK_MESSAGE)
如果小工具已連接,我們會準備一個負載(命令),其中包含 Echo 設備中繼到小工具的位置,指定我們保存到 LaunchIntent 處理程序中的會話屬性的端點 ID。
if ("endpoint_id" in session_attr and object_located):
payload = {
"type": "move",
"az": az,
"alt": alt,
}
endpoint_id = session_attr["endpoint_id"]
directive = build_send_directive(NAMESPACE, NAME_CONTROL, endpoint_id, payload)
最后,我們使用 Alexa SDK 中響應生成器類的方法來構建發送回 Echo 設備的數據結構。
return (handler_input.response_builder
.speak(speak_output)
.ask("What do you want me to find?")
.add_directive(directive)
.response)
掃描意圖
當用戶詢問有關他們在特定天空區域中可以看到的內容的信息時,將調用 ScanIntent。
@skill_builder.request_handler(can_handle_func=is_intent_name("ScanIntent"))
def scan_intent_handler(handler_input: HandlerInput):
首先,技能從插槽中獲取用戶指定的羅盤方向。
# Get the compass direction the user has specified
slots = handler_input.request_envelope.request.intent.slots
try:
direction = slots["compass_direction"].resolutions.resolutions_per_authority[0].values[0].value.id
再一次,下一段代碼在我們進行查找時向用戶發送一個臨時響應,然后我們調用一個函數返回該部分天空中突出物體的列表。
# Find a list of objects in our specified part of the sky
logger.info("Scanning sky in {}.".format(direction))
scan_list = utils.scan(direction)
接下來,我們創建一個以逗號分隔的對象列表,供 Alexa 與用戶對話。為此,我們在 data.py 文件中的 Python 字典中維護對象的常用名稱列表。
for object in scan_list:
# Get list of proper names of objects from database
spoken_list.append(data.OBJECT_DATA[object['name']]['name'])
speak_output += utils.comma(spoken_list)
如果只找到一件物品,Alexa 會問,“你想讓我告訴你它在哪里嗎?”。對象名稱保存在會話屬性中。如果用戶回答“是”,則下次將觸發YesIntent ,這實際上是由LocateIntent處理程序處理的,該處理程序將定位已保存在會話屬性中的對象。
如果有多個對象,Alexa 會詢問“您希望我定位哪一個?”。
if (len(scan_list) > 1):
speak_output += ". Which one would you like me to locate? "
else:
speak_output += ". Do you want me to show you where it is?"
# save object ready for a possible 'yes' response from the user
object_of_interest = scan_list[0]['name']
session_attr = handler_input.attributes_manager.session_attributes
session_attr["object_of_interest"] = object_of_interest
最后,構建響應并將其發送到 Echo 設備。
return (handler_input.response_builder
.speak(speak_output)
.ask("Do you want me to show you where they are?")
.response)
自定義 Alexa Skill - utils.py 和 data.py
Lambda 函數導入另外兩個文件:
utils.py包含許多實用函數,包括查找恒星和行星位置的代碼。目前,這會調用外部查找 API 以避免必須將依賴項編譯到 Lambda 函數中。API 的代碼包含在本頁底部以供參考,但您不需要使用它。
data.py包含一個 Python 字典,其中包含有關恒星、星座、行星和其他物體的信息,以及 Alexa 可能會向用戶發出的消息列表,例如用戶在技能啟動時聽到的歡迎消息。
自定義 Alexa 技能 - 指定緯度/經度和測試
18、目前gadget的地理位置是在data.py文件中指定的。
# My latitude and longitude - NB no spaces
LAT = '51.5842N'
LON = '2.9977W'
要將其替換為您的位置,您可以使用 Google 查找附近城市的緯度/經度。

在將其粘貼到代碼中之前,請刪除空格和度數符號。
19. 完成此操作后,單擊保存按鈕,然后單擊編輯器窗口上方的部署按鈕。

20. 要測試技能,請轉到開發人員控制臺中的“測試”選項卡。

21. 在Alexa 模擬器的輸入窗口中輸入Open Sky Finder (或您之前選擇的技能名稱)。您應該會收到以下響應。

在下一節中,我們將了解 EV3 程序塊的軟件。
5. EV3 程序塊代碼
22. 在您的 PC 上,創建一個名為 SkyFinder 的新文件夾。從本頁底部的代碼部分下載skyfinder.py和skyfinder.ini文件,并將它們移動到您剛剛創建的新文件夾中。
23. 打開 Visual Studio 代碼編輯器,點擊 File -> Open Folder 并打開剛剛創建的 SkyFinder 文件夾,

24. 在編輯器中打開skyfinder.ini文件,添加第 4 步中的Amazon ID和Alexa Gadget Secret ,然后點擊 File -> Save

25. 將 Visual Studio 連接到 EV3 程序塊。

26. 設備連接后,圓圈將變為綠色。單擊 ev3dev 設備瀏覽器旁邊的圖標,將工作區發送到設備。

與 Alexa 技能類相比,EV3 brick 上的代碼相對簡單。SkyFinder主類擴展了 AlexaGadget并調用超類來初始化小工具。
class SkyFinder(AlexaGadget):
"""
A Mindstorms gadget that points to a specified position in the sky
For use with the Sky Finder skill
"""
def __init__(self):
"""
Performs Alexa Gadget initialization routines and ev3dev resource allocation.
"""
super().__init__()
當小工具與 Echo 設備連接或斷開連接時,將調用OnConnected和OnDisconnected方法。這些只是將前面的 LED 分別設置為綠色或關閉作為狀態指示。
on_custom_mindstorms_gadget_control方法在小工具通過 Echo 設備從技能接收有效負載時被調用。我們支持兩種有效載荷,一種將小工具重置為其起始位置(目前僅在啟動時使用),另一種將指針移動到指定的方位角、高度坐標。
def on_custom_mindstorms_gadget_control(self, directive):
"""
Handles the Custom.Mindstorms.Gadget control directive.
:param directive: the custom directive with the matching namespace and name
"""
try:
payload = json.loads(directive.payload.decode("utf-8"))
print("Control payload: {}".format(payload), file=sys.stderr)
control_type = payload["type"]
if control_type == "move":
# Expected params: [az, alt]
self.go_to(payload["az"], int(payload["alt"]))
if control_type == "reset":
# Expected params: none
self.reset_position()
except KeyError:
print("Missing expected parameters: {}".format(directive), file=sys.stderr)
reset_position方法首先轉動控制轉盤的大電機,直到觸摸傳感器被按下,然后將轉盤旋轉指定距離回到起始位置。接下來它轉動移動手臂的中型電機,直到它被顏色傳感器檢測到。然后以與起始位置相反的方向旋轉。
def reset_position(self):
"""
Move arm to starting position
"""
logger.info(""Resetting arm position)
self.lm.stop_action = 'brake'
self.lm.reset()
self.lm.position = 0
# Rotate arm until it pushes touch sensor switch
# and then move specified distance to start position
self.lm.on_for_rotations(speed = SpeedDPS(72), rotations = -3, block=False)
self.ts.wait_for_pressed()
self.lm.off()
self.lm.on_for_degrees(SpeedDPS(72), START_AZ, block = True)
# Rotate arm in other axis until it's seen by the colour sensor
# and then move specified distance to start position
self.mm.stop_action = 'brake'
self.mm.on_for_rotations(speed = 5, rotations = -3, block=False)
# wait until sensor sees (red) arm
while self.cs.color != 5:
continue
self.mm.off()
self.mm.reset()
self.mm.position = 0
self.mm.on_for_degrees(5, START_ALT, block = True)
# turn off the distracting LED on the colour sensor
self.cs.mode='COL-AMBIENT'
# Reset the position counter to 0
self.mm.off()
self.mm.reset()
self.mm.position = 0
self.lm.off()
self.lm.reset()
self.lm.position = 0
重置完成后,指針應水平并指向與 EV3 程序塊成直角的位置。如果不是這種情況,請嘗試調整代碼第 23 和 24 行中的變量。
# Calibration constants for initial position
# Tweak these if required to ensure starting pos is North horizon (0 az, 0 alt)
START_AZ = 388
START_ALT = 210
go_to方法處理“移動”有效負載并簡單地將轉盤和指針移動到指定位置。
為避免電纜纏結,我們只將轉盤向任一方向移動 180 度(北向各 90 度)。要指向南方的某個位置,我們將轉盤移動到指向北方,并將指針移到天頂(垂直向上的位置)以外以指向相反的方向。
電機位置已經以度為單位指定,但由于它們連接到齒輪,我們將數字乘以包含齒輪比的GEAR_LM和GEAR_MM 。
def go_to(self, new_az, new_alt):
"""
Move pointer to a specified position
:param new_az: new azimouth position (in degrees)
:param new_alt: new altitude position (in degrees)
"""
self.leds.set_color("LEFT", "YELLOW")
self.leds.set_color("RIGHT", "YELLOW")
# Normalise rotation to prevent cable tangle
if (new_az > 270):
az1 = new_az - 360
alt1 = new_alt
elif (new_az > 90):
az1 = new_az - 180
alt1 = 180 - new_alt
else:
az1 = new_az
alt1 = new_alt
# Move arm
self.lm.on_to_position(SpeedDPS(ARM_SPEED), az1 * GEAR_LM, block = False, brake = True)
self.mm.on_to_position(SpeedDPS(ARM_SPEED), alt1 * GEAR_MM, block = True, brake = True)
self.leds.set_color("LEFT", "GREEN")
self.leds.set_color("RIGHT", "GREEN")
最后一段代碼在啟動時運行并調用主入口點。
27. 要在 EV3 程序塊上運行代碼,請在 VS 代碼中的 ev3dev 設備瀏覽器中導航到skyfinder.py文件,右鍵單擊該文件并選擇運行。

EV3 程序塊上的綠燈將開始閃爍。
28. 如果小工具尚未連接到 Echo 設備,它將進入藍牙配對模式,您將在 EV3 磚屏和 VS Code 中看到類似的消息。


。許可證:CC BY ( http://creativecommons.org/licenses/by/4.0/ )圖表中使用的圖標: Ben Davis 的 Amazon echo dot 來自 Noun Projectchat 來自 Noun Project 的 I cons 來自 Noun Project 的 naim 的 Signal 來自 Noun Project 的 Deemak DaksinaWoman 來自 Noun Projectlego 來自 Gerardo Martín Martínez 來自 Noun Projectpython 格式來自 ICONZ來自名詞項目
- amo的編程小工具合集 6次下載
- 電阻分壓計算小工具 44次下載
- 射頻工程類計算小工具 55次下載
- CAD看圖小工具免費下載 46次下載
- 單片機計算小工具 11次下載
- AMO的編程小工具集合V1.2.3 19次下載
- 進制轉換小工具 15次下載
- 自寫小工具 40次下載
- 自制51小工具 7次下載
- 算校驗位的小工具 2次下載
- 電子工程類小工具(大合集) 1955次下載
- 一款正負序計算小工具 38次下載
- amo的編程小工具集合 14次下載
- 每日文件管理小工具 28次下載
- 寄存器位查看小工具
- POC管理和漏洞掃描小工具 879次閱讀
- USB設備充電器電路原理圖 1175次閱讀
- 分享只有一行代碼的實用小工具 520次閱讀
- MoreFind:用于快速導出URL、Domain和IP的小工具 877次閱讀
- 一個簡單而不起眼的2瓦迷你音頻放大器電路 3541次閱讀
- 用Python寫個小工具網頁 1331次閱讀
- 介紹RTOOL的JLINK燒錄小工具 3495次閱讀
- 雜項加密解密小工具使用方法 1285次閱讀
- STM32CubeIDE所支持的幾個調試小工具及功能 3393次閱讀
- 時序分析的小工具——Global Timing Debugger 8195次閱讀
- 如何使用Python開發截圖識別OCR的小工具 3566次閱讀
- 介紹幾款非常實用的單片機小工具 1.2w次閱讀
- 區塊鏈上的虛擬樂高是什么? 1635次閱讀
- 分享一份網友學習python時編寫的一個小工具 7385次閱讀
- 技術專家手把手教你計算放大器噪聲系數 2.2w次閱讀
下載排行
本周
- 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次下載 | 免費
評論