在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>一種新的音樂(lè)交互方式開(kāi)源分享

一種新的音樂(lè)交互方式開(kāi)源分享

2022-11-03 | zip | 0.14 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

在過(guò)去的幾年里,樂(lè)器作為一種教育和創(chuàng)意工具的創(chuàng)新一直是研究的主題。我們團(tuán)隊(duì)的兩名成員是來(lái)自高中的學(xué)生,擁有強(qiáng)大的音樂(lè)課程,我們想出了這種新樂(lè)器。

我們提出了一種新的音樂(lè)交互方式,其中一個(gè)界面(手套)可以一次控制不同的樂(lè)器。

Matrix Voice ESP32 讓我們有機(jī)會(huì)在兩個(gè)不同的任務(wù)中打破這個(gè)過(guò)程:

  • 使用外部傳感器(壓力)收集數(shù)據(jù)和
  • 帶有 SNIPS 的語(yǔ)音命令識(shí)別、儀器管理和播放。

ESP32 運(yùn)行 Tensilica Xtensa 雙核微控制器處理來(lái)自壓力傳感器的模擬輸入,并通過(guò) UART 通道與 Raspberry Pi 3 控制器程序通信

poYBAGNiFNSAUM_OAACVY5_VmKA116.jpg
?

材料

以下是我們使用的材料的快照。請(qǐng)注意,電阻為 3.3 歐姆,并且所示手套尚未粘貼雙面膠帶。

?
?
?
poYBAGNiFOeAEYzZAAONTuYtmnw809.jpg
?
1 / 7
?

我們還為 RPi 使用了兩張 SD 卡。第一個(gè)具有 ESP32 編程環(huán)境,第二個(gè)具有安裝了 python 編程支持的 Matrix Core、HAL 和 Lite 包。

壓力傳感器

創(chuàng)建音樂(lè)的核心數(shù)據(jù)收集是連接到設(shè)備的壓力傳感器。我們需要對(duì)同時(shí)連接的多個(gè)傳感器進(jìn)行快速響應(yīng)。

poYBAGNiFOuAb9ZFAAF7fXd4IfI525.jpg
?

我們使用 ESP32 從 Matrix Voice ESP32 上的擴(kuò)展 GPIO 端口公開(kāi) IO 端口作為來(lái)自壓力傳感器的模擬輸入。Arduino 腳本定義了要激活的引腳,如下所示

//Use extension port for pressure sensors
const int FSR_PIN = 12;  // Pin connected to FSR/resistor divider
const int FSR_PIN1 = 26; // Pin connected to FSR/resistor divider
const int FSR_PIN2 = 27; // Pin connected to FSR/resistor divider
const int FSR_PIN3 = 25; // Pin connected to FSR/resistor divider

上述引腳可以物理地在擴(kuò)展端口中找到,如下所示。我們還使用 3.3V 和 GND 引腳為傳感器供電

poYBAGNiFO2AFit_AACkPSGBPwk592.jpg
?

初始化 UART 串??口進(jìn)行數(shù)據(jù)傳輸,并在 Arduino 腳本的 setup 函數(shù)中設(shè)置 ESP32 引腳作為輸入。

void setup() {
    Serial.begin(115200);
    pinMode(FSR_PIN, INPUT);
    pinMode(FSR_PIN1, INPUT);
    pinMode(FSR_PIN2, INPUT);
    pinMode(FSR_PIN3, INPUT);

主循環(huán)讀取傳感器輸入。在某些情況下,我們注意到引腳在連續(xù)指令讀取時(shí)會(huì)返回影子值。我們嘗試添加一個(gè)計(jì)時(shí)器來(lái)緩解這個(gè)問(wèn)題,但沒(méi)有成功,而效果更好的一個(gè)是檢查下一個(gè)引腳的值,以及再次讀取它是否相同。這在某種程度上為我們解決了這個(gè)問(wèn)題。

void loop()
{
    byte inCmd;
    int fsrADC = analogRead(FSR_PIN);
    int fsrADC1 = analogRead(FSR_PIN1);
    if (fsrADC == fsrADC1)
        fsrADC1 = analogRead(FSR_PIN1);
    int fsrADC2 = analogRead(FSR_PIN2);
    if (fsrADC1 == fsrADC2)
        fsrADC2 = analogRead(FSR_PIN2);
    int fsrADC3 = analogRead(FSR_PIN3);

現(xiàn)在是時(shí)候?qū)?ESP32 芯片進(jìn)行編程了。我們確實(shí)花了一些時(shí)間來(lái)弄清楚這個(gè)過(guò)程,在按照ESP32 MATRIX Voice w/Arduino IDE 上的 Program Over the Air的說(shuō)明進(jìn)行操作后,我們了解了手動(dòng)刷新程序的過(guò)程。我們不得不說(shuō)無(wú)線(OTA)對(duì)我們不起作用,我們的矩陣聲音在啟動(dòng)時(shí)一直崩潰。但是,手動(dòng)工作,所以每次我們更改程序時(shí),我們只調(diào)用 deploy_ota, sh 腳本。

我們還使用安裝了新的 Raspbian Stretch Desktop 映像的干凈 SD 卡。我們按照安裝ESP32 u p 的說(shuō)明進(jìn)行到第 1 步。

總之,你需要

  • 在 Arduino IDE 中選擇 ESP32 開(kāi)發(fā)模塊板
pYYBAGNiFPCAUQi_AABov7tIt_E421.jpg
?
  • 單擊 Sketch 菜單下的 Export Compiled Binary。這將創(chuàng)建一個(gè) bin 文件
pYYBAGNiFPWADAhXAAAyYSBwIM0564.jpg
?
  • 使用您的憑據(jù)和 bin 文件的名稱(chēng)更新 deploy_OTA.sh 文件。
tar cf - *.bin | ssh pi@YOURIPADDRESSHERE 'tar xf - -C /tmp;sudo voice_esp32_reset;voice_esptool --chip esp32 --port /dev/ttyS0 --baud 115200 --before default_reset --after hard_reset write_flash -u --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 /tmp/bootloader.bin 0x10000 /tmp/YourBinaryProgramName.bin 0x8000 /tmp/partitions_two_ota.bin'
  • 啟動(dòng) Git Bash 會(huì)話并為 deploy_OTA.sh 文件運(yùn)行 shell 腳本
pYYBAGNiFPiAY1kPAAALjkD0gPQ268.jpg
?
  • 您的目錄應(yīng)包含以下文件以正確刷新 ESP32
pYYBAGNiFPqAWbHQAAAwWN62VCc003.jpg
?

順便說(shuō)一句,當(dāng)您按照ESP32 MATRIX Voice w/Arduino IDE 上的 Program Over the Air 中的說(shuō)明進(jìn)行操作時(shí),您可以從 esp32-arduino-ota 項(xiàng)目下的 starter 目錄中找到 deploy_OTA、sh、bootloader.bin和 partitions_two_ota.bin 文件。

git clone https://github.com/matrix-io/esp32-arduino-ota

語(yǔ)音助手

為了創(chuàng)建一個(gè)動(dòng)態(tài)的多樂(lè)器設(shè)備,我們需要一種改變樂(lè)器當(dāng)前演奏的方法。口頭命令創(chuàng)造了最通用的方式來(lái)實(shí)現(xiàn)這一點(diǎn)。

SNIPS是一個(gè)用于連接設(shè)備的 AI 語(yǔ)音平臺(tái),它通過(guò)可定制的語(yǔ)音體驗(yàn)來(lái)動(dòng)畫(huà)產(chǎn)品交互。

首先檢查以下項(xiàng)目MATRIX Voice 和 MATRIX Creator Running Snips.ait o 設(shè)置您的 SNIPS 環(huán)境。

注意:請(qǐng)注意 /etc/asound.conf 文件可能需要一些調(diào)整才能使 SNIPS 進(jìn)程正常運(yùn)行。我們最終使用 RPi 嵌入式聲音芯片進(jìn)行聲音播放和 Matrix Voice 進(jìn)行錄音。還要確保將采樣率值檢查為 16000,因?yàn)檫@是 Matrix 工作的默認(rèn)值(如果我們對(duì)此有誤,請(qǐng)糾正我們)。

一旦您的系統(tǒng)在 SNIPS 上啟動(dòng)并運(yùn)行,我們使用 MATRIX 設(shè)備和 Snips.ai 復(fù)制了以下項(xiàng)目 Iron Man Arc Reactor。他為我們提供了在 SNIPS 上創(chuàng)建帳戶(hù)的步驟,并初步了解如何創(chuàng)建一個(gè)應(yīng)用程序。

好的,然后我們創(chuàng)建我們的應(yīng)用程序調(diào)用 MusicGloves,我們希望暫時(shí)將其保密并將其設(shè)置為未發(fā)布。

pYYBAGNiFP2ACJpaAAC43lCWHm0775.jpg
?

我們創(chuàng)建了八個(gè)意圖,六個(gè)用于樂(lè)器,一個(gè)用于同時(shí)演奏三種樂(lè)器的混合版本 (MixOne),還有一個(gè)用于退出程序的命令。

poYBAGNiFQGAXC4gAAC_JaJa0vw942.jpg
?

每個(gè)意圖都有一個(gè) Slot,我們創(chuàng)建三個(gè)可能的激活語(yǔ)句:Play Instrument Name、Select Instrument Name 和 Instrument Name,除了 Exit。

創(chuàng)建插槽后,請(qǐng)確保按“保存”,以便系統(tǒng)開(kāi)始訓(xùn)練并創(chuàng)建語(yǔ)音助手。

pYYBAGNiFQSAPAPsAABpg_97nfU851.jpg
?

不直觀的一件事是訓(xùn)練示例與插槽的鏈接。您必須選擇要與插槽關(guān)聯(lián)的關(guān)鍵字文本,然后將鼠標(biāo)懸停在其上。然后它將顯示一個(gè)彈出菜單來(lái)選擇插槽。我們嘗試了其他版本的具有多個(gè)插槽的助手,但是在接收回調(diào)函數(shù)并在 python 上解析 JSON 消息時(shí)遇到了一些問(wèn)題。所以我們決定為每個(gè)樂(lè)器創(chuàng)建單獨(dú)的意圖。

pYYBAGNiFQeAZr33AAAsL6zKOYI591.jpg
?

現(xiàn)在你可以部署你的助手了。按照帶有 MATRIX 設(shè)備和 Snips.ai的Iron Man Arc Reactor 的步驟 7 。

通過(guò)運(yùn)行測(cè)試助手

sam watch

并說(shuō)出熱門(mén)詞“Hey Snips”,您將看到 RPi 識(shí)別該詞后的處理結(jié)果。

筆記

本節(jié)介紹第二個(gè)任務(wù),使用 SNIPS 進(jìn)行語(yǔ)音命令識(shí)別、儀器管理和播放。

Python 和 SNIPS 的配置有一些顛簸。首先,我們按照使用 Python 通過(guò) MQTT 監(jiān)聽(tīng)意圖中的說(shuō)明進(jìn)行操作,但是在嘗試通過(guò) Stretch 安裝 paho-mqtt 時(shí)出現(xiàn)問(wèn)題。我們找到了解決方案Cannot install paho-mqtt in Python 3.xby運(yùn)行以下命令:

sudo apt-get install mosquitto 
sudo apt-get install mosquitto-clients 
sudo python3 -m pip install paho-mqtt

設(shè)置好系統(tǒng)后,我們首先導(dǎo)入我們的庫(kù)

import paho.mqtt.client as mqtt
from time import sleep
from math import pi, sin
import pygame
import time
import serial
import re
import json

請(qǐng)注意,我們將使用 pygame 播放樂(lè)器聲音,使用串行庫(kù)通過(guò) UART 端口與 ESP32 通信,并使用 mqtt 客戶(hù)端與 SNIPS 服務(wù)器鏈接。

我們初始化我們的意圖以訂閱 mqtt 客戶(hù)端。請(qǐng)注意,我們錯(cuò)誤地離開(kāi)了 IronMan 項(xiàng)目的 ArcReactor 意圖,哎呀!

#Snips credentials, make sure you set your Username
snipsUserName = "YourUserName"
Reactor = 'hermes/intent/'+snipsUserName+':ArcReactor'
ViolinMus = 'hermes/intent/'+snipsUserName+':Violin'
CelloMus = 'hermes/intent/'+snipsUserName+':Cello'
PianoMus = 'hermes/intent/'+snipsUserName+':Piano'
FluteMus = 'hermes/intent/'+snipsUserName+':Flute'
TimpaniMus = 'hermes/intent/'+snipsUserName+':Timpani'
ExitMus = 'hermes/intent/'+snipsUserName+':Exit'
MixOneMus = 'hermes/intent/'+snipsUserName+':MixOne'
ChorusMus = 'hermes/intent/'+snipsUserName+':Chorus'

我們初始化 mqtt 客戶(hù)端,設(shè)置連接和消息接收的回調(diào)函數(shù),嘗試連接到主機(jī)并啟動(dòng)一個(gè)運(yùn)行 mqtt 消息的新線程。請(qǐng)注意,我們注釋了 client.loop_forever() 函數(shù)。我們從這個(gè)函數(shù)開(kāi)始,但是它控制了程序并且不放手,因此函數(shù)調(diào)用之后的代碼永遠(yuǎn)不會(huì)執(zhí)行。我們需要一些可以在后臺(tái)運(yùn)行的東西,同時(shí)我們可以收集來(lái)自 ESP32 腳本的數(shù)據(jù)。

#Initialize the mqqt engine
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
#Connect to mqtt service
client.connect(HOST, PORT, 60)
#client.loop_forever()
client.loop_start()

連接建立后,來(lái)自 mqtt 服務(wù)的 on_connect 回調(diào)函數(shù)訂閱意圖。

# Subscribe to the programmed intents
def on_connect(client, userdata, flags, rc):
   print("Connected to {0} with result code {1}".format(HOST, rc))
   # Subscribe to the hotword detected topic
   client.subscribe("hermes/hotword/default/detected")
   # Subscribe to intent topic
   client.subscribe(ViolinMus)
   client.subscribe(CelloMus)
   client.subscribe(PianoMus)
   client.subscribe(FluteMus)
   client.subscribe(ExitMus)
   client.subscribe(TimpaniMus)
   client.subscribe(MixOneMus)
   client.subscribe(ChorusMus)

以及 SNIPS 發(fā)送的 mqtt 消息的回調(diào)函數(shù)

# Snips callback function with the detected intent
def on_message(client, userdata, msg):
   global activeInstrument
   if msg.topic == 'hermes/hotword/default/detected':
      print("Hotword detected!")
   elif msg.topic == ViolinMus:
      activeInstrument = ViolinIns
      print("Violin detected!")
   elif msg.topic == CelloMus:
      activeInstrument = CelloIns
      print("Cello detected!")
   elif msg.topic == PianoMus:
      activeInstrument = PianoIns
      print("Piano detected!")
   elif msg.topic == FluteMus:
      activeInstrument = FluteIns
      print("Flute detected!")
   elif msg.topic == TimpaniMus:
      activeInstrument = TimpaniIns
      print("Timpani detected!")
   elif msg.topic == ExitMus:
      activeInstrument = ExitIns
      print("Exit detected!")
   elif msg.topic == MixOneMus:
      activeInstrument = MixOneIns
      print("Mix One detected!")
   elif msg.topic == ChorusMus:
      activeInstrument = ChorusIns
      print("Chorus detected!")

我們使用以下命令初始化我們的 pygame 聲音引擎:

# Initialize the pygame sound engine
pygame.mixer.init()
# Set the number of channels to allow multiple simultaneous sounds
pygame.mixer.set_num_channels(15)

并請(qǐng)求 15 個(gè)通道同時(shí)播放我們的樂(lè)器聲音。

我們采取了一種邏輯方法來(lái)盡可能簡(jiǎn)單地處理資源,方法是創(chuàng)建一個(gè)文件路徑數(shù)組和一個(gè)創(chuàng)建聲音對(duì)象的數(shù)組,這樣我們就不需要每次播放時(shí)都加載它們。合唱對(duì)象的片段如下所示。請(qǐng)注意,chsndObj 數(shù)組包含加載相應(yīng)文件后合唱的所有聲音對(duì)象。

chCEGmfPath = ['/home/pi/MusicOrch/Chorus/chorus-female-c5-PB-loop.wav',
            '/home/pi/MusicOrch/Chorus/chorus-female-e5-PB-loop.wav',
            '/home/pi/MusicOrch/Chorus/chorus-female-g5-PB-loop.wav']
# Create an array of Sound objects for each instrumment. This is the array for chorus.
# Chorus
chsndObj = [pygame.mixer.Sound(chADFmfPath[0]), pygame.mixer.Sound(chADFmfPath[1]),
         pygame.mixer.Sound(chADFmfPath[2]),
         pygame.mixer.Sound(chCEGMmfPath[0]), pygame.mixer.Sound(chCEGMmfPath[1]),
         pygame.mixer.Sound(chCEGMmfPath[2]),
         pygame.mixer.Sound(chCEGmfPath[0]), pygame.mixer.Sound(chCEGmfPath[1]),
         pygame.mixer.Sound(chCEGmfPath[2])]

selectSoundObj 和 playNote 函數(shù)負(fù)責(zé)根據(jù)活動(dòng)樂(lè)器選擇正確的聲音并在獨(dú)立通道上播放。

最后用下面的參數(shù)初始化串口

#Initialize the serial port for communication with the Matrix Voice ESP32 

ser = serial.Serial( port='/dev/ttyS0', baudrate = 115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=5 )

我們使用串行對(duì)象請(qǐng)求一組新的壓力值,讀取這些值并在通過(guò) SNIPS 意圖命令更改時(shí)傳輸活動(dòng)的選定對(duì)象。

if (PauseExec == False):
   # Set read command to ESP32
   ser.write(b'1')
   time.sleep(0.1)
   # Read a line of data
   x = ser.readline()
   # print(x)
   # Convert the binary data into string
   strdecode = x.decode('utf-8')
   # split the data according to the divider
   values = strdecode.split("|")
   # print(values)
   # Play the data
   playNote(activeInstrument, int(values[0]), int(values[1]), int(values[2]))
   time.sleep(0.05)
# If instrument change let know the ESP32 task
if (currIns != activeInstrument):
   print(activeInstrument)
   currIns = activeInstrument
   if (activeInstrument == ViolinIns):
      ser.write(b'A')

請(qǐng)注意,我們有一個(gè) PauseExec 變量作為信號(hào)量來(lái)同步程序中的不同事件。當(dāng)我們?cè)噲D從 ESP32 腳本中獲取壓力傳感器的免費(fèi)數(shù)據(jù)流時(shí),我們?cè)谀硞€(gè)時(shí)候使用過(guò)這個(gè)變量,但它并沒(méi)有那么好用。

該程序控制數(shù)據(jù)流,在播放前一個(gè)讀取包的值后,在準(zhǔn)備好處理它時(shí)請(qǐng)求一個(gè)新包。接收到的數(shù)據(jù)是二進(jìn)制格式,我們將其轉(zhuǎn)換為字符串并拆分每個(gè)壓力傳感器上的值。

如果 ActiveInstrument 的值通過(guò)接收來(lái)自 SNIPS 客戶(hù)端的口頭命令而更新,則程序?qū)⑾鄳?yīng)的代碼發(fā)送到 ESP32 以更改 LED 的顏色。

時(shí)間就是一切 開(kāi)發(fā) (TIED)

在處理實(shí)時(shí)數(shù)據(jù)流時(shí),考慮事件的同步是很重要的。在我們找到正確的流程順序(上圖)之前,我們嘗試了不同的方案。

將 ESP32 Arduino 腳本設(shè)置為在每個(gè)周期傳輸一個(gè)讀取的壓力值包,實(shí)際上阻塞了 UART 緩沖區(qū),python 程序很難僅趕上正在接收的數(shù)據(jù)。SNIPS 命令缺乏響應(yīng),并且沒(méi)有及時(shí)播放聲音。

然后我們嘗試向 ESP32 發(fā)送一個(gè)讀取命令,ESP32 反過(guò)來(lái)會(huì)讀取當(dāng)時(shí)的值,但是 readline 函數(shù)會(huì)附帶一半創(chuàng)建的包,其中缺少傳感器值。

我們?cè)诖谧x取部分仍然有一些崩潰,這就是我們實(shí)現(xiàn) try/except 情況的原因,所以我們可以重置串口并重新啟動(dòng)通信。

找到正確的同步過(guò)程很復(fù)雜,但在我們的 IOT 世界中是必需的。

享受音樂(lè)樂(lè)趣

最后,在將所有部件放在一起之后,我們就有了新的樂(lè)器(設(shè)備)。我們使用帶有雙面膠帶的手套,將雙面膠帶粘在壓力傳感器和塑料球上,塑料球是傳感器按壓的剛性表面。

?
?
?
poYBAGNiFRaAPsAVAASrZ87JIRg384.jpg
?
1 / 2
?

我們注意到的事情

該項(xiàng)目最初是使用 Matrix Voice ESP32 作為獨(dú)立設(shè)備開(kāi)始的,不需要 RPi 板。

我們想使用 ESPNOW 協(xié)議將傳感器數(shù)據(jù)傳輸?shù)截?fù)責(zé)演奏所選樂(lè)器的遠(yuǎn)程服務(wù)器。Matrix Voice ESP32 將運(yùn)行 SNIPS 客戶(hù)端并選擇活動(dòng)儀器,該儀器將作為流包的一部分傳遞到遠(yuǎn)程服務(wù)器。

嘗試 ESP32 開(kāi)發(fā)模塊中的 ESPNOW 示例程序很有魅力。

在單獨(dú)的腳本上設(shè)置壓力傳感器并讀取其值效果很好。

當(dāng)我們將兩者放在一起時(shí),問(wèn)題就開(kāi)始了。由于某種我們還不知道的原因,一旦調(diào)用了 WiFi.mode(WIFI_STA) 函數(shù),引腳的模擬讀數(shù)就會(huì)停止工作。該腳本開(kāi)始讀取擴(kuò)展端口中每個(gè) ESP32 定義的引腳上的隨機(jī)值。

這使我們放棄了 ESPNOW 并創(chuàng)建了一個(gè)設(shè)備。然后,我們遇到了 RPi 上的 UART 支持問(wèn)題。因?yàn)椋覀兊谝淮问?SNIPS 工作是使用node.js示例,所以我們?cè)?node.js 上搜索支持 UART 的庫(kù)。不用說(shuō)它不起作用,哦,那里有用于 UART 和node.js 的庫(kù),但是我們的時(shí)間不多了。

最后,我們決定使用 python,幸運(yùn)的是我們找到了一種與 SNIPS 接口的方法。

這是一次漫長(zhǎng)的旅行。哦,我們是否提到過(guò)我們還考慮重新編程 FPGA 以訪問(wèn) I2C 或 UART 或擴(kuò)展 GPIO。絕對(duì)是一個(gè)挑戰(zhàn),但這次不是。:)

未來(lái)的工作

添加更多壓力傳感器,找出 ESPNOW 問(wèn)題并允許另一個(gè)設(shè)備控制播放任務(wù),并使設(shè)備獨(dú)立于 RPi 板運(yùn)行。

增加意圖的數(shù)量。我們將添加諸如“選擇小提琴和長(zhǎng)笛”或“選擇所有弦樂(lè)”或“增加一個(gè)八度”或“改變音階”或“傳感器一個(gè)小提琴和傳感器兩個(gè)合唱”等的意圖。這么多的可能性。

我們?cè)谶@個(gè)項(xiàng)目上工作得非常愉快。希望這能激發(fā)更多關(guān)于樂(lè)器的項(xiàng)目。謝謝閱讀。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 深夜视频在线观看免费 | 免费看大尺度视频在线观看 | 欧美三级日韩三级 | 一级片免费在线观看 | 爱爱视频天天干 | 欧美三级在线观看视频 | 国产自产视频在线观看香蕉 | 久久草在线精品 | 九月婷婷亚洲综合在线 | 欧美肥胖女人bbwbbw视频 | 97天天操| 色狠狠狠色噜噜噜综合网 | 欧美成人午夜视频 | 亚洲欧洲一区二区三区在线 | 手机在线精品视频 | 国产成人精品一区 | 色婷婷中文字幕 | 久久久久久久国产免费看 | 欧洲色妇 | 男人的天堂久久精品激情 | 日本乱理论片免费看 | 最好看的2019中文字幕免费高清 | 午夜在线观看免费 | 午夜免费福利片 | 国产成人综合自拍 | 四虎永久免费影院在线 | 亚洲乱码一区二区三区在线观看 | 亚洲一区二区在线视频 | 亚洲va久久久噜噜噜久久天堂 | 五月婷婷社区 | 一区不卡在线观看 | 日本三级电影在线观看 | 亚洲三级视频在线观看 | 国产大乳美女挤奶视频 | 天天插在线视频 | 永久免费观看黄网站 | 四虎国产精品永久在线看 | 天天操天天干天天爽 | 资源视频在线观看 | 黄网站视频 | www.夜夜操 |